一种基于自适应参数的TCP拥塞控制算法的制作方法

文档序号:12949131阅读:838来源:国知局
一种基于自适应参数的TCP拥塞控制算法的制作方法与工艺

本发明涉及计算机网络传输控制协议技术领域,尤其涉及一种基于自适应参数的tcp拥塞控制算法。



背景技术:

据统计,若重传事件是发生在web服务器中,其中超时重传占到了70%,在普通的视频浏览网站中,超时重传也占到了一半左右。在具体的数据传输过程中,网络拥塞会严重影响数据传输的性能,对于超时重传的处理策略很大程度上决定了网络的传输性能。

现有技术中,已经有多种技术方案来进行网络的拥塞控制,如申请号为:cn201310002460.3公开的一种基于吞吐量变化率ecn机制的tcp拥塞控制方法,由于这个方法主要操作是在路由器端,需要在交换机上进行ecn的标记,这样需要在交换机端进行修改和操作,在具体的实施中比较复杂,不易控制。再如申请号为:cn03155730.9的专利根据确认包ack的相对单向延迟变化趋势来判断链路的拥塞状况,进而区分丢包是因为链路拥塞引起的还是因为无线出错导致,自适应地根据不同的丢包原因采取不同的恢复机制;但是这种方式需要计算相对单向延迟和估测相对单向延迟的变化趋势,在具体的实施过程中,由于网络传输的rtt都是毫秒级别的,计算的精度不易控制,容易造成误判,可能会影响实际效果。



技术实现要素:

本发明要解决的技术问题在于针对现有技术中超时重传算法中相关参数的调整策略相对固定,无法结合网络当前的实际情况进行拥塞控制的问题,并且,在实际情况中,当网络拥塞现象出现的时候,通常不是一个发送端的数据发生超时或者丢失的情况,可能是发生在多个发送端,这时根据现有的拥塞控制策略会将这些发送窗口的值降低到一个较低的水平,并且开始执行慢启动算法;这些发送端的拥塞窗口从当前的较低水平增加到网络的处理能力需要一定的时间,在这一比较长的时间之内,网络资源没有被充分利用,造成浪费。基于上述的问题,提供一种基于自适应参数的tcp拥塞控制算法。

本发明解决其技术问题所采用的技术方案是:

本发明提供一种基于自适应参数的tcp拥塞控制算法,包括以下步骤:

网络数据传输过程中,随着拥塞窗口的数量增加,网络由慢开始阶段进入拥塞避免阶段;

如果在拥塞避免阶段中发生超时重传,则判断网络发生了拥塞,开始执行基于自适应参数的tcp拥塞控制算法,通过设置自适应参数来动态地控制拥塞窗口和慢开始门限值的大小;

通过检测拥塞窗口是否处于阈值区间内,判断网络是否从拥塞中恢复过来,如果没有恢复,则继续执行基于自适应参数的tcp拥塞控制算法,直到网络从拥塞中恢复。

进一步地,本发明的算法中设置自适应参数的方法为:

设置自适应参数μ=2-x;其中,在发生超时重传时,拥塞窗口的值大于当前的慢开始门限值的值,引入变量x=ssthresh/cwnd,cwnd为拥塞窗口的值,ssthresh为慢开始门限值的值。

进一步地,本发明的通过设置自适应参数来动态地控制拥塞窗口和慢开始门限值的大小的方法为:

若变量x=ssthresh/cwnd小于等于0.5,说明拥塞窗口远大于拥塞避免的慢开始门限值,即此时网络环境中有较长的时间没有发生拥塞;

则对拥塞窗口cwnd乘以自适应参数μ进行调整,通过充分利用网络的带宽和避免网络的抖动,使网络从拥塞中恢复。

进一步地,本发明的通过设置自适应参数来动态地控制拥塞窗口和慢开始门限值的大小的方法为:

若变量x=ssthresh/cwnd大于设定的阈值时,说明拥塞窗口和慢开始门限值的数值相近,即此时网络在不久前发生过拥塞;

将慢开始门限值设置为:new_ssthresh=μ×cwnd;

