Skip to content
Calcrivo

Congestion Window Calculator

Model the AIMD sawtooth: how far cwnd drops on loss and how many round trips recovery takes.

Inputs

segments
bytes
ms
segments

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

  1. 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

  2. Congestion Window

    On loss cwnd → cwnd × β; recovery takes (cwnd − cwnd × β) ÷ additive increase round trips.

  3. Throughput from mean window

    average throughput = mean cwnd × MSS × 8 ÷ RTT

  4. Congestion Window After Loss

    = 20.0 segments

  5. Round Trips To Recover

    = 20

  6. Recovery Time

    = 500 ms

  7. Average Window Over The Sawtooth

    = 30.0 segments

  8. 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