QOS-差分服务模型


QOS 技术概述

传统网络不区分业务流量的优先级,无论是对时延要求较高的视频流量还是对抖动要求高的语音流量,在网络中均以先进先出的形式进行转发。

在网络发生拥塞的情况下,无法保留关键业务的转发。

QOS(服务质量)技术的目的就是区分对网络而言“重要性”不同的流量,对其执行不同的转发动作(Per-Hop Behavier[PHB])

QOS模型分类

QOS技术分为三种模型:

  1. Best-Effort-尽力而为的服务模型;简称:BE

    尽力而为的服务模型即传统网络缺省的转发方式,进入设备的业务流量遵循先入先出原则,不对业务优先级进行区分。

  2. Integrated Sevice 综合服务模型;简称:IntSev

    综合服务模型其旨在给某些确切的业务流量预留足够的带宽以确保其转发,需要配置RSVP(资源预留协议)使用

    因其配置复杂且不易维护,在现网中常用于流量工程TE

  3. Differentiated Service 差分服务模型;简称:DiffServ

    差分服务模型是现在主流的QOS部署方式,其通过设置业务流量的优先级,使不同优先级的流量在网络中享有不同的转发待遇。从而实现限速、保护关键业务流量转发等功能。

在HCIE QOS模块中,主要学习的也是差分服务模型,由于流量工程模块出现了更加优秀的协议(SR-MPLS、SRv6)综合服务模型现在不怎么使用,但SR协议的核心思想和综合服务模型相同。

差分服务模型

差分服务模型又称为区分服务模型,其核心思想是将业务流量分为多个类,不同的类采用不同的处理方式。

其核心技术点有三大块:

  1. 流量分类和标记:根据进入设备的报文优先级映射为设备的本地优先级并放入对应的队列转发,或根据本地优先级给出设备的报文标记上对应的优先级字段。

  2. 流量限速:分流量监管和流量整形,其核心都是令牌桶算法

    • 流量监管:在接口的出入方向都可以配置,其动作为根据令牌桶算法的标记结果丢弃或转发流量

    • 流量整形:只能在接口的出方向配置,其和队列绑定,根据令牌桶算法的标记结果决定是否继续转发对应队列的流量,以达到削峰填谷的效果。

      流量整形不会主动丢弃报文,其动作只是暂停对应队列的转发,丢包是由于队列满后执行的尾丢弃动作。

  3. 拥塞避免和拥塞管理:

    • 拥塞避免负责在拥塞发生前尽力避免拥塞的产生

    • 拥塞管理负责在拥塞发生后通过对队列的调度清除网络拥塞或将拥塞的影响降到最低

在路由器内处理流程如图:

image.png

思维导图总结

QOS

尽力而为的服务模型
    缺省的转发方式
综合服务模型
    现在不常用,在流量工程领域也有更好的同类代替
差分服务模型
    流量标记与分类
    流量监管和流量整形
    拥塞管理和拥塞避免

流量分类和标记

报文在设备内部的标记分为两种:

  1. 服务等级:支持8种取值,由接口本地优先级直接决定或报文优先级映射为接口本地优先级决定

  2. Color:颜色,或称丢弃优先级,分Green、Yellow、Red三种,由令牌桶算法标记

QOS 优先级(服务等级)

