尽管队列提供VoIP QoS的拥塞管理 ,仍需要一些提供拥塞规避的机制,像是WRED。特别的,WRED可以防止输出队列达到极限值,这将导致所有输入数据包的丢失。本文来自于Informit,论述了在Cisco路由器上配置WRED的必要性。
请回忆一下在你早期的网络技术学习中的内容――传输控制协议(TCP)的窗口(windowing)是如何工作的。发送者发送一个信息段,如果发送者收到接收者发出的成功的应答,则它再发送两个信息段(即,两个“窗口大小”)。如果应答回复这两个信息段发送成功,发送者发送四个信息段,并继续如此进行下去,窗口大小以指数增加。
但是,如果一个信息段丢失,TCP流将进入TCP慢启动(TCP slow start),这时窗口大小减少到1。TCP流接着以指数增长其窗口大小直到拥塞发生时窗口大小的一半。然后,TCP流的窗口大小以线性增长。TCP慢启动与QoS有关,因为当一个接口的输出队列已满的时候,所有的新到达的数据包被丢弃(即“tail dropped”),所有的TCP流同时进入TCP慢启动。
注意,多个TCP流同时进入TCP慢启动的过程被称为全局同步(global synchronization)或者TCP同步。当TCP同步发生时,连接的带宽不能充分利用,从而造成了带宽的浪费。
RED 基础随机早期检测(RED)的目的是通过在一个接口的输出队列将要饱和的时候随机丢弃数据包以防止发生TCP同步。RED丢弃数据包的速度取决于当时的队列深度。下面的三个参数影响到何时一个新到达的数据包被丢弃:
?最小门限
?最大门限
?标签概率分母(MPD)
最小门限指定在队列准备丢弃数据包前的队列中的数据包数量。丢弃数据包的可能性随着队列深度达到最大门限而不断上升。当队列深度超过最大门限时, 所有其它试图进入队列的数据包都被丢弃。
数据包的丢弃可能性在队列深度等于最大门限时为1/(MPD)。例如,如果标签概率分母被设定为10,当队列深度达到最大门限时,被丢弃的可能性为1/10(即,被丢弃的可能性为百分之十)。最小门限、最大门限以及MPD组成了RED。RED在路由器可能发生拥塞的端口是十分有用的。例如,一个WAN端口可能会需要采用RED。
CB-WRED
思科不支持RED,但是却支持更好的加权随机先期检测(WRED),与RED不同,WRED可以解析每个优先级标签。 例如,一个IP优先级为0的数据包的最小门限可能是20,但是一个IP优先级为1的数据包的最小门限可能是25。在这一例子中,IP优先级为0的数据包将比IP优先级为1的数据包先被丢弃。
尽管WRED可以从端口配置模式或虚拟电路结构进行设置,这里讲述基于MQC的 WRED的设置。为了开启WRED并设定WRED需要关注的标签(即IP 优先级或 DSCP),需要输入下列政策图类配置模式命令。
Router(config-pmap-c)#random-detect [dscp-based | prec-based]
如果既没有指定为基于dscp也没有指定为基于prec,WRED默认为基于prec。配置WRED后,IOS分配默认的最小门限、最大门限和MPD。你可以使用下列命令改变默认参数:
Router(config-pmap-c)#random-detect precedence precedence_value
minimum-threshold maximum-threshold mark-probability-denominator
(用于基于prec的WRED)
Router(config-pmap-c)#random-detect dscp dscp_value
minimum-thresholdmaximum-threshold mark-probability-denominator
(用于基于dscp的WRED)