Octet

What is the bandwidth-delay product, and why does it matter for a long-distance link?

Show the answer

Say this first

It is the link rate multiplied by the round-trip time: the amount of data that must be in flight to keep the pipe full. A 1 Gbps path with 100 ms RTT holds 100 megabits, which is 12.5 MB. A single TCP flow only reaches full speed if its window (and the socket buffers) are at least that big. Without window scaling the window tops out at 64 KB, capping that flow at about 5 Mbps.

Go deeper

The math

  • BDP = bandwidth x RTT = 10^9 bit/s x 0.1 s = 10^8 bits = 12.5 MB.
  • Max throughput of one flow = window / RTT. With 65,535 bytes: 65,535 x 8 / 0.1 = about 5.2 Mbps.
  • TCP window scaling (RFC 7323) shifts the 16-bit window by up to 14 bits, allowing windows up to about 1 GB.

What else limits a long fat network

  • Loss. One loss halves (Reno) or cuts (CUBIC) the congestion window, and regrowth takes many RTTs on a long path.
  • Socket buffers. Operating systems autotune, but a host with small fixed buffers stays slow.
  • Middleboxes that strip the window scale option during the handshake.

What to say when users complain

Measure RTT and loss before buying bandwidth. Parallel streams, tuned buffers, a modern congestion control such as BBR, or a server closer to the users fix more of these cases than a bigger circuit.

Traps

  • Forgetting to convert bits to bytes. 100 megabits is 12.5 megabytes.
How did you do?Book 1.5 PerformanceBook 5.2 Reliable Byte Stream (TCP)