一种用于带宽预留网络的tcp拥塞控制方法

文档序号:7995328阅读:513来源:国知局
一种用于带宽预留网络的tcp拥塞控制方法
【专利摘要】本发明涉及一种用于带宽预留网络的TCP拥塞控制方法,包括:检测网络链路中当前的可用带宽、TCP连接的往返最小时时延以及TCP连接的平均数据包大小;依据可用带宽、往返最小时延以及平均数据包大小,计算TCP滑动窗口的启动阈值T;将所述TCP滑动窗口的初始大小设置为启动阈值T,然后直接进入拥塞避免阶段;在数据包的传输过程中,一旦发生丢包或超时现象,将当前拥塞窗口的大小降为T,重新进入拥塞避免阶段。
【专利说明】—种用于带宽预留网络的TCP拥塞控制方法
【技术领域】
[0001]本发明涉及网络通信领域,特别涉及一种用于带宽预留网络的TCP拥塞控制方法。
【背景技术】
[0002]传输控制协议TCP (Transmission Control Protocol)广泛应用于网络和计算机通信等领域中,其主要特点是数据传输可靠性好。近年来,计算机网络迅猛发展,计算机网络已经不再局限于原来的有线、单一同构网络,而是呈现高度异构化的趋势。为了更高效率地利用网络带宽,提高吞吐率,近年来国内外学者对目前应用十分广泛的高速网络、无线网络等特定网络进行了相应的优化,比如针对高速网络的BIC、FAST以及CUBIC等算法;针对无线网络的Veno、Westwood等算法。而在实际网络中,有一类网络,其带宽是通过预留方式进行分配的,同时TCP连接的可用带宽大小范围是明确可知的,包括广播电视网、电信网等。目前学者并未对针对该类网络的这个特点进行改进。
[0003]分组交换网络中,当需要传送的分组数目太多时,会出现链路带宽资源有限而导致网络传输性能下降的情况,也就是拥塞。当网络中发生拥塞时,会出现数据丢失,时延增大,网络吞吐量下降等现象,严重时会导致“拥塞崩溃”现象。为了避免TCP在连接建立初期,往网络中发送大量的数据包,导致网络拥塞,传统的TCP拥塞控制算法引入了慢启动机制。所谓的慢启动机制,具体来说,当新建连接时,滑动窗口(Cwnd)初始化为I个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,cwnd就增加I个MSS大小。这样cwnd的值就随着网络往返时间(Round Trip Time, RTT)呈指数级增长。TCP使用了一个叫慢启动门限(ssthresh)的变量,当cwnd超过该值后,慢启动过程结束,进入拥塞避免阶段。对于大多数TCP实现来说,ssthresh的值是65536 (同样以字节计算)。拥塞避免的主要思想是加法增大,也就是cwnd的值不再指数级往上升,开始加法增加。此时当窗口中所有的报文段都被确认时,cwnd的大小加1,cwnd的值就随着RTT开始线性增加,这样就可以避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。当发生丢包或者超时时,对cwnd和ssthresh进行相应的调整。
[0004]参考图1,现有技术中的TCP拥塞控制方法总体上包括三个阶段:
[0005]一、慢启动(Slow Start)阶段
[0006]当一个TCP连接建立时,发送方将拥塞窗口 CWND初始化为该连接上当前使用的最大数据段长度,然后发送一个最大的数据段。如果在定时器过期之前收到该数据段的确认ACK,则将TCP的拥塞窗口增加一个数据段的字节数,从而使拥塞窗口变成两倍的最大数据段大小,然后发送两个数据段。当拥塞窗口达到η个数据段时,如果所有η个数据段都被及时确认,则拥塞窗口增加η个数据段所对应的字节数。即每一次被确认的数据段都会使拥塞窗口加倍,使得拥塞窗口呈现指数形式的增长。
[0007]二、拥塞避免(Congestion Avoidance)阶段
[0008]当拥塞窗口增长到慢启动门限值(ssthresh)时,TCP就进入拥塞避免阶段,每一次成功的传输都会使拥塞窗口线性地增长,即发送方每收到一个ACK,就将拥塞窗口增加一个数据段的大小。
[0009]三、快速重传(FastRetransmit)与快速恢复(Fast Recovery)阶段
[0010]当数据包超时时,TCP认为网络发生了拥塞。快速重传机制是指当TCP发送端收到3个或以上重复的ACK时,即认为数据包已经丢失,则重传丢失的数据包,同时将慢启动门限值设置为当前拥塞窗口的一半,而不必等到重传定时器超时。
[0011]“快速恢复”是指当收到3个重复ACK时,TCP最后进入的不是拥塞避免阶段,而是快速恢复阶段。快速重传和快速恢复算法一般同时使用。快速恢复是基于“分组守恒”的原则的,即同一时刻在网络中传输的数据分组数量是恒定的,只有当一个老的分组离开之后才允许向网络注入一个新的分组。发送端每收到一个重复的ACK,则认为已经有一个数据包离开了网络,于是将拥塞窗口加上一个数据段的字节数。具体来说快速恢复的主要步骤是:
1.当收到3个重复ACK时,把ssthresh设置为cwnd的一半,把cwnd设置为ssthresh的值加3,然后重传丢失的报文段,加3的原因是因为收到3个重复的ACK,表明有3个“老”的数据包离开了网络;2.再收到重复的ACK时,拥塞窗口增加I ;3.当收到新的数据包的ACK时,把cwnd设置为第一步中的ssthresh的值。原因是因为该ACK确认了新的数据,说明从重复ACK时的数据都已收到,该恢复过程已经结束,可以回到恢复之前的状态了,也即再次进入拥塞避免状态。
[0012]从对现有技术中的TCP拥塞控制方法的描述可以看出,该方法中所采用的慢启动机制会降低网络资源利用率,在一次传输过程中,需要经过几个RTTOxnmd trip time)的时间才能使连接充分利用可用的信道带宽。这对于带宽是预留分配的且TCP连接的可用带宽大小范围是明确可知的带宽预留网络并不十分合适,容易降低此类网络的网络资源利用率。

