You are here: Duckware » Technology Blog » Cable Modem 'Upload Bursting'
Cable Modem 'Upload Bursting'
duckware.com/uploadbursting -- Version 1.1a (August 13, 2020)


A speed test showing evidence of 'upload bursting'
What is 'upload bursting'?: 'Upload bursting' is a cable modem's ability to upload data to the Internet at a Mbps speed much higher than the rated Internet connection speed, but only for very brief (initial) periods of time.
For example, an Internet connection rated at 100 Mbps download and 5.4 Mbps upload, may allow upload speeds to approach 40 Mbps, but only for very brief periods of time.

Not all ISP's have 'upload bursting' enabled, but some do (Comcast does at many locations I have tested).
Why is 'upload bursting' useful?: 'Upload bursting' almost seems custom designed for gamers. Many multi-player games use UDP, and 'upload bursting' ensures that the packets are uploaded as fast as possible, across all types of Internet connections -- leveling the playing field (entry level Internet connections vs high-end Internet connections).

Test your Internet connection: Here is one online speed test program that is often able to catch a glimpse of 'upload bursting'. An example is seen right. OR, run a local UDP speedtest program that is able to directly measure upload bursting.

SB6183
SB6183
Background / there is a buffer in the cable modem: To understand upload bursting, we must first understand that all Internet devices have buffers, including cable modems. If a program tries to upload a chunk of data all at once (much faster than Internet upload speed), what happens? Does only a small fraction successfully go out and the rest 'drop on the floor'? No, the cable modem allows for a small amount of data to be fully buffered so that there is no loss.
I have measured the upload buffer (for UDP) in the ARRIS SURFboard SB6183 anywhere from around 128K to 150K, depending upon the ISP. This variation is almost certainly due to the fact that DOCSIS allows each ISP to customize buffer sizes in their network.
How things work with no upload bursting: With no upload bursting, the cable modem always 'rate limits' how fast data is uploaded to the Internet -- to the rated Internet upload speed.
So no matter what, for the example Internet connection above, an upload speed of 5.4 Mbps upload speed will always be seen (with capacity in the ISP network).
A very subtle change enables upload bursting: Rather than rate limiting the uploading of data to the Internet, if the cable modem instead allows anything in the modem buffer to be uploaded to the Internet at maximum speed and instead rate limits how fast the internal buffer can be filled -- all of a sudden you gain 'upload bursting'!
So, when sending a small amount of data, you may see a 40 Mbps upload speed. But send a lot of data, and the speed seen will be much closer to the rated 5.4 Mbps upload speed.
A very simple 'upload bursting' model: The cable modem needs to keep track of a single num_bytes number. When a computer sends a packet to the modem (to upload), num_bytes is decreased by the number of bytes at the 'rated upload speed' in the timeframe since the last packet sent (but don't go negative). If num_bytes is less than the modem's 'buffer size', the packet is buffered and queued in the modem for transmission to the Internet (at fastest possible speed), and num_bytes is increased by the packet size. But, if num_bytes is greater than the modem's 'buffer size', the buffer is 'full' and the packet is ignored (dropped; packet loss). In pseudo-code:
int RATED_SPEED=5000000;  // rated upload speed (bits/sec)
int BUFFER_SIZE=128*1024; // cable modem buffer size (bytes)
double tLastPacket=0;     // packet time (seconds)
int num_bytes=0;          // num bytes in virtual queue

send_packet( p ) {
  int nOut = (p.time-tLastPacket)*RATED_SPEED/8;
  tLastPacket = p.time;
  num_bytes = max(0, num_bytes-nOut);
  if (num_bytes<BUFFER_SIZE) {
    num_bytes += p.length;
    queue_packet_for_fast_internet_upload( p );
    }
  }
Another way to see and understand this model: Focus on the cable modem buffer size. The modem will accept the first 'buffer size' of packets at incredibly fast speeds, but after that, the modem will only accept packets at the modem's rated upload speed. Any packets 'accepted' by the modem will be uploaded to the Internet at the fastest speed possible.

Yet another way to understand 'upload bursting': 'Upload bursting' is actually a fast upload pipe all of the time, but after a very short period of constant use (length of time determined by your rated Internet speed), any more packets sent to the modem will be dropped -- until a little time passes (length of time determined by your rated Internet speed) allowing packets to once again be received.

A warning: 'Upload bursting' is a network optimization, it is not a guarantee to take advantage of at the program level. Besides, filling 'network buffers' is considered 'bad behavior' (bufferbloat) and Advanced Queue Management (AQM) algorithms, like Random Early Discard (RED), may intentionally discard successfully received packets in order to force the sending program to 'back off'.

Why understanding upload bursting is so important: Because in order to accurately measure Internet upload speed, a program must properly account for (and work around) 'upload bursting'. Any program that fails to do so will measure the wrong (too high) upload speed.
A good way to account for 'upload bursting' is to upload a bunch of data and throw away the first time period of measurements (to be safe, the first second or two).

speed.cloudflare.com is an example of a speed test that fails to account for 'uploading bursting' and produces an incorrect measured Internet upload speed (that is too high).
Some images and text are copyrighted by their respective owners and are reproduced
in this paper under Title 17 Section 107 (Fair Use) of the copyright code.
The rest of this document is Copyright © 2018-2020 Jerry Jongerius