#5757·quic-go

restore congestion control state after spurious congestion events

Author: marten-seemannCreated Jul 20, 2026Updated Aug 29, 2026
Labelsenhancement

Some other QUIC stacks (e.g. MsQuic) restore congestion controller state when they detect a spurious congestion event (e.g. spurious packet loss).

This helps restore the multiplicative decrease of the cwnd for "classical" congestion controllers like New Reno and Cubic: On high-bandwidth connections, recovering from a packet loss event can take a long time, since the loss collapses the window to 70%, but every RTT without packet loss just adds a single packet to the cwnd (slightly simplified description of New Reno).

MsQuic apparently does this by saving a single copy of the old congestion control state, when a packet loss happens.

We need to be a bit careful here to correctly handle multiple packet loss events during a single RTT: If at least one of them was not spurious, we probably should not restore the congestion control state.