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.
They will ask next
How long does slow start take to fill that 12.5 MB pipe?
Starting from about 10 segments and doubling each RTT, it takes roughly 10 RTTs to grow past 8,000 segments, about a second at 100 ms RTT, assuming no loss. Short transfers finish before reaching full speed, which is why latency dominates web performance.
Traps
- Forgetting to convert bits to bytes. 100 megabits is 12.5 megabytes.