About this simulator
When senders push more data than a bottleneck link can carry, router buffers overflow and packets are dropped. TCP reacts by changing its congestion window cwnd: it doubles every round trip in slow start, grows by one in congestion avoidance and shrinks after a loss. Change the link capacity and buffer to see the famous sawtooth.
How it works
- Slow start: doubles each RTT until it reaches . Congestion avoidance: grows by 1 per RTT.
- The link carries C packets per RTT and the buffer holds B more. Sending more than packets in one round drops packets.
- Tahoe restarts from after a loss; Reno halves (fast recovery). Both set .
Formulas used
- Loss when
- after a loss
- Tahoe: Reno:
Worked example
With link capacity and buffer packets per RTT and , grows (slow start) and then (congestion avoidance). At more than packets are sent, so one is dropped in RTT 20. becomes ; Tahoe restarts at , Reno continues from 15.
Enter these numbers in the simulator above to see every step.
When to use it
- Understanding slow start, congestion avoidance and fast recovery for networks exams.
- Comparing TCP Tahoe and TCP Reno.
- Seeing how buffer size changes loss and utilisation.
Frequently asked questions
What is the difference between TCP Tahoe and Reno?
After a loss Tahoe sets cwnd to 1 and restarts slow start. Reno halves cwnd (fast recovery) and continues in congestion avoidance, so it recovers faster.
What is ssthresh?
The slow-start threshold: below it cwnd doubles every RTT; above it cwnd grows by 1 per RTT. After a loss it is set to half of the window at the time of loss.
Why does TCP's congestion window look like a sawtooth?
It grows slowly until a loss, drops sharply, then grows again — the additive-increase, multiplicative-decrease (AIMD) pattern.