Transcript Slides
BCrouter
@ K.U.Leuven
BCrouter: Overview
How did it start...
Main features
Authentication
Quota & Bandwidth
• Examples of user & IP limiting
Exceptions
• Examples
Routing
Implementation overview
Performance in real world
Future plans
K.U.LEUVEN – ICTI Netwerken
BCrouter: How did it start...
K.U.Leuven Kotnet project
Connect K.U.Leuven and associated high school
students/personnel to the campus network and
Internet from their homes
• Possible user base 70000 students, 10000 personnel
Enhance possibility of study and research in an
academic environment
Low entrance fee and costs
• University owned infrastructure
• Cooperation with 3 commercial ISP’s
Used daily by >30000 different users
K.U.LEUVEN – ICTI Netwerken
BCrouter: How did it start...
Performance problems in 2003
Login/quota core system maxed out with Cisco 7500 routers
More flexibility needed for bandwidth & quota enforcement
Redesign from scratch
Basic requirements
• No anonymous access to the Internet
→ Network authentication
• Each user is only allowed X Gigabytes/month traffic
→ Network quota enforcement
• Prevent that a few users consume all bandwidth
→ Network bandwidth regulation
Extra requirements
• Only K.U.Leuven users can access K.U.Leuven network
→ User group differentiation
K.U.LEUVEN – ICTI Netwerken
BCrouter: Authentication
All users must authenticate before using the
network
Browsers automatically redirected to login webpage
Powerful exceptions possible
• E.g. software update website, educational sites
Clients need no extra software or configuration
HTTPS capable web browser
Quarantine system (in development)
If user administratively blocked
→ Automatically restrict network access
K.U.LEUVEN – ICTI Netwerken
BCrouter: Quota & Bandwidth
Both user and IP based (at the same time)
Real-time quota check
Every user and IP can have its own individual settings
Throttle bandwidth if a user and/or IP generates too
much traffic
E.g. personal vs. lab PC, limited guest accounts...
A user and/or IP is never blocked from the network (real-time
small band)
If a user and/or IP who is on 'small band' stops downloading
for a few minutes, the user immediately can use a limited
amount of traffic again at normal speed.
Powerful exceptions possible
K.U.LEUVEN – ICTI Netwerken
BCrouter: Quota & Bandwidth
‘Leaky Token Bucket’ principle
Imagine bucket of water, filled at the top and drained
at the bottom…
Only packets containing a token can pass the router
Tokens
MeanFillRate
TokenBucket
TokenBucketSize
TokenBucketMaxSize
CurrentRate
(0…BurstRate)
Network
packets
POLICER
K.U.LEUVEN – ICTI Netwerken
BCrouter: Quota & Bandwidth
Normal case: 1 token = 1 byte on the network
Configurable options per bucket
TokenBucket maximum size
• Max. number of tokens the bucket can contain
• Equivalent to ‘quota’ in bytes
Mean fill rate
• Number of tokens/sec entering the bucket (=constant)
• Equivalent to ‘refill speed’ of quota
Burst rate
• Max. tokens/sec that can be extracted from the bucket
• Equivalent to ‘maximum speed’ in bytes
K.U.LEUVEN – ICTI Netwerken
BCrouter: Quota & Bandwidth
‘Simple’ bucket has several major drawbacks
BCrouter enhanced policing algorithm
Track individual flows
• Prevent connection starvation by distributing individual
bandwidth across individual flows
Take average packet size of each flow into account
• Bulk traffic (e.g. downloads) is affected first
• Prioritize interactive traffic (e.g. ssh,irc,msn)
Dynamic regulation of individual bandwidth based on specific
criteria
• E.g. Prevent network saturation by automatically reducing
maximum individual bandwidth
Avoid retransmits by dynamically adjusting TCP Window Size (in
development)
• Minimize overhead on the network due to policing
K.U.LEUVEN – ICTI Netwerken
BCrouter: Quota & Bandwidth
Conceptual packet flow (Both user & IP)
Independent buckets for user and IP
Independent buckets for upload and download
User
IP
Down
Down
POLICER
POLICER
Down/Up
load?
Up
Up
POLICER
POLICER
K.U.LEUVEN – ICTI Netwerken
BCrouter: User & IP limiting
Example 1:
Assign user:
• Quota of 1 Gigabyte
• Refill the quota at rate of 1 Gigabyte/month
• Maximum speed: unlimited
Assign IP:
• Quota of 10 Mbytes
• Refill the quota at rate of 5 Kilobytes/second
• Maximum speed: 20 Kilobytes/sec
Result:
• User settings to determine the maximum volume a user can
download each month
• IP settings to limit the ‘real-time’ bandwidth usage
K.U.LEUVEN – ICTI Netwerken
BCrouter: User & IP limiting
Example 2:
Assign user:
• Unlimited quota
• Maximum speed: 50 Kilobytes/second
Assign IP:
• Quota of 10 Mbytes
• Refill the quota at rate of 5 Kilobytes/second
• Maximum speed: 20 Kilobytes/sec
Result:
• If a user logs in multiple times, the sum of all logins
cannot exceed the maximum user speed. The speed is
divided across the hosts that are logged in.
K.U.LEUVEN – ICTI Netwerken
BCrouter: Exceptions
Exception flags
IP speed limit
User speed limit
IP accounting
User accounting
No login required
Exceptions can be made for hosts or even
entire networks (both local and/or internet)
K.U.LEUVEN – ICTI Netwerken
BCrouter: Exceptions
Quota/bandwidth exceptions examples:
Default:
• Login required
• Accounting to both user and local IP
• Obey both user and local IP speed limits
Local host A does not have to login to access the Internet, but
still uses IP quota and speed settings
• E.g. Embedded devices that can’t login and need network
access
Traffic from Internet host B is always possible from any local
host and is never accounted, but local host IP speed limits are
obeyed
• E.g. Website with security patches
Any combination of exception flags is possible in either
direction for any host/network
K.U.LEUVEN – ICTI Netwerken
BCrouter: Routing
DHCP helper
DHCP auto logout (in development)
Allow forwarding of DHCP broadcasts to DHCP server
If no DHCP renew packets within DHCP renew
interval, logout user automatically
→ If user forgets to logout
User group based routing
Different routing tables for each user group and user
status
E.g. normal user, quarantined user, visitor…
K.U.LEUVEN – ICTI Netwerken
BCrouter: Implementation
BCrouter is a GNU/Linux software project
Kernel-space
• Netfilter framework module ipt_bcrouter
• Iptables target BCROUTER
• Requires 2.6 kernel
• All processing is done entirely in kernel-space
• No need for slow kernel/user context switches
• High performance kernel-space only network logging
User-space
• BCrouter daemon providing networked command access
•
•
•
•
Get/Set User/IP bucket configuration and status
Login/logout
Network configuration
User group configuration
• DHCP-fwd for forwarding DHCP broadcasts
K.U.LEUVEN – ICTI Netwerken
BCrouter: Performance
In use for more than 2 years on Kotnet
1 Active server (with hot standby)
>45099 users in BCrouter database
>113420 IP addresses in BCrouter database
>500 Mbits bandwidth peak (30 min average)
>140 network segments (140 VLAN’s)
Dual Xeon 3,2Ghz
1 Gigabyte RAM
Debian Linux (2.6 kernel)
Peak CPU Load
45% CPU total
• 85% Linux general routing code
• 15% BCrouter code
430 Mbytes RAM in use for entire system
K.U.LEUVEN – ICTI Netwerken
BCrouter: Future
Campus network-in-a-box
Provide modular open-source solution
• BCrouter core element
• Simple web based User frontend
• User authentication
• Individual login and network usage statistics
• Log processing backend
• Process and store all historical network/user info
• Helpdesk & Management website
• Diagnose and troubleshoot network problems
• Adjust and configure network settings
Present status
Further development BCrouter core element
Design log processing high performance backend
K.U.LEUVEN – ICTI Netwerken
BCrouter: Summary
BCrouter provides
BCrouter is
GNU/Linux Netfilter kernel module
BCrouter future
Network authentication
User & IP quota enforcement
User & IP bandwidth management
Campus network-in-a-box
More information: [email protected]
K.U.LEUVEN – ICTI Netwerken