「HUAWEI-ENSP」- 实验学习:QoS

实验拓扑

实验需求

  • 在 AR1 上,配置基于接口的流量监管技术;
  • 在 AR1 上,配置流量整形技术;

实验过程

流量监管 | Traffic Policing

[AR1]interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0]qos car inbound cir 8
[AR1-GigabitEthernet0/0/0]display this
[V200R003C00]
#
interface GigabitEthernet0/0/0
 ip address 10.0.15.1 255.255.255.0
 qos car inbound cir 8 cbs 1504 pbs 2504 green pass yellow pass red discard # 双桶双速三色
#
return

测试方法:

  • 通过不同 ping -s 进行测试,较大 ping 会产生丢包;

补充说明:

  • 根据 AR 1220 文档:
    • CIR PIR 的单位为 kbit/s;CBS PBS 的单位为 byte;
    • 执行命令 qos overhead layer { link | physics },配置在流量监管或流量整形时报文长度的计算方式。缺省,流量监管或流量整形计算报文长度时包括报文的物理层和链路层的补偿信息。
  • 该实验现象比较模糊,如果想看到精准的 QoS 实验现象,需要制造流量进行验证;

流量整形 | Traffic Sharping

[AR1]interface GigabitEthernet 0/0/1
[AR1-GigabitEthernet0/0/1]qos gts cir 8 cbs 1514

测试方法:

  • 通过不同 ping -s 进行测试,理论上,看到较低的丢包概率,但是报文时延增加;

补充说明:

  • GTS:Generic Traffic Shaping 通用流量整形

流分类 | 流标记 | 配置案例

需求:要求为语音、视频等即时性业务提供最优先的转发服务
实现:在 DS 边界节点,先通过复杂流分类抓取语音、视频等业务流量,映射到对应的优先级;再通过简单流分类,处理剩余流量;

WIP !!! [NETWORK] QoS 流分类实验(QoS 复杂流分类及分类打标实验)

第一步、配置复杂流分类

由于 DS 边界收到的流量一般未被分类,并且可信度较低,所以复杂流分类一般在 DS 边界设备上配置;

配置思路如下:

// 使用 Traffic classifier 工具匹配流量
System-view
   traffic classifier [classifier-name]        // 创建流分类
      if-match [acl | vlan-id | …. ]           // 基于流量特征匹配流量

// 使用 Traffic behavior 工具定义流分类的规则
System-view
   traffic behavior [behavior-name]                     // 创建流行为
      remark [dscp-name | 8021p-value | EXP | … ]       // 对流量的 QoS 字段赋值

// 使用 Traffic policy 工具将 Traffic classifier 与 Traffic behavior 进行绑定
System-view
   traffic policy [policy-name]                                 // 创建流策略
      classifier [classifier-name] behavior [behavior-name]     // 绑定流分类与流行为

// 将 Traffic policy 应用到 DS 边界设备接口入方向上
System-view
   interface [interface-type interface-num]                   // 进入接口视图
      traffic-policy [policy-name] [inbound | outbound]       // 在接口入方向上应用流策略

当配置完成复杂流分类,可以通过以下命令查看结果:

System-view
   display traffic classifier user-defined [ classifier-name ]   // 查看已配置的流分类信息;
   display traffic behavior [ system-defined | user-defined ] [ behavior-name ]   // 查看已配置的流行为信息;
   display traffic policy user-defined [ policy-name ] classifier [classifier-name ]    // 查看流策略的配置信息;
   display traffic-policy applied-record [ policy-name ]   // 查看指定流策略的应用记录;

第二步、修改简单流分类(可选)

在 DS 边界设备上,已经对流量进行初步处理,后面的 DS 设备中配置简单流分类即可;

简单流分类基于优先级映射表,将带有特定 QoS 字段数据映射为内部优先级;

优先级映射表根据实际需求可以进行一定修改,修改优先级映射表的思路如下:
1)配置端口信任的报文优先级
2)配置优先级映射表

// 配置端口信任的报文优先级

System-view
   interface [interface-type interface-num]                   // 进入接口视图
      trust [8021p | dscp]                                    // 基于 802.1P 或者基于 DSCP 景下修改

// 配置优先级映射表

System-view
   qos map-table [ dot1p-dot1p | dot1p-dscp | dot1p-lp | dscp-dot1p | dscp-dscp | dscp-lp ]      // 进入优先级映射表视图
      input [input-value1] output [output-value]     // 配置优先级映射表中的映射关系

