Enhancing TCP's Loss Recovery Using Limited Transmit
RFC 3042

Document Type RFC - Proposed Standard (January 2001; No errata)
Authors Sally Floyd  , Hari Balakrishnan  , Mark Allman 
Last updated 2013-03-02
Stream IETF
Formats plain text html pdf htmlized bibtex
Stream WG state (None)
Document shepherd No shepherd assigned
IESG IESG state RFC 3042 (Proposed Standard)
Consensus Boilerplate Unknown
Telechat date
Responsible AD (None)
Send notices to (None)
Network Working Group                                          M. Allman
Request for Comments: 3042                                  NASA GRC/BBN
Category: Standards Track                                H. Balakrishnan
                                                                S. Floyd
                                                            January 2001

          Enhancing TCP's Loss Recovery Using Limited Transmit

Status of this Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2001).  All Rights Reserved.


   This document proposes a new Transmission Control Protocol (TCP)
   mechanism that can be used to more effectively recover lost segments
   when a connection's congestion window is small, or when a large
   number of segments are lost in a single transmission window.  The
   "Limited Transmit" algorithm calls for sending a new data segment in
   response to each of the first two duplicate acknowledgments that
   arrive at the sender.  Transmitting these segments increases the
   probability that TCP can recover from a single lost segment using the
   fast retransmit algorithm, rather than using a costly retransmission
   timeout.  Limited Transmit can be used both in conjunction with, and
   in the absence of, the TCP selective acknowledgment (SACK) mechanism.

1   Introduction

   A number of researchers have observed that TCP's loss recovery
   strategies do not work well when the congestion window at a TCP
   sender is small.  This can happen, for instance, because there is
   only a limited amount of data to send, or because of the limit
   imposed by the receiver-advertised window, or because of the
   constraints imposed by end-to-end congestion control over a
   connection with a small bandwidth-delay product
   [Riz96,Mor97,BPS+98,Bal98,LK98].  When a TCP detects a missing
   segment, it enters a loss recovery phase using one of two methods.

Allman, et al.              Standards Track                     [Page 1]
RFC 3042              Enhancing TCP Loss Recovery           January 2001

   First, if an acknowledgment (ACK) for a given segment is not received
   in a certain amount of time a retransmission timeout occurs and the
   segment is resent [RFC793,PA00].  Second, the "Fast Retransmit"
   algorithm resends a segment when three duplicate ACKs arrive at the
   sender [Jac88,RFC2581].  However, because duplicate ACKs from the
   receiver are also triggered by packet reordering in the Internet, the
   TCP sender waits for three duplicate ACKs in an attempt to
   disambiguate segment loss from packet reordering.  Once in a loss
   recovery phase, a number of techniques can be used to retransmit lost
   segments, including slow start-based recovery or Fast Recovery
   [RFC2581], NewReno [RFC2582], and loss recovery based on selective
   acknowledgments (SACKs) [RFC2018,FF96].

   TCP's retransmission timeout (RTO) is based on measured round-trip
   times (RTT) between the sender and receiver, as specified in [PA00].
   To prevent spurious retransmissions of segments that are only delayed
   and not lost, the minimum RTO is conservatively chosen to be 1
   second.  Therefore, it behooves TCP senders to detect and recover
   from as many losses as possible without incurring a lengthy timeout
   when the connection remains idle.  However, if not enough duplicate
   ACKs arrive from the receiver, the Fast Retransmit algorithm is never
   triggered---this situation occurs when the congestion window is small
   or if a large number of segments in a window are lost.  For instance,
   consider a congestion window (cwnd) of three segments.  If one
   segment is dropped by the network, then at most two duplicate ACKs
   will arrive at the sender.  Since three duplicate ACKs are required
   to trigger Fast Retransmit, a timeout will be required to resend the
   dropped packet.

   [BPS+97] found that roughly 56% of retransmissions sent by a busy web
   server were sent after the RTO expires, while only 44% were handled
   by Fast Retransmit.  In addition, only 4% of the RTO-based
   retransmissions could have been avoided with SACK, which of course
   has to continue to disambiguate reordering from genuine loss.  In
   contrast, using the technique outlined in this document and in
   [Bal98], 25% of the RTO-based retransmissions in that dataset would
   have likely been avoided.

   The next section of this document outlines small changes to TCP
   senders that will decrease the reliance on the retransmission timer,
Show full document text