将拥塞窗口设置为:new_cwnd=μ×cwnd/2。

本发明产生的有益效果是:本发明的基于自适应参数的tcp拥塞控制算法,通过自适应参数动态地来调整拥塞窗口和慢开始门限值,使网络摆脱拥塞,该算法只对发送方的tcp协议进行少量的修改,而不改变中间节点的tcp协议,并且修改只涉及到传输层,与其它层协议无关;解决了现有的超时重传算法中相关参数的调整策略相对固定,无法结合网络当前的实际情况进行拥塞控制的问题;该算法使得网络能够结合当前的实际情况,自适应地调整拥塞窗口值和慢开始门限值,使得网络能够更快地摆脱拥塞,同时提高网络的利用率,避免网络剧烈抖动。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明实施例的算法流程图;

图2是本发明实施例的基于自适应参数的tcp拥塞控制方法流程图;

图3是本发明实施例的改进前后超时重传拥塞窗口变化图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明实施例的基于自适应参数的tcp拥塞控制算法,包括以下步骤:

网络数据传输过程中,随着拥塞窗口的数量增加,网络由慢开始阶段进入拥塞避免阶段;

如果在拥塞避免阶段中发生超时重传,则判断网络发生了拥塞,开始执行基于自适应参数的tcp拥塞控制算法,通过设置自适应参数来动态地控制拥塞窗口和慢开始门限值的大小;

通过检测拥塞窗口是否处于阈值区间内(阈值一般取值为ssthresh=16),判断网络是否从拥塞中恢复过来,如果没有恢复,则继续执行基于自适应参数的tcp拥塞控制算法,直到网络从拥塞中恢复。

该算法中设置自适应参数的方法为:

设置自适应参数μ=2-x;其中,在发生超时重传时,拥塞窗口的值大于当前的慢开始门限值的值,引入变量x=ssthresh/cwnd,cwnd为拥塞窗口的值,ssthresh为慢开始门限值的值。

通过设置自适应参数来动态地控制拥塞窗口和慢开始门限值的大小的方法为:

若变量x=ssthresh/cwnd小于等于0.5,说明拥塞窗口远大于拥塞避免的慢开始门限值,即此时网络环境中有较长的时间没有发生拥塞;

则对拥塞窗口cwnd乘以自适应参数μ进行调整,通过充分利用网络的带宽和避免网络的抖动,使网络从拥塞中恢复。

若变量x=ssthresh/cwnd大于设定的阈值时,说明拥塞窗口和慢开始门限值的数值相近,即此时网络在不久前发生过拥塞;

将慢开始门限值设置为:new_ssthresh=μ×cwnd;

将拥塞窗口设置为:new_cwnd=μ×cwnd/2。

如图2所示,在本发明的另一个具体实施例中:

为了解决现有的超时重传算法中相关参数的调整策略相对固定,无法结合网络当前的实际情况进行拥塞控制的问题。在实际情况中,当网络拥塞现象出现的时候,通常不是一个发送端的数据发生超时或者丢失的情况,可能是发生在多个发送端,这时根据现有的拥塞控制策略会将这些发送窗口的值降低到一个较低的水平,并且开始执行慢启动算法。这些发送端的拥塞窗口从当前的较低水平增加到网络的处理能力需要一定的时间,在这一比较长的时间之内,网络资源没有被充分利用,造成浪费。基于上述的问题,提供一种基于自适应参数的tcp拥塞控制方法。

数据传输过程中,网络从慢开始阶段开始执行,在这个阶段,网络中的拥塞窗口是按照指数形式开始增加的。当拥塞窗口的值超过满开始门限值时,网络开始执行拥塞避免算法,拥塞窗口的增长速率减缓。在拥塞避免阶段,网络由于资源有限,会发生超时重传现象,这是会判定网络发生了拥塞,开始执行本文提出的基于自适应参数的tcp拥塞控制算法。