对于现网网络而言,可以标识报文优先级的字段有如下几种:

  1. 接口本地优先级:接口缺省的优先级,缺省值为0(对应队列0),报文进入哪个队列转发由接口本地优先级决定

    在不启用简单流分类和复杂流分类的情况下,进入设备的报文自动标记为0,进入队列0转发

    这里华三的设备有所不同,华三缺省为0,但是对应队列2。其后:1对应队列0,2对应队列1,3以及往后和华为一致
    并且华三只有交换机是根据本地优先级映射8个,路由器根据对应的调度算法开启队列。华为交换机和路由器均为8队列映射机制,由于ENSP模拟器看不到交换机的队列转发情况,无法确认交换机的缺省队列
    交换机和路由器的队列调度存在区别

    如下图,在不对报文进行手动分类的情况下,流量缺省从路由器队列0发出

    image.png

    [AR1-GigabitEthernet0/0/0]port priority 0  # 修改接口优先级为0(缺省为0)
    
  2. 报文字段优先级:各个协议报头携带的优先级字段

    不同的协议定义了不同的优先级字段

    IP报头有两个:IP优先级和DSCP

    • IP precedence:IP优先级,使用IPv4报头TOS字段的前三比特(一共8比特),可以标识8种优先级

    • DSCP:IP优先级的升级版,使用IPv5报头TOS字段的前六比特,标识64种优先级

      DSCP优先级前三比特称为CSCP(类代码选择点),简称CS

      CS具体定义为:CS、EF、AF、BE四大类PHB,并预定义了指定的含义:

      image.png

      四大类PHB依据优先级从高到低依次为:CS7、CS6、EF、AF4、AF3、AF2、AF1、BE

      协议报文缺省在CS6、7队列转发

    VLAN TAG报头标识优先级的字段为 802.1p,共3bit,指示8个优先级和四大类PHB一一对应

    MPLS 标签报头标识优先级的字段为 EXP,同VLAN TAG一样,共3bit,指示八个优先级

    IPv6和DSCP类似

缺省情况下(没有配置QOS功能的)

QOS 流分类

QOS流分类的方式分为两种:简单流分类和复杂流分类

需要注意:虽然QOS指明了优先级的高低和对应的PHB,但在不做具体动作(流量监管、整形,拥塞避免、管理)的情况下,分类的流量只有语义上的区别,没有实际的动作含义

根据本地优先级划入对应的队列是设备默认的动作

简单流分类

简单流分类通过将各协议报文携带的优先级映射为本地优先级实现

配置在DS域的中间节点

  • DS域:使用相同协议优先级字段映射本地优先级,执行相同PHB的一组开启差分服务模型的相连的设备

缺省情况下,接口只信任接口本地优先级。所以要使设备开启简单流分类,需要信任对应的协议报文携带的优先级

```PowerShell
[AR2-GigabitEthernet0/0/0]trust ?
  8021p  信任VLAN的802.1p字段优先级
  dscp   信任IP协议DSCP字段优先级(兼容老版本的IP优先级 IP precedence)
  exp    信任MPLS协议EXP字段优先级
```

信任对应的优先级后,设备会根据优先级映射表将报文携带的优先级映射为接口本地优先级

dis qos map-table ?  # 查看qos映射表
  dot1p-dot1p  8021P to 8021p 
  dot1p-dscp   8021P to DSCP 
  dot1p-lp     8021P to local 
  dscp-dot1p   DSCP to 8021P 
  dscp-dscp    DSCP to DSCP
  dscp-lp      DSCP to local

总体上分为报文优先级之前的映射和报文优先级到本地优先级的映射

image.png

最终根据本地优先级的值将报文放入对应的队列

display qos queue statistics interface GigabitEthernet 0/0/1  # 查看G0/0/1口的队列状态

image.png

设备中的优先级映射在报文入设备和出设备时均存在,不过入设备是报文优先级到本地优先级,出设备时本地优先级到报文优先级

image.png

复杂流分类

复杂流分类在DS域的边界节点使用,根据五元组(源目IP、源目端口、协议号)对报文进行精细的分类,然后打上对应的报文优先级映射为本地优先级

常用MQC模块实现

在DS边界节点配置复杂流分类后,后续DS节点只需要配置简单流分类即可

配置示例:

实验组网:

image.png

实验目的:

  1. 在AR1配置复杂流分类,使192.168.0.1访问192.168.10.1的流量通过队列4转发

  2. 在AR2配置简单流分类,维持AR1的动作

实验配置:(网络互通配置略)

# AR1复杂流分类
acl number 3000  # 配置ACL抓取192.168.0.1到192.168.10.1的流量
 rule 5 permit ip source 192.168.0.1 0 destination 192.168.10.1 0

traffic classifier qos operator or  # 配置流分类
 if-match acl 3000  # 匹配ACL 3000抓取的流
traffic behavior qos  # 配置流行为
 remark dscp af41  # 重标记为DSCP AF41