流量监管:配置案例

流量监管一般在设备入方向执行,根据需要可在终端测或者出口设备入方向部署,流量监管一般可以基于接口配置,也可以基于 MQC 配置;

WIP !!! [NETWORK] 流量限速技术原理与实验

配置基于接口的流量监管

基于接口的流量监管配置思路如下:
在接口上配置流量监管的最大带宽,同时可以基于实际需求选择需要对哪些流量进行监管,也可以调整对于超出的流量实行的行为;

System-view
   interface [interface-type interface-num]
      qos car [ inbound | outbound ] [ acl acl-number |  destination-ip-address | source-ip-address ] cir [cir-value] [ pir pir-value ] [ cbs cbs-value pbs pbs-value ]     // 在接口出或入方向配置对于特定流量的流量监管,其中 CIR 值必须配置,CIR 表示流量监管的最大承诺速率,如果不配置 PIR 则 PIR=CIR,流量无法高于承诺速率;

// 当基于接口配置流量监管后,可以通过以下命令查看配置结果:
System-view
   display qos car statistics interface [interface-type interface-num] [inbound | outbound] // 查看接口上通过和丢弃报文的统计信息

配置 MQC 实现流量监管

通过 MQC 可以更细致的实现流量监管,设备可以基于数据包的五元组,QoS 值等信息控制流量,分配不同的带宽;

基于 MQC 的配置思路如下

// ---------------------------------------------------------------------------- // 匹配流量

System-view
   traffic classifier [classifier-name]
      if-match [acl | vlan-id | …. ]       // 基于流量特征匹配流量;

// ---------------------------------------------------------------------------- // 定义行为

System-view
   traffic behavior [behavior-name]
       car cir [cir-value] [ pir pir-value ] [ cbs cbs-value pbs pbs-value ] // 通过 CIR 设置最大的承诺速率,通过 PIR 设置最大突发速率;

// ---------------------------------------------------------------------------- // 绑定行为与策略

System-view
   traffic policy [policy-name]
      classifier [classifier-name] behavior [behavior-name]

// ---------------------------------------------------------------------------- // 应用行为与策略

System-view
   interface [interface-type interface-num]
      traffic-policy [policy-name] [inbound | outbound]

// ---------------------------------------------------------------------------- // 查看

System-view
   display traffic classifier user-defined [ classifier-name ]
   display traffic behavior [ system-defined | user-defined ] [ behavior-name ]
   display traffic policy user-defined [ policy-name ] classifier [classifier-name ]
   display traffic-policy applied-record [ policy-name ]

拥塞避免:配置案例

配置基于队列的 WRED

设备支持基于 DSCP 优先级的 WRED 和基于 IP 优先级的 WRED,配置思路如下:
配置丢弃模板
配置 WRED 参数
在队列模板中调用丢弃模板
在接口出方向调用队列模板

配置命令:

System-view
   drop-profile [drop-profile-name]     // 创建丢弃模板
      wred [dscp | ip-precedence]      // 配置当前 WRED 丢弃模板基于 DSCP 优先级或 IP 优先级进行丢弃
      dscp [dscp-value] low-limit [low-limit-percentage] high-limit [high-limit-percentage] discard-percentage [discard-percentage]    // 配置基于 DSCP 优先级的 WRED 参数
      ip-precedence [ip-precedence-value] low-limit [low-limit-percentage] high-limit [high-limit-percentage] discard-percentage [discard-percentage]    //(可选)配置基于 IP 优先级的 WRED 参数
   qos queue-profile [queue-profile-name]    // 进入队列模板视图
      queue [queue-index] drop-profile [drop-profile-name]   // 在队列模板中为指定队列绑定丢弃模板
   interface [interface-type interface-num]      // 进入接口视图
      qos queue-profile [queue-profile-name]     // 在接口下应用队列模板

// 检查基于队列的拥塞避免配置结果
System-view
   interface [interface-type interface-num]
      display this    // 查看接口下绑定的队列模板。
   qos queue-profile [queue-profile-name]
      display this   // 查看队列模板绑定的丢弃模板。
   display drop-profile [ drop-profile-name ]   // 查看丢弃模板的配置信息。

配置 MQC 实现拥塞避免

丢弃模板在流行为中绑定后,将流行为和对应的流分类在流策略下进行关联,并将此流策略应用到接口上,可以实现对匹配流分类规则的流量的拥塞避免

