法律状态公告日
法律状态信息
法律状态
2022-07-22
公开
发明专利申请公布
技术领域
本发明涉及网络拥塞控制技术,特别是一种增强RED稳定性的主动式队列管理算法。
背景技术
拥塞问题是通信网络中经常遇到的问题。路由器可通过执行有效的队列管理和调度,缓解网络拥塞。其中,队列管理是指通过一定的丢包策略达到控制队列长度的目的。根据数据包丢弃策略的不同,目前队列管理机制主要分为被动队列管理PQM(Passive QueueManagement)和主动队列管理AQM(Active Queue Management)两大类。PQM中的“尾丢弃”策略得到了广泛的应用,但是存在三个严重缺陷:一是缓冲区在相当长的时间内处于满队列状态;二是在满队列状态下,会出现大量连续丢包现象,即全局同步;三是在某些情况下,个别数据流在队列中处于有利地位,而其他数据流的包无法进入队列,即死锁。这些缺点都会影响网络的服务质量,如队列长度不稳定、吞吐量下降、链路利用率降低等。为了解决上述问题,IETF建议使用主动队列管理AQM。它是一种预防性丢包机制,根据队列长度的变化在队列未满时就提前丢包,使发送节点在链路缓存溢出前做出反应,避免拥塞发生。
自AQM机制提出以来,随机早期检测算法(RED)因其结构简单,成为主动队列管理策略中最具有代表性的算法。基于RED的改进算法有:自适应RED算法(ARED)、抛物线RED、动态RED算法(DRED)、稳定RED、流RED、平衡RED。但诸多的实验表明,RED也存在一些问题,比如:在给定流量条件下队列长度稳态误差大,带来很大的时延抖动;不同流量条件下平均队列长度变化较大,有可能造成大量分组丢失;参数难以调节、鲁棒性差等。
发明内容
为解决现有技术存在的上述问题,本发明要设计一种可有效增强队列稳定性,降低丢包率、使算法在队列长度最小阈值与最大阈值之间的丢包概率的变化更加平滑的增强RED稳定性的主动式队列管理算法——升岭函数RED(Ascending Ridge function RED,简称ARRED)。
为了实现上述目的,本发明的技术方案如下:一种增强RED稳定性的主动式队列管理算法,包括以下步骤:
Step1:计算平均队列长度
根据网络拓扑结构,当有分组报文到达队列时,首先判断队列是否为空,如果队列为空,则根据上一时刻的平均队列长度和当前时刻的平均队列长度,按照下式计算得出当前的平均队列长度:
avgQ=(1-ω
其中,avgQ为平均队列长度,ω
如果队列不为空,则分别采用下面两个式子计算平均队列长度:
avgQ=(1-ω
其中,m为队列为空时发送的报文数量,q
Step2:分析包丢弃概率与平均队列长度关系
假设N个传输控制协议数据流即TCP流均等地共享一条带宽为L的链路,并且包丢弃概率为p。p和N具有以下关系:
式中,α是一个常数,MSS为最大报文段长度,RTT为往返时延。因此得出包丢弃概率与平均队列长度呈非线性关系。
Step3:根据平均队列长度选择包丢弃概率函数
判断Step1中计算得出的平均队列长度的值是否在最小阈值和最大阈值之间,如果在这个阈值范围内,将偏大型升岭函数与RED分组丢弃概率函数结合,偏大型升岭函数公式如下式所示:
上式中a,b分别为函数参数,将上式结合RED分组丢弃概率函数,令x为平均队列长度avgQ,a为阈值下限min
并按照这个概率丢弃数据包;如果不在这个阈值范围内,进入Step4。
Step4:判断报文是否进入缓冲区
判断平均队列长度的值是否小于最大阈值,如果小于最大阈值,那么报文进入缓冲区;否则进入到Step5。
Step5:根据平均队列长度选择包丢弃概率函数
为了使平均队列长度avgQ在超过最大阈值max
并按照这个概率丢弃数据包;否则,将所有的分组报文全部丢弃。
进一步地,所述自定义阈值点为(1.1-2.0)max
进一步地,所述自定义阈值点为1.5max
与现有技术相比,本发明具有以下有益效果:
1、本发明针对RED算法在平均队列长度超过最大阈值时,丢包概率变化幅度的突变导致队列抖动的问题,在最大阈值后设置一个新的参数,可有效增强队列稳定性,同时降低丢包概率。
2、本发明利用偏大型升岭函数替代原来线性增加的分组丢弃概率计算函数,算法在队列长度最小阈值与最大阈值之间的丢包概率的变化更加平滑。
3、综上,本发明一种增强RED稳定性的主动式队列管理算法具有良好的应用前景。
附图说明
图1是网络拓扑模型。
图2是本发明的流程图。
图3是本发明算法和RED、PRED算法平均队列长度变化对比图。
图4是本发明算法和RED、PRED算法链路带宽利用率对比图。
图5是PRED算法仿真图。
图6是RED算法仿真图。
图7是本发明算法仿真图。
具体实施方式
下面结合附图对本发明进行进一步说明。图1所示为网络拓扑结构模型,采用常见的哑铃状结构,由n个发送端、n个接收端和1条瓶颈链路组成。通过改变n的取值产生不同级别的流量负载,从而产生不同级别的拥塞链路。采用的TCP流输入模型为FTP模型,各节点之间都是以全双工的链路相连接。图2为增强RED稳定性的主动式队列管理算法的流程图。下面结合图1与图2对本发明进行进一步说明,可得到算法的具体步骤如下:
Step1:根据图2可得,当有分组报文到达队列时,首先判断队列是否为空,如果队列为空,则采用avgQ=(1-ω
m=(time-q_time)/s,avgQ=(1-ω
Step2:判断Step1中计算得出的平均队列长度的值是否在最小阈值和最大阈值之间,如果在这个阈值范围内,按照
Step3:判断平均队列长度的值如果小于最大阈值的值,那么报文进入缓冲区;否则进入到Step4。
Step4:判断自定义阈值点的值如果小于平均队列长度,按照
图3为本发明与RED、PRED算法的平均队列长度对比图。从图中可以看出在TCP连接数变化的情况下,本发明算法仍然维持了平稳的队列长度,当TCP连接数较少时,本发明算法允许平均队列大小以较快的速度增长,随着TCP连接数的增加,本发明算法比RED、PRED更好的控制平均队列大小,即队列大小可以快速地收敛到稳定值。这主要是由于本发明算法中的升岭型分组丢弃概率函数使得当平均队列长度较小时,允许更多的包突发,当平均队列长度变大时,允许丢弃更多的包,因此表明本发明的有效性。
图4为本发明算法与RED、PRED算法的链路带宽利用率对比图。从图中可以看出,本发明算法的吞吐量始终占有优势,随着TCP连接数的增加,本发明算法的吞吐量迅速收敛到链路带宽,与之相比,PRED算法的吞吐量整体略低,RED算法的吞吐量很低并且不稳定,随着TCP连接数的增加出现了下降,因此表明本发明具有提升链路利用率的作用。
图5-7分别为PRED、RED以及本发明算法的瞬时队列长度和平均队列长度的仿真图。由上述图中对比可以得出,本发明算法无论是瞬时队列长度还是平均队列长度的波动始终要比RED、PRED算法明显收敛,可见本发明算法对于振荡有明显的抑制作用,这是由于本发明算法采用的非线性丢包功能使得振荡被有效地抑制了,并且本发明算法的瞬时时队列长度没有等于0的情况,由此说明瓶颈链路带宽得到了更充分利用。
机译: 用于实现可变Botneteck速率的主动队列管理增强的系统和方法
机译: 用于实现可变Botneteck速率的主动队列管理增强的系统和方法
机译: 用于实现可变瓶颈率的主动队列管理增强的系统和方法