由于RED算法使用平均队列长度来预测拥塞程度,2000年,Feng等人又提出了比较著名的BLUE算法,它通过使用实际队列长度来反映拥塞状况,使用丢包事件和链路空闲事件来管理拥塞。该算法需要的缓冲去比RED要小,因此可以减少数据延迟,增强了传输实时数据能力,但该算法缺乏RED早期警告的机制,对拥塞的变化的反应比较慢,从而使队列长度发生较大的波动,而且公平性也较差。
同样是调整丢包概率,Lakshman等人提出SRED(Stabilized RED)算法,该算法包的丢弃概率依赖于队列的占用情况和活跃流的估计值。它是根据瞬时缓冲占用率和活跃流的数量来计算丢包率的。这种算法在某种程度上稳定了缓冲占用率,链路利用率比较高,丢包概率波动小,使得吞吐量达到很高而且队列比较稳定。但该算法需要额外的计算,加大了路由器的负担。
Lin和Morris提出了自适应虚拟队列AVQ(Adaptive Virtual Queue)算法,此算法利用简单微分方程调节虚拟队列容量,本质上也是一种早期分组丢弃技术。这是一种基于流量速率的AQM算法,该算法把输出链路的带宽利用率作为首要的目标,它在路由器上维护了一个虚拟逻辑队列。通过自适应参数调整来控制输出链路的带宽利用率,能保证系统的高吞吐量,队列长度比较稳定,队列延迟比较低。但是控制参数对算法的稳定性影响比较大。
2000年,Low等人提出了著名的随机指数标记算法—REM算法,他应用了价格机制来激励用户对拥塞作出正确的决策,合理利用网络资源,以减轻网络拥塞程度,维持网络的效率,该机制把链路价格总和作为网络拥塞度量,然后根据这个拥塞度量来随机标记用户发送的数据包,这样就把网络的拥塞信息反映到标记概率上,从而促使用户调整他们的发送速率。这种算法提高了链路的利用率,可以产生低的延迟。论文网
RED算法采用队列长度做为其标记或丢弃策略的依据,这种策略尽管简单,但在动态网络中常常是不稳定的,如果采用自适应参数调整,则可以解决这种问题。在此Chonggang Wang等人提出了一种LRED算法,测量最新的丢包比率,用它来做为队列长度的补充来自适应调整丢包概率。实验证明,这种算法可以取得较快的相应速度和较好的鲁棒性,使得LRED能够及时捕获网络的动态变化,从而达到快速的响应,在吞吐量,平均队列长度上有更好的性能。
Naixue Xiong等人在LRED的基础上提出了LRC-RED算法[12],该算法使用总的输入速率,丢包率以及队列长度这三者结合来自适应调节丢包概率从而有效地作为网络的拥塞指示,仿真实验证明该算法比LRED具有更好的相应速度和稳定性。
1.3 本章小结
本章主要介绍了网络拥塞的基本概念,拥塞控制面对的基本问题。简单介绍了拥塞控制源算法和链路算法的概念以及它们的演变历史,重点介绍的是链路算法。第二章将会介绍链路算法中几种经典的AQM算法,第三章重点介绍基于神经网络的自适应AQM算法,第四章会给出RED、REM、PI及PIDNN的仿真结果及对比分析。
2 几种经典AQM算法
2.1 引言
在路由器中增加智能预测环节,使得路由器缓存被耗尽前有计划的丢掉一部分分组,就可以提早通知发送方降低发送速率,避免可能出现的危险,这就是主动队列管理的由来。1998年,B.Braden等人提出了主动队列管理(Active Queue Management,AQM)的研究动议[13],作为端到端拥塞控制的一种技术手段,期望在减小排队时延的同时保证较高的吞吐量。这是一种主动的而非响应性的分组丢弃手段,相应的队列管理策略即“主动队列管理”成为近年来网络拥塞控制研究的一个热点。