taap.digitalnetwork engineering toolkit

What TCP window do I need for 100 Mbps at 200 ms RTT?

Answer
2.38 MiB bandwidth-delay product

100 Mbps × 0.2 s ÷ 8 = 2,500,000 bytes (2.38 MiB) in flight. A single TCP flow needs a window at least that large; with a classic 64 KiB window it would reach only 2.62 Mbps.

tcp-bdp · adjust the values
ms
KiB
%
B

The calculation

BDP = 100,000,000 bit/s × 0.2 s ÷ 8 = 2,500,000 B
64 KiB window: 65,536 × 8 ÷ 0.2 s = 2.62 Mbps
ItemValue
Bytes in flight (BDP)2,500,000 B
Window needed2,441 KiB
Window scale shift needed (RFC 7323)6 (65,535 × 26 ≥ BDP)
Throughput with 64 KiB window2.62 Mbps
Suggested max socket buffer (2× BDP)5 MB

Linux tuning for this path

sysctl -w net.core.rmem_max=5000000
sysctl -w net.core.wmem_max=5000000
sysctl -w net.ipv4.tcp_rmem="4096 131072 5000000"
sysctl -w net.ipv4.tcp_wmem="4096 65536 5000000"

Window scaling must survive end to end: confirm the wscale option in both SYN and SYN-ACK in a capture. On long paths, packet loss quickly becomes the next limit; add a loss rate in the tool to see the Mathis estimate, and consider BBR congestion control.

More questions like this

Frequently asked questions

Is the BDP the same as the buffer size?

The BDP is the minimum window to fill the link. Socket buffers are usually set to about twice the BDP so the receiver can keep advertising a full window while the application reads.

Will several parallel flows help?

Yes. N flows with 64 KiB windows reach about N × 2.62 Mbps, until the link or loss becomes the limit.