TCP

Standards

Tools

Algorithms

Slow start
increment cwnd by one for each ACK returned if cwnd < ssthresh; equivalent to exponential growth of window;
Congestion avoidance
increment cwnd by segsize*segsize/cwnd for each ACK; thus, linear growth;
Fast retransmit (Tahoe)
if three or more duplicate ACKs received, retransmit missing segment;
Fast recovery (Reno)
after fast retransmit, perform congestion avoidance (set cwnd to ssthresh)
On Timeout
ssthresh = 0.5 cwnd
cwnd = 1
3 duplicate ACKs
ssthresh = 0.5 cwnd

Initial Values

RTT 0 s
RTO initial: RTO = A + 2D = 0 + 2*3 = 6 s (RFC 1122 is no longer followed; it called for an initial RTO of 3 seconds).
variance to fit initial RTO
cwnd 1 segment
MSS 512 or 536 (or announced)
MSL
OS version seconds
4.2 BSD 30
4.3 BSD 15
4.3 Tahoe 15
4.3 Reno 30
4.4 BSD 30

Congestion Control

Implementations

Performance

Miscellaneous


Internet Technical Notes and Resources

Last updated by Henning Schulzrinne