summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3742.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc3742.txt')
-rw-r--r--doc/rfc/rfc3742.txt395
1 files changed, 395 insertions, 0 deletions
diff --git a/doc/rfc/rfc3742.txt b/doc/rfc/rfc3742.txt
new file mode 100644
index 0000000..95018d9
--- /dev/null
+++ b/doc/rfc/rfc3742.txt
@@ -0,0 +1,395 @@
+
+
+
+
+
+
+Network Working Group S. Floyd
+Request for Comments: 3742 ICSI
+Category: Experimental March 2004
+
+
+ Limited Slow-Start for TCP with Large Congestion Windows
+
+Status of this Memo
+
+ This memo defines an Experimental Protocol for the Internet
+ community. It does not specify an Internet standard of any kind.
+ Discussion and suggestions for improvement are requested.
+ Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2004). All Rights Reserved.
+
+Abstract
+
+ This document describes an optional modification for TCP's slow-start
+ for use with TCP connections with large congestion windows. For TCP
+ connections that are able to use congestion windows of thousands (or
+ tens of thousands) of MSS-sized segments (for MSS the sender's
+ MAXIMUM SEGMENT SIZE), the current slow-start procedure can result in
+ increasing the congestion window by thousands of segments in a single
+ round-trip time. Such an increase can easily result in thousands of
+ packets being dropped in one round-trip time. This is often
+ counter-productive for the TCP flow itself, and is also hard on the
+ rest of the traffic sharing the congested link. This note describes
+ Limited Slow-Start as an optional mechanism for limiting the number
+ of segments by which the congestion window is increased for one
+ window of data during slow-start, in order to improve performance for
+ TCP connections with large congestion windows.
+
+1. Introduction
+
+ This note describes an optional modification for TCP's slow-start for
+ use with TCP connections with large congestion windows. For TCP
+ connections that are able to use congestion windows of thousands (or
+ tens of thousands) of MSS-sized segments (for MSS the sender's
+ MAXIMUM SEGMENT SIZE), the current slow-start procedure can result in
+ increasing the congestion window by thousands of segments in a single
+ round-trip time. Such an increase can easily result in thousands of
+ packets being dropped in one round-trip time. This is often
+ counter-productive for the TCP flow itself, and is also hard on the
+ rest of the traffic sharing the congested link. This note describes
+ Limited Slow-Start, limiting the number of segments by which the
+
+
+
+Floyd Experimental [Page 1]
+
+RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
+
+
+ congestion window is increased for one window of data during slow-
+ start, in order to improve performance for TCP connections with large
+ congestion windows.
+
+ When slow-start results in a large increase in the congestion window
+ in one round-trip time, a large number of packets might be dropped in
+ the network (even with carefully-tuned active queue management
+ mechanisms in the routers). This drop of a large number of packets
+ in the network can result in unnecessary retransmit timeouts for the
+ TCP connection. The TCP connection could end up in the congestion
+ avoidance phase with a very small congestion window, and could take a
+ large number of round-trip times to recover its old congestion
+ window. This poor performance is illustrated in [F02].
+
+2. The Proposal for Limited Slow-Start
+
+ Limited Slow-Start introduces a parameter, "max_ssthresh", and
+ modifies the slow-start mechanism for values of the congestion window
+ where "cwnd" is greater than "max_ssthresh". That is, during Slow-
+ Start, when
+
+ cwnd <= max_ssthresh,
+
+ cwnd is increased by one MSS (MAXIMUM SEGMENT SIZE) for every
+ arriving ACK (acknowledgement) during slow-start, as is always the
+ case. During Limited Slow-Start, when
+
+ max_ssthresh < cwnd <= ssthresh,
+
+ the invariant is maintained so that the congestion window is
+ increased during slow-start by at most max_ssthresh/2 MSS per round-
+ trip time. This is done as follows:
+
+ For each arriving ACK in slow-start:
+ If (cwnd <= max_ssthresh)
+ cwnd += MSS;
+ else
+ K = int(cwnd/(0.5 max_ssthresh));
+ cwnd += int(MSS/K);
+
+ Thus, during Limited Slow-Start the window is increased by 1/K MSS
+ for each arriving ACK, for K = int(cwnd/(0.5 max_ssthresh)), instead
+ of by 1 MSS as in standard slow-start [RFC2581].
+
+
+
+
+
+
+
+
+Floyd Experimental [Page 2]
+
+RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
+
+
+ When
+
+ ssthresh < cwnd,
+
+ slow-start is exited, and the sender is in the Congestion Avoidance
+ phase.
+
+ Our recommendation would be for max_ssthresh to be set to 100 MSS.
+ (This is illustrated in the NS [NS] simulator, for snapshots after
+ May 1, 2002, in the tests "./test-all-tcpHighspeed tcp1A" and
+ "./test-all-tcpHighspeed tcpHighspeed1" in the subdirectory
+ "tcl/lib". Setting max_ssthresh to Infinity causes the TCP
+ connection in NS not to use Limited Slow-Start.)
+
+ With Limited Slow-Start, when the congestion window is greater than
+ max_ssthresh, the window is increased by at most 1/2 MSS for each
+ arriving ACK; when the congestion window is greater than 1.5
+ max_ssthresh, the window is increased by at most 1/3 MSS for each
+ arriving ACK, and so on.
+
+ With Limited Slow-Start it takes:
+
+ log(max_ssthresh)
+
+ round-trip times to reach a congestion window of max_ssthresh, and it
+ takes:
+
+ log(max_ssthresh) + (cwnd - max_ssthresh)/(max_ssthresh/2)
+
+ round-trip times to reach a congestion window of cwnd, for a
+ congestion window greater than max_ssthresh.
+
+ Thus, with Limited Slow-Start with max_ssthresh set to 100 MSS, it
+ would take 836 round-trip times to reach a congestion window of
+ 83,000 packets, compared to 16 round-trip times without Limited
+ Slow-Start (assuming no packet drops). With Limited Slow-Start, the
+ largest transient queue during slow-start would be 100 packets;
+ without Limited Slow-Start, the transient queue during Slow-Start
+ would reach more than 32,000 packets.
+
+ By limiting the maximum increase in the congestion window in a
+ round-trip time, Limited Slow-Start can reduce the number of drops
+ during slow-start, and improve the performance of TCP connections
+ with large congestion windows.
+
+
+
+
+
+
+
+Floyd Experimental [Page 3]
+
+RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
+
+
+3. Experimental Results
+
+ Tom Dunigan has added Limited Slow-Start to the Linux 2.4.16 Web100
+ kernel, and performed experiments comparing TCP with and without
+ Limited Slow-Start [D02]. Results so far show improved performance
+ for TCPs using Limited Slow-Start. There are also several
+ experiments comparing different values for max_ssthresh.
+
+4. Related Proposals
+
+ There has been considerable research on mechanisms for the TCP sender
+ to learn about the limitations of the available bandwidth, and to
+ exit slow-start before receiving a congestion indication from the
+ network [VEGAS,H96]. Other proposals set TCP's slow-start parameter
+ ssthresh based on information from previous TCP connections to the
+ same destination [WS95,G00]. This document proposes a simple
+ limitation on slow-start that can be effective in some cases even in
+ the absence of such mechanisms. The max_ssthresh parameter does not
+ replace ssthresh, but is an additional parameter. Thus, Limited
+ Slow-Start could be used in addition to mechanisms for setting
+ ssthresh.
+
+ Rate-based pacing has also been proposed to improve the performance
+ of TCP during slow-start [VH97,AD98,KCRP99,ASA00]. We believe that
+ rate-based pacing could be of significant benefit, and could be used
+ in addition to the Limited Slow-Start in this proposal.
+
+ Appropriate Byte Counting [RFC3465] proposes that TCP increase its
+ congestion window as a function of the number of bytes acknowledged,
+ rather than as a function of the number of ACKs received.
+ Appropriate Byte Counting is largely orthogonal to this proposal for
+ Limited Slow-Start.
+
+ Limited Slow-Start is also orthogonal to other proposals to change
+ mechanisms for exiting slow-start. For example, FACK TCP includes an
+ overdamping mechanism to decrease the congestion window somewhat more
+ aggressively when a loss occurs during slow-start [MM96]. It is also
+ true that larger values for the MSS would reduce the size of the
+ congestion window in units of MSS needed to fill a given pipe, and
+ therefore would reduce the size of the transient queue in units of
+ MSS.
+
+5. Acknowledgements
+
+ This proposal is part of a larger proposal for HighSpeed TCP for TCP
+ connections with large congestion windows, and resulted from
+ simulations done by Evandro de Souza, in joint work with Deb Agarwal.
+ This proposal for Limited Slow-Start draws in part from discussions
+
+
+
+Floyd Experimental [Page 4]
+
+RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
+
+
+ with Tom Kelly, who has used a similar modified slow-start in his own
+ research with congestion control for high-bandwidth connections. We
+ also thank Tom Dunigan for his experiments with Limited Slow-Start.
+
+ We thank Andrei Gurtov, Reiner Ludwig, members of the End-to-End
+ Research Group, and members of the Transport Area Working Group, for
+ feedback on this document.
+
+6. Security Considerations
+
+ This proposal makes no changes to the underlying security of TCP.
+
+7. References
+
+7.1. Normative References
+
+ [RFC2581] Allman, M., Paxson, V. and W. Stevens, "TCP Congestion
+ Control", RFC 2581, April 1999.
+
+ [RFC3465] Allman, M., "TCP Congestion Control with Appropriate Byte
+ Counting (ABC)", RFC 3465, February 2003.
+
+7.2. Informative References
+
+ [AD98] Mohit Aron and Peter Druschel, "TCP: Improving Start-up
+ Dynamics by Adaptive Timers and Congestion Control"",
+ TR98-318, Rice University, 1998. URL "http://cs-
+ tr.cs.rice.edu/Dienst/UI/2.0/Describe/ncstrl.rice_cs/TR98-
+ 318/".
+
+ [ASA00] A. Aggarwal, S. Savage, and T. Anderson, "Understanding the
+ Performance of TCP Pacing", Proceedings of the 2000 IEEE
+ Infocom Conference, Tel-Aviv, Israel, March, 2000. URL
+ "http://www.cs.ucsd.edu/~savage/".
+
+ [D02] T. Dunigan, "Floyd's TCP slow-start and AIMD mods", 2002.
+ URL "http://www.csm.ornl.gov/~dunigan/net100/floyd.html".
+
+ [F02] S. Floyd, "Performance Problems with TCP's Slow-Start",
+ 2002. URL "http://www.icir.org/floyd/hstcp/slowstart/".
+
+ [G00] A. Gurtov, "TCP Performance in the Presence of Congestion
+ and Corruption Losses", Master's Thesis, University of
+ Helsinki, Department of Computer Science, Helsinki,
+ December 2000. URL
+ "http://www.cs.helsinki.fi/u/gurtov/papers/ms_thesis.html".
+
+
+
+
+
+Floyd Experimental [Page 5]
+
+RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
+
+
+ [H96] J. C. Hoe, "Improving the Start-up Behavior of a Congestion
+ Control Scheme for TCP", SIGCOMM 96, 1996. URL
+ "http://www.acm.org/sigcomm/sigcomm96/program.html".
+
+ [KCRP99] J. Kulik, R. Coulter, D. Rockwell, and C. Partridge, "A
+ Simulation Study of Paced TCP", BBN Technical Memorandum
+ No. 1218, 1999. URL
+ "http://www.ir.bbn.com/documents/techmemos/index.html".
+
+ [MM96] M. Mathis and J. Mahdavi, "Forward Acknowledgment: Refining
+ TCP Congestion Control", SIGCOMM, August 1996.
+
+ [NS] The Network Simulator (NS). URL
+ "http://www.isi.edu/nsnam/ns/".
+
+ [VEGAS] Vegas Web Page, University of Arizona. URL
+ "http://www.cs.arizona.edu/protocols/".
+
+ [VH97] Vikram Visweswaraiah and John Heidemann, "Rate Based Pacing
+ for TCP", 1997. URL
+ "http://www.isi.edu/lsam/publications/rate_based_pacing/".
+
+ [WS95] G. Wright and W. Stevens, "TCP/IP Illustrated", Volume 2,
+ Addison-Wesley Publishing Company, 1995.
+
+Authors' Address
+
+ Sally Floyd
+ ICIR (ICSI Center for Internet Research)
+
+ Phone: +1 (510) 666-2989
+ EMail: floyd@icir.org
+ URL: http://www.icir.org/floyd/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Floyd Experimental [Page 6]
+
+RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2004). This document is subject
+ to the rights, licenses and restrictions contained in BCP 78 and
+ except as set forth therein, the authors retain all their rights.
+
+ This document and the information contained herein are provided on an
+ "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
+ REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
+ INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
+ THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+ The IETF takes no position regarding the validity or scope of any
+ Intellectual Property Rights or other rights that might be claimed
+ to pertain to the implementation or use of the technology
+ described in this document or the extent to which any license
+ under such rights might or might not be available; nor does it
+ represent that it has made any independent effort to identify any
+ such rights. Information on the procedures with respect to
+ rights in RFC documents can be found in BCP 78 and BCP 79.
+
+ Copies of IPR disclosures made to the IETF Secretariat and any
+ assurances of licenses to be made available, or the result of an
+ attempt made to obtain a general license or permission for the use
+ of such proprietary rights by implementers or users of this
+ specification can be obtained from the IETF on-line IPR repository
+ at http://www.ietf.org/ipr.
+
+ The IETF invites any interested party to bring to its attention
+ any copyrights, patents or patent applications, or other
+ proprietary rights that may cover technology that may be required
+ to implement this standard. Please address the information to the
+ IETF at ietf-ipr@ietf.org.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+Floyd Experimental [Page 7]
+