The bandwidth-delay product (BDP) is the amount of data that fits “in the pipe”: everything a sender has transmitted that has not yet been acknowledged. A link with a lot of bandwidth or a long round-trip time – a satellite connection, a transatlantic fibre or a 10-gigabit data-centre interconnect – holds a surprising amount of data in transit.
TCP can only have one receive window of unacknowledged data outstanding. If that window is smaller than the BDP, the sender stops and waits for acknowledgements, and the connection never reaches the link speed no matter how fast the line is. That is why the classic 64 KiB window (the limit without the window-scale option of RFC 7323) caps a 100 ms path at about 5.2 Mbit/s.
Enter the bandwidth and the round-trip time (ping) to get the BDP in bits and bytes, and enter your current window size to see the maximum throughput it permits, how much of the link it can use, and the window-scale shift needed to cover the BDP.
How to use the Bandwidth-Delay Product Calculator
- Bandwidth
- Round-trip time (RTT / ping)
- TCP receive window size — 65,535 bytes is the largest window without window scaling.
- Maximum segment size (MSS) — 1460 bytes on standard Ethernet (1500 MTU).
Results update as you type, every field has its own unit menu, and everything is calculated in your browser.
How it works
Convert the bandwidth to bits per second and the RTT to seconds and multiply. The window-limited throughput is the window in bits divided by the RTT; utilisation is that throughput divided by the link bandwidth, capped at 100%.
Worked example
A 220 Mbit/s connection with a 14 ms ping has BDP = 220 × 10⁶ × 0.014 = 3.08 × 10⁶ bits (3.08 Mbit), or 385,000 bytes (about 376 KiB). A 64 KiB window allows at most 65,536 × 8 ÷ 0.014 ≈ 37.4 Mbit/s – only 17% of the line. To fill the link the window must be at least 385 kB, which needs a window-scale shift of 3 (65,535 × 2³ ≈ 524 kB).
Window needed for common links
| Link | RTT | BDP |
|---|---|---|
| 100 Mbit/s home broadband | 20 ms | 250 kB |
| 1 Gbit/s fibre, cross-country | 60 ms | 7.5 MB |
| 50 Mbit/s geostationary satellite | 600 ms | 3.75 MB |
| 10 Gbit/s data-centre link | 1 ms | 1.25 MB |
Inputs explained
| Field | What to enter |
|---|---|
| Bandwidth | Units: Mbit/s, Gbit/s, kbit/s, bit/s, MB/s, GB/s … |
| Round-trip time (RTT / ping) | Units: ms, s, µs |
| TCP receive window size | Units: KiB, kB, B, MiB, MB. 65,535 bytes is the largest window without window scaling. |
| Maximum segment size (MSS) | In bytes. 1460 bytes on standard Ethernet (1500 MTU). |
What each result means
- Bandwidth-delay product = [Bandwidth]×[Round-trip time (RTT ÷ ping)]
- BDP in bytes (minimum window to fill the link) = [Bandwidth]×[Round-trip time (RTT ÷ ping)]÷8
- Segments in flight = [Bandwidth]×[Round-trip time (RTT ÷ ping)]÷8÷[Maximum segment size (MSS)]
- Maximum throughput with this window = min([TCP receive window size]×8÷[Round-trip time (RTT ÷ ping)], [Bandwidth])
- Link utilisation with this window = (min([TCP receive window size]×8÷[Round-trip time (RTT ÷ ping)]÷[Bandwidth], 1))×100
- Window-scale shift needed (RFC 7323) = max(0, ceil(log([Bandwidth]×[Round-trip time (RTT ÷ ping)]÷8÷65535, 2)))
Formula
BDP (bits) = bandwidth (bit/s) × RTT (s) · BDP (bytes) = BDP ÷ 8 · Max TCP throughput = window × 8 ÷ RTT · Window scale = ⌈log₂(BDP bytes ÷ 65,535)⌉
Worked example
Inputs — Bandwidth: 220 Mbit/s; Round-trip time (RTT / ping): 14 ms; TCP receive window size: 64 KiB; Maximum segment size (MSS): 1,460 bytes.
Results — Bandwidth-delay product = 3.08 Mbit; BDP in bytes (minimum window to fill the link) = 375.9766 KiB; Segments in flight = 263.7 segments; Maximum throughput with this window = 37.4491 Mbit/s; Link utilisation with this window = 17.02 %; Window-scale shift needed (RFC 7323) = 3.
Key terms
- Round-trip time (RTT)
- Time for a packet to reach the far end and its acknowledgement to return.
- Receive window
- The amount of unacknowledged data the receiver lets the sender transmit.
- Window scaling
- A TCP option that multiplies the 16-bit window field by 2ⁿ (n ≤ 14).
- MSS
- Maximum segment size – the TCP payload per packet.
Frequently asked questions
What is the bandwidth-delay product?
The amount of data that can be in transit on a path: bandwidth × round-trip time. 100 Mbit/s × 50 ms = 5 Mbit (625 kB).
Why does BDP matter for TCP?
A sender can only have one window of unacknowledged data outstanding. A window smaller than the BDP leaves the link idle part of the time.
What window do I need for 1 Gbit/s at 80 ms?
1 × 10⁹ × 0.08 = 80 Mbit = 10 MB, so the receive window must be at least about 10 MB (window scale shift 8).
Should I use the one-way delay or the RTT?
The round-trip time – data must travel out and the acknowledgement must come back before the window can slide.
What limits a 64 KiB window?
Throughput ≤ 65,536 × 8 ÷ RTT: about 52 Mbit/s at 10 ms, 5.2 Mbit/s at 100 ms and 0.87 Mbit/s on a 600 ms geostationary satellite path.
What is a long fat network?
A path whose BDP is much larger than 64 KiB (RFC 7323 uses the term) – it needs window scaling to perform well.