Congestion Window Calculator
Model the AIMD sawtooth: how far cwnd drops on loss and how many round trips recovery takes.
Inputs
Congestion Window After Loss
20.0segments
Round Trips To Recover
20
Recovery Time
500ms
Average Window Over The Sawtooth
30.0segments
Average Throughput
14.02Mbit/s
Step by step
Values used
Congestion window before loss = 40 segments; Maximum segment size = 1,460 bytes; Round-trip time = 25 ms; Multiplicative decrease factor = 0.5000; Additive increase per RTT = 1 segments
Congestion Window
On loss cwnd → cwnd × β; recovery takes (cwnd − cwnd × β) ÷ additive increase round trips.
Throughput from mean window
average throughput = mean cwnd × MSS × 8 ÷ RTT
Congestion Window After Loss
= 20.0 segments
Round Trips To Recover
= 20
Recovery Time
= 500 ms
Average Window Over The Sawtooth
= 30.0 segments
Average Throughput
= 14.02 Mbit/s
How it works
Loss-based congestion control cuts the window by a fixed fraction, then rebuilds it linearly at one segment per round trip. The mean of that sawtooth is what the application actually experiences as throughput. Recovery time scales with RTT × window, so on a long path a single loss can cost seconds of reduced throughput — which is why CUBIC uses β = 0.7 instead of Reno's 0.5.
Formulas
Congestion Window
On loss cwnd → cwnd × β; recovery takes (cwnd − cwnd × β) ÷ additive increase round trips.
- β
- Multiplicative decrease factor (0.5 for Reno, 0.7 for CUBIC)
- cwnd
- Congestion window in segments
Throughput from mean window
average throughput = mean cwnd × MSS × 8 ÷ RTT
- mean cwnd
- Midpoint of the sawtooth
- RTT
- Round-trip time in seconds
Frequently Asked Questions
How is Congestion Window calculated?
On loss cwnd → cwnd × β; recovery takes (cwnd − cwnd × β) ÷ additive increase round trips. Loss-based congestion control cuts the window by a fixed fraction, then rebuilds it linearly at one segment per round trip. The mean of that sawtooth is what the application actually experiences as throughput.
Why does Congestion Window matter?
Recovery time scales with RTT × window, so on a long path a single loss can cost seconds of reduced throughput — which is why CUBIC uses β = 0.7 instead of Reno's 0.5.
What values do I need to enter?
This calculator takes 5 inputs: Congestion window before loss, Maximum segment size, Round-trip time, Multiplicative decrease factor, Additive increase per RTT. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
You might also need
- TCP Slow Start CalculatorCommonly used together
- Bandwidth Delay Product CalculatorCommonly used together
- TCP Retransmission CalculatorCommonly used together
- Packets Per Second CalculatorAlso in TCP & Transport
- TCP Window Size CalculatorAlso in TCP & Transport
- Queue Depth CalculatorAlso in TCP & Transport