logo好方法网

一种基于RTT的TCP网络拥塞控制方法


技术摘要:
本发明公开一种基于RTT的TCP网络拥塞控制方法,TCP网络拥塞控制方法基于拥塞窗口变化率与RTT变化率的比值变化来判断当前网络数据量是否达到饱和状态;以此作为调整数据流量的依据。该方法可以根据网络状态自适应的以不同速率增加或者减小拥塞窗口大小,减少了基于传统  全部
背景技术:
TCP拥塞控制比较经典的算法有Tahoe、Reno、NewReno、SACK、Vegas以及显示控制 算法ECN,下面是对这几种算法的简单阐述: Tahoe算法源于20世纪80年代末期在加州大学伯克利分校的4.2版本的UNIX系统 中被提出,它在连接之初处于慢启动阶段,若检测到丢包,不论由于超时还是快速重传,都 会重新进入慢启动阶段;这种方法带来的一个问题是,对于有较大BDP的链路来说,会使得 带宽利用率低下。 针对cwnd启动的初始值设置过小这一问题,又有了Reno算法,即在快速重传的条 件下设置cwnd值为当前窗口一半并重新执行拥塞避免过程,这称为快速回复;而快速恢复 带来的一个问题是,当一个传输窗口出现多个数据包丢失时,一旦其中一个包重传成功,发 送发就认为已完成重传,但是丢失的其他数据包可能并未完成重传,这称为局部ACK,于是 就引入了NewReno算法。 NewReno算法对快速恢复做了改进,只有在该窗口内丢失的所有数据包都得到重 传之后才退出快速恢复阶段,将拥塞窗口置为当前一半并进入拥塞避免阶段。虽然NewReno 可以解决大量数据包遗失的问题,但是NewReno在每个RTT内只能重传一个数据包,为了处 理大量数据包遗失的问题,另一个解决方法是让发送端知道哪些数据包已经被接收端收 到,于是SACK应运而生。 TCP  SACK在TCP  Reno基础上增加了选择确认(SACK)和选择重传,SACK中加入的 SACK选项允许接收端在返回重复ACK时,将已经收到的数据区段返回给发送端,数据区段与 数据区段之间的间隔就是接收端没有收到的数据。发送端知道了哪些数据包已经收到,哪 些该重传,因此SACK发送端在一个往返时延RTT时间内可以重传多个数据包。 TCP  Vegas算法于1994年被提出,它是TCP协议发布后的第一个基于延迟的拥塞控 制方法。Vegas算法首先估算了一定时间内网络能够传输的数据量,然后与实际传输能力进 行比较。若本该传输的数据并没有被传输,那么它有可能被链路上的某个路由器挂起。在拥 塞避免阶段,Vegas算法测量每个RTT中所传输的数据量,并将这个数除以网络中观察到的 最小延迟时间。算法维护了两个阈值α和β。当吞吐量与预期不同时,若得到的吞吐量小于α, 则将拥塞窗口增大;若吞吐量大于β,则将拥塞窗口减小。吞吐量在两个阈值之间,拥塞窗口 保持不变。显示拥塞控制是运行在IP协议和TCP协议中的一种可选拥塞控制策略,运行通过 数据标识来代替丢包的方式来告知网络拥塞控制状态。 ECN的实现需要在建立连接的时候通讯双方进行协商,协商成功,相应的路由器可 以通过路由设定IP数据包的标志位来通知拥塞,而连接的双方也可以通过TCP/IP数据包中 的相应标识位来进行拥塞窗口控制。当通讯双发协商好采用ECN后,通讯双发发送出来的IP 4 CN 111614572 A 说 明 书 2/5 页 数据报就被标记为ECT(0)或者ECT(1),然后当该数据报经过支持ECN的路由器时候就会对 数据进行控制,当网络达到可能要发生拥塞的时候就会采取对数据包进行标记来取代丢 包,当通讯一端接收到报文的时候,就可认为该网络发生了拥塞,并通过TCP报文将拥塞信 息回显,通知发送端。 上述现有技术存在以下问题: 1、基于检测丢包的拥塞控制方法Tahoe、Reno、NewReno拥塞窗口变化较大,会带来 较大的传输延迟,在拥塞避免阶段拥塞窗口会一直增大,直到出现丢包或收到三次重复 ACK,此时拥塞窗口会出现断崖式的下降,不能动态的适应变化的网络;设置慢启动阈值有 可能远小于网络实际的可承载能力,后期拥塞避免阶段拥塞窗口增加过慢,不能充分利用 网络带宽 2、基于时延的拥塞控制方法TCP  Vegas的主要缺点是网络中Vegas与其它算法共 存的情况下,基于丢包的拥塞控制算法会尝试填满网络中的缓冲区,导致Vegas计算的RTT 增大,进而降低拥塞窗口,使得传输速度越来越慢。
技术实现要素:
为了解决上述本领域中存在的技术问题,本发明提供了一种基于RTT的TCP网络拥 塞控制方法,该方法可以根据网络状态自适应的以不同速率增加或者减小拥塞窗口大小, 减少了基于传统算法出现断崖式变化的概率。 为了实现以上目的,本发明采用以下技术方案: 本发明专利是基于拥塞窗口变化率与RTT变化率的比值变化来判断当前网络数据 量是否达到饱和状态。当TCP连接建立之初,拥塞窗口较小,进入到网络中的流量远小于网 络的最大传输能力,数据包可以很快得到传输。随着拥塞窗口的增加,当进入到网络中的流 量小于网络的传输能力的时候,RTT变化非常小,远小于拥塞窗口的增长速率。当拥塞窗口 增加到链路饱和的时候,RTT的变化速率会与拥塞窗口的增长速率相同。此时,若在继续增 加流入网络中的流量到一定值后,RTT的变化速率会急剧增加,远大于拥塞窗口的增长速 率,这时候即发生严重网络拥塞。此方案就是根据在网络中流量达到饱和时,拥塞窗口增长 速率与RTT变化速率相等提出的。逻辑梳理如下: 步骤1:在慢启动阶段cwnd以指数函数形式增长,即每收到一个ACK就将拥塞窗口 增加1,假设现在拥塞窗口有K个SMSS(最大段大小),则慢启动阶段拥塞窗口的变化速率为 1/K,随时观察拥塞窗口的变化速率与RTT的变化速率。 步骤2:当拥塞窗口的增长速率与RTT的增长速率相等时,即认为网络已经达到了 它的最大吞吐量已经饱和了,此时记录RTT值为RTTk,进入到拥塞避免阶段。 步骤3:随时观察RTT值的变化,当RTT∈[RTTk-α,RTTk β]时,网络性能没有大的变 化,保持拥塞窗口不变;当RTT的值超过了RTTk β时,网络性能变差,此时就应该减小拥塞窗 口以减少进入网络中的数据;当RTT的值变小到RTTk-α以下时,我们就认为网络性能变好, 此时应该探测更大的窗口以充分利用网络带宽。 步骤1包括如下步骤: 步骤1.1:TCP建立之初进入慢启动阶段,每收到一个ACK即将拥塞窗口加1,此时拥 塞窗口变化速率为1/K(K为当前拥塞窗口大小) 5 CN 111614572 A 说 明 书 3/5 页 步骤1.2:记录上一次往返时间RTTk-1以及本次往返时间RTTk,并做计算 其中,dRTT表示第K个报文的往返时间相对于第K-1个报文的往返时间变化率; 步骤1.3:记录上一次拥塞窗口cwndk-1以及本次拥塞窗口cwndk,并做计算 其中,dcwnd表示第K个报文拥塞窗口相对于第K-1个报文拥塞窗口的变化率; 步骤1.4:计算γ=dcwnd/dRTT 其中,γ表示拥塞窗口变化率与往返时间变化率的比值,用来判断网络中所传输 的数据是否已经达到饱和。 步骤2包括如下步骤: 步骤2.1:随时观察γ值的变化,当γ∈[1-ε,1 ε]时,网络达到饱和,记录此时的 RTTk,进入拥塞避免阶段 步骤3包括如下步骤: 拥塞避免阶段观察RTT变化: 步骤3.1:当RTT∈[RTTk-α,RTTk β]时,我们认为网络性能没有发生变化,cwnd保持 不变; 步骤3.2:当RTT<RTTk-α时,我们认为网络性能变好,动态的进入线性增加阶段, 尝试更大窗口; 线性增加阶段即cwnd线性增加至γ∈[1-ε,1 ε],此时的拥塞窗口变化率与往返 时间变化率相等,网络进入饱和状态,其中的ε为γ可容忍的小变化范围,记录这一时刻的 RTTk,进入拥塞避免阶段; 步骤3.3:当RTT>RTTk β时,我们认为网络即将要发生拥塞,进入指数减小阶段, 避免发生拥塞超时; 指数减小阶段即cwnd以指数形式减小至γ∈[1-ε,1 ε],记录此时的RTTk,进入拥 塞避免阶段。 本发明实施的技术方案带来的有益效果至少包括: 1、现有技术提供的方法在拥塞避免阶段不能根据网络性能动态改变拥塞窗口,而 是一直线性的增加拥塞窗口直至出现丢包。在拥塞避免阶段,拥塞窗口可以根据网络状态 的变化自适应的调整大小。 2、现有技术提供的方法在慢启动阶段预估出的慢动阈值可能会与实际的网络性 能有较大差距,不能充分利用链路带宽。而本发明在慢启动阶段不需要预先设置慢启动阈 值,进入饱和状态后自动进入拥塞避免阶段。 附图说明 为了更清楚地说明本发明中的技术方案,下面将对本发明中所需要使用的附图进 行简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普 通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其它附图。 6 CN 111614572 A 说 明 书 4/5 页 图1是本发明基于拥塞窗口与RTT变化率的拥塞控制流程图。
分享到:
收藏