RFC 2582 (rfc2582) - Page 2 of 12
The NewReno Modification to TCP's Fast Recovery Algorithm
Alternative Format: Original Text Document
RFC 2582 NewReno Modification to TCP's Fast Recovery April 1999
Problems can arise, therefore, when multiple packets have been
dropped from a single window of data and the Fast Retransmit and Fast
Recovery algorithms are invoked. In this case, if the SACK option is
available, the TCP sender has the information to make intelligent
decisions about which packets to retransmit and which packets not to
retransmit during Fast Recovery. This document applies only for TCP
connections that are unable to use the TCP Selective Acknowledgement
(SACK) option.
In the absence of SACK, there is little information available to the
TCP sender in making retransmission decisions during Fast Recovery.
From the three duplicate acknowledgements, the sender infers a packet
loss, and retransmits the indicated packet. After this, the data
sender could receive additional duplicate acknowledgements, as the
data receiver acknowledges additional data packets that were already
in flight when the sender entered Fast Retransmit.
In the case of multiple packets dropped from a single window of data,
the first new information available to the sender comes when the
sender receives an acknowledgement for the retransmitted packet (that
is the packet retransmitted when Fast Retransmit was first entered).
If there had been a single packet drop, then the acknowledgement for
this packet will acknowledge all of the packets transmitted before
Fast Retransmit was entered (in the absence of reordering). However,
when there were multiple packet drops, then the acknowledgement for
the retransmitted packet will acknowledge some but not all of the
packets transmitted before the Fast Retransmit. We call this packet
a partial acknowledgment.
Along with several other suggestions, [Hoe95] suggested that during
Fast Recovery the TCP data sender respond to a partial acknowledgment
by inferring that the indicated packet has been lost, and
retransmitting that packet. This document describes a modification
to the Fast Recovery algorithm in Reno TCP that incorporates a
response to partial acknowledgements received during Fast Recovery.
We call this modified Fast Recovery algorithm NewReno, because it is
a slight but significant variation of the basic Reno algorithm. This
document does not discuss the other suggestions in [Hoe95] and
[Hoe96], such as a change to the ssthresh parameter during Slow-
Start, or the proposal to send a new packet for every two duplicate
acknowledgements during Fast Recovery. The version of NewReno in
this document also draws on other discussions of NewReno in the
literature [LM97].
We do not claim that the NewReno version of Fast Recovery described
here is an optimal modification of Fast Recovery for responding to
partial acknowledgements, for TCPs that are unable to use SACK.
Based on our experiences with the NewReno modification in the NS
Floyd & Henderson Experimental