traffic policy qos  # 创建流策略
 classifier qos behavior qos  # 将流分类和流行为绑定
 
interface GigabitEthernet0/0/0
 traffic-policy qos inbound  # 将流策略应用到接口入方向
# AR2简单流分类
interface GigabitEthernet0/0/0
 trust dscp  # 信任DSCP字段优先级

在AR2出口抓包可以看到DSCP字段修改成功

image.png

查看AR2队列转发情况:

image.png

  • AF41对应队列4,报文进入队列4转发。

  • 通过修改优先级映射表,可以改变报文进入的队列,一般不建议修改

如果跨域了DS域(比如从IPv4网络到MPLS网络),需要重新进行复杂流分类

QOS 流量限速

QOS限速有两种实现方式:流量监管和流量整形

流量监管和流量整形都通过令牌桶算法实现,根据令牌桶算法对流量的标记结果,执行不同的动作

image.png

令牌桶算法

令牌桶算法的核心思想是创建一个逻辑上的’令牌桶’,根据指定的速率向令牌桶中投放’令牌’,一个’令牌’权限等同于1bit的报文大小。

报文转发时比较报文大小和令牌桶中令牌的数量,给报文打上对应的颜色标记。流量监管(CAR)和流量整形(GTS)根据颜色标记执行动作

令牌桶有单桶单速、单桶双速、双桶双速三种。

CAR三种令牌桶都可以调用,而GTS只能使用单通单速令牌桶

单桶单速双色标记法

单通单速双色标记法,简称单通单速算法

image.png

CIR:承诺信息速率,单位kpbs。表示向令牌桶中投放令牌的速率,也是实际的限速值

CBS:承诺突发尺寸,单位byte。表示令牌桶的容量,也是接口可以通过的最大突发流量

当报文到达时和C桶剩余的令牌数比较,如果小于C桶剩余的令牌数量,标记为绿色,令牌桶减少对应的令牌数。

如果大于C桶剩余的令牌数量,标记为红色,令牌桶中令牌数不变。

双桶单速三色标记法

双桶单速三色标记法,简称双桶单速算法

image.png

双桶单速算法在C桶的基础上增加了E桶,E桶容量称为EBS。当C桶填满后,令牌溢出到E桶。

EBS:超额突发尺寸,单位byte。表示设备允许通过的瞬间突发流量

报文到达设备后根据以下情况进行标记:

  • 如果报文长度不超过C桶的令牌数,报文标记为绿色,C桶扣除对应的令牌数

  • 如果报文长度超过C桶但是没有超过E桶,报文标记为黄色,E桶扣除对应的令牌数

  • 如果报文长度超过E桶,报文标记为红色,C桶和E桶均不扣除令牌

双桶双速三色标记法

双桶双速三色标记法,简称双桶双速算法

image.png

双桶三速算法在单桶单速C桶的基础上增加了P桶,P桶同样会根据一个指定的速率(PIR)增加令牌

PIR:峰值信息速率,单位kpbs。向P桶中投放令牌的速率

PBS:峰值突发尺寸,单位byte。P桶的大小

双桶双速和其他两种令牌桶不同,报文到达后从P桶开始比较

报文到达设备后根据以下情况进行标记:

  • 先和P桶比较,如果大于P桶,报文标记为红色,不扣除令牌

  • 如果小于P桶再比较C桶,如果大于C桶,报文标记为黄色,P桶扣除对应的令牌

  • 如果小于C桶,报文标记为绿色,P桶和C桶均扣除对应的令牌

流量监管(CAR)

流量监管的目的就是限速,常用于链路两端带宽不平衡的情况

image.png

当数据从高速链路流向低速链路,或从多个链路流向一个链路,都会产生带宽不平衡的情况导致拥塞,流量监管的做法是在高速链路入口就限制带宽使其降低到低速链路的标准,或者直接在低速链路丢包使流量大小和带宽匹配,从而避免拥塞的发生。

