Home

cwnd

Cwnd, short for congestion window, is a TCP sender state variable that limits the amount of data that may be in flight. It defines the maximum number of bytes the sender may transmit before receiving acknowledgments, and it is constrained by the receiver’s advertised window (rwnd). Cwnd is typically expressed in bytes or in MSS units (the maximum segment size negotiated for the connection).

The cwnd value changes as the connection progresses in response to network conditions. At connection start,

Congestion events drive adjustments to cwnd. When packet loss is detected via triple duplicate acknowledgments, many

Cwnd interacts with other TCP elements and varies across implementations. While the cwnd concept is shared,

cwnd
is
small.
In
slow
start,
cwnd
grows
roughly
exponentially,
often
doubling
each
round-trip
time
until
it
reaches
a
threshold
called
ssthresh.
Beyond
ssthresh,
cwnd
grows
more
slowly,
in
a
linear
fashion
during
congestion
avoidance.
The
effective
window
for
sending
is
the
minimum
of
cwnd
and
rwnd.
implementations
perform
fast
retransmit
and
fast
recovery,
decreasing
cwnd
and
updating
ssthresh
to
about
half
of
the
prior
cwnd,
with
cwnd
set
to
ssthresh
and
growth
resuming.
If
a
timeout
occurs,
cwnd
is
typically
reset
to
1
MSS
and
ssthresh
is
set
to
half
of
the
previous
cwnd.
These
mechanisms
implement
additive
increase/multiplicative
decrease
(AIMD)
to
probe
for
available
capacity
while
preventing
congestion
collapse.
variants
such
as
Reno,
New
Reno,
and
Cubic
adjust
cwnd
differently
during
growth
and
in
response
to
losses.
The
sender’s
effective
window
is
the
smaller
of
cwnd
and
rwnd,
and
network
path
characteristics
influence
the
achievable
throughput.