文档库 最新最全的文档下载
当前位置:文档库 › 层次化QOS(HQOS)

层次化QOS(HQOS)

层次化QOS(HQOS)
层次化QOS(HQOS)

HQoS

HQoS

HQoS即层次化QoS(Hierarchical Quality of Service),是一种通过多级队列调度机制,解

决Diffserv模型下多用户多业务带宽保证的技术。

传统的QoS采用一级调度,单个端口只能区分业务优先级,无法区分用户。只要属于同一优先级的流量,使用同一个端口队列,不同用户的流量彼此之间竞争同一个队列资源,无法对端口

上单个用户的单个流量进行区分服务。

HQoS采用多级调度的方式,可以精细区分不同用户和不同业务的流量,提供区分的带宽管理。基本调度模型

调度模型分为两部分:

?调度器:对多个队列进行调度。调度器执行某种调度算法,决定各个队列之间报文发送的先后顺序。调度算法包括按优先级调度SP(Strict Priority),或按权重调度(DRR、

WRR、DWRR、WFQ算法的其中一种)。调度算法详细介绍请参见“队列及拥塞管理”。

调度器就一个动作:选择队列。队列被调度器选中时,队列最前面的报文被发送。

?被调度对象:即队列。报文根据一定的映射关系进入不同的队列。

队列被赋予3种属性:

1)根据调度算法,队列被赋予优先级或权重。

2)队列整形速率PIR。

3)报文丢弃策略,包括尾丢弃(Tail-drop)或WRED。

队列有两个动作:

1)入队:当系统收到报文时,根据报文丢弃策略决定是否丢弃报文。如果报文未被丢弃,则报文入队尾。

2)出队:队列被调度器选中时,队列最前面的报文出队。出队时,先执行队列整形,之后报文被发送。

HQoS层次化调度模型

为了实现分层调度,HQoS采用树状结构的层次化调度模型,如图1。树状结构有三种节点:

?叶子节点:处于最底层,表示一个队列。叶子节点是被调度对象,而且只能被调度。

?中间节点:处于中间层,既是调度器又是被调度对象。当作为被调度对象时,一个中间节点可以看成一个虚队列。所谓虚队列,是指仅作为调度结构中的一个层次,不是实际占用缓存的队列。

?根节点:处于最高层,表示最高级别的调度器。根节点只是调度器,不是调度对象。根节点通常被赋予PIR属性,用于限制输出总带宽。

图1 层次化调度模型

调度器可以对多个队列进行调度,也可以对多个调度器进行调度。其中,调度器可以看成父节点,被调度的队列/调度器看成子节点。父节点是多个子节点的流量汇聚点。

每个节点可以指定分类规则和控制参数,对流量进行一次分类和控制。不同层次的节点,其分

类规则可以面向不同的分类需求(如用户、业务类型等),并且在不同的节点上可以对流量做

不同的控制动作,从而实现了对流量进行多层次、多用户、多业务的管理。

HQoS的层次划分

HQoS层次化调度中,可以只有一层中间节点,实现三层调度结构;也可以有多层中间节点,

实现多层调度结构。甚至可以将两个或多个层次化调度模型叠加,通过制定映射规则,将一个

调度模型输出的报文映射到另一个调度模型的叶子节点,如图2,从而实现更加灵活的调度需求。

图2 灵活的调度层次划分

不同厂家、不同芯片,实现的调度层次不同。

华为路由器的调度结构

在华为路由器上,没有配置HQoS的情况下,只有类队列CQ(Class Queue)和Port调度器,其调度结构如图3。

图3 没有配置HQoS时的队列调度结构

CQ队列的属性包括:

?队列优先级、队列权重

?队列整形速率PIR

?报文丢弃策略,尾丢弃(Tail-drop)或WRED

Port调度器可以是按优先级调度SP(Strict Priority),或按权重调度(WRR、DWRR、WFQ 算法的其中一种)。

说明:

WRR、DWRR、WFQ都是按权重调度,为方便,本文将按权重的调度统称为WFQ。

在配置HQoS的情况下,路由器另外划分缓存,用于缓存需要层次化调度的业务流队列,并对这些流队列先进行一轮多层次调度,再将HQoS流与非HQoS流统一入CQ队列,进行统一调度,如图4。