对于带宽不平衡导致的故障,我遇到过一个很典型的案例:
现场部署了两条专线和分部连接,一条为20M电信专线,一条为40M联通专线。运行测试流量时产生了这样的故障:
电信专线在跑到10M时延时从8ms激增到400ms。联通专线每隔2分钟延迟就会增加到500ms,持续几秒后恢复
排查过程不论,最后发现故障原因如下:
现场网监设备统计的周期是300s,而由于两条专线带宽都很小,流量到达后几乎是瞬间被打满带宽产生拥塞,但这个流量大小被平均到300s内,看到的现象表示带宽并没有打满,所以才有了上面奇怪的故障现象。
最后在专线出方向配置CAR进行限速,故障恢复,延时稳定在12ms。

流量监管在接口出入方向都可以配置,根据具体的令牌桶算法标记的颜色执行动作

  • 对于标记红包的报文:丢弃

  • 对于标记绿色的报文:转发

  • 对于标记黄色的报文:根据定义的动作选择是直接丢弃或者降低优先级转发

配置流量监管

实验组网:

image.png

实验目的:

Cloud3连接到物理机,物理机开启FTP服务器模拟网络中文件传输的场景,在AR2出口限速,使传输速率降为不限速时的一半

  • 流分类和流标记直接使用QOS流分类时的配置

实验配置:

运行测试不限速时的传输速率,如图可知是100Kbyte每秒

image.png

# AR2 CAR限速
acl number 3000  # ACL匹配要限速的流量
 rule 5 permit ip source 192.168.0.1 0 destination 192.168.10.1 0 
int g0/0/1 
 qos car outbound acl 3000 cir 400  # 限速为400Kbps==50Kbyte
 #  令牌桶的大小不用手工设置,让设备自己计算就是限速最准确的,手工设置反而出问题,只需要指定CIR即可

再次运行测试:

image.png

可能是由于模拟器的关系,并没有准确的完全限速

除了直接在接口配置CAR的方式,还可以通过MQC配置

traffic classifier qos operator or
 if-match acl 3000  # 匹配要限速的流量
traffic behavior qos
 car cir 400  # 设置CAR限速
traffic policy qos
 classifier qos behavior qos  # 创建流策略绑定流分类和流行为
interface GigabitEthernet0/0/1
 traffic-policy qos outbound  # 绑定到接口出方向

二层限速-LR

CAR只能针对IP进行限速,也就是说CAR的限速是三层的,二层转发不能实现限制

QOS实现二层限速的模块是LR

# 交换机配置LR
interface GigabitEthernet0/0/1
 qos lr inbound cir 400 cbs 50000
# 路由器配置LR
interface GigabitEthernet0/0/1
 qos lr pct 90  
 -- 路由器LR就不能做到精确限速到具体的数值,只能限制接口可用带宽百分比,所以一般不使用

LR不能定义匹配的流量,只能在接口直接绑定

对于路由器,华三和华为不同,华三路由器和交换机一样,都是直接指定速率而非带宽百分比

流量整形(GTS)

流量整形的目的同样是限速,但是其没有丢弃动作并且只能使用单通单速令牌桶, 评价结果只有符合和超标

由于流量整形和队列强相关,所以只能应用在接口出方向

流量整形的原理是:

  • 报文发出时根据令牌桶标记颜色,如果为绿色,正常转发。

  • 如果为红色,当前被标记红色的报文仍然转发,但GTS会停止对应的队列,使其暂停发送报文

  • 直到令牌桶填充了新的令牌,才会继续调度此队列

以此,流量整形可以实现”削峰填谷”的效果

image.png

所以GTS不会主动主动丢包,丢包是由于队列满后主动执行的尾丢弃

流量整形一般用于高速链路向低速链路传递数据时,高速链路主动降低发送速率

配置流量整形

实验组网:

image.png

实验目的:

由于AR2到Cloud3为千兆链路到百兆链路,所以在G0/0/1出方向配置GTS主动将报文发送的速率降低到百兆

实验配置:

