< draft-floyd-tcp-slowstart-01.txt   draft-floyd-tcp-slowstart-02.txt >
Internet Engineering Task Force Sally Floyd Internet Engineering Task Force Sally Floyd
INTERNET DRAFT ICSI INTERNET DRAFT ICSI
draft-floyd-tcp-slowstart-01.txt August, 2002 draft-floyd-tcp-slowstart-02.txt June, 2003
Limited Slow-Start for TCP with Large Congestion Windows Limited Slow-Start for TCP with Large Congestion Windows
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 32 skipping to change at page 1, line 32
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Abstract Abstract
This note proposes a modification for TCP's slow-start for use with This note describes an optional modification for TCP's slow-start for
TCP connections with large congestion windows. For TCP connections use with TCP connections with large congestion windows. For TCP
that are able to use congestion windows of thousands (or tens of connections that are able to use congestion windows of thousands (or
thousands) of MSS-sized segments (for MSS the sender's MAXIMUM tens of thousands) of MSS-sized segments (for MSS the sender's
SEGMENT SIZE), the current slow-start procedure can result in MAXIMUM SEGMENT SIZE), the current slow-start procedure can result in
increasing the congestion window by thousands of segments in a single increasing the congestion window by thousands of segments in a single
round-trip time. Such an increase can easily result in thousands of round-trip time. Such an increase can easily result in thousands of
packets being dropped in one round-trip time. This is often counter- 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 productive for the TCP flow itself, and is also hard on the rest of
the traffic sharing the congested link. This note proposes Limited the traffic sharing the congested link. This note describes Limited
Slow-Start as an optional mechanism for limiting the number of Slow-Start as an optional mechanism for limiting the number of
segments by which the congestion window is increased for one window segments by which the congestion window is increased for one window
of data during slow-start, in order to improve performance for TCP of data during slow-start, in order to improve performance for TCP
connections with large congestion windows. connections with large congestion windows.
Changes from draft-floyd-tcp-slowstart-01.txt:
* Minor changes in language to submit for an Experimental RFC.
Changes from draft-floyd-tcp-slowstart-00.txt: Changes from draft-floyd-tcp-slowstart-00.txt:
* Small changes in presentation. * Small changes in presentation.
* The addition of a section of Experiments. * The addition of a section of Experiments.
* More citations to related work. * More citations to related work.
1. Introduction 1. Introduction
This note proposes a modification for TCP's slow-start for use with This note describes an optional modification for TCP's slow-start for
TCP connections with large congestion windows. For TCP connections use with TCP connections with large congestion windows. For TCP
that are able to use congestion windows of thousands (or tens of connections that are able to use congestion windows of thousands (or
thousands) of MSS-sized segments (for MSS the sender's MAXIMUM tens of thousands) of MSS-sized segments (for MSS the sender's
SEGMENT SIZE), the current slow-start procedure can result in MAXIMUM SEGMENT SIZE), the current slow-start procedure can result in
increasing the congestion window by thousands of segments in a single increasing the congestion window by thousands of segments in a single
round-trip time. Such an increase can easily result in thousands of round-trip time. Such an increase can easily result in thousands of
packets being dropped in one round-trip time. This is often counter- 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 productive for the TCP flow itself, and is also hard on the rest of
the traffic sharing the congested link. This note proposes Limited the traffic sharing the congested link. This note describes Limited
Slow-Start, limiting the number of segments by which the congestion Slow-Start, limiting the number of segments by which the congestion
window is increased for one window of data during slow-start, in window is increased for one window of data during slow-start, in
order to improve performance for TCP connections with large order to improve performance for TCP connections with large
congestion windows. congestion windows.
When slow-start results in a large increase in the congestion window 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 in one round-trip time, a large number of packets might be dropped in
the network (even with carefully-tuned active queue management the network (even with carefully-tuned active queue management
mechanisms in the routers). This drop of a large number of packets mechanisms in the routers). This drop of a large number of packets
in the network can result in unnecessary retransmit timeouts for the in the network can result in unnecessary retransmit timeouts for the
skipping to change at page 3, line 28 skipping to change at page 3, line 31
each arriving ACK, for K = int(cwnd/(0.5 max_ssthresh)), instead of each arriving ACK, for K = int(cwnd/(0.5 max_ssthresh)), instead of
by 1 MSS as in the standard slow-start [RFC2581]. by 1 MSS as in the standard slow-start [RFC2581].
When When
ssthresh < cwnd, ssthresh < cwnd,
slow-start is exited, and the sender is in the Congestion Avoidance slow-start is exited, and the sender is in the Congestion Avoidance
phase. phase.
Our current recommendation would be for max_ssthresh to be set to 100 Our recommendation would be for max_ssthresh to be set to 100 MSS.
MSS. (This is illustrated in the NS simulator, for snapshots after (This is illustrated in the NS simulator, for snapshots after May 1,
May 1, 2002, in the tests "./test-all-tcpHighspeed tcp1A" and 2002, in the tests "./test-all-tcpHighspeed tcp1A" and "./test-all-
"./test-all-tcpHighspeed tcpHighspeed1" in the subdirectory tcpHighspeed tcpHighspeed1" in the subdirectory "tcl/lib". Setting
"tcl/lib".) However, max_ssthresh is an optional, configurable max_ssthresh to Infinity causes the TCP connection in NS not to use
parameter. TCP implementations that do not wish to use Limited Slow- Limited Slow-Start.)
Start would set max_ssthresh to Infinity.
With Limited Slow-Start, when the congestion window is greater than 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 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 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 max_ssthresh the window is increased by at most 1/3 MSS for each
arriving ACK, and so on. arriving ACK, and so on.
With Limited Slow-Start it takes: With Limited Slow-Start it takes:
log(max_ssthresh) log(max_ssthresh)
skipping to change at page 4, line 23 skipping to change at page 4, line 27
By limiting the maximum increase in the congestion window in a round- By limiting the maximum increase in the congestion window in a round-
trip time, Limited Slow-Start can reduce the number of drops during trip time, Limited Slow-Start can reduce the number of drops during
slow-start, and improve the performance of TCP connections with large slow-start, and improve the performance of TCP connections with large
congestion windows. congestion windows.
3. Experimental Results 3. Experimental Results
Tom Dunigan has added Limited Slow-Start to the Linux 2.4.16 Web100 Tom Dunigan has added Limited Slow-Start to the Linux 2.4.16 Web100
kernel, and performed experiments comparing TCP with and without kernel, and performed experiments comparing TCP with and without
Limited Slow-Start [D02]. Preliminary results show improved Limited Slow-Start [D02]. Results so far show improved performance
performance for TCPs using Limited Slow-Start. There are also for TCPs using Limited Slow-Start. There are also several
several experiments comparing different values for max_ssthresh. experiments comparing different values for max_ssthresh.
More experiments will be needed to more fully evaluate Limited Slow-
Start.
4. Related Proposals 4. Related Proposals
There has been considerable research on mechanisms for the TCP sender There has been considerable research on mechanisms for the TCP sender
to learn about the limitations of the available bandwidth, and to to learn about the limitations of the available bandwidth, and to
exit slow-start before receiving a congestion indication from the exit slow-start before receiving a congestion indication from the
network [VEGAS,H96]. Other proposals set TCP's slow-start parameter network [VEGAS,H96]. Other proposals set TCP's slow-start parameter
ssthresh based on information from previous TCP connections to the ssthresh based on information from previous TCP connections to the
same destination [WS95,G00]. This draft proposes a simple limitation same destination [WS95,G00]. This draft proposes a simple limitation
on slow-start that can be effective in some cases even in the absence on slow-start that can be effective in some cases even in the absence
of such mechanisms. The max_ssthresh parameter does not replace of such mechanisms. The max_ssthresh parameter does not replace
ssthresh, but is an additional parameter. Thus, Limited Slow-Start ssthresh, but is an additional parameter. Thus, Limited Slow-Start
could be used in addition to mechanisms for setting ssthresh. could be used in addition to mechanisms for setting ssthresh.
Rate-based pacing has also been proposed to improve the performance Rate-based pacing has also been proposed to improve the performance
of TCP during slow-start [VH97,AD98,KCRP99,ASA00]. We believe that of TCP during slow-start [VH97,AD98,KCRP99,ASA00]. We believe that
rate-based pacing could be of significant benefit, and could be used rate-based pacing could be of significant benefit, and could be used
in addition to the Limited Slow-Start in this proposal. in addition to the Limited Slow-Start in this proposal.
Appropriate Byte Counting [A01] proposes that TCP increase its Appropriate Byte Counting [RFC3465] proposes that TCP increase its
congestion window as a function of the number of bytes acknowledged, congestion window as a function of the number of bytes acknowledged,
rather than as a function of the number of ACKs received. rather than as a function of the number of ACKs received.
Appropriate Byte Counting is largely orthogonal to this proposal for Appropriate Byte Counting is largely orthogonal to this proposal for
Limited Slow-Start. Limited Slow-Start.
Limited Slow-Start is also orthogonal to other proposals to change Limited Slow-Start is also orthogonal to other proposals to change
mechanisms for exiting slow-start. For example, FACK TCP includes an mechanisms for exiting slow-start. For example, FACK TCP includes an
overdamping mechanism to decrease the congestion window somewhat more overdamping mechanism to decrease the congestion window somewhat more
aggressively when a loss occurs during slow-start [MM96]. It is also 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 true that larger values for the MSS would reduce the size of the
skipping to change at page 5, line 31 skipping to change at page 5, line 31
with Tom Kelly, who has used a similar modified slow-start in his own with Tom Kelly, who has used a similar modified slow-start in his own
research with congestion control for high-bandwidth connections. We research with congestion control for high-bandwidth connections. We
also thank Tom Dunigan for his experiments with Limited Slow-Start. also thank Tom Dunigan for his experiments with Limited Slow-Start.
We thank Andrei Gurtov, Reiner Ludwig, members of the End-to-End We thank Andrei Gurtov, Reiner Ludwig, members of the End-to-End
Research Group, and members of the Transport Area Working Group, for Research Group, and members of the Transport Area Working Group, for
feedback on this document. feedback on this document.
6. Normative References 6. Normative References
[A01] Mark Allman, "TCP Congestion Control with Appropriate Byte
Counting", draft-allman-tcp-abc-02.txt, internet-draft, work-in-
progress, November 2001.
[RFC2581] M. Allman and V. Paxson, "TCP Congestion Control", RFC [RFC2581] M. Allman and V. Paxson, "TCP Congestion Control", RFC
2581, April 1999. 2581, April 1999.
[RFC3465] Mark Allman, "TCP Congestion Control with Appropriate Byte
Counting", RFC 3465, February 2003.
7. Informative References 7. Informative References
[AD98] Mohit Aron and Peter Druschel, "TCP: Improving Start-up [AD98] Mohit Aron and Peter Druschel, "TCP: Improving Start-up
Dynamics by Adaptive Timers and Congestion Control"", TR98-318, Rice Dynamics by Adaptive Timers and Congestion Control"", TR98-318, Rice
University, 1998. URL "http://cs- University, 1998. URL "http://cs-
tr.cs.rice.edu/Dienst/UI/2.0/Describe/ncstrl.rice_cs/TR98-318/". tr.cs.rice.edu/Dienst/UI/2.0/Describe/ncstrl.rice_cs/TR98-318/".
[ASA00] A. Aggarwal, S. Savage, and T. Anderson, "Understanding the [ASA00] A. Aggarwal, S. Savage, and T. Anderson, "Understanding the
Performance of TCP Pacing", Proceedings of the 2000 IEEE Infocom Performance of TCP Pacing", Proceedings of the 2000 IEEE Infocom
Conference, Tel-Aviv, Israel, March, 2000. URL Conference, Tel-Aviv, Israel, March, 2000. URL
 End of changes. 11 change blocks. 
31 lines changed or deleted 30 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/