图4 HQoS流队列调度

?叶子节点:FQ(Flow Queue)队列

用于暂存一个用户各个优先级中的一个优先级的数据流。每个用户的数据流都可以划分为1~8个优先级,即每个用户可以使用1~8个FQ。不同用户之间不能共享FQ。每个FQ 可以配置shaping值来限制该队列的最大带宽。

FQ队列与CQ队列具有相同属性:

?队列优先级、队列权重

?队列整形速率PIR

?报文丢弃策略,尾丢弃(Tail-drop)或WRED

?中间节点:SQ(Subscriber Queue)

一个SQ代表一个用户(例如,一个VLAN,或一个LSP,或一个PVC),每个SQ可定义其CIR和PIR。

每个SQ固定对应8种FQ业务优先级,这1~8个FQ共享该SQ的带宽。如果哪个FQ 空闲,则其他FQ可以占用空闲出来的带宽,但是受限于FQ自己的PIR,最大不能超过FQ自己的PIR。

SQ既是调度器,又是虚队列作为被调度对象。

?作为调度器:对多个FQ队列进行调度。FQ队列可以配置为PQ、WFQ和LPQ。

优先级为EF、CS6和CS7的FQ队列默认采用SP调度算法;优先级为BE、AF1、

AF2、AF3、AF4的流队列默认采用WFQ调度算法,调度权重为10:10:10:15:15。

?作为被调度对象的虚队列:被赋予了两个属性,CIR和PIR。通过流量测速(Metering),将输入流量分流成“<=CIR”与“>CIR”两部分;“<=CIR”的部分是指用户

付费的部分,“>CIR”的那部分流量称为EIR,EIR=PIR-CIR。EIR是指突发量,允

许用户流量突发至最大值PIR。

根节点:GQ(Group Queue)

为了简便处理,可以把多个用户定义为一个用户组GQ,类似于在配置BGP对等体时把多个具有共同特点的对等体配置为一个组。例如,可以把相同总带宽需求的用户归为一个GQ,或把所有金牌级用户归为一个GQ。

一个GQ可以绑定多个SQ,但一个SQ最多只能绑定到一个GQ内。

GQ作为调度器,对多个SQ队列进行调度。先采用DRR算法在SQ之间调度小于CIR 的那部分流量,不同SQ之间采用DRR调度。如果有剩余带宽,再采用DRR算法调度超过CIR但小于PIR的那部分流量(即EIR)。CIR和EIR之间采用SP调度算法,优先保证CIR的带宽;超过PIR的流量会被丢弃。因此,如果GQ能获得PIR带宽,则

GQ下每个SQ的CIR带宽都可以得到保证,且SQ最大可以获得PIR带宽。

此外,GQ作为根节点,可以赋予最大带宽PIR属性,用于对多个用户的流量进行整体限速。该GQ下的所有用户都受限于这个最大带宽。GQ的PIR值只是用于整体限速,并不用来保证带宽,GQ的PIR值建议不小于GQ中所有SQ的CIR之和,否则单个用户

(SQ)的流量无法得到保证。

说明:

对GQ的PIR的补充说明:当设备支持SQ动态调整带宽特性时,

?如果所有SQ的CIR之和超过GQ带宽,按CIR:CIR的比例分配带宽。如果所有SQ的PIR之和超过GQ带宽时,先满足各SQ的CIR带宽,再按EIR:EIR的比例

分配剩余带宽(EIR=PIR-CIR)。

?如果所有SQ的CIR之和超过GQ带宽,按CIR:CIR的比例分配带宽。例如,SQ1的CIR =100Mbps,SQ2的CIR = 50Mbps,而GQ带宽只有100Mbps,则最终

SQ1和SQ2按照100M:50M的比例输出。

如果所有SQ的PIR之和超过GQ带宽,先满足各SQ的CIR带宽,再按EIR:EIR 的比例分配剩余带宽。例如,SQ1的CIR = 100Mbps,PIR = 150Mbps;SQ2的

CIR = 0Mbps,PIR = 100Mbps;GQ带宽是200Mbps。首先,SQ1获得100M的

CIR,剩余100M带宽按SQ1、SQ2的EIR比例分配。SQ1的EIR = 50M;SQ2

