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

文档序号:9420267阅读:来源:国知局
包数;网络延时变化获取模块,用于根据网络的实际吞吐量和期望吞吐量得到网络延时变化;判断模块,用于判断网络延时变化是否大于第一阈值且连续丢包数是否大于第二阈值,并在网络延时变化大于第一阈值且连续丢包数大于第二阈值时,判定网络发生拥塞;控制模块,用于根据测量的网络可用带宽更新慢启动阈值,并根据所述慢启动阈值设置拥塞窗口的大小。
[0055]图4是根据本发明一个实施例的基于TCP通信协议的拥塞窗口控制系统的结构框图。需要说明的是,本发明实施例的基于TCP通信协议的拥塞窗口控制系统适用于使用基于TCP通信协议的移动网络的移动终端上,该移动终端可以是手机、平板电脑、个人数字助理等硬件设备。
[0056]如图4所示,该基于TCP通信协议的拥塞窗口控制系统,包括:
[0057]监测模块410,用于监测网络的实际吞吐量和连续丢包数。
[0058]其中,网络的实际吞吐量指的是对网络单位时间内实际成功的传达数据的数量,可以以比特、字节、分组等位单位进行测量。而丢包是在网络中数据传输的时候出现数据丢失的现象,因为网络中数据是以数据包的形式传输的,所以可以用丢包来表示网络中数据传输时数据的丢失,例如,可以用loss_0ut对丢包数进行计数。另外,检测网络的连续丢包数是为了排除单个数据包丢失的偶然性,提高判断的精确度。
[0059]具体地,监测模块410对网络的实际吞吐量和连续丢包数的检测是为了反映当前网络数据传输的性能,也就是说,当前网络的实际吞吐量越大,连续丢包数越少,就代表当前网络的数据传输性能越好,当前的网络比较稳定。
[0060]进一步地,在本发明的实施例中,监测模块410对网络的实际吞吐量和连续丢包数是为了接下来判断网络是否发生拥塞。
[0061]网络延时变化获取模块420,用于根据网络的实际吞吐量和期望吞吐量得到网络延时变化。
[0062]具体地,网络的延时变化可以通过网络延时变化获取模块420根据网络中单位时间内实际成功的传达数据包的数量与期望的网络中单位时间内成功传达的数据包数量的对比得到,即网络的实际吞吐量与期望吞吐量差距越大,网络延时越大,当前网络的数据传输能力越差。其中,期望吞吐量可以是在网络中没有缓存数据包且环境较稳定时,单位时间内实际成功的传达数据包的数量。
[0063]进一步地,由于网络吞吐量和时延有着密切的关系,所以也可以通过网络时延来计算网络延时变化,举例说明,根据本发明的实施例,网络延时变化可以通过公式N=(cwnd/BaseRTT - cwnd/RTT)^BaseRTT来计算,其中N代表网络延时变化,BaseRTT为网络中没有缓存数据包时由发送端发送数据包到发送端接收到接收端的确认收到的时间即往返时延,RTT为上一个往返时延的测量值。RTT和BaseRTT的更新在每次收到ACK (Acknowledgement,确认字符)并且完成当前的RTT计算之后记录。另外,由于丢包数的判断依据丢包之后的RTT的变化,即如果超过一定的时间没有收到ACK,则代表发送的数据包丢失,因此在网络连接开始时开启N的更新计算,在网络连接重置时重新计算N的值。
[0064]需要说明的是,上述提到的ACK,指的是在数据传输中接收端发给发送端的一种传输类控制字符,表示发来的数据已确认接收无误。
[0065]判断模块430,用于判断网络延时变化是否大于第一阈值且连续丢包数是否大于第二阈值,并在网络延时变化大于第一阈值且连续丢包数大于第二阈值时,判定网络发生拥塞。
[0066]具体地,判断模块430在得到网络延时变化后判断其是否大于第一阈值,并且判断连续丢包数是否大于第二阈值。其中,根据本发明的实施例,第一阈值为5,第二阈值为位于[4,6]之间的数。也就是说,如果判断模块430判断网络延时变化大于5,连续丢包数位于[4,6]之间,判断模块430则判定当前网络发生拥塞。
[0067]控制模块440,用于根据测量的网络可用带宽更新慢启动阈值,并根据慢启动阈值设置拥塞窗口的大小。根据本发明的实施例,可通过公式N = (cwnd/BaseRTT - cwnd/RTT)^BaseRTT来计算网络延时,用loss_out来对连续丢包数进行计数,如果N>5且loss_out位于[4,6]之间,则判断模块430判断网络发生拥塞。可以理解,当前网络上的数据传输延时大,且数据连续丢失,当前带宽资源争夺激烈,网络发生拥塞。
[0068]具体地,如果判断模块430判定网络发生拥塞,控制模块440则根据测量的网络可用带宽更新慢启动阈值。其中,慢启动阈值代表对当前网络可能发生拥塞的一个阈值,即代表当前拥塞网窗口的大小,最理想的状态是将该阈值设定为当前网络的带宽值。
[0069]更具体地,如果控制模块440将慢启动阈值设定为和当前网络带宽相等,那么理论上可以完全利用带宽并且保证不发生拥塞,但是由于实际情况下网络环境非常复杂,尤其是移动网络情况下用户的带宽并不恒定,所以根据当前测量的网络可用带宽更新的慢启动阈值能保证带宽的利用率,减小数据传输时的拥塞率。
[0070]可以理解,本发明的实施例中判断模块430对拥塞的判断是采用连续丢包数和延时相结合的办法获取丢包的性质来判断当前网络是否发生拥塞,也就是说如果判断出丢包的性质为随机丢包,则判断模块430判定网络并没有发生拥塞,否则则认为网络发生了拥塞。另外,为了增强判断的精确度,可以通过加入网络链路状况信息库的部分信息以排除其他因素造成的对丢包性质判断的干扰。
[0071]进一步地,在本发明的实施例中,控制模块440根据慢启动阈值,采用三次窗口增长函数来设置拥塞窗口的大小。经过测试,三次窗口增长函数算法相比于其他的拥塞控制算法具有明显的优势,可以根据当前网络带宽更加快速准确地控制拥塞窗口的大小。
[0072]根据本发明的实施例,可以理解,每经过一个RTT做一次带宽估计,当拥塞发生时,根据拥塞发生前的带宽估计值来设定拥塞窗口。
[0073]本发明实施例的基于TCP通信协议的拥塞窗口控制系统,通过判断模块判断由监测模块和网络延时变化获取模块得到的丢包数和延时变化准确判断网络是否发生拥塞,并且能够在网络发生拥塞时通过控制模块根据实时监测到的带宽估算值设置拥塞窗口,从而使拥塞窗口更快的收敛到实际带宽,提高了带宽资源的利用率以及基于TCP应用的运行速度,提升了用户体验。
[0074]根据本发明的实施例,控制模块440还用于在根据测量的网络可用带宽更新慢启动阈值之前,根据westwood拥塞控制算法估计网络可用带宽。
[0075]具体地,控制模块440对当前网络可用带宽的估算每个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) + (l/8)*bw_ns_est (k)
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1