ContentsThe library

From an Address to a Page

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.

FIG 1How much can be in flight
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
Doubling is the right shape for a probe. It reaches a gigabit path in about sixteen round trips, which is fast enough, while the worst overshoot on a slow path is a single factor of two, which is recoverable. Starting small and growing linearly would take thousands of round trips; starting large would cause the collapse this mechanism exists to prevent.
FIG 2A response of 200 kilobytes, round trip by round trip
stepround tripallowed in flight, kilobytesdelivered so farwhat the sender knowswhat happened
111414nothing about the pathThe 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.
222842no loss yet, doubleThe acknowledgements from the first batch arrived, so the allowance doubles. Still a fraction of what the path can carry.
335698still no lossHalfway through the third round trip the response is nearly half delivered. The sender still has no idea what the path can do.
44112200transfer ends hereThe 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.
4 steps
Four round trips at 80 milliseconds each is 320 milliseconds for 200 kilobytes, which is an effective rate of about five megabits regardless of a hundred megabit link at both ends. The transfer ended before the measurement it would have needed to go faster was complete.

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 contents

This 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

The rest of this course

  1. 01Before Anything Can Be Sent, Something Has to Find Out Where to Send It, and Usually That Costs Nothing
  2. 02Four Round Trips Before the First Useful Byte, and Every One of Them Is the Speed of Light Doing Its Jobopening only
  3. 03The Network Will Lose Some of Your Packets and Tell Nobody, So Everything Above It Is Built on Noticingopening only
  4. 04Your Connection Is a Hundred Megabits and the First Thing It Sends Is Fourteen Kilobytes, on Purposeyou are here
  5. 05After Four Round Trips of Machinery, What Finally Goes Down the Wire Is a Few Lines of Text You Could Have Typedopening only
  6. 06The Fastest Request Is the One That Is Never Sent, and Whether It Is Sent Was Decided by a Line of Text Last Weekopening only
  7. 07You Think You Are Talking to a Server, and You Are Talking to Four Machines That Have Agreed Not to Mention Itopening only
  8. 08The Page Took Two and a Half Seconds, and Four Hundred Milliseconds of That Was Your Codeopening only

Read alongside