taap.digitalnetwork engineering toolkit

What TCP window do I need for 1 Gbps at 600 ms RTT?

Answer
71.5 MiB bandwidth-delay product

1 Gbps × 0.6 s ÷ 8 = 75,000,000 bytes (71.5 MiB) in flight. A single TCP flow needs a window at least that large; with a classic 64 KiB window it would reach only 0.874 Mbps.

tcp-bdp · adjust the values
ms
KiB
%
B

The calculation

BDP = 1,000,000,000 bit/s × 0.6 s ÷ 8 = 75,000,000 B
64 KiB window: 65,536 × 8 ÷ 0.6 s = 0.874 Mbps
ItemValue
Bytes in flight (BDP)75,000,000 B
Window needed73,242 KiB
Window scale shift needed (RFC 7323)11 (65,535 × 211 ≥ BDP)
Throughput with 64 KiB window0.874 Mbps
Suggested max socket buffer (2× BDP)150 MB

Linux tuning for this path

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

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 × 0.874 Mbps, until the link or loss becomes the limit.