RED算法的拥塞指示没有考虑链路上复用的活动连接数对算法性能产生的影响。而拥塞指示的发送速度是由最大丢包/标记概率来体现的,为了解决这个问题,Xu等人提出了一种在线改变最大丢包际记概率参数的自适应RED算法(ARED算法)。ARED算法基于RED算法,其主要思路是根据连接数目、流量的多少,在数据包到达时更新平均队列长度,然后根据平均队列长度动态调整最大丢包/标记概率的大小。当平均队列长度在最小闭值附近振荡时,说明早期拥塞指示过度,就降低最大丢包/标记概率;当平均队列长度在最大闽值附近波动时,说明早期拥塞指示不够,就增大最大丢包/标记概率。ARED算法保留了RED的优点,并提供了比RED更低的包丢失率和更高的带宽利用率。但常数α、β的取值过大可能导致最大丢包/标记概率的频繁振荡,不利于网络性能稳定。
Zhou等人提出的Noulinear RED是基于RED的改进算法。由于RED采用线性丢包策略,在轻负载时RED的参数设置使得丢包概率过大,而重负载时参数设置使得丢包又过于柔和,导致当采用RED算法时的吞吐量较低,因此提出了非线性RED算法。此算法认为RED算法的不稳定性是由于其采用的线性丢包函数,故其提出了用二次函数来代替线性函数的AQM策略。
RED算法采用队列长度作为其标记或丢弃策略的依据,这种策略尽管简单,但在动态网络中常常是不稳定的,如果采用自适应参数调整,则可以解决这种问题。Wang等人提出了一种LRED算法,测量最新的丢包比率,用它来作为队列长度的补充来自适应调整丢包概率。仿真表明这种算法可以取得较快的响应速度和较好的鲁棒性。此种算法遵从两条设计原则:当队列长度接近期望队列长度时,丢弃概率应当接近于丢包比率,当队列长度变大(或小)时,丢弃概率也应该变大(或小)来调整队列长度。
2 REM算法
针对队列稳定性问题,Low等人在文献中提出了一种基于随机指数标记的主动队列管理算法(REM),这种算法的目标是为了获得高的利用率和低的丢包率与延时。主要思想是将拥塞测量同传统的基于丢包、队列长度、延时的测量方法中分离出来,提出了基于代价的拥塞度量策略。REM算法具有如下特征:它试图使用户端的速率和同链路容量相匹配,使队列稳定在一个较小的期望值附近而忽略用户数量对稳定性的影响;端到端的标记/丢弃基于对链路代价和的简单并精确的测量。为了提高REM的鲁棒性,Tan等人在文献中提出了自适应REM算法,这种算法是基于动态改变REM的代价函数。