【发明内容】

[0013]本发明的目的在于克服现有技术中的TCP拥塞控制方法容易降低带宽预留网络的网络资源利用率的缺陷,从而提供一种能够有效提高带宽利用率的方法。
[0014]为了实现上述目的,本发明提供了一种用于带宽预留网络的TCP拥塞控制方法,包括:
[0015]步骤I)、检测网络链路中当前的可用带宽、TCP连接的往返最小时时延以及TCP连接的平均数据包大小;
[0016]步骤2)、依据步骤I)所得到的可用带宽、往返最小时延以及平均数据包大小,计算TCP滑动窗口的启动阈值T ;
[0017]步骤3)、将所述TCP滑动窗口的初始大小设置为骤2)计算得到的启动阈值T,然后直接进入拥塞避免阶段;
[0018]步骤4)、在数据包的传输过程中,一旦发生丢包或超时现象,将当前拥塞窗口的大小降为T,重新进入拥塞避免阶段。
[0019]上述技术方案中,所述滑动窗口启动阈值T的计算方法为:
[0020]T = BWE*RTTmin/PacketSize ;
[0021]其中,BWE表示链路的可用带宽,RTTmin表示链路的往返最小时延,PacketSize表示TCP连接的平均数据包大小。
[0022]上述技术方案中,所述带宽预留网络具有以下特点:网络的带宽是通过预留方式进行分配的;TCP连接的可用带宽大小范围是明确可知的。
[0023]本发明的优点在于:
[0024]1、适用于带宽预留网络,拥塞窗口大小能够快速增长至理想状态,减少慢启动带来的带宽损耗,提高了系统带宽的利用率。
[0025]2、通过对启动阈值的设置,可以满足多类业务的带宽需求。
【专利附图】