提出的算法的主要是当超时重传发生时,通过引入的自适应参数μ=2-x来实现对拥塞窗口的调整。其中x=ssthresh/cwnd,可以得知,μ值的变化是由慢开始门限值ssthresh和拥塞窗口值cwnd动态决定的。在tcp的拥塞控制过程中,慢开始门限值代表了网络处理数据的能力,拥塞窗口值代表着发送端可以发送数据的能力,这两个参数共同决定了网络性能。因而,通过慢开始门限值和拥塞窗口值来共同的调整网络发送数据的能力,这种策略实际是具有自适应性的。基于自适应参数的tcp拥塞控制方法主要是在超时重传发生时,将拥塞窗口和慢开始门限值分别按照乘以相关的参数μ进行改变。如果经过如上的一次改变还不能使得网络从拥塞中恢复过来,网络将会再次检测到拥塞,再次执行本文的策略,如此重复,直至网络从拥塞中恢复出来。

首先,按照本文提出的策略,引入相应的自适应参数μ,对tcp拥塞控制协议进行修改,主要是在网络发生超时重传时,对于慢开始门限值ssthresh和拥塞窗口cwnd的调整策略按照相应的μ值进行改变,并且编译通过。

其次,网络开始进行数据传输,这时网络会进入慢开始阶段;在这个阶段中,网络的拥塞窗口值小于慢开始门限值,拥塞窗口按照指数形式就行增加。当拥塞窗口的值增长到超过慢开始门限值时,数据传输达到了网络的处理能力,拥塞窗口开始按照线性形式增长,此时网络进入了拥塞避免阶段。

然后,当网络中处理的数据量增加时,由于网络的处理能力有限,将会发生丢包现象,这时需要对丢弃的数据包就行重传。超时重传策略就是按照本文提出的基于自适应参数的tcp拥塞控制方法。

利用引入的自适应参数μ来动态地控制拥塞窗口cwnd和慢开始门限值ssthresh的大小,一方面使cwnd能够处于理想的区间,另一方面使网络能够用尽量小的代价从拥塞中恢复过来。如果当前cwnd的改变不能够使网络从拥塞中恢复过来,网络中将会再次收到拥塞的信号,此时,网络将会对当前的cwnd再一次执行自适应参数的tcp拥塞控制算法,使得网络从拥塞中摆脱,自适应参数的tcp拥塞控制算法简要伪代码如下。

在超时重传发生的时候,cwnd的值总是大于当前ssthresh的值,即cwnd>ssthre,sh引入变量x=ssthresh/cwnd。对x进行分析可以得知,当x较小时,说明此时拥塞窗口cwnd远大于拥塞避免的门限值ssthresh,即此时的网络环境中有较长的时间没有发生拥塞,网络环境比较良好。假如这时发生超时重传的现象,可以考虑对cwnd进行小幅度的调整看网络是否能从拥塞中恢复过来,如果可以则说明其能够充分利用网络带宽和避免网络的抖动。当x较大时,说明cwnd与ssthresh的值比较接近,可以得知网络在不久之前刚刚发生了拥塞,此时需要对cwnd进行较大幅度的改变才能使网络从拥塞中摆脱出来。考虑到在tcp拥塞控制过程中的慢启动阶段,拥塞窗口cwnd是通过aimd(和式增加,积式减少)算法以指数形式增长,引入公式μ=2-x,即可实现对拥塞窗口的调整。

具体分析证明如下:

已有的条件x=ssthresh/cwnd,可以得知,0<x<1,此时有μ=2-x,对μ进行求导可以得到。

μ'=-2-xln20<x<1

μ″=(2-xln2)20<x<1

由μ'<0,μ″>0可以得知,μ在区间(0,1)上是减函数,而且比较光滑,恰好能使得网络从拥塞中平滑地恢复。

通过上述的伪代码可知,本文提出的改进算法主要的操作是在超时发生后,将门限值ssthresh设置为μ×cwnd,拥塞窗口的值设定为μ×cwnd/2。通过这种动态调整策略,让算法能自适应地结合当前网络的实际情况从拥塞中恢复过来,改进前后超时重传算法拥塞窗口变化如图3所示。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1