Paper Review: TCP Slow Start, Congestion Avoidance, Fast
Retransmit, and Fast Recovery Algorithms
Reviewer: Mark Meras (mm446)
Main Contribution
This paper by Stevens documents four algorithms used by TCP to deal with
packet congestion. Two of them, Slow Start and Congestion Avoidance, are
required for a TCP, while the other two, Fast Retransmit and Fast Recovery
Algorithm, are new improvements over the TCP requirement.
Key Ideas
-
Slow Start deals with congestion by avoiding the usual behavior of
sending as many segments as possible (i.e. the advertised window size).
Instead, it increases the congestion window, cwnd, by the number of ACKs
it receives. Until congestion occurs, Slow Start will therefore create
exponential growth in the congestion window size.
-
Congestion Avoidance deals with avoiding congestion once the
congestion window gets to an "average" size. Once cwnd gets to half the
size of its previous value (i.e. when congestion occured), the growth in
cwnd is linear, not exponential. The half of the previous value is stored
in ssthresh, the slow start threshold size.
-
Fast Retransmit and Fast Recovery are recent algorithms that adjust the
cwnd and ssthresh to allow congestion control to be used without slow
start. This is to allow congestion control to take place without
immediately decreasing the number of segments sent back to 1.
Critique of Contribution
- The RFC does a good job explaining slow start and congestion control
- However, the details on Fast Retransmit and Fast Recovery are very
skimpy. It would seem those sections would be of the most value, as they
are not in the TCP requirements.
- The contribution is not a new design or analysis, but only a review.
In that respect, it is a successful one.