Your Connection Is a Hundred Megabits and the First Thing It Sends Is Fourteen Kilobytes, on Purpose
Last timeMaking an Unreliable Thing Reliable
A sender has no idea what the path can carry, so it starts small and doubles. For anything under a few hundred kilobytes that ramp, not bandwidth, is the whole story.
Why not just send everything
The connection is open. The request has been sent. The server has a response
and a hundred gigabit link. How fast should it send?
The honest answer is that it has no idea. Its own link tells it nothing useful,
because the path to the reader passes through a sequence of links and the
narrowest one governs. That narrowest point might be a home connection, a
congested peering point, or a mobile link that changes capacity as the reader
walks. Nothing tells the sender which, and nothing will.
Worse, guessing high is not a neutral mistake. Sending faster than the
narrowest point can carry does not deliver data faster; it fills a queue at
that point, and when the queue is full, packets are dropped. The sender then
pays the recovery costs from the previous lesson, and so does everybody else
whose traffic shares that queue. In the mid-eighties this failure mode brought
large parts of the network to a halt, repeatedly, and the mechanism in this
lesson is the response to it.
So the sender does the only thing available: it probes. Start at a level almost
certainly safe, and increase until there is evidence of trouble.
- the bytes that may be unacknowledged at once
- the starting allowance, now about ten packets or fourteen kilobytes
- the number of round trips completed without loss
| step | round trip | allowed in flight, kilobytes | delivered so far | what the sender knows | what happened |
|---|---|---|---|---|---|
| 1 | 1 | 14 | 14 | nothing about the path | The starting allowance. Fourteen kilobytes is all that may be outstanding, regardless of the link being a hundred megabits at both ends. A hundred megabit link could have carried a megabyte in this time. |
| 2 | 2 | 28 | 42 | no loss yet, double | The acknowledgements from the first batch arrived, so the allowance doubles. Still a fraction of what the path can carry. |
| 3 | 3 | 56 | 98 | still no loss | Halfway through the third round trip the response is nearly half delivered. The sender still has no idea what the path can do. |
| 4 | 4 | 112 | 200 | transfer ends here | The response finishes during the fourth round trip. The ramp never completed, the path capacity was never discovered, and the transfer took four round trips rather than the time its size over the bandwidth would suggest. |
Starting small and doubling
Two details complete the picture. The doubling only continues while nothing is
lost; on loss the allowance is cut sharply and growth becomes much slower
afterwards, which is what keeps many senders sharing a path roughly fairly.
And the starting allowance was raised from about four kilobytes to about
fourteen in the last fifteen years, precisely because measurements showed how
many real responses finish during the ramp.
What limits how much is in flight
There are two separate limits and they are easy to confuse.
The first is the one above: the sender estimate of what the network path can
carry. It is a guess, maintained by probing, and it protects the network.
The second is the receiver stated capacity: how much it is willing to buffer.
It is not a guess, it is announced in every acknowledgement, and it protects
the receiver from being overwhelmed by a faster sender.
The lesson stops here
3 more paragraphs to go
You have read the opening. The rest of the argument, the problems that check whether it landed, and the lines worth keeping at the end all come with a plan.
The first lesson of every course in the library reads the whole way through, free, so you can see exactly what the rest of them are.
See the planThe contentsThis is the reading half
Starting the course gives you your own copy of it. Every idea on every page has problems standing under it, marked with a reason rather than a tick, and any sentence you do not believe can be opened and argued with. None of that can happen on a page nobody owns.
The contents