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
|
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-2023 Jerry Jongerius
|