的EIR = 100M,两者会近似按照1:2的比例分剩余的100M。最终,SQ1获得

133Mbps,SQ2获得66Mbps。

为了帮助理解,下面举例说明FQ、SQ、GQ及其关系。

假设一栋楼有20个家庭,每个家庭购买的带宽是20M,则只需要为每个家庭创建一个SQ,设置CIR和PIR均为20M即可,满足了保证每个家庭20M带宽的要求,同时这里的PIR也是限

定用户最大可使用的带宽为20M。但随着VoIP、IPTV业务的开通,加上已有的个人上网HSI

业务,运营商实时推出了新的带宽套餐,带宽仍然为20M,其中包含了VoIP,IPTV等增值业务。这样,每个家庭可以使用VoIP电话,机顶盒看电视(IPTV),同时还使用电脑上网冲浪(HSI)。

此需求的HQoS配置方法是:

?配置3个FQ,对应3种业务(VoIP、IPTV、HSI);

?配置20个SQ,分别对应20个家庭用户。每个SQ配置CIR和PIR,CIR保证带宽,PIR限定最大带宽。

?配置1个GQ对应一栋楼,将20个用户的带宽汇总,将20个用户视为“用户组”,整合20个用户的总带宽作为GQ的PIR,让这20个用户实现带宽共享。20个用户相对独立,但是总带宽又受到GQ的限制。

分层模型为:

?FQ用于对用户的各种业务进行细分,控制用户的业务类型和带宽在各个业务之间的分配;

?SQ用于区分用户,对每个用户的带宽进行限速;

?GQ用于区分用户组,对5个SQ的流量进行整体限速。

FQ的作用是保证各类业务的带宽分配关系;SQ的作用是将每一个用户单独标识出来;而GQ

的作用是使得各个用户之间的CIR能够得到保证,同时又达到带宽共享的目的。

超过CIR部分的带宽是不保证的,这是合理的,因为超过CIR部分的带宽实际上是用户并未付

费的部分,是属于额外的。而重要的是,必须保证CIR,因为CIR的带宽是客户购买的。按照

图4的SQ调度可以看到,用户的CIR总是可以保证的,因为用户的CIR是被单独标识出来优

先被调度的,因此不会被其它用户超过CIR部分的流量抢占。

华为路由器上,HQoS可实现上、下行方向的调度,且上、下行的调度结构不同。

HQoS上行队列调度

图5 HQoS上行调度结构

HQoS的上行队列调度,HQoS流经过FQ->SQ->GQ的调度之后,与非HQoS流会合,统一

进行如下两层调度:

目的板TB(Target Blade)调度

TB调度也称为VOQ(Virtual Output Queue)调度。

TB调度的作用可以借用比喻来理解:如下图为一个十字路口,A路口来了3辆车(汽车、铲车和卡车),分别去往B、C、D。如果此时B路口堵车,则汽车不能动,由于它排在前面,后面的铲车和卡车也不能动,尽管C、D路口是畅通的。

如果在A路口针对目的地B、C、D路口分别设立三条车道,则上面的问题就可以解决了。

同理,对于路由器的交换网板,上面的A、B、C、D路口相当于不同的单板。如果每块

单板都为去往的不同目的单板的报文分配队列,这种队列称为VOQ,可以预防因某块目的单板拥塞而影响去往其他目的单板的报文。

VOQ是设备自动划分的,用户无法更改VOQ队列属性和调度器属性。

说明:

组播报文上行还没有复制,还不确定去往哪个目的单板,所以组播报文单独一个VOQ队列。

对于单播,有多少个目的单板,就有多少个单播VOQ队列。

VOQ调度中,先在单播VOQ队列之间进行DRR调度,再在单播和组播两者之间进行

DRR调度。

?类队列CQ(Class Queue)调度

对于上行调度,有4个CQ队列,分别叫做COS0(对应CS7、CS6和EF)、COS1

(对应AF4和AF3)、COS2(对应AF2和AF1)和COS3(对应BE)。

COS0为PQ队列,优先调度COS0队列,再在COS1~COS3队列之间进行WFQ调度,WFQ权值为1:2:4。

用户无法更改上行CQ队列属性和调度器属性。

