Friday, September 8, 2017

Oversubscription Ratios and the Types of Bandwidth Throttling

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 

Generally, three are two types of bandwidth throttling available on network equipment:

  • 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.   

Unfortunately, setting the oversubscription ratio is an empirical exercise, and over time, the oversubscription ratio tends to decrease as more devices, each consuming more bandwidth, are connecting to your networks.  In the pre-smartphone days, a 30:1 or even 40:1 was common for most wired / wireless networks.  

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).   

 Of course, in reality complex networks are an Animal Farm (i.e. while all client devices are equal, some client devices are “more equal” than others).  Thus, different classes of users will require different levels of service.

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.