48小时系统班试听入口

【网工实战技术】QoS队列调度技术详解

发布作者:新盟教育 发布日期:2023-02-20 浏览人数:3827人

网工实战技术

资源放送 

↓ 扫一扫 

领取QoS队列录屏资

网页同步文章.png

今天继续给大家介绍QoS的相关内容,本文主要是对QoS的队列调度机制进行了详解,主要是PQ调度、WRR调度、WFQ调度以及组合调度等方式的实现原理和细节。本文主要对标华为系列路由交换设备,所介绍的所有调度方式,均应该使用qos-profile进行调度。


一、PQ调度


所谓PQ(Priority Queuing)调度,即按照报文的优先级进行调度。当网络设备的报文流进入PQ队列后,高优先级的队列会率先被调度,而低优先级的队列则会等到高优先级的队列调度完毕后才能开始调度。在低优先级队列调度开始后,如果又有高优先级的报文进入队列,则PQ会立即停止对低优先级报文的调度,转而去调度高优先级的队列。

PQ队列的优点是,由于对高优先级数据包采取立即调度的方式,因此可以保证高优先级队列内的时延,使得该数据流量时延较低。

PQ队列的缺点是,如果高优先级队列中存在大量的报文,则低优先级队列的数据流量则往往因为得不到调度而发生饿死的情况。


二、RR调度


所谓RR(Round Robin)调度,即轮询调度,报文分别进入不同的队列,每个队列按照轮询的方式,从0到7依次进行报文调度。如果在调度时某个队列中没有报文,则越过该队列进行调度其他的队列。纯粹的RR调度在每次调度中,每个队列仅调度一个报文,不能满足高优先队列QoS的特点,因此,在RR调度的基础上,还存在着WRR调度和DRR调度。

(一)WRR

所谓WRR(Weighted Round Robin)调度,即加权轮询调度。WRR是在RR调度的基础上,为每个队列分配一个优先级,队列与队列之间按照优先级分配接口的带宽。WRR在调度时如果出现某个队列没有报文需要调度的情景时,就会把属于该接口的带宽按照比例分配给其他队列。

在WRR调度中,每个队列会被分配一个权值,当该队列被调度后,每次调度一个报文,队列的权值就减一,权值减到0的队列不参与调度。当所有的队列减到0后,开始新一轮的调度。

WRR可以实现按照队列的优先级享有不同的带宽服务。

但是WRR以报文为单位,因此,如果某个队列中的报文都是大报文,则在WRR调度中可能占用的实际带宽会大于队列优先级对应的带宽。此外,WRR不能保证低延时业务的延时特性得到保障。

(二)DRR

所谓DRR(Deficit Round Robin),即赤字轮询调度。DRR与WRR类似,但是DRR是以报文的大小问单位进行的调度,因此相对于WRR而言,在统计学意义上可以实现真正的带宽分配。

在DRR调度中,与WRR类似,也会为每个队列分配一个Deficit,每次队列的Deficit值为正才能够进行调度,为负则不予调度,每次队列调度一个报文,就会将Deficit值减掉该报文的长度。

DRR的调度方式有些像购物一样,Deficit类似于一个队列的“存款”,每当存款为正时,就可以“购物”(即发送报文),当“存款”(Deficit值)为负后,就不可以“购物”(即发送报文)。队列在每轮调度完成后,会将Deficit值加上指定的数值,以此来维持DRR的不断调度。

DRR相对于WRR能够在统计学意义上保证带宽的合理分配,但是DRR仍然不能实现对低延时语音业务的延时保障。


三、WFQ调度


WFQ(Weighted Fair Queue)调度,即加权公平调度。在华为的设备中,WFQ有两种含义,一种是基于流进行分类,还有一种是基于优先级进行分类。在使用qos-profile进行队列调度的时候,WFQ是基于优先级的调度方式;而在使用MCQ进行调度的时候,WFQ是基于优先流的调度方式。

若WFQ采用基于优先级的调度方式,则与WRR和DRR类似,将DSCP、802.1p等字段映射为本地优先级,每个本地优先级对应一个队列。在默认情况下,队列中间的权重相同,但是用户可以通过配置修改权重,高优先级和低优先级按照权重比例分配带宽。

若WFQ采用基于流的调度方式,则对于进入该接口的每一个数据包,接口会根据该数据包的源目IP、源目端口号、协议类型和IP优先级(这6项又被称为6元组)分配到不同的流队列。接口会以对6项参数进行一个组合后的hash运算,只有这六项值全部相同,计算出的hash值才会相同,而计算结果就决定了数据流会放入哪个队列。也因此,WFQ当采用流的调度方式后,接口的队列数量可能有很多,这一点与上面所有的队列调度方式都不同,上面的所有队列调度方式都是一共有8个队列。

对于WFQ中的队列,系统会根据队列的IP优先级自动的为每个队列分配权重。计算方式是将每个队列的IP优先级加1作为每个队列的权重。(如果不加1,则有些权重为0的业务根本没有办法得到调度)此外,WFQ队列还会使得短报文相对于长报文更快的获得调度。

WFQ具备一定的公平性,但是他既不能保证带宽,也不能保证低延时业务,因此在qos-profile的配置中,通常将其作为BF(Best Efford)的策略进行配置。


四、组合调度


除了上述介绍的调度方式外,华为还支持采用组合调度的方式实现软件队列的调度。从上述介绍中,我们可以看出,每种单一的调度方式都有其优先和缺点。但是对于一个企业来说,其内部的业务和网络流量可能过于复杂,以至于上述的所有调度方式都不能满足企业网络流量的特点。在这种情况下,就可以考虑使用组合调度的方式。

华为的组合调度方式有PQ+WRR、PQ+DRR、PQ+WFQ等,这些调度方式,都是将一个或者几个队列设置为PQ队列,并且将语音等低延时业务放入其中,保证其延时性。然后将其余的队列按照不同的特性分配不同的带宽,采取不同的调度方式。

这样的调度方式,可以使得接口软件调度更加灵活,更加符合实际情况。但是,在规划时一定要注意,不要把带宽太大的业务放入PQ队列。


1671585dc74035d34ac554d5f2ae42fc.jpg

推荐阅读

>>>【独家首发】新版HCIE考试解读直播回顾
>>> 重磅!华为HCIE认证改版升级通知!
>>>【命令解析】Linux用户行为的常用命令
>>> 网工必备通信基础知识,还不知道你就out了?
>>>【必备干货】网工入门必会桥接教程,外网+GNS3+Vmware
>>>【技术指南】5分钟搞清楚OSPF链路状态路由协议