QOS的队列及拥塞管理

发布时间 : 星期六 文章QOS的队列及拥塞管理更新完毕开始阅读

图5 DRR调度

由上图可以看出,经过第1~6轮DRR调度,Q1队列被调出了3个200Bytes的报文,Q2队列被调出了6个100Bytes的报文。从长期的统计看,Q1和Q2的实际输出带宽比是1:1,为公平的比例。

DRR调度避免了采用SP调度时低优先级队列中的报文可能长时间得不到服务的缺点。但是,DRR调度不能设置权重,且也具有低延时需求业务(如语音)得不到及时调度的缺点。

DWRR

差分加权轮询DWRR(Deficit Weighted Round Robin)调度主要解决DRR不能设置权重的不足。DRR调度相当于权值为1的DWRR调度。

DWRR为每个队列设置一个计数器Deficit,Deficit初始化为Weight*MTU。每次轮询到一个队列时,该队列输出一个报文且计数器Deficit减去报文长度。当计数器为0时停止调度该队列,但继续调度其他计数器不为0的队列。当所有队列的计数器都为0时,所有计数器的Deficit都加上Weight*MTU,开始新一轮调度。

假设某端口MTU=150Bytes,有2个队列Q1和Q2采用DRR调度,Q1队列中有多个200Bytes的长报文,Q2队列中有多个100Bytes的端报文,Q1和Q2配置权重比为weight1:weight2=2:1。则DWRR调度过程如图6。

图6 DWRR调度

?

第一次调度

Deficit[1] =weight1* MTU=300,Deficit[2] = weight2* MTU=150,从Q1队列取出200Bytes报文发送,从Q2队列取出100Bytes发送;发送后,Deficit[1] = 100,Deficit[2] =50。 ?

第二次调度

从Q1队列取出200Bytes报文发送,从Q2队列取出100Bytes发送;发送后,Deficit[1] = -100,Deficit[2] =-50。 ?

第三次调度

此时两个队列都为负,因此,Deficit[1] = Deficit[1]+weight1* MTU=-100+2*150=200,Deficit[2] = Deficit[2]+weight2* MTU=-50+1*150=100。

从Q1队列取出200Bytes报文发送,从Q2队列取出100Bytes发送;发送后,Deficit[1] = 0,Deficit[2] = 0。

由上图可以看出,经过第1~3轮DWRR调度,Q1队列被调出了3个200Bytes的报文,Q2队列被调出了3个100Bytes的报文。从长期的统计看,Q1和Q2的实际输出带宽比是2:1,与权重比相符。

DWRR调度避免了采用SP调度时低优先级队列中的报文可能长时间得不到服务的缺点,也避免了各队列报文长度不等或变化较大时,WRR调度不能按配置比例分配带宽资源的缺点。 但是,DWRR调度也具有低延时需求业务(如语音)得不到及时调度的缺点。

WFQ

加权公平队列WFQ(Weighted Fair Queuing)调度是按队列权重来分配每个流应占有出口的带宽。同时,为了使得带宽分配更加“公平”,WFQ以bit为单位进行调度,类似于图7的bit-by-bit调度模型。

图7 Bit-by-bit调度模型

Bit-by-bit调度模型可以完全按照权重分配带宽,防止长报文比短报文获得更多带宽,从而减少大小报文共存时的时延抖动。

但Bit-by-bit调度模型只是理想化的模型,实际上,华为路由器实现的WFQ是按照一定的粒度,例如256B、1KB,或其他粒度,具体按何种粒度,与单板类型相关。 WFQ的优点: ? ?

不同的队列获得公平的调度机会,从总体上均衡各个流的延迟。

短报文和长报文获得公平的调度:如果不同队列间同时存在多个长报文和短报文等待发送,让短报文优先获得调度,从而在总体上减少各个流的报文间的抖动。 ?

从统计上看,权重越小,所分得的带宽越少。权重越大,所分得的带宽越多。

端口队列调度方式

对于华为路由器设备每个接口上的8个端口队列,用户可以为其都配置成SP调度,或者是基于权重的调度。根据队列调度算法,8个端口队列可以分为三组: ?

PQ队列

PQ队列之间采用SP调度算法,当从队列调度报文时,先从高优先级的队列调度报文。这样,可对不同业务数据提供绝对的优先,对时间敏感的实施应用如VoIP的延时可以得到保证,对优先业务的报文带宽占用可以绝对优先。

PQ的缺点:如果不对高优先级的报文带宽加限制,会造成低优先级报文得不到带宽,可能出现“饿死”现象。

华为路由器允许将8个端口队列都配置成PQ队列,但不建议这么配置。通常情况下,只时延敏感的业务入PQ队列。 ?

WFQ队列

WFQ队列是按权重进行调度的,调度算法可以是WRR、DWRR或WFQ调度算法中的其中一种,这些算法都是按权重进行剩余带宽的分配。P40-E子卡使用的是DWRR;其他类型单板使用WFQ或WRR。 ?

LPQ队列

LPQ队列是在高速链路(以太网)接口上实现的队列调度机制。低速链路(如Serial、MP-Group)上不支持LPQ队列。

LPQ队列之间的调度方式与PQ队列一样,也采用SP调度。不同在于拥塞时PQ可以抢占WFQ的带宽,而LPQ不可以抢占WFQ的带宽。在PQ和WFQ队列调度结束后,如果还有剩余带宽则分配给LPQ。

实际应用中,可以将BE流用LPQ进行调度。这样,在网络负载较重时,BE流可以完全被限制,优先满足其它业务。

所有的8个端口队列可以全部配置成WFQ,也可以全部配置成PQ,也可以全部配置成LPQ,也可以组合。

三种队列的调度顺序

PQ、WFQ、LPQ之间采用SP调度算法,优先调度PQ队列,再调度WFQ队列,最后调度LPQ队列,如图8。详细流程如图9。 图8 端口队列调度顺序

图9 队列间的调度流程

联系合同范文客服:xxxxx#qq.com(#替换为@)