Skip to content
shellhacks.dev

Bandwidth Delay Product Calculator

Calculate the bandwidth-delay product of a link, the maximum throughput a TCP window allows at a given round-trip time, and Linux buffer settings to match.

Free · No sign-up · Your inputs stay in your browser

Input

Calculate the bandwidth-delay product and TCP window

Output

9.54 MiB in flight

Bandwidth-delay product

10,000,000 bytes

The window needed to keep the link full.

Max throughput with a 64 KiB window

6.6 Mbit/s

0.7% of the link: the window, not the link, is the bottleneck.

sysctl (Linux)

net.core.rmem_max = 20971520 net.core.wmem_max = 20971520 net.ipv4.tcp_rmem = 4096 131072 20971520 net.ipv4.tcp_wmem = 4096 16384 20971520

Twice the BDP, at least 4 MiB. Apply with sysctl -p after adding to /etc/sysctl.d/.

A single TCP connection can send at most one window per round trip, so throughput is capped at window ÷ RTT whatever the link speed. Filling a long fat pipe needs a window at least as large as the bandwidth-delay product. Linux scales the window automatically up to the maximums below; the defaults are often too small for transfers across continents.

Runs in this browser. Nothing you paste is sent to a server.

Why a fast link can be slow

TCP sends at most one window of data per round trip, so a single connection's throughput is capped at window divided by RTT. With a 64 KiB window, which is what you get without window scaling, an 80 ms transatlantic link carries about 6.5 Mbit/s however fast it is. Window scaling (RFC 7323) and large enough buffers fix it.

Tuning Linux

Linux autotunes the window up to tcp_rmem and tcp_wmem's maximums. Raising them helps long, fast paths such as replication between regions or backups to distant storage. Several parallel connections, as rclone and aria2 use, get around a small window too.

Share

Frequently asked questions

How do I measure round-trip time?
ping shows it per packet; mtr shows it per hop. Use the average under normal load.
Does BBR change this?
BBR is a congestion control algorithm that paces sending to the measured bandwidth. It still needs buffers at least as large as the bandwidth-delay product to fill the link.
Is what I paste sent anywhere?
No. The tool runs entirely in your browser with JavaScript. Nothing you type or paste is sent to our server or stored.

Go deeper

Suggested reading

Keep planning

Similar tools