对于非HQoS的流量,则直接进入4个上行CQ队列,不经过FQ队列。对于HQoS的

流量,则经过FQ队列和CQ队列。

上行调度过程如下:

1. 报文入队:报文首先入FQ队列。报文入FQ队列时,系统检查队列状态,确定是否进

行尾丢弃或WRED丢弃,如果报文未被丢弃,则入FQ队尾。

2. 请求调度:报文入FQ队列后,向SQ调度器报告队列状态变化并请求调度。SQ调度器

再向其上一级GQ调度器报告队列状态变化并请求调度;请求调度的过程是FQ-->SQ--

>GQ。

3. 逐级调度:GQ调度器收到请求后开始向下选择SQ,被选中的SQ则选择FQ,调度过

程是GQ-->SQ-->FQ。

4. 报文出队:FQ被选中后,FQ队列最前面的报文出队,进入VOQ队尾。VOQ向CQ调

度器报告队列状态变化并请求调度。CQ收到请求向下选择VOQ,被选中的VOQ队列

最前面的报文出对,送入交换网板。

因此整体调度过程是(FQ-->SQ-->GQ)+(VOQ-->CQ)。

表1 HQoS上行各级调度汇总

队列/调度器队列属性调度器属性

-

FQ队列?队列优先级、队列权

重,可配置

表1 HQoS上行各级调度汇总

队列/调度器队列属性调度器属性

?队列整形速率PIR,可

配置,缺省情况,不设

置PIR

?报文丢弃策略,缺省为

尾丢弃,可配置为

WRED

SQ ?CIR,可配置

?PIR,可配置?可配置

?可采用PQ或WFQ对FQ进行调度。缺省情况

下,EF、CS6和CS7采

用PQ,AF2、AF3和

AF4采用WFQ,BE和

AF1采用LPQ

GQ ?PIR,可配置。只是用于

整体限速,并不用来保

证带宽?不可配置

?先在SQ之间调度CIR 流量,不同SQ之间采

用DRR调度。如果有剩

余带宽,再调度EIR流

量,SQ之间也是采用

DRR。CIR和EIR之间

采用SP调度算法,优先

保证CIR的带宽;超过

PIR的流量会被丢弃

VOQ ?不可配置?不可配置

?先在单播VOQ队列之间

进行DRR调度,再在单

播和组播两者之间进行

DRR调度

CQ ?不可配置?不可配置

表1 HQoS上行各级调度汇总

队列/调度器队列属性调度器属性

COS0为PQ队列,优先

调度COS0队列,再在

COS1~COS3队列之间

进行WFQ调度,WFQ

权值为1:2:4

HQoS下行队列调度

在华为路由器上,有些单板的物理接口卡(PIC, Physical Interface Card)可能嵌了一个TM (Traffic Manager)芯片,称为eTM(egress Traffic Manager)子卡。有些单板的物理接口卡没有eTM子卡。

如果PIC卡嵌了eTM,下行调度在eTM上进行;如果PIC卡未嵌eTM,则下行调度在下行TM上进行,这两种方式的调度过程有差异。

说明:

V600R002及之后版本才支持eTM子卡。

嵌有eTM子卡的单板包括LPUF-40/ BSUF-40、LPUF-21/BSUF-21、BSUA,对应的eTM子卡详细信息如下:

产品母板eTM子卡BOM编码订购名称

NE40E、NE80E、CX600 LPUF-

40

20端口1000Base-X-SFP灵活插卡

E(P40-E)

03030LYU CR5D0EEGFE70

2端口10GBase LAN/WAN-XFP灵活插

卡E(P40-E)

03030MGC CR5D0L2XXE70

LPUF-

21

1端口10GBase LAN/WAN-XFP灵活插

卡E(P20-E)

03030LVG CR5M0L1XXE20

产品母板eTM子卡BOM编码订购名称

10端口1000Base-X-SFP灵活插卡

E(P20-E)

03030LVF CR5M0EAGFE20

ME60 BSUF-

40 20端口1000Base-X-SFP灵活插卡

E(BP40-E)

03030NFT ME0D0EEGFE70

2端口10GBase LAN/WAN-XFP灵活插

卡E(BP40-E)

