4.3. Loss Recovery Mechanisms
Overview
A number of loss recovery algorithms that augment fast retransmit and fast recovery have been suggested by TCP researchers and specified in the RFC series.
SACK-Based Algorithms
Some algorithms are based on the TCP selective acknowledgment (SACK) option [RFC2018], such as:
- [FF96]
- [MM96a]
- [MM96b]
- [RFC3517]
Non-SACK Algorithms
Others do not require SACKs, such as:
- [Hoe96]
- [FF96]
- [RFC3782]
The non-SACK algorithms use "partial acknowledgments" (ACKs that cover previously unacknowledged data, but not all the data outstanding when loss was detected) to trigger retransmissions.
General Principles
While this document does not standardize any of the specific algorithms that may improve fast retransmit/fast recovery, these enhanced algorithms are implicitly allowed, as long as they follow the general principles of the basic four algorithms outlined above.
Required Behaviors
-
When the first loss in a window of data is detected, ssthresh MUST be set to no more than the value given by equation (4)
-
Until all lost segments in the window of data in question are repaired, the number of segments transmitted in each RTT MUST be no more than half the number of outstanding segments when the loss was detected
-
After all loss in the given window of segments has been successfully retransmitted, cwnd MUST be set to no more than ssthresh and congestion avoidance MUST be used to further increase cwnd
Multiple Loss Windows
Loss in two successive windows of data, or the loss of a retransmission, should be taken as two indications of congestion and, therefore, cwnd (and ssthresh) MUST be lowered twice in this case.
Recommendation
We RECOMMEND that TCP implementors employ some form of advanced loss recovery that can cope with multiple losses in a window of data.
The algorithms detailed in [RFC3782] and [RFC3517] conform to the general principles outlined above. We note that while these are not the only two algorithms that conform to the above general principles, these two algorithms have been vetted by the community and are currently on the Standards Track.