When we build networks, we need to allocate the available bandwidth amongst the client device population in, hopefully, a reasonably fair and equitable manner such that all users are happy (or at least not complaining). We use bandwidth throttling for this purpose.
Without bandwidth throttling, one or two abusive users could use applications like BitTorrent and consume the overwhelming majority of the available Internet bandwidth, leaving very little bandwidth for all of the remaining users on your network.
Bandwidth Throttling
- Per-User Bandwidth
Throttling: This limits the
maximum amount of Internet bandwidth that each client device can consume
- Per-Subnet/VLAN Bandwidth Throttling: This limits the aggregate maximum amount of internet bandwidth that all client devices on the subnet / VLAN can consume at one time.
By means
of a demonstrative example, let’s assume we have a subnet / VLAN with 5 client
devices connected. If the bandwidth throttling
is 10 Mbps / 10 Mbps per user, then each user could potentially consume 10 Mbps
/ 10 Mbps simultaneously, making the total potential consumption the sum, or 50 Mbps / 50
Mbps. Alternatively, if the bandwidth throttling
is 10 Mbps / 10 Mbps per subnet / VLAN, then all users on that subnet / VLAN have to share
a 10 Mbps / 10 Mbps bandwidth allocation, meaning each user would get 2 Mbps /
2 Mbps on average, and this average would decrease as more users connect to that VLAN /
subnet.
In
general, per-user bandwidth throttling is what you want in most practical circumstances. Obviously, if there are too many users and/or the allocated bandwidth per user is set too high, you
eventually run out of Internet bandwidth.
So how do you decide what limits are appropriate? It ultimately depends on the type of network you are operating (i.e. its requirements) and the total amount of Internet bandwidth you have available (i.e. its constraints). However, this can be treated quantitatively by using an oversubscription ratio.
Oversubscription Ratio
Oversubscription is a concept that dates back to very early
telephony. Statistically, not all
connected users will actually consume their maximum available bandwidth at any particular instant of time. For example, if we have 5 users
and each of them has a per-user bandwidth cap of 10 Mbps / 10 Mbps, it is statistically
unlikely that any of them, let alone all of them, will actually be consuming 10 Mbps / 10 Mbps simultaneously. Most
network applications are bursty in nature, meaning that your actual consumption
is constantly fluctuating and rarely hitting the maximum allocation. (Video streaming is, naturally, an important
exception to this, as that consumes bandwidth at a fairly constant rate for an
extended period of time. That said, even today only a fraction of devices that are connected to your network are likely to be streaming video at a given instant.)
Thus, as a service provider, I do not need to
supply the additive sum in terms of bandwidth (i.e. # users * promised
bandwidth per user), but rather some fraction thereof. That fraction defines the oversubscription ratio.
The common
oversubscription ratio I use for regular network usage (e.g. hotel, apartment
building, etc.) is 20:1. This would mean
that if I promised 200 users each a 10 Mbps / 10 Mbps data rate (and throttled them each to that rate), I could get
away with only providing a 100 Mbps Internet bandwidth connection. The math is as follows: 200 users * 10 Mbps/user * 1/20 = 100 Mbps. At any instant in time, the average consumption would be 10 Mbps/user / 20 = 500 kbps per user. In reality, some are obviously consuming more, while others will be consuming less (even 0).
For student
housing, which is fairly heavy network utilization, I typically use a 10:1
oversubscription ratio. For larger high density environments, (e.g. conference centers, event spaces, etc.) you will have a few devices that are doing video streaming, but
most attendees will be connected but are not likely to be heavily utilizing
their devices. I therefore typically use a 15:1
oversubscription ratio.
Determining Appropriate Bandwidth Throttling Values
In reality, one is generally constrained by the total amount of bandwidth available, as that is the most expensive part of your network. Thus, the real calculation is to determine the appropriate bandwidth throttling per user that should be used. To determine this, one needs to know the peak number of expected users and the bandwidth available.
As an example, let's assume an event space where we are expecting 500 users and have a 300 Mbps / 300 Mbps Internet circuit available. Using the 15:1 oversubscription ratio, for 500 users this comes out to a
sustainable average service level of 9 Mbps (i.e. 300 Mbps / 500 users * 15:1
oversubscription = 9 Mbps / user).
https://northwindsjourney.files.wordpress.com/2013/04/animal_farm.jpg
In most commercial environments, it is vitally important to operations that they have sufficient bandwidth available, though they usually represent a small fraction of the total number of clients. This is one very good use of having multiple VLANs / subnets, as you can put your different classes of users on to different VLANs, and then allocate bandwidth both per VLAN and per user accordingly. Where operations activity is critical, we need to provide this small but more important operations segment of the client device population a higher per-user bandwidth allocation, and give the (proletariat) visitors a lower per-user bandwidth allocation.
It is also useful to have two layers of bandwidth throttling. The first layer is bandwidth throttling per VLAN / subnet. For example, limit the guest network to 80% of the total bandwidth, ensuring that the staff / operations network(s) will always have access to at least 20% of the Internet bandwidth, no matter how crowded the guest network becomes. The second layer is bandwidth throttling per user, to ensure that no abusive user on any VLAN / subnet can take up all of the bandwidth allocated to that VLAN / subnet.
Excellent article. Thanks for the effort.
ReplyDelete