03030NFR ME0D0L2XXE70

BSUF-21 1端口10GBase LAN/WAN-XFP灵活插

卡E(BP20-E)

03030HEE ME0M0E1XXE20

10端口1000Base-X-SFP灵活插卡

E(BP20-E)

03030LLF ME0M0EAGFE20

6端口1000Base-X-SFP灵活插卡

E(BP20-E)

03030MDM ME0M0E6GFE20

BSUA (宽带业务处理板BSU)8端口OC-3c/STM-1c ATM-SFP宽带业

务处理板

说明:

BSUA是集成板,其eTM子卡不是灵活

插卡。

03030NGS ME0DBSUA1020

下行TM调度

图6 HQoS下行TM调度结构

下行TM调度,除了FQ->SQ->GQ调度,还包括CQ->Port的调度。下行有8个CQ队列,分别为CS7、CS6、EF、AF4、AF3、AF2、AF1和BE,其队列参数及调度参数允许用户修改。

下行TM调度过程:

1. 报文入队:报文首先入FQ队列。

2. 请求调度:下行整体请求调度的过程是(FQ-->SQ-->GQ)+(CQ-->目的端口)。

3. 逐级调度:下行整体调度过程是(目的端口-->CQ)+(GQ-->SQ-->FQ)。

4. 报文出队:FQ被选中后,FQ队列最前面的报文出队,进入CQ队列。CQ队列报

文出队后送入目的端口。

对于非HQoS的报文,则直接进入8个下行CQ队列,不经过FQ队列。

表2 HQoS下行TM各级调度汇总

队列/调度器队列属性调度器属性

FQ队列?队列优先级、队列权

重,可配置

?队列整形速率PIR,可

配置,缺省情况,不设

置PIR

?报文丢弃策略,缺省为

尾丢弃,可配置为

WRED

-

SQ ?CIR,可配置

?PIR,可配置?可配置

?可采用PQ或WFQ对FQ进行调度。缺省情况

下,EF、CS6和CS7采

用PQ,AF2、AF3和

AF4采用WFQ,BE和

AF1采用LPQ

GQ ?PIR,可配置。只是用于

整体限速,并不用来保

证带宽?不可配置

?先在SQ之间调度CIR 流量,不同SQ之间采

用DRR调度。如果有剩

余带宽,再调度EIR流

量,SQ之间也是采用

DRR。CIR和EIR之间

采用SP调度算法,优先

保证CIR的带宽;超过

PIR的流量会被丢弃

CQ队列?队列优先级、队列权-

表2 HQoS下行TM各级调度汇总

队列/调度器队列属性调度器属性

重,可配置

?队列整形速率PIR,可

配置,缺省情况,不设

置PIR

?报文丢弃策略,缺省为

尾丢弃,可配置为

WRED

Port ?PIR,可配置(端口限

速)。?可配置

?可采用PQ或WFQ对FQ进行调度。缺省情况

下,EF、CS6和CS7采

用PQ,AF2、AF3和

AF4采用WFQ,BE和

AF1采用LPQ

下行eTM调度

图7 HQoS下行eTM调度结构

与下行TM调度相比,下行eTM调度是一个五级调度结构,不是两个多级调度结构的叠加。下行eTM调度只有FQ一种实体队列,没有CQ队列。对FQ队列,除了FQ->SQ->GQ调度外,还进行父GQ调度,也称为虚端口VI(Virtual Interface)调度。

说明:

此处的虚端口只是调度器的名称,并不是通常说的“虚拟端口”。具体应用时,虚端口可以对应子接口,也可以对应物理接口或其他。不同应用,虚端口所指的对象不同。

下行TM调度和下行eTM调度的区别在于:

下行TM是两个调度结构的叠加,其五级调度可划分为(FQ->SQ->GQ)+(CQ->Port)两部分。HQoS流量先经过(FQ->SQ->GQ),再与非HQoS流量在CQ 队列会合,进行(CQ->Port)的调度。

?下行eTM是一级实体队列的调度,其五级调度为FQ->SQ->GQ->VI->Port。对于非HQoS流量的8个CQ队列,系统设置了一个默认的SQ队列。该SQ队列直接参与最高级的Port调度。

