加权随机早期检测算法(Weighted RED,WRED)是由Cisco公司改进的算法,是一种根据优先级处理拥塞的机制,主要应用于TCP占主导地位的IP网络。WRED可以解析每个IP优先级标签,对非IP流量作为优先权0(最低优先权)来对待。它在RED的基础上增加了一个权值来决定丢弃量,为更高级别和更高优先权的数据包提供更低的丢弃速率。根据每个优先权设置不同的最小和最大阀值级别的路由器完成这项功能。如图4所示。WRED算法实际上是对丢弃门限确定方法的改进,从而延迟了丢弃数据包的时机。当实际队列长度高于最大门限时,它将继续丢弃数据包;当队列实际长度低于最小门限时,进程将停止丢弃数据包。因此,WRED的包丢弃概率由队列最小门限、队列最大门限和基准概率三者确定。其中基准概率值是队列长度为最大门限时包的丢弃概率。在平均长度超过最大门限时所有数据包都丢弃。
当发生拥塞时,WRED通过辨别包的来源随机地丢弃包来降低传输率。假设包源使用TCP,它将降低传输率直到所有的包都到达目的地,这样拥挤就被清除了。WRED一般是基于IP优先权有选择性地丢弃包:拥有高IP优先权的包比低优先权的包不易被丢弃。并且能为可控负载的QoS提供整体服务。因此,拥有高优先权的流量比低优先权的流量更可能被传送。
RED也通过计算队列平均长度来完成拥塞避免。计算公式如下:Lav=Lo(1-1/2N)+(Lc×1/2N)。其中,Lav是队列的平均长度,Lo是旧的平均长度值,Lc为当前队列值,Lc为当前队列值,N是加权系数,这是一个整数并且可以在每个端口上独立设置。
WRED通过检测即将来的拥塞情况和抢先丢弃流量来保持链路的非拥塞状态,WRED有选择性地丢包来减少队尾丢包的机会。通过早一点丢弃某些包而不是等到缓冲器已满才丢包,WRED避免了一次性丢弃大量的包,并使全局同步的机会降到最小。因此,WRED能提供一个统计工具来维护有效的链路利用率。