高速网络的TCP拥塞控制策略及改进
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
随着计算机和通信技术的发展,人们对Internet的需求已经越来越超乎想象,因此更多、更合理的控制机制对现有网络的顺畅运作起着非常重要的作用,其中最基本、最关键的就是网络拥塞控制技术,即如何有效防止或消除网络出现的拥塞,使网络基本运行在轻度拥塞的最佳状态。
网络中的拥塞来源于网络资源和网络流量分布的不均衡性,它不会随着网络处理能力的提高而消除。
到目前为止,拥塞问题始终没有一个完美的解决方案。
面对各种复杂的网络环境,拥塞控制算法不但在设计方面存在一定的困难,在算法的性能评价方面也都缺乏统一的标准。
根据拥塞控制算法的实现位置,主要分为源算法和链路算法两种:源算法在主机和网络边缘设备中执行,作用是根据反馈信息调整发送速率;链路算法在网络设备(如路由器和交换机)中执行,作用是检测网络拥塞的发生,产生拥塞反馈信息。
拥塞控制算法设计的关键问题是如何生成反馈信息和如何对反馈信息进行响应。
TCP协议是使用最广泛的源算法,也是目前在 Internet 中使用最广泛的传输协议。
它包括慢启动、拥塞避免、快速重传和快速恢复四个阶段,其核心的拥塞避免算法采用一种AIMD(加性增加乘性减少)的窗口调节机制。
TCP协议从提出到现在已经历了几个版本的不断改进,从RFC1122到TCP Tahoe,再到现在应用广泛的TCP Reno,每次改进都带来网络性能的较大提高。
但是,在高带宽时延乘积网络不断扩大的今天,随着网络技术如光通信技术的发展,出现了带宽大于1Gbps,甚至10Gbps的高速网络,而且带宽还有不断增加的趋势。
在这样的高速网络中,当前广泛应用的标准TCP的控制算法已不能满足高速网络中数据传输的需要。
传统的TCP拥塞控制算法在高带宽的网络上不仅会不稳定,而且其性能也会下降。
由于采用加性增长机制,传统的TCP拥塞控制算法在每个RTT中增加发送的包过于缓慢,这在高带宽的网络环境下会浪费若干RTT才能充分利用网络带宽,发生拥塞时又使窗口降低过快。
因此,研究改善高速网络数据传输性能的拥塞控制算法就有了重要的意义。
本文首先分析了拥塞产生的原因以及拥塞控制的目前研究概况,并指出拥塞现象的发生和TCP/IP网络的设计机制有着密切的联系。
随后详细介绍了已有TCP源算法和与之相结合的IP链路算法。
其次,本文深入分析了TCP源算法的各个阶段。
最后,针对现有TCP 拥塞控制机制的研究状况,本文对TCP源算法中的慢启动阶段提出了改进,在此算法中引入一个比例因子q,使得慢启动过程尽可能接近可利用带宽,从而提高吞吐量。
为了便于性能对比评测,本文最后采用了TCP/IP研究领域的主流仿真软件NS作为实验工具,使得实验结果更为客观、真实。
主要工作有:
1、阅读参考文献,了解拥塞控制基本理论、发展现状,对基于端算法的协议进行理论分析和总结。
2、利用模拟工具NS-2重点对TCP协议进行了模拟实验,提出一种新的改进算法QTCP。
QTCP着重增加了拥塞窗口在慢启动阶段的加速性,以适应高速网络的现状。
关键词:高速网络;拥塞控制;源算法;TCP Reno;QTCP
Abstract
With the development of computer and communication technology, people’s demand for the Internet has been increasing in an indescribable way, so the more and the better control mechanisms which could smooth the network play a very important part .The congestion control is one of the cruxes, that is how to avoid or eliminate the congestion in the network, so as to make the network basically run in the best and the low-grade congest state.
Congestion in the network stems from the disequilibrium about the source and the flux in the network, it wouldn’t be eliminated because the improvement of the network’s process ability, to this day, the congestion hasn’t had a perfect solution scheme all the while. Facing to the multifarious environment of the network, it has a certain difficulty not only in the design about the algorithm of the congestion control, but also in the function comparison of those protocols which needs a centralized norm. According to the position of the algorithm achieve, they fall into two algorithms: Source algorithm and Link algorithm. Source algorithm was performed at the mainframe and the end machines, its effect is to regulate the sending rate according to the feedback information; Link algorithm was performed at the network equipments, such as the router and the switch, its effect is to examine the emergence of the network congestion, and bring the feedback information. The crux is how to bring the feedback information and how to response to them.
TCP protocol is the most widely used with source algorithm, and also the main popular transmission protocol, including four epochs, that is, the slow start, congestion avoidance, fast transmission and fast discovery, its core algorithm of congestion avoidance used a mechanism called AIMD (additive increase multiplicative decrease). TCP protocol has come through several improved versions. Every step makes possible higher bandwidth utilization rate .From RFC1122 to TCP Tahoe and to the most widely used TCP Reno, each modification has made a great enhancement in its performance.
But at this HWAN period, the development of network technology such as optical communication technology leads to the appearance of many high-speed networks with bandwidth larger than 1Gbps, or even 10Gbps.Widely adopted as a data transfer protocol in current Internet, TCP performs badly in high-speed networks because of its congestion control algorithm. It is more and more obvious about its localizations, especially its response too slow at
the large windows, and decrease too fast when the congestion happens. As a result, some new congestion control algorithms have been proposed.
First, this paper analyzes the reason that leads to congestion and the current survey of the research on congestion control, points that congestion is closely relatived with the design mechanism of TCP/IP network. It then introduces the existing TCP source algorithm, the IP link algorithm associated with it. Also, this paper analyzes every phase of the TCP source algorithm deeply .In the end, the paper takes a proposal on the congestion avoidance of the TCP source algorithm. It introduces a proportional item (q) into the algorithm of this phase to make the transmission kept in the congestion avoidance as likely as possible, thereby reduces the times that congestion happens and improves the throughput. To compare the performance of algorithms easily, the leading tool of network simulation in TCP/IP research realm, NS, is introduced in this paper to make experiment result more objective and true.
In this paper, we firstly gave an overview of the related work, and made then some contribution work as follows:
1. Read the reference literatures, comprehend the basic congestion control and the current situation, analyze and summarize those new protocols.
2. Use the simulation tool-NS-2, combine the theory, and put forward a new improvement algorithm QTCP. It enhances the cwnd , especially improved the quickly in the slow start, do better in the high-speed networks.
Key Words: high-speed networks, congestion control, source algorithm,TCP Reno,QTCP
论文独创性声明
本人郑重声明:所提交的学位论文是本人在导师的指导下进行的研究工作及取得的成果。
除文中已经注明引用的内容外,本论文不含其他个人或其他机构已经发表或撰写过的研究成果。
对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。
本人承担本声明的法律责任。
研究生签名:日期:
论文使用授权声明
本人完全了解广西师范大学有关保留、使用学位论文的规定。
广西师范大学、中国科学技术信息研究所、清华大学论文合作部,有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。
本人电子文档的内容和纸质论文的内容相一致。
除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布(包括刊登)论文的全部或部分内容。
论文的公布(包括刊登)授权广西师范大学学位办办理。
研究生签名:日期:
导师签名:日期:
第1章绪论
1.1 概述
1.1.1 拥塞定义
所谓拥塞(Congestion)是指由于网络负荷的增加导致网络性能下降的情况[1]。
当主机发送到通信子网中的分组数量远低于其传输容量时,分组将被全部送达目的地(除了因传送错误而不能正确到达的少数分组外)。
然而随着通信量的增加,当用户对网络资源的要求超过了可用资源,网络就会产生拥塞。
此时如果没有拥塞控制机制,即使造成拥塞的初始原因已经不存在了,网络拥塞还会继续下去,最终导致网络瘫痪,几乎没有分组能够送达,我们称之为拥塞崩溃。
第一次观察到拥塞崩溃这种现象是在1986年10月。
当时,从LBL到UC Berkeley之间的数据吞吐量从32kbps下降到了40bps。
此后,拥塞控制就成为网络研究领域的研究热点。
拥塞的发生如图1-1所示,当负载
较小时,吞吐量的增长和负载相比基本
呈线性关系,延迟增长缓慢;在负载超
过膝点之后,吞吐量增长缓慢,延迟增
长较快;当负载超过崖点之后,吞吐量
急剧下降,延迟急剧上升。
可以看出,
负载在膝点附近时网络的使用效率是最
高的。
图1-1 负载与吞吐量间的关系曲线拥塞发生的根源是“需求”大于“供给”,网络中有限的资源要由多个用户共享,源端的重传分组策略又会加重网络负担,而这样恶性循环的结果必定是网络性能的严重下降。
拥塞控制的概念正是基于这种情况下被提出,用来控制网络流量,使网络的吞吐量达到一个最大的平衡值,使整个网络的性能达到最佳,并且保持稳定。
1.1.2 拥塞控制
拥塞控制机制实际上包含拥塞避免(congestion avoidance)和拥塞控制(congestion control)两个部分。
拥塞避免是一种“预防”机制,它的目标是使网络维持在高吞吐量、低延迟状态,避免进入拥塞状态;而拥塞控制是一种“恢复”机制,它的目标是使网络从拥塞中恢复出来,进入正常的运行状态。
造成拥塞的因素有很多,首先从直观的角度看,拥塞是由于网络资源的不足所产生的。
其次,网络拓扑结构或传输路径选择的不合理也可能在全局资源足够的情况下导致拥塞。
再次,控制算法的性能好坏也决定网络的性能,有些应用在拥塞发生时并不降低发送方的发送速率,这有可能是这些应用本身的需求,如采用UDP协议[2]的某些应用;也有可能
是恶意地修改拥塞控制协议以获得更大的带宽。
当然,后面两种情形反映在实际情况中都是网络资源不足,但是单纯地增加网络资源并不能解决拥塞问题,有时反而会增加拥塞程度。
譬如:当网络拥塞时,如果增加路由器缓冲区的存储空间,反而会加大拥塞,因为很有可能排在队尾的报文会超时到达接收方,这样,发送方会重发报文从而导致更严重的拥塞现象。
当拥塞进一步加剧时就会导致拥塞崩溃。
Floyd在文献[3]将典型的拥塞分成了以下几类:
1. 传统的拥塞崩溃
如前所述,拥塞崩溃最初的例子发生于20世纪80年代,拥塞崩溃的产生大多是由于TCP连接不必要地重传一些分组而这些分组或是正在传输过程中或是已到达接收方。
这种因不必要重传的分组造成的拥塞崩溃被称为传统的拥塞崩溃。
在今天的Internet中,在应用层,用户使用Web浏览器时点击“刷新”按钮所带来的非必须重传的分组所造成的拥塞也类似于传统的拥塞崩溃。
2. 未投递分组造成的拥塞崩溃
未投递分组造成的拥塞崩溃是另外一种形式的拥塞崩溃。
这种拥塞崩溃可能是今天的Internet所未能解决的最危险的拥塞崩溃。
未投递分组造成的拥塞崩溃是由于网络带宽被那些在到达最终信宿前就被丢弃的分组所浪费而造成的。
这时,网络路径被这些正在投递但最终将在到达接收方前被丢弃的分组所堵塞。
这种拥塞崩溃主要是不采用端到端拥塞控制机制的开环应用(如UDP)引起的。
一些尽最大努力投递应用甚至在分组丢弃率上升时增加其发送速率,这会造成更严重的拥塞崩溃。
3. 报文分片带来的拥塞崩溃[4]
由于报文常常会被分片,当一个网络层的报文被分成若干片传输时,如果这些分片中的某些分片被链路层丢弃,那么剩余的分片在接收端将无法再组成一个完整的报文。
对于这些剩余分片的投递将浪费大量的带宽资源。
基于分片的拥塞崩溃往往来自于链路层传输单元(分片)与高层的重传单元(报文)之间的不匹配。
近年来针对这个问题业界也做了大量的研究,提出了使用“早期报文丢弃”,或使用路径MTU(Maximum Transmission Unit)发现,它能最小化报文分片。
4. 用于网络控制的附加信息流带来的拥塞崩溃
用于网络控制的附加信息流(如小数据包的报文头、路由更新、DNS信息等)带来的拥塞崩溃到目前为止还不是问题。
但是,由于网络负荷的增加使得控制分组或分组头在网络流量中所占比例随之增加,所以这种拥塞崩溃是一个潜在的危险。
要解决这个问题,应在拥塞程度增加时避免用于控制的附加信息流的增加。
5. 陈旧或不再需要的分组带来的拥塞崩溃
如同用于拥塞控制的附加信息流带来的拥塞崩溃一样,陈旧或不需要的分组带来的拥塞崩溃目前来讲也不是问题。
这种分组之所以造成拥塞在于,随着网络负荷的增加、或者是路由器中缓存太大,使得到达接收方的分组中,不再需要(因为已经过时)的分组占的
比例增加了。
为了防止网络发生拥塞崩溃,我们有必要对网络拥塞进行控制。
1.2 拥塞控制算法
1.2.1 拥塞控制算法的分类
1. 从控制理论的角度,可以将拥塞控制算法分为开环控制和闭环控制两大类。
当流量特征可以准确规定、性能要求可以事先获得时,适于使用开环控制。
开环控制是在事先设计一个“好的”网络,确保它不发生拥塞,而网络一旦运行起来,就不再采取措施。
显然对网络这样不断变化的复杂系统,开环控制并不是理想的选择。
当流量特征不能准确描述或者当系统不提供资源预留时,适于使用闭环控制。
Internet中主要采用闭环控制方式。
闭环的拥塞控制分为以下3个阶段:检测网络中拥塞的发生;将拥塞信息报告到拥塞控制点;拥塞控制点根据拥塞信息进行调整以消除拥塞。
闭环的拥塞控制可以动态地适应网络的变化,但它的一个缺陷是算法性能受到反馈延迟的严重影响[5]。
当拥塞发生点和控制点之间的延迟很大时,算法性能会严重下降。
2. 根据算法的实现位置,可以将拥塞控制算法分为两大类:源算法(Source Algorithm)和链路算法(Link Algorithm)。
源算法在主机和网络边缘设备中执行,作用是根据反馈信息调整发送速率。
链路算法在网络设备(如路由器和交换机)中执行,作用是检测网络拥塞的发生,产生拥塞反馈信息。
源算法中使用最广泛的是TCP协议中的拥塞控制算法。
TCP是目前在Internet中使用最广泛的传输协议。
根据MCI的统计,总字节数的95%和总报文数的90%使用TCP传输[6]。
近年来,TCP中采用了很多新的拥塞控制算法,包括慢启动(Slow Start)、拥塞避免、快速重传(Fast Retransmit)、快速恢复(Fast Recovery)、选择性应答(SACK)等,大大提高了网络传输的性能。
TCP中使用的拥塞控制算法已成为保证Internet稳定性的重要因素。
链路算法的研究目前集中在“主动队列管理”(Active Queue Management,AQM)算法方面。
和传统的“队尾丢弃”(DropTail)相比,AQM在网络设备的缓冲溢出之前就丢弃或标记报文。
AQM的一个代表是RED[7](Random Early Detection)。
研究表明,RED 比DropTail具有更好的性能。
在RFC2309中,强烈推荐使用RED作为今后的标准。
但是进一步研究发现,RED的性能对算法的参数设置十分敏感,因此至今没有在Internet中得到广泛的使用。
3. 从网络资源分配的角度(实际上也是从QoS控制的角度,因为QoS控制实际上是通过对带宽、缓存等网络资源的管理与调度实现所传输数据流要求的一系列服务请求,如果实现得当,则拥塞就可以避免。
然而,QoS控制的目的远不是为了控制拥塞,而是要满足更高的要求,例如传输多媒体信息),又可以把拥塞控制方法大致分成以下几种类型:(1)由网络内部(例如路由器或交换机)控制拥塞(即在IP层)和由网络边缘(例如采用传输层协议的端用户)控制拥塞(即在TCP层)。
由于实际中网络内部的路由器和
网络边缘的端系统都参与了拥塞控制,所以真正的问题在于以谁为拥塞控制的核心。
在以路由器为核心的设计中,每个路由器完全承担起数据包的转发和丢弃工作,同时还要通告产生网络流量的端用户允许发送多少数据进入网络。
在以端用户为核心的设计中,端用户观察网络情况(例如有多少数据包成功地通过网络),并相应调整其行为。
其实这两种类型并不互相排斥。
例如一个将拥塞控制的任务放在路由器上的网络仍然希望端用户对网络所产生的拥塞情况做出反应,而使用端到端拥塞控制的网络中的路由器也会使用即使是最简单的策略决定排队溢出时包如何丢弃。
(2)预留型和反馈型。
在预留型系统中,端用户在发送数据流之前要向网络要求一定的资源,各个路由器则分配足够的资源(缓存和带宽)以满足这种需求。
如果某些路由器不能满足要求,这些路由器就会拒绝数据流,这与电话系统有些类似。
在反馈型系统中,端系统无需预留任何资源就发送数据,然后根据其接收的反馈信息调整发送速率。
这种反馈可以是显式(例如一个拥塞路由器直接向源端发送拥塞信号)也可以是隐式(例如源端观察到有包丢失)。
QoS体系中的IntServ就是预留型系统,而DiffServ就是反馈型系统。
预留型拥塞控制总是隐含了一种以路由器为核心的拥塞控制机制,这是因为每个路由器要负责保持预留资源的情况,确保源端使用预留资源。
如果一个源端发送速率超过预留带宽,其数据包就很可能被丢弃,否则路由器就会拥塞。
另一方面,反馈型系统既可以是以路由器为核心,也可以是以端用户为核心的机制。
如果反馈是显式的,那么一定有路由器参与了拥塞控制,至少某种程度上是这样。
如果反馈是隐式的,那么拥塞控制的所有责任几乎都由端用户承担。
当路由器拥塞时,它们会“默默地”丢弃数据包。
(3)基于窗口型和基于速率型。
TCP是典型的基于窗口的控制方式,其按发送窗口大小决定发送的数据量。
这个窗口响应于接收者的缓存容量和网络情况,所以它也可以执行流量控制。
基于速率的拥塞控制则按每秒发送多少比特来控制数据发送。
基于速率的控制机制本质上更适合于诸如音频和视频的多媒体数据流,因为多媒体数据流本质上都是基于速率的。
基于速率的拥塞控制目前仍然是个开放问题。
目前网络服务模型所使用的策略可以从以上类型来考虑。
一方面,尽力做好(best-effort)服务模型由于不允许用户预留网络资源,所以通常隐含使用反馈型拥塞控制。
这意味着拥塞控制的大部分责任落在端用户上。
实际上,这样的网络往往使用基于窗口的信息,这也是目前Internet使用的方法。
另一方面,支持QoS的服务模型往往隐含某种形式的资源预留。
为了支持资源预留,路由器要做很多工作,例如,路由器要按不同的资源预留要求对数据包进行排队。
由于基于窗口的控制仅仅间接地与一个用户要求的带宽有关,所以用基于速率的方式表达这种预留更有效。
1.2.2 拥塞控制算法的设计问题
拥塞控制算法的设计具有很大的难度,主要困难体现在以下几方面[8]:
1. 算法的分布性。
拥塞控制算法的实现分布在多个网络节点中,必须使用不完整的信息完成控制,并使各节点协调工作,还必须考虑某些节点工作不正常的情况。
2. 网络环境的复杂性。
Internet中各处的网络性能有很大的差异,算法必须具有很好的适应性。
另外,由于Internet对报文的正确传输不提供保证,算法必须处理报文丢失、乱序到达等情况。
3. 算法的性能要求。
拥塞控制算法对性能有很高的要求,包括算法的公平性、效率、稳定性和收敛性等。
某些性能目标之间存在矛盾,在算法设计时需要进行权衡。
4. 算法的开销。
拥塞控制算法必须尽量减少附加的网络流量,特别是在拥塞发生时。
在使用反馈式的控制机制时,这个要求增加了算法设计的困难。
算法还必须尽量降低在网络节点(特别是网关)上的计算复杂性。
拥塞控制算法研究由于其巨大的复杂性,已不满足于以往的基于主观方法提出解决方案再进行模拟分析拥塞控制算法性能的思路,而必须建立起其理论上的框架,用控制理论和优化理论等现代分析方法来研究网络的动力学模型和特性,揭示Internet网络形成拥塞现象的物理机制,分析各种算法以及算法的组合的性能,发展更有效的拥塞控制算法,以满足人们对网络快速增长的需求。
1.3 本论文研究的工作
1.3.1 本论文研究目的、意义及研究方法
本论文研究的目的一方面在于详尽介绍网络拥塞控制这一技术领域的研究现状,介绍该领域研究的前期成果,另一方面则是试图根据拥塞控制技术的发展轨迹,发现原有算法的弱点进行改进,提出新的拥塞控制算法。
拥塞控制算法的研究,对提高网络性能是很有实用价值的。
本论文在拥塞控制算法的研究方面,以及如何在拥塞控制算法的新的设计思想方面,作了一些有意义的探索。
结合拥塞控制发展的各个不同阶段,对拥塞控制中所包含的各个机制的功能进行了详细的分析,这对于了解拥塞控制技术的特点和现有技术的缺点,以提出更好的拥塞控制机制是具有实际价值和启发意义的。
本文将从TCP算法的性能分析入手,从而提出TCP算法的改进方案,希望能通过协议的修改,使得最后的拥塞控制算法的性能更进一步地提高。
1.3.2本论文的研究内容及论文结构
在本论文中,我们介绍了拥塞控制技术的起源以及其二十余年的发展历史。
探讨了TCP 各个版本的演进,以及较新的版本增加的机制对较前版本的优缺点。
论文首先介绍拥塞控制算法的一些基本概念,然后介绍目前应用最为广泛的TCP Reno算法,在介绍TCP Reno 算法的同时指出其在高速链路下的算法缺陷,从而引出QTCP算法,最后结合仿真结果讨论其有效性及可行性。
全文内容组织如下:
第1章为绪论部分,主要介绍拥塞控制技术的起源,以及论文研究的方法,目的和意义。
第2章概述拥塞控制算法的几个基本概念,详细介绍了拥塞控制的发展历史以及研究现状,概述了拥塞控制的有关理论和模型,并详细介绍了拥塞控制的各个理论与技术细节。
第3章重点介绍TCP Reno算法,介绍其算法及缺陷之后,在其基础上引出QTCP算法。
利用NS仿真对所实现的QTCP算法进行一系列的情景仿真实验,利用仿真结果验证QTCP相对于TCP Reno的优越性。
第4章总结全文,并提出需要继续的工作。
第2章拥塞控制算法概述
2.1 基于源端的拥塞控制协议
2.1.1 TCP拥塞控制机制
现在广泛应用的TCP拥塞控制主要包含了4个核心算法[9][10][11]。
1. 慢启动阶段
在一个TCP连接中,当数据开始传输时,TCP并不知道当前的网络环境。
因此,一开始TCP必须慢慢地探测当前网络可提供的容量,以免出现由于发送大量突发数据导致网络拥塞的情况,慢启动算法就是为了解决这个问题而设计的,它通常用于连接的开始阶段和由于重传定时器的超时而引起的重传丢包阶段。
当建立新的TCP连接,拥塞窗口(congestion window,cwnd)初始化为一个报文大小。
源端按cwnd大小发送数据,每收到一个ACK 确认,cwnd就增加1个报文发送量,这样cwnd就将随着往返时间(Round Trip Time,RTT)呈指数增长:1个、2个、4个……源端向网络发送的数据量将急剧增加,这就是和式增加(Additive Increase)模式。
我们看到,慢启动实际上是指数级启动,速度并不慢,要达到每RTT发送N个报文所需时间仅为RTT × log 2 N。
由于在发生拥塞时,拥塞窗口会减半或降到1,因此慢启动确保了源端的发送速率最多是链路带宽的两倍。
2. 拥塞避免阶段
当数据到达一个大的管道(一个快速LAN),然后从一个较小的管道(一个较慢的LAN)发送出去时,网络就可能会出现拥塞。
在多个输入流到达一个路由器,而该路由器的输出容量小于输入容量的总和时,在这种情形下也可能会发生拥塞。
而拥塞避免就是一种用来处理丢失包的方法。
算法假设由于损坏而丢失包的比例是非常小的(远小于1%)。
因此,当出现包丢失时就表明源端和目的端之间的网络的某个地方出现了拥塞。
包丢失有两种指示:超时和接收到重复的ACK.。
如果TCP源端发现超时或收到3个相同ACK副本时,即认为网络发生了拥塞。
此时就进入拥塞避免阶段。
慢启动阈值(slow start thresh,ssthresh)被设置为当前拥塞窗口大小的一半,如果超时,拥塞窗口被置1。
这就是
积式减少(Multiplicative Decrease)模式。
与慢
启动的和式增加模式统称为AIMD窗口调节机
制。
如果cwnd>ssthresh,TCP就执行拥塞避免
算法,此时,cwnd在每次收到一个ACK时只
增加1/cwnd个数据包,这样,在一个RTT内,
cwnd将增加1,所以在拥塞避免阶段,cwnd不
是呈指数增长,而是线性增长。
如右图所示:图2-1 慢启动与拥塞避免示意图。