Skip to content
gohacks.dev
Performance

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.

Keep planning

Similar tools