Network Working Group S. Floyd
Request for Comments: 3742 ICSI
Category: Experimental March 2004
Limited Slow-Start for TCP 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 congestion window is increased for one window of data during slow- start, in order to improve performance for TCP connections with large congestion windows.
Floyd Experimental [Page 1]
RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
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
Floyd Experimental [Page 2]
RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
ssthresh < cwnd,
Floyd Experimental [Page 3]
RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004 3. Experimental ResultsTom 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.
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 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.
Floyd Experimental [Page 4]
RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
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
7.2. Informative References
[AD98] Mohit Aron and Peter Druschel, "TCP: Improving Start-up
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
Floyd Experimental [Page 6]
RFC 3742 TCP's Slow-Start with Large Congestion Windows March 2004
Full Copyright Statement