配置思路如下:
1)配置丢弃模板
2)配置 Traffic classifier 与 Traffic behavior
3)使用 Traffic policy 工具将 Traffic classifier 与 Traffic behavior 进行绑定
4)将 Traffic policy 应用到设备接口出方向上

System-view
   drop-profile [drop-profile-name]     // 创建丢弃模板;
      wred [dscp | ip-precedence]      // 配置当前 WRED 丢弃模板基于 DSCP 优先级或 IP 优先级进行丢弃;
      dscp [dscp-value] low-limit [low-limit-percentage] high-limit [high-limit-percentage] discard-percentage [discard-percentage]    // 配置基于 DSCP 优先级的 WRED 参数;
      ip-precedence [ip-precedence-value] low-limit [low-limit-percentage] high-limit [high-limit-percentage] discard-percentage [discard-percentage]    //(可选)配置基于 IP 优先级的 WRED 参数;

System-view
   traffic classifier [classifier-name]        // 创建流分类;
      if-match [acl | vlan-id | …. ]       // 基于流量特征匹配流量;

System-view
   traffic behavior [behavior-name]        // 创建流行为;
       drop-profile [drop-profile-name]    // 在流行为中绑定已创建的丢弃模板;

System-view
   traffic policy [policy-name]    // 创建流策略;
      classifier [classifier-name] behavior [behavior-name]     // 绑定流分类与流行为;

System-view
   interface [interface-type interface-num]      // 进入接口视图;
      traffic-policy [policy-name] outbound     // 在接口出方向上应用流策略;

// 检查基于 MQC 的拥塞避免配置结果
System-view
   display traffic classifier user-defined [ classifier-name ]   // 查看已配置的流分类信息。
   display traffic behavior [ system-defined | user-defined ] [ behavior-name ]   // 查看已配置的流行为信息。
   display traffic policy user-defined [ policy-name ] classifier [classifier-name ]    // 查看流策略的配置信息。
   display traffic-policy applied-record [ policy-name ]   // 查看指定流策略的应用记录。

拥塞管理:配置案例

WIP !!! [NETWORK] 拥塞管理配置实验;

配置基于队列的拥塞管理

WAN 接口支持 PQ,WFQ,PQ+WFQ 三种调度模式;

拥塞管理的配置思路如下:

System-view
   // 创建 QoS 队列模板
   qos queue-profile [queue-profile-name]   // 创建队列模板;
      schedule pq [queue-index] | wfq [queue-index]   // 配置 WAN 接口下各队列的调度模式;
   // 在接口下应用队列模板
   interface [interface-type interface-num]      // 进入接口视图;
      qos queue-profile [queue-profile-name]     // 在接口下应用队列模板;

// 检查基于队列的拥塞管理配置结果
System-view
   interface [interface-type interface-num]
      display this    // 查看接口下绑定的队列模板;
   display qos queue-profile [queue-profile-name]   // 查看队列模板的配置信息;

配置 MQC 实现拥塞管理

在 MQC 中,Tfc-Clf 提供三种队列:

1)确保转发队列(AF):在网络发送的业务流量没有超过最小可确保带宽的情况下,可以保证确保转发;

2)加速转发队列(EF/LLQ):匹配规则的报文进入 EF 或 LLQ 队列后,进行绝对优先级调度,仅当 EF 或 LLQ 队列中的报文调度完毕后,才会调度其他队列中的报文。

当 AF 或 BE 队列有空闲带宽时,EF 队列可以对空闲带宽进行占用。

LLQ 队列较 EF 队列而言,时延更低;

3)尽力而为队列(BE):未进入 AF 队列和 EF 队列的剩余报文进入 BE 队列。BE 队列使用 WFQ 算法调度;

AF 队列和 EF 队列带宽之和不得超过接口带宽的 100%;
各 AF 队列按照权重分享剩余带宽(可用带宽减去 EF 队列占用带宽后的剩余资源);

MQC 方式的拥塞管理配置思路如下:

// -------------------------------------------------------- // 配置 Traffic classifier 与 Traffic behavior
System-view
   traffic classifier [classifier-name]                     // 创建流分类;
      if-match [acl | vlan-id | …. ]                        // 基于流量特征匹配流量;

// -------------------------------------------------------- // 创建流行为;
System-view
   traffic behavior [behavior-name]
      queue af bandwidth [bandwidth | pct percentage]       // 在流行为中,配置 AF 队列最小确保带宽;
      queue ef bandwidth [bandwidth | pct percentage]       // 在流行为中,配置 EF 队列的最小带宽;
      queue llq bandwidth [bandwidth | pct percentage]      // 在流行为中,配置 LLQ 队列的最大带宽;
      queue wfq queue-number [total-queue-number]           // 在流行为中,配置 BE 队列的 WFQ 调度参数;

