鉴于上述情况的观察,有人提出了一个在根本上不同的主动队列管理算法,称为BLUE,它利用数据包丢失及链路利用历史来管理拥塞。BLUE保持一个单一的概率来标记(或丢弃)进入队列的数据包。如果队列由于缓冲区溢出而不断丢弃数据包,BLUE的标记概率也增加,从而增加它发回拥塞通知的速度。相反,如果队列成为空白或该链路处于闲置状态,那么BLUE的标记概率则降低。同时利用仿真和实验,我们得出的结论就是,在减少数据包的丢失这一方面BLUE明显要优于RED,即使缓冲器比较小也是一样。利用基于BLUE的机制,一种新的,在数据流很多的场合下,也能够有效且可扩展的文持公平的机制被提出。
3.2 BLUE算法的实现
首先BLUE的算法如下图[20]所示:
BLUE的关键点就是它是直接根据数据包丢失及链路的利用来执行队列管理的,而不是根据瞬时或平均排队长度。这和所有已知的使用某种形式的队列占用的拥塞管理的主动队列管理方案形成了鲜明的对比。BLUE保持一个单一的概率Pm来标记(或丢弃)进入队列的数据包。如果由于缓冲区溢出而使得队列不断丢弃数据包,BLUE就增大Pm,从而增加了它发回拥塞通知的速度。相反,如果队列变成空的或者链路处于闲置状态,BLUE就降低标记概率。这有效地使得BLUE“学会”发回拥塞通知所需要的正确速度。在图中所示的BLUE算法中,我们也可以注意到其指出的一种变种算法,在这种算法里当队列长度超过一个特定值时标记概率会发生变化。这一修改使得队列中留出了空间给瞬时的突发情况,并允许当已用队列大小过大时队列可以控制队列延时。除了标记概率,BLUE还使用另外两个参数来控制标记概率随时间变化的速度。第一个是冻结时间 。这个参数决定Pm的两次连续变化之间的最短时间间隔。这使得标志概率的变化能在数值再次变化之前生效。一般在实验中设定的冻结时间是一个常数,这个值是随机的,以避免全局同步。另一个参数(δ1和δ2)用来确定当队列溢出时或者链路空闲时Pm增减的数额。经常实验中需要δ1设置的明显大于δ2 。这是因为链路利用不足的情况,在拥塞管理太保守或太激进的时候都可能发生,但数据包丢失只可能发生在拥塞管理过于保守的时候。通过衡量数据包丢失的严重程度,BLUE可以迅速的对通信负载的大幅增加做出反应[21]。
配置BLUE来达到控制拥塞的目的是一个相对简单的过程。第一个参数,冻结时间需要根据通过链路的多路复用的有效往返时间来设置,以便标记概率发生的每一次变化都能及时的反馈到源端。对于像卫星链路这样的长时延通信,冻结时间要增加,以匹配较长的往返时间。第二个参数δ1和δ2的设置,要使得链路有能力有效地适应在整个链路上负载的宏观变化以符合连接标准。负载上变化非常大的链路只是发生在分钟数量级的,δ1和δ2的设置应与冻结时间协同起来使得Pm的取值范围为从0到1的分钟数量级。这与以前的队列长度的方法形成鲜明的对比,它们即使在恒负载下标记和丢弃的概率范围也是从0到1的毫秒数量级。在典型的链路中,调节冻结时间在10至500毫秒间,并设置δ1和δ2这样使得Pm在5至30秒时间内的允许范围为0到1,这样BLUE控制算法就可以有效地运作。我们注意到,尽管BLUE算法本身非常简单,但即使和已合理配置的RED队列相比,它的性能却表现出了显著的提高。
3.3 RED算法的不足
Internet上避免高的分组丢失率非常重要,如果分组在到达目的地之前被丢弃,那么传输该数据分组所耗费的资源就全部浪费了。在分组丢失极为严重的情况下,甚至还可能导致拥塞崩溃。虽然己经采用了一些加强改进方案,但链接仍然存在高分组丢失率。当大量链接共同竞争多余的带宽时会发生严重拥塞,此时分组丢失率特别高。最近测量表明,当分组通过Internet多个不同的链路时,丢失率随着对网络带宽的需求的增加而上升。 主动队列管理算法BLUE的仿真研究(7):http://www.751com.cn/tongxin/lunwen_9187.html