home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.lbl.gov / 2014.05.ftp.ee.lbl.gov.tar / ftp.ee.lbl.gov / papers / draft-ietf-tcpimpl-newreno-02.txt < prev    next >
Text File  |  1999-02-08  |  28KB  |  661 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Internet Engineering Task Force                              Sally Floyd
  8. INTERNET DRAFT                                                     ACIRI
  9. draft-ietf-tcpimpl-newreno-02.txt                          Tom Henderson
  10.                                                            U.C. Berkeley
  11.                                                            February 1999
  12.                                                    Expires:  August 1999
  13.  
  14.  
  15.  
  16.        The NewReno Modification to TCP's Fast Recovery Algorithm
  17.  
  18.  
  19.  
  20.                           Status of this Memo
  21.  
  22.    This document is an Internet-Draft and is in full conformance with
  23.    all provisions of Section 10 of RFC2026.  Internet-Drafts are working
  24.    documents of the Internet Engineering Task Force (IETF), its areas,
  25.    and its working groups.  Note that other groups may also distribute
  26.    working documents as Internet-Drafts.
  27.  
  28.    Internet-Drafts are draft documents valid for a maximum of six months
  29.    and may be updated, replaced, or obsoleted by other documents at any
  30.    time.  It is inappropriate to use Internet- Drafts as reference
  31.    material or to cite them other than as "work in progress."
  32.  
  33.    To view the entire list of current Internet-Drafts, please check the
  34.    "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  35.    Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern
  36.    Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific
  37.    Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast).
  38.  
  39. Abstract
  40.  
  41.    RFC 2001 [RFC2001] documents the following four intertwined TCP
  42.    congestion control algorithms: Slow Start, Congestion Avoidance, Fast
  43.    Retransmit, and Fast Recovery.  RFC 2001-bis [RFC2001-bis] explicitly
  44.    allows certain modifications of these algorithms, including
  45.    modifications that use the TCP Selective Acknowledgement (SACK)
  46.    option [MMFR96], and modifications that respond to ``partial
  47.    acknowledgments'' (ACKs which cover new data, but not all the data
  48.    outstanding when loss was detected) in the absence of SACK.  This
  49.    document describes a specific algorithm for responding to partial
  50.    acknowledgments, referred to as NewReno.  This response to partial
  51.    acknowledgments was first proposed by Janey Hoe in [Hoe95].
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Floyd and Henderson           Experimental                      [Page 1]
  59.  
  60.  
  61.  
  62.  
  63.  
  64. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  65.  
  66.  
  67. 1. Introduction
  68.  
  69.    For the typical implementation of the TCP Fast Recovery algorithm
  70.    described in [RFC2001-bis] (first implemented in the 1990 BSD Reno
  71.    release, and referred to as the Reno algorithm in [FF96]), the TCP
  72.    data sender only retransmits a packet after a retransmit timeout has
  73.    occurred, or after three duplicate acknowledgements have arrived
  74.    triggering the Fast Retransmit algorithm.  A single retransmit
  75.    timeout might result in the retransmission of several data packets,
  76.    but each invocation of the Reno Fast Retransmit algorithm leads to
  77.    the retransmission of only a single data packet.
  78.  
  79.    Problems can arise, therefore, when multiple packets have been
  80.    dropped from a single window of data and the Fast Retransmit and Fast
  81.    Recovery algorithms are invoked.  In this case, if the SACK option is
  82.    available, the TCP sender has the information to make intelligent
  83.    decisions about which packets to retransmit and which packets not to
  84.    retransmit during Fast Recovery.  This document applies only for TCP
  85.    connections that are unable to use the TCP Selective Acknowledgement
  86.    (SACK) option.
  87.  
  88.    In the absence of SACK, there is little information available to the
  89.    TCP sender in making retransmission decisions during Fast Recovery.
  90.    From the three duplicate acknowledgements, the sender infers a packet
  91.    loss, and retransmits the indicated packet.  After this, the data
  92.    sender could receive additional duplicate acknowledgements, as the
  93.    data receiver acknowledges additional data packets that were already
  94.    in flight when the sender entered Fast Retransmit.
  95.  
  96.    In the case of multiple packets dropped from a single window of data,
  97.    the first new information available to the sender comes when the
  98.    sender receives an acknowledgement for the retransmitted packet (that
  99.    is the packet retransmitted when Fast Retransmit was first entered).
  100.    If there had been a single packet drop, then the acknowledgement for
  101.    this packet will acknowledge all of the packets transmitted before
  102.    Fast Retransmit was entered (in the absence of reordering).  However,
  103.    when there were multiple packet drops, then the acknowledgement for
  104.    the retransmitted packet will acknowledge some but not all of the
  105.    packets transmitted before the Fast Retransmit.  We call this packet
  106.    a partial acknowledgment.
  107.  
  108.    Along with several other suggestions, [Hoe95] suggested that during
  109.    Fast Recovery the TCP data sender respond to a partial acknowledgment
  110.    by inferring that the indicated packet has been lost, and
  111.    retransmitting that packet.  This document describes a modification
  112.    to the Fast Recovery algorithm in Reno TCP that incorporates a
  113.    response to partial acknowledgements received during Fast Recovery.
  114.    We call this modified Fast Recovery algorithm NewReno, because it is
  115.  
  116.  
  117.  
  118. Floyd and Henderson           Experimental                      [Page 2]
  119.  
  120.  
  121.  
  122.  
  123.  
  124. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  125.  
  126.  
  127.    a slight but significant variation of the basic Reno algorithm.  This
  128.    document does not discuss the other suggestions in [Hoe95] and
  129.    [Hoe96], such as a change to the ssthresh parameter during Slow-
  130.    Start, or the proposal to send a new packet for every two duplicate
  131.    acknowledgements during Fast Recovery.  The version of NewReno in
  132.    this document also draws on other discussions of NewReno in the
  133.    literature [LM97].
  134.  
  135.    We do not claim that the NewReno version of Fast Recovery described
  136.    here is an optimal modification of Fast Recovery for responding to
  137.    partial acknowledgements, for TCPs that are unable to use SACK.
  138.    Based on our experiences with the NewReno modification in the NS
  139.    simulator [NS], we believe that this modification improves the
  140.    performance of the Fast Retransmit and Fast Recovery algorithms in a
  141.    wide variety of scenarios, and we are simply documenting it for the
  142.    benefit of the IETF community.  We encourage the use of this
  143.    modification to Fast Recovery, and we further encourage feedback
  144.    about operational experiences with this or related modifications.
  145.  
  146. 2. Definitions
  147.  
  148.    This document assumes that the reader is familiar with the terms
  149.    MAXIMUM SEGMENT SIZE (MSS), CONGESTION WINDOW (cwnd), and FLIGHT SIZE
  150.    (FlightSize) defined in [RFC2001-bis].  FLIGHT SIZE is defined as in
  151.    [RFC2001-bis] as follows:
  152.  
  153.        FLIGHT SIZE:
  154.            The amount of data that has been sent but not yet
  155.    acknowledged.
  156.  
  157. 3. The Fast Retransmit and Fast Recovery algorithms in NewReno
  158.  
  159.    The standard implementation of the Fast Retransmit and Fast Recovery
  160.    algorithms is given in [RFC2001-bis].  The NewReno modification of
  161.    these algorithms is given below.   This NewReno modification differs
  162.    from the implementation in [RFC2001-bis] only in the introduction of
  163.    the variable "recover" in step 1, and in the response to a partial or
  164.    new acknowledgement in step 5.
  165.  
  166.    1.  When the third duplicate ACK is received, set ssthresh to no
  167.        more than the value given in equation 1 below.  (This is
  168.        equation 3 from [RFC2001-bis]).
  169.  
  170.              ssthresh = max (FlightSize / 2, 2*MSS)           (1)
  171.  
  172.        Record the highest sequence number transmitted in the
  173.        variable "recover".
  174.  
  175.  
  176.  
  177.  
  178. Floyd and Henderson           Experimental                      [Page 3]
  179.  
  180.  
  181.  
  182.  
  183.  
  184. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  185.  
  186.  
  187.    2.  Retransmit the lost segment and set cwnd to ssthresh plus 3*MSS.
  188.        This artificially "inflates" the congestion window by the number
  189.        of segments (three) that have left the network and which the
  190.        receiver has buffered.
  191.  
  192.    3.  For each additional duplicate ACK received, increment cwnd by
  193.        MSS.  This artificially inflates the congestion window in order
  194.        to reflect the additional segment that has left the network.
  195.  
  196.    4.  Transmit a segment, if allowed by the new value of cwnd and the
  197.        receiver's advertised window.
  198.  
  199.    5.  When an ACK arrives that acknowledges new data, this ACK could be
  200.        the acknowledgment elicited by the retransmission from step 2, or
  201.        elicited by a later retransmission.
  202.  
  203.        If this ACK acknowledges all of the data up to and including
  204.        "recover", then the ACK acknowledges all the intermediate
  205.        segments sent between the original transmission of the lost
  206.        segment and the receipt of the third duplicate ACK.  Set cwnd to
  207.        either (1) min (ssthresh, FlightSize + MSS); or (2) ssthresh,
  208.        where ssthresh is the value set in step 1; this is termed
  209.        "deflating" the window.  (We note that "FlightSize" in step 1
  210.        referred to the amount of data outstanding in step 1, when Fast
  211.        Recovery was entered, while "FlightSize" in step 5 refers to the
  212.        amount of data outstanding in step 5, when Fast Recovery is
  213.        exited.) If the second option is selected, the implementation
  214.        should take measures to avoid a possible burst of data, in case
  215.        the amount of data outstanding in the network was much less than
  216.        the new congestion window allows [HTH98].  Clear the counter
  217.        recording the number of duplicate acknowledgements, exiting the
  218.        Fast Recovery procedure.
  219.  
  220.        If this ACK does *not* acknowledge all of the data up to and
  221.        including "recover", then this is a partial ACK.  In this case,
  222.        retransmit the first unacknowledged segment.  Deflate the
  223.        congestion window by the amount of new data acknowledged, then
  224.        add back one MSS and send a new segment if permitted by the new
  225.        value of cwnd.  This "partial window deflation" attempts to
  226.        ensure that, when Fast Recovery eventually ends, approximately
  227.        ssthresh amount of data will be outstanding in the network.  Do
  228.        not clear the counter recording the number of duplicate
  229.        acknowledgements (i.e., do not exit the Fast Recovery procedure).
  230.  
  231.        For the first partial ACK that arrives during Fast Recovery, also
  232.        reset the retransmit timer.
  233.  
  234.    Note that in Step 5, the congestion window is deflated when a partial
  235.  
  236.  
  237.  
  238. Floyd and Henderson           Experimental                      [Page 4]
  239.  
  240.  
  241.  
  242.  
  243.  
  244. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  245.  
  246.  
  247.    acknowledgement is received.  The congestion window was likely to
  248.    have been inflated considerably when the partial acknowledgement was
  249.    received.  In addition, depending on the original pattern of packet
  250.    losses, the partial acknowledgement might acknowledge nearly a window
  251.    of data.  In this case, if the congestion window was not deflated,
  252.    the data sender might be able to send nearly a window of data back-
  253.    to-back.
  254.  
  255.    There are several possible variants to the simple response to partial
  256.    acknowledgements described above.  First, there is a question of when
  257.    to reset the retransmit timer after a partial acknowledgement.  This
  258.    is discussed further in Section 4 below.
  259.  
  260.    There is a related question of how many packets to retransmit after
  261.    each partial acknowledgement.  The algorithm described above
  262.    retransmits a single packet after each partial acknowledgement.  This
  263.    is the most conservative alternative, in that it is the least likely
  264.    to result in an unnecessarily-retransmitted packet.  A variant that
  265.    would recover faster from a window with many packet drops would be to
  266.    effectively Slow-Start, requiring less than N roundtrip times to
  267.    recover from N losses [Hoe96].  With this slightly-more-aggressive
  268.    response to partial acknowledgements, it would be advantageous to
  269.    reset the retransmit timer after each retransmission.  Because we
  270.    have not experimented with this variant in our simulator, we do not
  271.    discuss this variant further in this document.
  272.  
  273.    A third question involves avoiding multiple Fast Retransmits caused
  274.    by the retransmission of packets already received by the receiver.
  275.    This is discussed in Section 5 below.  Avoiding multiple Fast
  276.    Retransmits is particularly important if more aggressive responses to
  277.    partial acknowledgements are implemented, because in this case the
  278.    sender is more likely to retransmit packets already received by the
  279.    receiver.
  280.  
  281.    As a final note, we would observe that in the absence of the SACK
  282.    option, the data sender is working from limited information.  One
  283.    could spend a great deal of time considering exactly which variant of
  284.    Fast Recovery is optimal for which scenario in this case.  When the
  285.    issue of recovery from multiple dropped packets from a single window
  286.    of data is of particular importance, the best alternative would be to
  287.    use the SACK option.
  288.  
  289. 4. Resetting the retransmit timer.
  290.  
  291.    The algorithm in Section 3 resets the retransmit timer only after the
  292.    first partial ACK.  In this case, if a large number of packets were
  293.    dropped from a window of data, the TCP data sender's retransmit timer
  294.    will ultimately expire, and the TCP data sender will invoke Slow-
  295.  
  296.  
  297.  
  298. Floyd and Henderson           Experimental                      [Page 5]
  299.  
  300.  
  301.  
  302.  
  303.  
  304. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  305.  
  306.  
  307.    Start.  (This is illustrated on page 12 of [F98].)  We call this the
  308.    Impatient variant of NewReno.
  309.  
  310.    In contrast, the NewReno simulations in [FF96] illustrate the
  311.    algorithm described above, with the modification that the retransmit
  312.    timer is reset after each partial acknowledgement.  We call this the
  313.    Slow-but-Steady variant of NewReno.  In this case, for a window with
  314.    a large number of packet drops, the TCP data sender retransmits at
  315.    most one packet per roundtrip time.  (This behavior is illustrated in
  316.    the New-Reno TCP simulation of Figure 5 in [FF96], and on page 11 of
  317.    [F98].)
  318.  
  319.    For TCP implementations where the Retransmission Timeout Value (RTO)
  320.    is generally not much larger than the round-trip time (RTT), the
  321.    Impatient variant can result in a retransmit timeout even in a
  322.    scenario with a small number of packet drops.  For TCP
  323.    implementations where the Retransmission Timeout Value (RTO) is
  324.    usually considerably larger than the round-trip time (RTT), the Slow-
  325.    but-Steady variant can remain in Fast Recovery for a long time when
  326.    multiple packets have been dropped from a window of data.  Neither of
  327.    these variants are optimal; one possibility for a more optimal
  328.    algorithm might be one that recovered more quickly from multiple
  329.    packet drops, and combined this with the Slow-but-Steady variant in
  330.    terms of resetting the retransmit timers.  We note, however, that
  331.    there is a limitation to the potential performance in this case in
  332.    the absence of the SACK option.
  333.  
  334. 5. Avoiding Multiple Fast Retransmits
  335.  
  336.    In the absence of the SACK option, a duplicate acknowledgement
  337.    carries no information to identify the data packet or packets at the
  338.    TCP data receiver that triggered that duplicate acknowledgement.  The
  339.    TCP data sender is unable to distinguish between a duplicate
  340.    acknowledgement that results from a lost or delayed data packet, and
  341.    a duplicate acknowledgement that results from the sender's
  342.    retransmission of a data packet that had already been received at the
  343.    TCP data receiver.  Because of this, multiple segment losses from a
  344.    single window of data can sometimes result in unnecessary multiple
  345.    Fast Retransmits (and multiple reductions of the congestion window)
  346.    [Flo94].
  347.  
  348.    With the Reno or NewReno Fast Retransmit and Fast Recovery
  349.    algorithms, the performance problems caused by multiple Fast
  350.    Retransmits are relatively minor (compared to the potential problems
  351.    with Tahoe TCP, which does not implement Fast Recovery).
  352.    Nevertheless, these unnecessary Fast Retransmits can occur with Reno
  353.    or NewReno TCP, particularly if a Retransmit Timeout occurs during
  354.    Fast Recovery.  (This is illustrated for Reno on page 6 of [F98], and
  355.  
  356.  
  357.  
  358. Floyd and Henderson           Experimental                      [Page 6]
  359.  
  360.  
  361.  
  362.  
  363.  
  364. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  365.  
  366.  
  367.    for NewReno on page 8 of [F98].)  With NewReno, the data sender
  368.    remains in Fast Recovery until either a Retransmit Timeout, or until
  369.    all of the data outstanding when Fast Retransmit was entered has been
  370.    acknowledged.  Thus with NewReno, the problem of multiple Fast
  371.    Retransmits from a single window of data can only occur after a
  372.    Retransmit Timeout.
  373.  
  374.    The following modification to the algorithms in Section 3 eliminates
  375.    the problem of multiple Fast Retransmits.  (This modification is
  376.    called "bugfix" in [F98], and is illustrated on pages 7 and 9.)  This
  377.    modification uses a new variable "send_high", whose initial value is
  378.    zero.  After each retransmit timeout, the highest sequence number
  379.    transmitted so far is recorded in the variable "send_high".
  380.  
  381.    If, after a retransmit timeout, the TCP data sender retransmits three
  382.    consecutive packets that have already been received by the data
  383.    receiver, then the TCP data sender will receive three duplicate
  384.    acknowledgements that do not acknowledge "send_high".  In this case,
  385.    the duplicate acknowledgements are not an indication of a new
  386.    instance of congestion.  They are simply an indication that the
  387.    sender has unnecessarily retransmitted at least three packets.
  388.  
  389.    We note that if the TCP data sender receives three duplicate
  390.    acknowledgements that do not acknowledge "send_high", the sender does
  391.    not know whether these duplicate acknowledgements resulted from a new
  392.    packet drop or not.  For a TCP that implements the bugfix described
  393.    in this section for avoiding multiple fast retransmits, the sender
  394.    does not infer a packet drop from duplicate acknowledgements in these
  395.    circumstances.  As always, the retransmit timer is the backup
  396.    mechanism for inferring packet loss in this case.
  397.  
  398.    The modification to Fast Retransmit for avoiding multiple Fast
  399.    Retransmits replaces Step 1 in Section 3 with Step 1A below.  In
  400.    addition, the modification adds Step 6 below:
  401.  
  402.    1A. When the third duplicate ACK is received, check to see if those
  403.        duplicate ACKs cover more than "send_high".  If they do, then set
  404.        ssthresh to no more than the value given in equation 1, record
  405.        the highest sequence number transmitted in the variables
  406.        "recover" and "send_high", and go to Step 2.  If the duplicate
  407.        ACKs don't cover send_high, then do nothing.  That is, do not
  408.        enter the Fast Retransmit and Fast Recovery procedure, do not
  409.        change ssthresh, and do not go to Step 2 to retransmit the "lost"
  410.        segment.
  411.  
  412.    Steps 2-5 are the same as those steps in Section 3 above.
  413.  
  414.    6.  After a retransmit timeout, record the highest sequence number
  415.  
  416.  
  417.  
  418. Floyd and Henderson           Experimental                      [Page 7]
  419.  
  420.  
  421.  
  422.  
  423.  
  424. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  425.  
  426.  
  427.        transmitted in the variable "send_high".  Do not change the
  428.        variable "recover".
  429.  
  430.    Step 1A above, in checking whether the duplicate ACKs cover *more*
  431.    than "send_high", is the Careful variant of this algorithm.  Another
  432.    possible variant would be to require simply that the three duplicate
  433.    acknowledgements *cover* "send_high" before initiating another Fast
  434.    Retransmit.  We call this the Less Careful variant to Fast
  435.    Retransmit.
  436.  
  437.    There are two separate scenarios in which the TCP sender could
  438.    receive three duplicate acknowledgements acknowledging "send_high"
  439.    but no more than "send_high".  One scenario would be that the data
  440.    sender transmitted four packets with sequence numbers higher than
  441.    "send_high", that the first packet was dropped in the network, and
  442.    the following three packets triggered three duplicate
  443.    acknowledgements acknowledging "send_high".  The second scenario
  444.    would be that the sender unnecessarily retransmitted three packets
  445.    below "send_high", and that these three packets triggered three
  446.    duplicate acknowledgements acknowledging "send_high".  In the absence
  447.    of SACK, the TCP sender in unable to distinguish between these two
  448.    scenarios.
  449.  
  450.    For the Careful variant of Fast Retransmit, the data sender would
  451.    have to wait for a retransmit timeout in the first scenario, but
  452.    would not have an unnecessary Fast Retransmit in the second scenario.
  453.    For the Less Careful variant to Fast Retransmit, the data sender
  454.    would Fast Retransmit as desired in the first scenario, and would
  455.    unnecessarily Fast Retransmit in the second scenario.  The NS
  456.    simulator has implemented the Less Careful variant of NewReno, and
  457.    the TCP implementation in Sun's Solaris 7 implements the Careful
  458.    variant.  This document recommends the Careful variant given in Step
  459.    1A above.
  460.  
  461. 6. Implementation issues for the data receiver.
  462.  
  463.    [RFC2001] specifies that "Out-of-order data segments SHOULD be
  464.    acknowledged immediately, in order to trigger the fast retransmit
  465.    algorithm." Neal Cardwell has noted [C98] that some data receivers do
  466.    not send an immediate acknowledgement when they send a partial
  467.    acknowledgment, but instead wait first for their delayed
  468.    acknowledgement timer to expire.  As [C98] notes, this severely
  469.    limits the potential benefit from NewReno by delaying the receipt of
  470.    the partial acknowledgement at the data sender.  Our recommendation
  471.    is that the data receiver send an immediate acknowledgement for an
  472.    out-of-order segment, even when that out-of-order segment fills a
  473.    hole in the buffer.
  474.  
  475.  
  476.  
  477.  
  478. Floyd and Henderson           Experimental                      [Page 8]
  479.  
  480.  
  481.  
  482.  
  483.  
  484. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  485.  
  486.  
  487. 7. Simulations
  488.  
  489.    Simulations with NewReno are illustrated with the validation test
  490.    "tcl/test/test-all-newreno" in the NS simulator.  The command
  491.    "../../ns test-suite-newreno.tcl reno" shows a simulation with Reno
  492.    TCP, illustrating the data sender's lack of response to a partial
  493.    acknowledgement.  In contrast, the command "../../ns test-suite-
  494.    newreno.tcl newreno_B" shows a simulation with the same scenario
  495.    using the NewReno algorithms described in this paper.
  496.  
  497.    The tests "../../ns test-suite-newreno.tcl newreno1_B0" and "../../ns
  498.    test-suite-newreno.tcl newreno1_B" show the Slow-but-Steady and the
  499.    Impatient variants of NewReno, respectively.
  500.  
  501. 8. Conclusions
  502.  
  503.    Our recommendation is that TCP implementations include the NewReno
  504.    modification to the Fast Recovery algorithm given in Section 3, along
  505.    with the modification for avoiding multiple Fast Retransmits given in
  506.    Section 5.  The NewReno modification given in Section 3 can be
  507.    important even for TCP implementations that support the SACK option,
  508.    because the SACK option can only be used for TCP connections when
  509.    both TCP end-nodes support the SACK option.  The NewReno modification
  510.    given in Section 3 implements the Impatient rather than the Slow-but-
  511.    Steady variant of NewReno.
  512.  
  513.    While this document mentions several possible variations to the
  514.    NewReno algorithm, we have not explored all of these possible
  515.    variations, and therefore are unable to make recommendations about
  516.    some of them.  Our belief is that the differences between any two
  517.    variants of NewReno are small compared to the differences between
  518.    Reno and NewReno.  That is, the important thing is to implement
  519.    NewReno instead of Reno, for a TCP invocation without SACK;  it is
  520.    less important exactly *which* variant of NewReno is implemented.
  521.  
  522. 9. Acknowledgements
  523.  
  524.    Many thanks to Mark Allman, Vern Paxson, Kacheong Poon, and Bernie
  525.    Volz for detailed feedback on this document.
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538. Floyd and Henderson           Experimental                      [Page 9]
  539.  
  540.  
  541.  
  542.  
  543.  
  544. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  545.  
  546.  
  547. 10. References
  548.  
  549.    [C98] Neal Cardwell, "delayed ACKs for retransmitted packets: ouch!".
  550.    November 1998.  Email to the tcpimpl mailing list, Message-ID
  551.    "Pine.LNX.4.02A.9811021421340.26785-100000@sake.cs.washington.edu",
  552.    archived at "http://tcp-impl.lerc.nasa.gov/tcp-impl".
  553.  
  554.    [F98] Sally Floyd.  Revisions to RFC 2001.  Presentation to the
  555.    TCPIMPL Working Group, August 1998.  URLs
  556.    "ftp://ftp.ee.lbl.gov/talks/sf-tcpimpl-aug98.ps" and
  557.    "ftp://ftp.ee.lbl.gov/talks/sf-tcpimpl-aug98.pdf".
  558.  
  559.    [FF96] Kevin Fall and Sally Floyd.  Simulation-based Comparisons of
  560.    Tahoe, Reno and SACK TCP.  Computer Communication Review, July 1996.
  561.    URL "ftp://ftp.ee.lbl.gov/papers/sacks.ps.Z".
  562.  
  563.    [Flo94] S. Floyd, TCP and Successive Fast Retransmits. Technical
  564.    report, October 1994.  URL
  565.    "ftp://ftp.ee.lbl.gov/papers/fastretrans.ps".
  566.  
  567.    [Hen98] Tom Henderson, Re: NewReno and the 2001 Revision. September
  568.    1998.  Email to the tcpimpl mailing list, Message ID
  569.    "Pine.BSI.3.95.980923224136.26134A-100000@raptor.CS.Berkeley.EDU",
  570.    archived at "http://tcp-impl.lerc.nasa.gov/tcp-impl".
  571.  
  572.    [Hoe95] J. Hoe, Startup Dynamics of TCP's Congestion Control and
  573.    Avoidance Schemes. Master's Thesis, MIT, 1995.  URL "http://ana-
  574.    www.lcs.mit.edu/anaweb/ps-papers/hoe-thesis.ps".
  575.  
  576.    [Hoe96] J. Hoe, Improving the Start-up Behavior of a Congestion
  577.    Control Scheme for TCP.  In ACM SIGCOMM, August 1996.  URL
  578.    "http://www.acm.org/sigcomm/sigcomm96/program.html".
  579.  
  580.    [HTH98] A. Hughes, J. Touch, J. Heidemann, Issues in TCP Slow-Start
  581.    Restart After Idle, Work in progress, March 1998.
  582.  
  583.    [LM97] Dong Lin and Robert Morris, "Dynamics of Random Early
  584.    Detection", SIGCOMM 97, September 1997.  URL
  585.    "http://www.acm.org/sigcomm/sigcomm97/program.html".
  586.  
  587.    [MMFR96] M. Mathis, J. Mahdavi, S. Floyd, A. Romanow, "TCP Selective
  588.    Acknowledgement Options", RFC 2018, October 1996.
  589.  
  590.    [NS] The UCB/LBNL/VINT Network Simulator (NS). URL "http://www-
  591.    mash.cs.berkeley.edu/ns/".
  592.  
  593.    [RFC2001] W. Stevens, "TCP Slow Start, Congestion Avoidance, Fast
  594.    Retransmit, and Fast Recovery Algorithms", RFC 2001, January 1997.
  595.  
  596.  
  597.  
  598. Floyd and Henderson           Experimental                     [Page 10]
  599.  
  600.  
  601.  
  602.  
  603.  
  604. draft-ietf-tcpimpl-newreno      NewReno                    February 1999
  605.  
  606.  
  607.    [RFC2001-bis] W. Stevens, M. Allman, and V. Paxson, "TCP Congestion
  608.    Control", draft-ietf-tcpimpl-cong-control-00.txt, August 1998.
  609.  
  610. 11. Security Considerations
  611.  
  612.    RFC 2001-bis discusses general security considerations concerning TCP
  613.    congestion control.  This document describes a specific algorithm
  614.    that conforms with the congestion control requirements of RFC
  615.    2001-bis, and so those considerations apply to this algorithm, too.
  616.    There are no known additional security concerns for this specific
  617.    algorithm.
  618.  
  619. AUTHORS' ADDRESSES
  620.  
  621.  
  622.    Sally Floyd
  623.    AT&T Center for Internet Research at ICSI (ACIRI)
  624.    Phone: +1 (510) 642-4274 x189
  625.    Email: floyd@acm.org
  626.    URL: http://www-nrg.ee.lbl.gov/floyd/
  627.  
  628.    Tom Henderson
  629.    University of California at Berkeley
  630.    Phone: +1 (510) 642-8919
  631.    Email: tomh@cs.berkeley.edu
  632.    URL: http://www.cs.berkeley.edu/~tomh/
  633.  
  634.  
  635.    This draft was created in February 1999.
  636.    It expires August 1999.
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658. Floyd and Henderson           Experimental                     [Page 11]
  659.  
  660.  
  661.