有三种配置方式:

  1. 在接口直接配置

    interface GigabitEthernet0/0/1po
     qos gts cir 819200 cbs 20480000  # 通过GTS限制g0/0/1发送的报文速率为百兆(CBS同样由设备自动配置)
    
  2. 通过MQC进行配置

    traffic classifier gts operator or
     if-match acl 3000  # 配置流分类
    traffic behavior gts  # 配置流行为
     gts cir 819200 cbs 20480000 queue-length 1  # 我们只需要配置cir值,其他参数设备自动设置
     traffic policy gts
     classifier gts behavior gts  # 创建流策略绑定流分类和流行为
    interface GigabitEthernet0/0/1
     traffic-policy gts outbound  # 绑定到接口出方向
    
  3. 基于队列配置

    qos queue-profile gts  # 创建队列模块,名为GTS
      queue 0 to 7 gts cir 400 cbs 10000  # 配置队列0-7 使能GTS,限速400Kbps(CBS无需手动配置)
    interface GigabitEthernet0/0/1
      qos queue-profile gts  # 在接口绑定队列策略
     -- 由于只有接口出反向才有队列的概念,所以无需指明方向
    

QOS 拥塞避免和拥塞管理

QOS 拥塞避免和拥塞管理机制都是争对网络拥塞的机制,二者的区别是:

  • 拥塞避免是作用在拥塞发生之前,主动丢弃不重要的业务流量避免拥塞的发生

  • 拥塞管理是作用在拥塞发生时,通过一系列队列调度算法消除拥塞或降低拥塞对网络的影响

二层网络不支持拥塞避免,所以拥塞避免只支持IP pre标识和DSCP标识(EXP在2.5层)

对于拥塞管理,二层网络、三层网络、MQC都有其各自的队列调度算法,不能一概而论

拥塞避免

拥塞避免的原理是监视报文缓冲区(队列)的使用情况,当缓冲区中的报文数量达到一定的值时就开始有意识的丢弃一些报文,从而达到调整网络避免拥塞的目的

拥塞避免有两大核心点:门限和丢弃算法

二层网络不支持拥塞避免

门限值

除了传统的尾丢弃策略,其他丢弃策略的判断依据都来自于门限

门限由低门限和高门限构成,当队列中报文长度达到低门限时,拥塞避免根据具体的丢弃策略开始有意识的丢包,随着队列存储的报文长度的增加,报文的丢弃率也逐步增加。

直到队列中报文长度达到高门限时,丢弃率达到100%,对后来的所有报文执行尾丢弃,直到报文长度降至高门限以下。

同理,报文长度降至低门限以下,队列会停止丢包。

image.png

丢弃策略

QOS拥塞避免机制的丢弃策略有三种:尾丢弃、RED(早期随机检测)、WRED(加权早期随机检测)

  1. 尾丢弃:

    不配置拥塞避免时缺省的丢弃策略,没有门限值的说法,其动作为:

    • 队列未满时报文无差别正常进入队列转发

    • 队列满时后续的报文无差别丢弃

    简单说就是先来后到

  2. RED 早期随机检测:

    RED是根据门限值随机的丢弃报文

    • 队列长度在低门限以下不丢弃

    • 队列长度在低门限以上、高门限以下随机丢弃队列中的报文,且越接近高门限丢弃率越高

    • 队列长度在高门限以上,执行无差别尾丢弃

    其缺点就是随机,不论报文的重要程度,执行无差别的随机丢弃

  3. WRED加权早期随机检测:

    WRED是对RED的改进策略,其可以对不同优先级的队列设置不同的丢弃策略,实现不同流量的区分丢弃

    • 报文进入的队列优先级取决于流分类的结果

    image.png

    其实就是给每个队列配置不同的门限值,各队列专注于按自己的门限值执行RED而不受其他队列的影响

    个人思考:所以如果低优先级队列如果报文很少,而高优先级队列达到了高门限,高优先级报文仍然会先于低优先级丢弃(好像也合理,就是有点怪)

配置WRED策略

尾丢弃无需配置,WRED其实就是对每个队列的RED,所以配置拥塞避免就是配置WRED

实验组网:

image.png

实验目的:

在AR2 G0/0/1口配置拥塞避免

