Network Working Group                                           S. Floyd
Request for Comments: 3742                                          ICSI
Category: Experimental                                        March 2004
        
Network Working Group                                           S. Floyd
Request for Comments: 3742                                          ICSI
Category: Experimental                                        March 2004
        

Limited Slow-Start for TCP with Large Congestion Windows

具有大拥塞窗口的TCP有限慢启动

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.

版权所有(C)互联网协会(2004年)。版权所有。

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.

本文档描述了对TCP慢启动的可选修改,用于具有大拥塞窗口的TCP连接。对于能够使用数千个(或上万个)MSS大小段的拥塞窗口的TCP连接(对于MSS,发送方的最大段大小),当前的慢启动过程可能导致在一次往返时间内将拥塞窗口增加数千个段。这种增加很容易导致在一次往返时间内丢弃数千个数据包。这通常会对TCP流本身产生反作用,并且对共享拥塞链路的其余流量也很困难。本说明将有限慢启动描述为一种可选机制,用于限制在慢启动期间为一个数据窗口增加拥塞窗口的段数,以提高具有大拥塞窗口的TCP连接的性能。

1. Introduction
1. 介绍

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

本说明描述了一种可选的TCP慢启动修改,可用于具有较大拥塞窗口的TCP连接。对于能够使用数千个(或上万个)MSS大小段的拥塞窗口的TCP连接(对于MSS,发送方的最大段大小),当前的慢启动过程可能导致在一次往返时间内将拥塞窗口增加数千个段。这种增加很容易导致在一次往返时间内丢弃数千个数据包。这通常会对TCP流本身产生反作用,并且对共享拥塞链路的其余流量也很困难。本说明描述了有限的慢速启动,限制了启动的段数

congestion window is increased for one window of data during slow-start, in order to improve performance for TCP connections with large congestion windows.

在慢速启动期间,为一个数据窗口增加拥塞窗口,以提高具有较大拥塞窗口的TCP连接的性能。

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].

当慢启动导致在一个往返时间内拥塞窗口大幅增加时,网络中可能会丢弃大量数据包(即使路由器中有经过仔细调整的主动队列管理机制)。网络中大量数据包的丢失会导致TCP连接不必要的重新传输超时。TCP连接可能在拥塞避免阶段结束,拥塞窗口非常小,并且可能需要大量的往返时间来恢复其旧的拥塞窗口。[F02]中说明了这种较差的性能。

2. The Proposal for Limited Slow-Start
2. 有限慢启动的建议

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

有限慢启动引入了一个参数“max_ssthresh”,并针对“cwnd”大于“max_ssthresh”的拥塞窗口值修改慢启动机制。也就是说,在慢速启动期间

cwnd <= max_ssthresh,

cwnd<=最大阈值,

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

在慢启动期间,对于每个到达的ACK(确认),cwnd增加一个MSS(最大段大小),这通常是这样的。在有限慢启动期间,当

max_ssthresh < cwnd <= 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:

保持不变,以便在慢启动期间,拥塞窗口在每个往返时间内最多增加max_ssthresh/2 ms。具体做法如下:

      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);
        
      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].

因此,在有限慢启动期间,对于K=int(cwnd/(0.5 max_ssthresh)),对于每个到达的ACK,窗口增加1/K ms,而不是标准慢启动[RFC2581]中的1 ms。

When

什么时候

ssthresh < cwnd,

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.)

我们建议将max_ssthresh设置为100 ms。(对于2002年5月1日之后的快照,在NS[NS]模拟器的子目录“tcl/lib”中的测试“/test all tcpHighspeed tcp1A”和“/test all tcpHighspeed tcpHighspeed1”中对此进行了说明。将max_ssthresh设置为无穷大会导致NS中的TCP连接不使用有限的慢启动。)

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.

在有限慢启动情况下,当拥塞窗口大于max_ssthresh时,对于每个到达的ACK,窗口最多增加1/2 ms;当拥塞窗口大于1.5 max_ssthresh时,对于每个到达的ACK,窗口最多增加1/3 ms,依此类推。

With Limited Slow-Start it takes:

使用有限的慢速启动,需要:

log(max_ssthresh)

对数(最大阈值)

round-trip times to reach a congestion window of max_ssthresh, and it takes:

到达max_ssthresh拥塞窗口的往返时间,需要:

      log(max_ssthresh) + (cwnd - max_ssthresh)/(max_ssthresh/2)
        
      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.

对于大于max_ssthresh的拥塞窗口,到达cwnd拥塞窗口的往返时间。

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.

因此,在最大ssthresh设置为100 ms的有限慢启动情况下,需要836次往返时间才能达到83000个数据包的拥塞窗口,而在没有有限慢启动的情况下(假设没有数据包丢失),需要16次往返时间。在有限慢启动情况下,慢启动期间最大的瞬态队列为100个数据包;如果没有有限的慢启动,慢启动期间的瞬态队列将达到32000多个数据包。

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.

通过限制往返时间内拥塞窗口的最大增加量,有限慢启动可以减少慢启动期间的丢包次数,并提高拥塞窗口较大的TCP连接的性能。

3. Experimental Results
3. 实验结果

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.

Tom Dunigan在Linux 2.4.16 Web100内核中添加了有限的慢启动,并进行了实验,比较了TCP与有限的慢启动[D02]。迄今为止的结果表明,使用有限慢启动的TCP性能有所提高。也有一些实验比较了max_ssthresh的不同值。