表3 HQoS下行eTM各级调度汇总

队列/调度器队列属性调度器属性

FQ队列?队列优先级、队列权

重,可配置

?队列整形速率PIR,可

配置,缺省情况,不设

置PIR

?报文丢弃策略,缺省为

尾丢弃,可配置为

WRED

-

SQ ?CIR,可配置

?PIR,可配置?可配置

?可采用PQ或WFQ对FQ进行调度。缺省情况

下,EF、CS6和CS7采

用PQ,AF2、AF3和

AF4采用WFQ,BE和

AF1采用LPQ

GQ ?PIR,可配置。只是用于

整体限速,并不用来保

证带宽?不可配置

?先在SQ之间调度CIR 流量,不同SQ之间采

用DRR调度。如果有剩

余带宽,再调度EIR流

量,SQ之间也是采用

DRR。CIR和EIR之间

采用SP调度算法,优先

保证CIR的带宽;超过

PIR的流量会被丢弃

父GQ/VI ?PIR,可配置。只是用于

整体限速,并不用来保?不可配置

?在不同GQ之间进行

表3 HQoS下行eTM各级调度汇总

队列/调度器队列属性调度器属性

证带宽DRR调度

Port ?PIR,可配置(端口限

速)。?不可配置

?在不同父GQ/VI之间进行DRR调度

下行TM调度和eTM调度的差异

表4 下行TM调度和eTM调度的差异

差异项下行TM调度下行eTM调度

port-queue命令行针对整个端口某个优先级的流

量。针对非流队列的某个优先级的流量。

GQ带宽共享GQ带宽可以基于TM共享,

只要GQ模板名字相同。GQ带宽只能基于接口共享,即使GQ模板名字相同。

SQ带宽共享同一GQ下的多个SQ跨物理

口共享。只能同一GQ下的多个SQ跨子接口共享,不能实现跨物理口共享。

Trunk和成员口Trunk接口及其成员接口都可

以配置port-queue,成员口的

配置优先生效。成员口的配置

对该成员口的所有流量进行调

度。Trunk接口及其成员接口都可以配置port-queue,但port-queue只对所有成员口的非流队列生效,不对流队列生效。

下文以端口整形为例详细说明下行TM调度和eTM调度的差异。假设某接口的主接口配置对port-queue的整形,子接口配置对flow-queue/user-queue整形:flow-queue FQ

queue ef shaping 10M

interface gigabitethernet1/0/0

port-queue ef shaping 100M

interface gigabitethernet1/0/0.1

user-queue cir 50m pir 50m flow-queue FQ

interface gigabitethernet1/0/0.2

//注:gigabitethernet1/0/0.3不配置user-queue和qos-profile

?对于下行TM调度,port-queue配置的shaping值即为物理接口的总带宽,包括HQoS和非HQoS流量。以上配置表示:

?从子接口GE1/0/0.1输出的EF流不超过10Mbps;

?从物理接口GE1/0/0输出的EF不超过100Mbps,包括从主接口GE1/0/0、子接口GE1/0/0.1、GE1/0/0.2的EF流。

?对于下行eTM调度,port-queue配置的shaping值仅为非HQoS流量的总带宽,即默认SQ的带宽。上述配置表示:

?从主端口GE1/0/0和子接口GE1/0/0.2输出的EF流为非HQoS流,一共不超过100Mbps;

?从子接口GE1/0/0.1输出的EF流不超过10Mbps;

?从物理端口GE1/0/0输出的EF最大可到110Mbps。

HQoS优先级映射

HQoS上、下行调度体系都有2种实体队列,上行有8个FQ队列和4个CQ队列,下行有8

个FQ队列和8个CQ队列。报文是根据服务等级进入FQ队列的,而FQ调度后,FQ队列最

前面的报文出队,入CQ队列,此时需要有优先级映射关系,以便确定报文入到哪个CQ队列。

FQ->CQ队列的映射关系有两种模型:

?Uniform模型:系统固定的映射关系。上行采用Uniform模型。

?Pipe模型:可以由用户自行配置指定映射关系。Pipe模型不会改变报文中自身携带的优先级。

缺省情况下,FQ的8个优先级队列与8个CQ队列是一一对应关系。

联合流量整形

相关文档