有两种配置方式:

  1. 基于队列配置WRED

    drop-profile qos  # 创建丢弃策略QOS
      wred dscp  # 指定WRED策略依据DSCP优先级(只能是DSCP或IP)
      dscp af11 to af33 low-limit 50 high-limit 70 discard-percentage 50
      # 优先级af11到af33的队列,低门限50,高门限70,丢弃概率从50%开始
      dscp 31 to ef low-limit 20 high-limit 90 discard-percentage 20
      # 优先级af31到ef的队列,低门限20,高门限90,丢弃概率从20%开始
      
     qos queue-profile wred  # 创建队列模板wred
      schedule wfq 0 to 7  # 设置队列0到7的调度方式为WFQ
      -- 配置WRED的队列调度算法必须为WFQ
      queue 0 to 7 drop-profile qos  # 队列0到7绑定丢弃策略qos
     
     interface GigabitEthernet0/0/1
      qos queue-profile wred  # 在接口绑定队列策略
    

    注意:配置丢弃策略时,在前面已经存在相应的优先级策略时,后写入的配置会覆盖先写入的配置。所以最好从范围大的开始配置,让范围小的配置自动覆盖之前的配置

  2. 基于MQC配置WRED

    drop-profile qos  # 创建丢弃策略QOS
      wred dscp  # 指定WRED策略依据DSCP优先级(只能是DSCP或IP)
      dscp af11 to af33 low-limit 50 high-limit 70 discard-percentage 50
      # 优先级af11到af33的队列,低门限50,高门限70,丢弃概率从50%开始
      dscp 31 to ef low-limit 20 high-limit 90 discard-percentage 20
      # 优先级af31到ef的队列,低门限20,高门限90,丢弃概率从20%开始
     
    traffic behavior wred  # 流行为
     queue wfq  # 将BE流量调度方式指定为WFQ
     drop-profile qos  # 绑定丢弃策略
    traffic policy wred
     classifier default-class behavior wred  # 将流行为绑定到缺省分类
    interface GigabitEthernet0/0/1
     traffic-policy wred outbound  # 绑定到出接口
    

MQC调度的队列貌似是一个逻辑BE队列,模拟器配置后网络正常,但是8各队列均看不到报文发送。(这里说貌似也只是指一个可能性,因为流行为中对queue wfq的描述是:为BE (Best-Effort)流量指定基于流的WFQ)
疑问:acl匹配到的数据是否是通过什么队列调度的

拥塞管理

拥塞管理的目的是在拥塞发生后将拥塞及时消除或者降拥塞的影响降到最低,通过队列调度实现

对于不同的协议,队列的调度方法不同:

  • 三层转发(IP): 使用PQ、WFQ、LPQ调度

  • 二层转发(以太网):使用PQ、WRR、DRR调度

  • MQC模块:使用BE、AF、EF调度

缺省情况下,所有队列都使用FIFO(先入先出)调度

队列调度算法

不同的队列调度底层使用的是不同的调度算法,对于三层转发,调度算法有三种:

  • FIFO 先入先出:FIFO队列调度使用此算法

  • SP 严格优先级:PQ、LPQ队列调度勇士此算法

  • WFQ 加权公平队列:WFQ队列使用此算法

SP算法是严格按照优先级的顺序进行调度,只有高优先级的报文全部转发完毕,低优先级的报文才能转发

image.png

WFQ算法是按队列优先级来分配权重,每次调度每个队列都会根据自己的权重发送相应数量的报文,WFQ队列理论上以bit为单位进行调度,但实际颗粒度达不到这种精细程序,一般是256B、1KB或其他粒度,和设备单板型号有关

image.png

三层转发队列(路由器队列)

路由器队列有PQ、WFQ、LPQ三种

PQ和LPQ都是使用PQ算法,严格按照优先级先后顺序转发,通常情况下对时延敏感的报文会加入PQ队列。

LPQ是在以太网接口上实现的PQ队列调度机制,除了使用在以太网链路,串口、MP-Group链路不支持外,其他特点和PQ无异。

WFQ队列使用WFQ算法,和算法的调用一样,按队列权值转发报文

8个端口队列可以组合应用三种队列,及可以全部使用一种队列调度,也可以三种混用。

在队列调度混用时,优先级:PQ>WFQ>LPQ

image.png

二层转发队列(交换机队列)

交换机队列同样有三种:PQ、WRR、DRR