// 使用 Traffic policy 工具将 Traffic classifier 与 Traffic behavior 进行绑定
System-view
   traffic policy [policy-name]    // 创建流策略;
      classifier [classifier-name] behavior [behavior-name]     // 绑定流分类与流行为;

// 将 Traffic policy 应用到设备接口出方向上
System-view
   interface [interface-type interface-num]      // 进入接口视图;
      traffic-policy [policy-name] outbound     // 在接口出方向上应用流策略;

// 检查基于流分类的拥塞管理配置结果
System-view
   display traffic classifier user-defined [ classifier-name ]   // 查看已配置的流分类信息;
   display traffic behavior [ system-defined | user-defined ] [ behavior-name ]   // 查看已配置的流行为信息;
   display traffic policy user-defined [ policy-name ] classifier [classifier-name ]    // 查看流策略的配置信息;
   display traffic-policy applied-record [ policy-name ]   // 查看指定流策略的应用记录;

流量整形

流量整形只能在设备出方向配置,配置方式上可以分为基于接口的流量整形,基于队列的流量整形和通过 MQC 实现整形;

WIP !!! [NETWORK] 流量整型技术原理与实验

基于接口配置流量整形

基于接口的流量整形颗粒度较粗

配置思路如下:在接口出方向部署流量整形,配置最大带宽;

System-view
   interface [interface-type interface-num]      // 进入接口视图;
      qos gts cir [cir-value] [ cbs cbs-value ]  // 在接口出方向配置流量整形,CIR 表示整形最大速率,可根据实际需求配置 CBS 可以控制令牌桶大小,CIR 必须配置;

配置基于队列的流量整形

通过在接口下应用队列模板,可以实现针对各队列的流量整形;

针对不同的优先级队列设置不同的流量整形参数,可以实现对不同业务的差分服务;

基本配置思路如下:

// 创建队列模板,并配置队列整形
System-view
   interface [interface-type interface-num]      // 进入接口视图;
      qos queue-profile [queue-profile-name]   // 创建队列模板;
         queue [start-queue-index] to [end-queue-index ] gts cir [cir-value] [ cbs cbs-value ]      // 配置对于特定队列设置出方向流量整形,配置 CIR 设定特定队列所能使用的最大带宽;

// 在接口下应用队列模板
System-view
   interface [interface-type interface-num]      // 进入接口视图;
      qos queue-profile [queue-profile-name]     // 在接口下应用队列模板;

// 配置基于队列的流量整形后,可通过以下命令查看配置结果
System-view
   display qos queue-profile [ queue-profile-name ]   // 查看队列模板的配置信息;

配置 MQC 实现流量整形

配置 MQC 实现流量整形,可以通过流分类,为不同业务提供更细致的差分服务;

MQC 实现流量整形的配置思路如下:

// 配置 Traffic classifier 工具匹配流量
System-view
   traffic classifier [classifier-name]        // 创建流分类;
      if-match [acl | vlan-id | …. ]       // 基于流量特征匹配流量;

// 配置 Traffic behavior 工具定义流分类的规则
System-view
   traffic behavior [behavior-name]        // 创建流行为;
       gts cir [cir-value] | pct [pct-value] // 配置流量整形,可以基于流量最大速率配置,也可以基于占用接口带宽百分比配置;

// 使用 Traffic policy 工具将 Traffic classifier 与 Traffic behavior 进行绑定
System-view
   traffic policy [policy-name]    // 创建流策略;
      classifier [classifier-name] behavior [behavior-name]     // 绑定流分类与流行为;

// 将 Traffic policy 应用到设备接口出方向上
System-view
   interface [interface-type interface-num]      // 进入接口视图;
      traffic-policy [policy-name] [inbound | outbound]     // 在接口出方向上应用流策略;

// 配置基于 MQC 的流量整形后,可以通过以下命令查看结果
System-view
   display traffic classifier user-defined [ classifier-name ]   // 查看已配置的流分类信息。
   display traffic behavior [ system-defined | user-defined ] [ behavior-name ]   // 查看已配置的流行为信息。
   display traffic policy user-defined [ policy-name ] classifier [classifier-name ]    // 查看流策略的配置信息。
   display traffic-policy applied-record [ policy-name ]   // 查看指定流策略的应用记录;