4. Related Proposals
4. 相关建议

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.

关于TCP发送方了解可用带宽限制的机制,以及在接收到来自网络的拥塞指示之前退出慢启动的机制,已经进行了大量的研究[VEGAS,H96]。其他建议基于以前到同一目的地的TCP连接的信息设置TCP的慢启动参数ssthresh[WS95,G00]。本文件对慢启动提出了一个简单的限制,即使在缺乏此类机制的情况下,这种限制在某些情况下仍然有效。max_ssthresh参数并不取代ssthresh,而是一个附加参数。因此,除了设置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.

还提出了基于速率的起搏来提高TCP在慢启动期间的性能[VH97、AD98、KCRP99、ASA00]。我们相信基于速率的起搏可能具有显著的益处,并且可以在本提案中除了有限的慢启动之外使用。

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.

适当的字节计数[RFC3465]建议TCP将其拥塞窗口作为已确认字节数的函数,而不是作为接收到的ACK数的函数。适当的字节计数在很大程度上与有限的慢启动方案正交。

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.

有限慢启动也与其他改变退出慢启动机制的提议正交。例如,FACK TCP包括一种过阻尼机制,当在慢启动期间发生丢失时,该机制可以更积极地减少拥塞窗口[MM96]。同样,MSS的较大值将减小堵塞窗口的大小(以MSS为单位,用于填充给定管道),因此将减小瞬态队列的大小(以MSS为单位)。

5. Acknowledgements
5. 致谢

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

该提案是针对具有大拥塞窗口的TCP连接的高速TCP的更大提案的一部分,由Evandro de Souza与Deb Agarwal联合进行的模拟得出。这项关于有限缓慢启动的建议部分来自讨论

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.

与Tom Kelly合作,他在自己的研究中使用了类似的修改过的慢速启动,用于高带宽连接的拥塞控制。我们还感谢Tom Dunigan以有限的慢启动进行的实验。

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.

我们感谢Andrei Gurtov、Reiner Ludwig、端到端研究小组成员和运输区工作组成员对本文件的反馈。

6. Security Considerations
6. 安全考虑

This proposal makes no changes to the underlying security of TCP.

此建议不改变TCP的底层安全性。

7. References
7. 工具书类
7.1. Normative References
7.1. 规范性引用文件

[RFC2581] Allman, M., Paxson, V. and W. Stevens, "TCP Congestion Control", RFC 2581, April 1999.

[RFC2581]Allman,M.,Paxson,V.和W.Stevens,“TCP拥塞控制”,RFC 25811999年4月。

[RFC3465] Allman, M., "TCP Congestion Control with Appropriate Byte Counting (ABC)", RFC 3465, February 2003.

[RFC3465]Allman,M.,“具有适当字节计数的TCP拥塞控制(ABC)”,RFC 3465,2003年2月。

7.2. Informative References
7.2. 资料性引用

[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/".

[AD98]Mohit Aron和Peter Druschel,“TCP:通过自适应定时器和拥塞控制改善启动动态”,TR98-318,莱斯大学,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/".

[ASA00]A.Aggarwal,S.Savage和T.Anderson,“理解TCP起搏的性能”,2000年IEEE信息通信会议记录,以色列特拉维夫,2000年3月。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".

[D02]T.Dunigan,“Floyd的TCP慢启动和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/".

[F02]S.Floyd,“TCP启动缓慢的性能问题”,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".

[G00 ] A. Gurtov,“TCP在拥塞和腐败损失的情况下的表现”,硕士论文,赫尔辛基大学,计算机系,赫尔辛基,2000年12月。URL“http://www.cs.helsinki.fi/u/gurtov/papers/ms_thesis.html".

[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".

[H96]J.C.Hoe,“改进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".

[KCRP99]J.Kulik,R.Coulter,D.Rockwell和C.Partridge,“有节奏TCP的模拟研究”,BBN技术备忘录第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.

[MM96]M.Mathis和J.Mahdavi,“前向确认:改进TCP拥塞控制”,SIGCOMM,1996年8月。

[NS] The Network Simulator (NS). URL "http://www.isi.edu/nsnam/ns/".

[NS]网络模拟器(NS)。URL“http://www.isi.edu/nsnam/ns/".

[VEGAS] Vegas Web Page, University of Arizona. URL "http://www.cs.arizona.edu/protocols/".

[维加斯] Vegas网页,亚利桑那大学。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/".

[VH97]Vikram Visweswaraiah和John Heidemann,“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.

[WS95]G.Wright和W.Stevens,“TCP/IP插图”,第2卷,艾迪生-卫斯理出版公司,1995年。

Authors' Address

作者地址

Sally Floyd ICIR (ICSI Center for Internet Research)

Sally Floyd ICIR(ICSI互联网研究中心)

   Phone: +1 (510) 666-2989
   EMail: floyd@icir.org
   URL: http://www.icir.org/floyd/
        
   Phone: +1 (510) 666-2989
   EMail: floyd@icir.org
   URL: http://www.icir.org/floyd/
        

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.

版权所有(C)互联网协会(2004年)。本文件受BCP 78中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。

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.

IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何独立努力来确定任何此类权利。有关RFC文件中权利的程序信息,请参见BCP 78和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.

向IETF秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为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.

IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涵盖实施本标准所需技术的专有权利。请将信息发送至IETF的IETF-ipr@ietf.org.

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。