| < 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/ | ||||