基于tcp通信协议的拥塞窗口的控制算法和系统的制作方法_2

文档序号:9420267阅读:来源:国知局
TT - cwnd/RTT)^BaseRTT来计算,其中N代表网络延时变化,BaseRTT为网络中没有缓存数据包时由发送端发送数据包到发送端接收到接收端的确认收到的时间即往返时延,RTT为上一个往返时延的测量值。RTT和BaseRTT的更新在每次收到ACK (Acknowledgement,确认字符)并且完成当前的RTT计算之后记录。另外,由于丢包数的判断依据丢包之后的RTT的变化,即如果超过一定的时间没有收到ACK,则代表发送的数据包丢失,因此在网络连接开始时开启N的更新计算,在网络连接重置时重新计算N的值。
[0029]需要说明的是,上述提到的ACK,指的是在数据传输中接收端发给发送端的一种传输类控制字符,表示发来的数据已确认接收无误。
[0030]S130,判断网络延时变化是否大于第一阈值且连续丢包数是否大于第二阈值。
[0031]具体地,在得到网络延时变化后判断其是否大于第一阈值,并且判断连续丢包数是否大于第二阈值。其中,根据本发明的实施例,第一阈值为5,第二阈值为位于[4,6]之间的数。也就是说,判断网络延时变化是否大于5,连续丢包数是否位于[4,6]之间。
[0032]S140,如果是,则判定网络发生拥塞,并根据测量的网络可用带宽更新慢启动阈值。
[0033]在本发明的实施例中,如果判断出网络延时变化大于第一阈值且连续丢包数大于第二阈值,就说明,当前网络的数据传输的能力比较差,数据传输成功率低,连续丢包数多,当前网络的待处理数据超过当前的网络可用带宽,当前带宽资源争夺激烈网络发生拥塞。
[0034]举例而言,可通过公式N = (cwnd/BaseRTT - cwnd/RTT)^BaseRTT来计算网络延时,用loss_out来对连续丢包数进行计数,如果N>5且loss_out位于[4,6]之间,贝Ij判断网络发生拥塞。
[0035]具体地,如果判定网络发生拥塞,则根据测量的网络可用带宽更新慢启动阈值。其中,慢启动阈值代表对当前网络可能发生拥塞的一个阈值,即代表当前拥塞网窗口的大小,最理想的状态是将该阈值设定为当前网络的带宽值,可以理解如果慢启动阈值和当前带宽相等或者接近相等时,就相当于控制网络当前等待处理的数据量和当前网络可处理数据量的能力相匹配,既可以最大程度的的利用当前网络的可用带宽,又能保证数据不发生拥塞。
[0036]更具体地,如果慢启动阈值设定为和当前网络带宽相等,那么理论上可以完全利用带宽并且保证不发生拥塞,但是由于实际情况下网络环境非常复杂,尤其是移动网络情况下用户的带宽并不恒定,所以根据当前测量的网络可用带宽更新的慢启动阈值能保证带宽的利用率,减小数据传输时的拥塞率。
[0037]可以理解,本发明的实施例中对拥塞的判断是采用连续丢包数和延时相结合的办法获取丢包的性质来判断当前网络是否发生拥塞,也就是说如果判断出丢包的性质为随机丢包,也就是说当前的丢包是因为数据传输时的通信双方采取流量控制而主动丢弃的,则认为网络并没有发生拥塞,如果判断出丢包性质为拥塞丢包,则认为网络发生了拥塞。另夕卜,为了增强判断的精确度,可以通过加入网络链路状况信息库的部分信息以排除其他因素造成的对丢包性质判断的干扰,比如路由故障等。
[0038]S150,根据慢启动阈值设置拥塞窗口的大小。
[0039]具体地,在本发明的实施例中,根据慢启动阈值,采用三次窗口增长函数来设置拥塞窗口的大小。经过测试,三次窗口增长函数算法相比于其他的拥塞控制算法具有明显的优势,可以根据当前网络带宽更加快速准确地控制拥塞窗口的大小,也就是说基本可以控制当前的拥塞窗口的大小和当前网络实际可用带宽保持一致。
[0040]根据本发明的实施例,可以理解,每经过一个RTT做一次带宽估计,当拥塞发生时,根据拥塞发生前的带宽估计值来设定拥塞窗口。
[0041]举例而言,如图2所示,通过sshresh钩子函数来实现拥塞控制算法,通过连续丢包数和网络延时判断当前网络是否是拥塞丢包(S210),如果是,则根据带宽估算值,采用三次增长函数更新拥塞窗口大小,即snd_ssthresh的值(S220),如果不是,则用当前的拥塞窗口大小对拥塞窗口进行更新,即不对当前拥塞窗口的大小进行改变,使用tcp_current_ssthresh 值更新 snd_ssthresh (S230)。
[0042]本发明实施例的基于TCP通信协议的拥塞窗口控制方法,可通过网络延时变化和丢包性质准确的判断网络是否发生拥塞,并且能够在网络发生拥塞时根据实时检测到的宽带估算值设置拥塞窗口,从而使拥塞窗口更快的收敛到实际带宽,提高了带宽资源的利用率以及基于TCP应用的运行速度,提升了用户体验。
[0043]图3是根据本发明一个具体实施例的基于TCP通信协议的拥塞窗口控制方法的流程图。
[0044]如图3所示,本发明实施例的基于TCP通信协议的拥塞窗口控制方法,包括:
[0045]S310,监测网络的实际吞吐量和连续丢包数。
[0046]S320,根据网络的实际吞吐量和期望吞吐量得到网络延时变化。
[0047]S330,判断网络延时变化是否大于第一阈值且连续丢包数是否大于第二阈值。
[0048]S340,如果是,则判定网络发生拥塞,并根据westwood拥塞控制算法估计网络可用带宽并更新慢启动阈值。
[0049]具体地,当前网络可用带宽的估算每个RTT计算一次,可以通过检测在delta时间内发送了 bk个数据包,即bk/delta来表示带宽值,且在本发明的实施例中的twestwood带宽估计算法如下,如果当前测量样本为第一个测量样本,用bw_ns_est = bk/delta ;bw_est = bk/delta来计算带宽,如果当前此样本为第k个测量样本,k>l,通过bw_ns_est (k)=(7/8)*bw_ns_est(k_l)+(1/8)*bk/delta,bw_est(k) = (7/8)*bw_est(k_l)+(1/8)*bw_ns_est (k)来计算带宽,其中bw_est表示可用带宽,bw_ns_est表示最终宽带值。另外,bk的计算依据ACK确认的报文长度而定。
[0050]进一步地,为了排除某些异常的情况,比如移动终端的某个应用程序中病毒造成的网络的丢包,会进行RTT的平滑处理。
[0051]S350,根据所慢启动阈值设置拥塞窗口的大小。
[0052]本发明实施例的基于TCP通信协议的拥塞窗口控制方法中对网络可用带宽进行估计,并且根据当前可用带宽对慢启动阈值进行更新,从而实现了当前拥塞窗口的大小与当前的网络带宽相匹配,提高了对网络带宽资源的利用率,并且降低了网络的拥塞率,提升了用户体验。
[0053]需要说明的是,本发明实施例的基于TCP通信协议的拥塞窗口控制方法可以模块的形式部署于IDC(Internet Data Center,互联网数据中心)服务器的Linux的内核中,从而对上层的相关应用无影响,使用成本低并且可以很方便的部署到其他的Linux的内核中。
[0054]为了实现上述实施例,本发明还提出了一种基于TCP通信协议的拥塞窗口控制系统,该系统包括:监测模块,用于监测网络的实际吞吐量和连续丢
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1