← Playground

TCP Latency Lab

royhp.com

Data segments stream from the Client to the Server; each one is answered by an ACK. A sender may only keep one window of unacknowledged data in flight, so steady-state throughput is roughly window ÷ RTT — capped by the link's bandwidth. The window that exactly fills the pipe is the bandwidth-delay product (BDP = bandwidth × RTT). Drag the sliders and watch the wire, the metrics, and the timeline react live.

Presets
Throughput
0.0
Mbps goodput
Link utilisation
0%
cap 0.0 Mbps
Measured RTT
0
base 0 ms
In flight
0
0 KB unacked
Retransmits
0
window 0 KB
Window vs bandwidth-delay product
Window 0 KB BDP 0 KB (white marker) fills 0% of the pipe
Congestion control
Speed
Throughput Bandwidth ceiling Effective window BDP

Try this: with the defaults the window is smaller than the BDP, so you're window-limited — push Window size up toward the white BDP marker and watch throughput climb to the bandwidth ceiling. Go past it and the extra bytes just pile into the bottleneck queue: throughput stays flat but measured RTT balloons (bufferbloat). Raise Packet loss to see retransmits stall the window; switch to AIMD for the classic slow-start ramp and sawtooth back-off. The Satellite preset shows why long fat networks need huge windows — throughput ≈ window ÷ RTT.