PQ队列和路由器PQ一样,遵循严格的高优先级优先调度机制。

WRR和DRR都是在RR(轮询)的机制上演变而来。

WRR的实现机制类似于WFQ,都是更具优先级给队列不同的权重,更具权值按比例转发。

image.png

在进行WRR调度时,设备根据每个队列的权值进行轮循调度。调度一轮权值减一,权值减到零的队列不参加调度,当所有队列的权限减到0时,开始下一轮的调度。(WFQ也一样)

DRR在调度过程中考虑包长的因素以达到调度的速率公平性。

image.png

DRR调度中,设备会给每个队列都分配一个初始值为0的Deficit值,每次调度前,系统按权重为各队列分配带宽

当前Deficit+本次分配的带宽=本次调度Deficit值。

如果队列本次的Deficit值大于0,则参与此轮调度,发送一个报文,并使Deficit值减去发送报文的长度作为下一轮调度的依据

如果本次队列的Deficit值小于0,则不参与此轮调度,当前Deficit值作为下一轮调度的依据。

MQC队列调度

通过MQC配置队列调度,使用的使CBQ调度

CBQ将所有队列分为三种:

  1. EF队列:优先级最高,规定业务转发时速率的最低值为EF的规定值

    • LLQ队列是一种特殊的EF队列,时延比EF更低,一般用于时延非常敏感的业务
  2. AF队列:优先级次高,规定业务转发是速率的最高值为AF的规定值

  3. BE队列:不属于EF和AF的流量

在带宽不足时,EF可以抢占AF,AF可以抢占BE以保证关键业务的转发

配置基于队列的拥塞管理

image.png

实验目的:在AR2配置基于队列的拥塞管理

schedule ?  # 指定队列的调度算法(队列模板中可以指定以下几种)
  drr  Deficit weighted round robin
  pq   Priority queuing
  wfq  Weighted fair queuing
  wrr  Weighted round robin
 qos queue-profile wfq  # 创建队列模板
  schedule wfq 0 to 5 pq 6 to 7  # 将0到5队列划入wfq,6、7划入pq
  -- 可以配合拥塞避免机制一同配置
 interface GigabitEthernet0/0/1
  qos queue-profile wfq  # 在接口应用队列策略

配置基于MQC的拥塞管理

queue ?   # MQC中可配置的调度
  af   Assured Forwarding 确保转发队列,此队列中的流量最高不超过指定的带宽
  ef   Specify Expedited Forwarding  加速转发队列,此队列中的流量最低带宽为指定的带宽
  llq  Low-latency 加速转发队列,和ef用途一致,一般不用
  wfq  Best-Effort 尽力而为队列,使用WFQ调度的尽力而为队列
  一个流动作只能配置一种队列调度,调度优先级:ef/llq>af>wfq

traffic classifier wfq operator or  # 流分类
 if-match acl 3000
traffic behavior wfq  # 流行为
 queue af bandwidth 40000
traffic policy wfq  # 流策略
 classifier wfq behavior wred  
interface GigabitEthernet0/0/1
 traffic-policy wfq outbound  # 绑定到出接口

HQOS

HQOS即层次化的QOS,传统QOS只有8个队列,在一些场景中实际是不太够用的。

目前HQOS在设备上支持三级队列:L3 流队列(Flow queue)、L2 用户队列 (Subscriber queue)、L1 接口队列(Port queue)

image.png

三级队列以树状结构汇聚,报文调度时首先进入流队列,经过多级调度后从接口发出

同时,以队列为基础的流量整形、拥塞避免、拥塞管理机制也在三级队列上分级调度,各级队列之间互不影响

  • 流量整形在HQOS中也分为了三级整形器,依次进行整形操作

    image.png

  • 拥塞避免同理,也分为三级控制

    image.png

配置HQOS

配置HQOS时分三步:配置HQos子策略(流队列策略)、配置HQos父策略(用户队列策略)、绑定到接口(接口队列策略)

配置HQOS子策略:

image.png

配置HQOS父策略并绑定子策略

image.png

应用在接口

image.png


文章作者: Atmujie
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Atmujie !
评论
  目录