taap.digitalnetwork engineering toolkit

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

Answer
5.96 MiB bandwidth-delay product

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

tcp-bdp · adjust the values
ms
KiB
%
B

The calculation

BDP = 1,000,000,000 bit/s × 0.05 s ÷ 8 = 6,250,000 B
64 KiB window: 65,536 × 8 ÷ 0.05 s = 10.5 Mbps
ItemValue
Bytes in flight (BDP)6,250,000 B
Window needed6,104 KiB
Window scale shift needed (RFC 7323)7 (65,535 × 27 ≥ BDP)
Throughput with 64 KiB window10.5 Mbps
Suggested max socket buffer (2× BDP)12 MB

Linux tuning for this path

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

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