一种控制网络拥塞的方法
【技术领域】
[0001]本发明属于网络通信技术领域,涉及一种网络拥塞的解决方法,特别是涉及一种控制网络拥塞的方法。
【背景技术】
[0002]随着网络通信技术的不断发展,人们对互联网的带宽需求越来越高,尤其是移动通信技术的发展,使人们随时随地的沟通,同时也对传统的基于固定网络的通信模式提出了巨大的挑战。由于移动设备具有更大的不确定性,如何解决移动设备的互联、互通问题,保障通信的高效性是目前面临的重大问题。
[0003]对于网络通信来说,合理的拥塞控制机制,对现有网络的流畅动作提供了坚实的保障。拥塞控制的目的是有效防止和消除网络出现的拥塞,确保网络服务能力,也是其它网络应用的基础。
[0004]目前网络拥塞控制算法中TCP协议、路由器链路算法AQM (Active QueueManagement,主动队列管理)是应用比较广泛的两种,但这两种技术均存在流量增长不平稳,且收敛到平衡态的时间较长的问题。这两种协议均应用于有线网络,在无线网络的环境下,由于存在许多网络传输的丢包,同时受到TCP协议慢启动的影响,导致网络实际可用速率很低,已经很难适应多媒体数据对带宽的要求。如何解决这个问题,提高用户的使用体验,是必须要解决的问题。
【发明内容】
[0005]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种控制网络拥塞的方法,用于解决在网络带宽波动的情况下,网络的有效带宽的利用率低,网络应用程序的网络通信效率、可用性和实时性差的问题。
[0006]为实现上述目的及其他相关目的,本发明提供一种控制网络拥塞的方法,所述控制网络拥塞的方法包括:根据网络数据包的丢包率判断当前网络数据包的丢包性质为拥塞丢包还是非拥塞丢包;所述拥塞丢包是因为发送数据包量超过了网络链路能够缓存的量导致的丢包;所述非拥塞丢包是由于信号波动或者干扰引起的丢包;若为非拥塞丢包,则继续执行TCP慢启动过程;若为拥塞丢包,则退出TCP慢启动过程,并记录当前发送窗口值m_dCWndSize,然后进入拥塞避免阶段。
[0007]可选地,所述控制网络拥塞的方法还包括在拥塞避免阶段实行的拥塞控制策略,所述拥塞控制策略包括:将最大拥塞窗口值m_iSSthreSh设置为当前发送窗口值m_dCffndSize 的 90% ;利用公式 m_iBestSsthresh = m_issthresh-2Xm_dCffndSize/ (10+m_dCffndSize)计算获得最佳拥塞窗口值m_iBestSsthresh ;控制当前发送窗口值在所述最大拥塞窗口值和所述最佳拥塞窗口值之间波动,具体包括:判断当前发送窗口值是否小于所述最佳拥塞窗口值减2,若是则将当前发送窗口值设置为所述最佳拥塞窗口值减2 ;否则继续判断当前发送窗口值是否大于所述最大拥塞窗口值,若是则下调当前发送窗口值;否则继续判断当前发送窗口值是否小于或等于最大拥塞窗口值且大于或等于最佳拥塞窗口值,并且当前发送窗口值呈增加趋势,若是则增加当前发送窗口值;否则继续判断当前发送窗口值是否小于或等于最大拥塞窗口值且大于或等于最佳拥塞窗口值,并且当前发送窗口值呈减小趋势,若是则减小当前发送窗口值;否则继续判断当前发送窗口值是否大于所述最大拥塞窗口值且呈增长趋势,若是则将当前发送窗口值的趋势调整为减小趋势;否则继续判断当前发送窗口值是否小于所述最佳拥塞窗口值且呈减小趋势,若是则将当前发送窗口值的趋势调整为增加趋势。
[0008]可选地,所述控制网络拥塞的方法还包括动态调整最大拥塞窗口值方法,所述动态调整最大拥塞窗口值方法包括:根据网络数据包的丢包率判断当前网络数据包的丢包性质是轻微拥塞丢包还是非拥塞丢包;所述轻微拥塞丢包的影响程度介于所述拥塞丢包和非拥塞丢包之间;若是轻微拥塞丢包,则利用公式m_issthresh = m_issthresh-(lossNumXm_issthresh)/(100+m_issthresh)下调所述最大拥塞窗口值,其中lossNum为所述网络数据包的丢包数;若是非拥塞丢包,贝U利用公式m_issthresh = m_issthresh+10/m_issthresh上调所述最大拥塞窗口值。
[0009]可选地,所述控制网络拥塞的方法还包括重传机制改进方法,所述重传机制改进方法包括发送端重传控制方法,所述发送端重传控制方法包括:定期检查接收到的ACK包序号;判断是否有数据包超过第一预设时间段没有收到对应的ACK包,若存在则重发所述未收到的ACK包对应的重传数据包,否则不动作;判断是否接收到NAK包,若是则继续判断是否处于拥塞状态,若处于拥塞状态,则将丢失的数据包依次缓存入重发等待队列;若不处于拥塞状态,则依次重发丢失的数据包;在拥塞状态下,接收到接收端发来的ACK包后,如果重发等待队列中有缓存的数据包,则依次重新发送这些缓存的数据包。
[0010]可选地,所述重传机制改进方法还包括接收端重传控制方法,所述接收端重传控制方法包括:检查接收到的数据包的序列号是否连续,若不连续则将丢失的数据包的序列号保存进接收丢失队列中,同时发送重传请求给发送端;继续判断当前接收到的数据包的序列号是否大于当前已经接收的序列号,如果大于当前已经接收的序列号,则将当前已经接收的序列号置为所述当前接收到的数据包的序列号;如果当前接收到的数据包的序列号小于或等于所述当前已经接收的序列号,则从所述接收丢失队列中删除所述当前接收到的数据包的序列号,并立即回复针对所述当前接收到的数据包的ACK包。
[0011]可选地,所述拥塞丢包、轻微拥塞丢包和非拥塞丢包的一种具体界定方式为:在2倍的网络往返时间内,当每100个数据包中发生丢包的总数超过或者等于15个时,认定为网络发生拥塞,处于拥塞状态的丢包为拥塞丢包;在不满足拥塞丢包的前提下,当每10个数据包中有超过或者等于3个数据包丢包时,认定为网络发生轻微拥塞;不满足所述拥塞丢包和轻微拥塞丢包情况的丢包即为非拥塞丢包。
[0012]如上所述,本发明所述的控制网络拥塞的方法,具有以下有益效果:本发明提高了网络传输的效率和网络应用程序的响应速度,提高了网络带宽的利用率,提供了更好的网络性能沐发明可以将网络拥塞控制在可接受的地步,并挖掘网络的传输潜力,达到网络传输效率的最优化。
【附图说明】
[0013]图1为本发明实施例所述的控制网络拥塞的方法的流程示意图。
[0014]图2为本发明实施例所述的拥塞控制策略的流程示意图。
[0015]图3为本发明实施例所述的控制当前发送窗口值在所述最大拥塞窗口值和所述最佳拥塞窗口值之间波动的流程示意图。
[0016]图4为本发明实施例所述的动态调整最大拥塞窗口值方法的流程示意图。
[0017]图5为本发明实施例所述的发送端重传控制方法的流程示意图。
[0018]图6为本发明实施例所述的接收端重传控制方法的流程示意图。
[0019]元件标号说明
[0020]S11 ?S13,S21 ?S23 步骤
[0021]S31 ?S36,S41 ?S43 步骤
[0022]S51 ?S53,S61 ?S63 步骤
【具体实施方式】
[0023]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0024]请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0025]下面结合实施例和附图对本发明进行详细说明。
[0026]实施例
[0027]本实施例提供一种控制网络拥塞的方法,如图1所示,所述控制网络拥塞的方法包括:
[0028]S11,根据网络数据包的丢包率判断当前网络数据包的丢包性质为拥塞丢包还是非拥塞丢包。所述拥塞丢包是因为发送数据包量超过了网络链路能够缓存的量导致的丢包;所述非拥塞丢包是由于信号波动或者干扰引起的丢包。所述拥塞丢包、非拥塞丢包和后续的轻微拥塞丢包的界定可以根据实际应用情况进行设置。本实施例所述的拥塞丢包、非拥塞丢包和轻微拥塞丢包是三种不同程度的丢包,其中拥塞丢包的影响程度最严重,轻微拥塞丢包次之,非拥塞丢包的影响最轻。本实施例列举一种界定方法,如:在2RTT(RoundTrip Time,网络往返时间)内,即2倍的网络往返时间内