【附图说明】
[0026]图1是现有技术中的TCP的拥塞控制算法拥塞窗口变化示意图;
[0027]图2为本发明方法的流程图;
[0028]图3为本发明方法中的一种具体的拥塞窗口变化示意图。
【具体实施方式】
[0029]现结合附图对本发明作进一步的描述。
[0030]参考图2,本发明的用于带宽预留网络的TCP拥塞控制方法包括以下步骤:
[0031 ] 步骤I)、检测网络链路中当前的可用带宽、TCP连接的往返最小时时延以及TCP连接的平均数据包大小。
[0032]对于一个TCP连接,该连接中所传输的各个数据包的大小以及各个数据包的往返时延都是可以测量得到的,因此根据往返时延和数据包大小的历史数据,即可得到往返最小时延以及平均数据包大小。链路的可用带宽也可通过现有技术测量得到。
[0033]步骤2)、依据步骤I)所得到的可用带宽、往返最小时延以及平均数据包大小,计算TCP滑动窗口的启动阈值T。
[0034]所述滑动窗口启动阈值T的计算方法为:
[0035]T = BWE*RTTmin/PacketSize ;
[0036]其中,BWE表示链路的可用带宽,RTTmin表示链路的往返最小时延,PacketSize表示TCP连接的平均数据包大小。
[0037]启动阈值T的计算方法并不限于上述计算公式,在其他实施例中,也可以采用其他计算公式,如将上述可用带宽、往返最小时延以及平均数据包大小的计算结果再乘以或除以某一因子。
[0038]步骤3)、根据步骤2)计算得到的启动阈值T,将所述TCP滑动窗口的初始大小设置为T,然后直接进入拥塞避免阶段,即每收到一个ACK,就将拥塞窗口增加一个数据段的大小。
[0039]步骤4)、在数据包的传输过程中,一旦发生丢包或超时现象,将当前拥塞窗口的大小降为T,重新进入拥塞避免阶段。
[0040]将本发明的上述方法与现有技术进行比较可以发现,本发明的方法通过设置启动阈值T能够直接进入拥塞避免阶段,避开慢启动阶段,且在整个数据包的传输过程中,如图3所示,滑动窗口的大小等于或在阈值T之上,这有助于提高网络的资源利用率。
[0041]最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
【权利要求】
1.一种用于带宽预留网络的TCP拥塞控制方法,包括: 步骤I)、检测网络链路中当前的可用带宽、TCP连接的往返最小时时延以及TCP连接的平均数据包大小; 步骤2)、依据步骤I)所得到的可用带宽、往返最小时延以及平均数据包大小,计算TCP滑动窗口的启动阈值T ; 步骤3)、将所述TCP滑动窗口的初始大小设置为骤2)计算得到的启动阈值T,然后直接进入拥塞避免阶段; 步骤4)、在数据包的传输过程中,一旦发生丢包或超时现象,将当前拥塞窗口的大小降为T,重新进入拥塞避免阶段。
2.根据权利要求1所述的用于带宽预留网络的TCP拥塞控制方法,其特征在于, 所述滑动窗口启动阈值T的计算方法为:
T = BWE*RTTmin/PacketSize ; 其中,BWE表示链路的可用带宽,RTTmin表示链路的往返最小时延,PacketSize表示TCP连接的平均数据包大小。
3.根据权利要求1所述的带宽预留网络的TCP拥塞控制算法,其特征在于,所述带宽预留网络具有以下特点:网络 的带宽是通过预留方式进行分配的;TCP连接的可用带宽大小范围是明确可知的。
【文档编号】H04L12/841GK103929370SQ201310011894
【公开日】2014年7月16日 申请日期:2013年1月11日 优先权日:2013年1月11日
【发明者】刘磊, 王献冠, 郑艳伟, 刘孝圣 申请人:中国科学院声学研究所, 北京海力汇通数字系统技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1