「QoS」- DiffServ:流分类、流标记

  CREATED BY JENKINSBOT

问题描述

流量的分类和标记是 QoS 的基础,是有区别地实施服务的前提。要实现差分服务,就需要对进入 DiffServ 域的流量按照一定的规则进行分类,然后根据不同类别的流量提供不同的服务;

解决方案

流量分类和标记:依据一定的匹配规则来识别对象,是有区别地实施服务的前提,通常作用在接口入方向;

原理简述

当报文在 DiffServ Domain 边界被分类之后,在网络的中间节点,就可以根据分类,对不同类别的流量给予差别服务。下游(downstream)节点可以选择使用上游(upstream)节点的分类结果,也可以按照自己的分类标准对数据流重新进行分类;

需要首先将数据包分为不同的类别或者设置为不同的优先级;

流分类

将数据包分为不同的类别,称为流分类,流分类并不修改原来的数据包;

简单流分类:根据报文的字段进行分类;通常在 DS Domain 中采用;
复杂流分类:通过复杂的规则(诸如 ACL 等等),最流流行分类;通常在信任边界设备(边界节点)采用;

流标记

将数据包设置为不同的优先级称为标记,而标记会修改原来的数据包。其中,标记分为内部标记和外部标记:

内部标记
1)标记报文在设备内部处理的服务等级(service-class)与丢弃优先级,让匹配的报文能够直接进入指定服务等级的队列,而不需要根据报文头中的优先级字段来确定服务等级;
2)标记报文的丢弃优先级也叫着色(color),是指在相同 service-class 的时候,入同一个队列,当此队列快拥塞的时候,可以通过 color 再进行差分服务,体现在缓存使用上的优先顺序;

外部标记
1)设置 / 改写报文的优先级字段,用于向下一台设备传递差分服务的 QoS 信息。其中,改写报文的优先级字段也称为“重标记-remark”;

概念术语

DS Domain / DS Node

WIP

在 DS Node 上,将执行复杂流分类;在 DS Domain 内将使用简单流分类;

信任边界

是边界设备,其上将进行流量分类;

配置案例

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

TODO !!! [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]     // 配置优先级映射表中的映射关系