TCP Bandwidth-Delay Product Calculator

To keep a link full, TCP must have bandwidth × round-trip time worth of data in flight. If the receive window is smaller than this bandwidth-delay product, throughput is capped at window ÷ RTT.

Also called: BDP calculator · TCP window size calculator

  • Last updated
  • Formula tested against reference values

Your numbers

Bandwidth unit

64 KiB is the most a connection can use without window scaling.

Result

Bandwidth-delay product
—bytes

Calculating…

BDP
—
BDP
—
Minimum TCP window scale shift
—
Max throughput with that window
—
Does the window fill the path?
—

How to use this calculator

  1. Enter or choose bandwidth.
  2. Enter or choose bandwidth unit.
  3. Enter or choose round-trip time.
  4. Enter or choose receive window to test.
  5. The bandwidth-delay product updates as you type. Use Copy result or Share to keep it.

Method

BDP (bytes) = Bandwidth (bit/s) × RTT (s) ÷ 8; Max throughput = min(Window × 8 ÷ RTT, Bandwidth); Scale shift = ⌈log₂(BDP ÷ 65,535)⌉

Window
TCP receive window in bytes (1 KiB = 1,024 bytes)
Scale shift
RFC 7323 window scale option, 0–14

Worked example

  1. BDP = 10⁹ bit/s × 0.05 s = 5 × 10⁷ bits = 6,250,000 bytes (6.25 MB).
  2. 6,250,000 ÷ 65,535 = 95.4, and 2⁷ = 128 ≥ 95.4, so a window scale of 7 is needed.
  3. A 64 KiB window allows 65,536 × 8 ÷ 0.05 s = 10.486 Mbps, about 1% of the link.

A 1 Gbps path with 50 ms RTT needs about 6.25 MB in flight; a 64 KiB window would cap one TCP flow at 10.5 Mbps.

What the result means

Set socket buffers (for example net.ipv4.tcp_rmem on Linux) to at least the BDP for long, fast paths. If raising buffers is not possible, parallel streams each add their own window.

Assumptions and limits

  • RTT is measured under load, not just idle ping.
  • Only the receive window limits throughput; packet loss and congestion control are not modelled.
  • With packet loss, TCP throughput falls well below the window limit.

Questions

Why 65,535 bytes?

The TCP header’s window field is 16 bits. Larger windows need the window scale option, which shifts the value left by up to 14 bits.

Is the BDP in MB or MiB?

Both are shown: buffer settings are usually in bytes, so the exact byte figure is the safest to use.