Free — no signup required

Bandwidth-Delay Product (BDP)

3 min read

Filling the Pipe

Imagine a garden hose stretched across a football field. The hose has a fixed diameter (bandwidth) and a fixed length (delay). At any given moment, there is a certain volume of water inside the hose — water that has left the tap but not yet reached the other end. To keep water flowing continuously at the hose's maximum rate, you must keep that entire internal volume full at all times. If you stop pumping the moment the first drop exits, you waste most of the hose's capacity.

TCP works the same way. The sender transmits data, and the receiver acknowledges it. While the sender is waiting for an acknowledgment (ACK), it can only send as much data as the receive window allows. If the window is smaller than the amount of data that fits "in the pipe" at any moment, the sender runs out of permission to send and stalls — waiting for an ACK before it can continue. The volume of the pipe is the Bandwidth-Delay Product (BDP).

The Formula:

BDP = Bandwidth (bits/sec) × RTT (seconds)

Worked Example — Virginia to Tokyo:

Parameter Value
Bandwidth 1 Gbps = 1,000,000,000 bits/sec
RTT 170 ms = 0.170 sec
BDP 1,000,000,000 × 0.170 = 170,000,000 bits
BDP in bytes 170,000,000 ÷ 8 = ~21.25 MB

To fully utilize this link, the sender must be allowed to have 21.25 MB of unacknowledged data in flight at any moment. If the TCP receive buffer is capped at the Linux default of 6 MB, the sender hits the window limit, stalls, and waits. The link sits idle for the remainder of the RTT. Throughput is throttled to roughly:

Max Throughput ≈ Buffer Size / RTT = 6,000,000 bytes / 0.170 sec ≈ 282 Mbps

On a 1 Gbps link, that is a 72% throughput loss caused entirely by a kernel parameter.

Quick BDP Reference Table:

Link Speed RTT Required Buffer
100 Mbps 10 ms 125 KB
1 Gbps 50 ms 6.25 MB
1 Gbps 170 ms 21.25 MB
10 Gbps 100 ms 125 MB

The table makes clear why LAN defaults (small RTT, modest bandwidth) produce tiny buffer requirements, while WAN and inter-region cloud links demand buffers measured in tens or hundreds of megabytes.

Key Point: BDP is the minimum buffer size required to keep a link fully utilized. Any TCP buffer smaller than the BDP creates a throughput ceiling that is independent of the physical link speed.

This is one of 18 chapters

Every chapter is free — Kubernetes, Terraform, SRE, distributed systems, and more — with fast daily review built in.

Sign up free