viewgraphs on revisions to RFC 2001
Sally Floyd <floyd@ee.lbl.gov> Sun, 30 August 1998 01:30 UTC
Return-Path: <owner-tcp-impl@relay.engr.sgi.com>
Message-Id: <199808300130.SAA19711@owl.ee.lbl.gov>
To: tcp-impl@cthulhu.engr.sgi.com
Subject: viewgraphs on revisions to RFC 2001
Date: Sat, 29 Aug 1998 18:30:03 -0700
From: Sally Floyd <floyd@ee.lbl.gov>
Sender: owner-tcp-impl@relay.engr.sgi.com
Precedence: bulk
Status: RO
Content-Length: 4469
Lines: 109
My viewgraphs on Reno, NewReno, and the bugfix to avoid multiple fast retransmits, from the Friday tcpimpl meeting in Chicago, are available as follows: ftp://ftp.ee.lbl.gov/talks/sf-tcpimpl-aug98.ps and: ftp://ftp.ee.lbl.gov/talks/sf-tcpimpl-aug98.pdf The description of the NewReno and avoiding-multiple-fast-retransmit changes illustrated in those viewgraphs is given below. These tests can be run with "./test-all-newreno" in directory tcl/test in the ns simulator (starting with the daily snapshop that will be available tonight). - Sally -------------------------------- http://www-nrg.ee.lbl.gov/floyd/ -------------------------------- Draft text for revising the five steps in Section 3.3 on Fast Retransmit/Fast Recovery in "TCP Congestion Control", draft-ietf-tcpimpl-cong-control-00.txt, URL "http://www.ietf.org/internet-drafts/draft-ietf-tcpimpl-cong-control-00.txt". Implementing fast retransmit/fast recovery in this manner (often referred to as Reno congestion control) allows the fast retransmit algorithm to repair multiple dropped segments from a single window of data in some cases [FF96]. However, Reno congestion control has several well-documented problems. First, for *most* cases of multiple dropped segments from a single window of data, Reno congestion control is unable to recover without a retransmit timeout [H96, FF96]. A second well-documented problem with both Tahoe and Reno congestion control algorithms is that multiple segment losses from a single window of data can sometimes result in unnecessary multiple fast retransmits (and multiple reductions of the congestion window) [Flo94]. The following two changes (sometimes referred to as NewReno and "avoiding multiple fast retransmits") MAY be taken to address the first and second problems listed above. These two changes are orthogonal - one could implement one without the other. For simplicity, the steps below illustrate the two changes implemented together. 1A. After the third duplicate ACK is received, check to see if those duplicate ACKs cover send_high. If they do, then follow steps 1 and 2 above, and also record the highest sequence number transmitted (send_high and recover). If the duplicate ACKs don't cover send_high, then do nothing. (This is "avoiding multiple fast retransmits".) That is, do not change ssthresh or cwnd, and do not retransmit the "lost" segment. Steps 3 and 4 remain unchanged. 5A. When a non-duplicate ACK arrives that covers "recover", follow step 5 above. When a non-duplicate ACK arrives that does not cover "recover" (i.e., a "partial ack"), retransmit the first unacknowledged segment. (This is "NewReno".) Do not change cwnd or ssthresh, but deflate the congestion window by removing the additive term with the count of duplicate acknowledgements. For the first partial ACK that arrives, also reset the retransmit timer. 6. After a retransmit timeout, record the highest sequence number transmitted (send_high). ---------------------------------------------------------------- This is the NewReno change by itself: 1A. After the third duplicate ACK is received, follow steps 1 and 2 above, and also record the highest sequence number transmitted ("recover"). Steps 3 and 4 remain unchanged. 5A. This is the same as step 5A above. ---------------------------------------------------------------- This is the "avoiding multiple fast retransmits" change by itself, *without* NewReno: 1A. After the third duplicate ACK is received, check to see if those duplicate ACKs cover send_high. If they do, then follow steps 1 and 2 above. (If this was implemented *with* NewReno, this step would also include recording the highest sequence number transmitted in send_high.) If the duplicate ACKs don't cover send_high, then do nothing. That is, do not change ssthresh or cwnd, and do not retransmit the "lost" segment. Steps 3, 4, and 5 remain unchanged. 6. After a retransmit timeout, record the highest sequence number transmitted (send_high). -------------------------------------------------------------------- New References: [H96] J. Hoe, "Improving the Start-up Behavior of a Congestion Control Scheme for TCP", SIGCOMM 96, August 1996. URL "http://www.acm.org/sigcomm/sigcomm96/papers/hoe.html".
- viewgraphs on revisions to RFC 2001 Sally Floyd
- RFC 1016 - source quench eewechta
- RFC 1016 - source quench eewechta
- Re: RFC 1016 - source quench braden
- Re: RFC 1016 - source quench Thomas Narten
- Re: viewgraphs on revisions to RFC 2001 Kacheong Poon