QoS配置——MQC和基于ACL的简化流策略
简介
QoS(Quality of Service,服务质量)是有效管理网络资源的技术。在有限的带宽资源下,它允许不同的流量不平等地竞争网络资源,语音、视频和重要的数据应用在网络设备中可以优先得到服务。S系列交换机支持配置基于差分服务模型(DiffServ,Differentiated Services)的QoS业务。DiffServ模型的基本原理是将网络中的流量分成多个类,每个类享受不同的处理,尤其是网络出现拥塞时不同的类会享受不同级别的处理。
MQC(Modular QoS Command-Line Interface)和基于ACL的简化流策略作为QoS的重要配置方法,支持将具有某类共同特征的报文划分为一类,为不同类的流量提供有差别的服务。借助MQC和基于ACL的简化流策略,用户可以对报文进行分类,并且完成流量监管、重标记报文优先级、报文过滤、重定向、流量统计等常见QoS业务的配置。
本文档介绍了MQC和基于ACL的简化流策略的配置方法,并通过对比给出两者之间的选择依据。
配置MQC
MQC是一种配置方法,它通过配置流分类、流行为、流策略和应用流策略来完成QoS业务的配置。
MQC配置思路
如图1-1所示,配置MQC包括以下步骤:
- 配置流分类:流分类用来定义一组流量匹配规则,用于对报文进行分类。使用traffic classifier classifier-name [ operator { and | or } ]命令创建流分类并进入流分类视图,在流分类视图下通过if-match开头的命令定义匹配规则。例如:
<HUAWEI> system-view [HUAWEI] traffic classifier c1 //创建流分类c1,并进入流分类视图 [HUAWEI-classifier-c1] if-match vlan-id 10 //在流分类中,指定匹配VLAN ID为10的报文 [HUAWEI-classifier-c1] quit //返回系统视图
- 配置流行为:流行为用来定义针对某类报文所做的动作,例如报文过滤、重定向、流量监管、流量统计等。
使用traffic behavior behavior-name命令创建流行为并进入流行为视图,在流行为视图下通过deny、permit、redirect、car、remark等命令定义动作。例如:
[HUAWEI] traffic behavior b1 //创建流行为b1,并进入流行为视图 [HUAWEI-behavior-b1] statistic enable //在流行为中,指定执行流量统计动作 [HUAWEI-behavior-b1] quit //返回系统视图
- 配置流策略:在流策略中将指定的流分类和指定的流行为绑定,实现对分类后的报文执行对应流行为中定义的动作。使用命令traffic policy policy-name创建流策略并进入流策略视图,在流策略视图下通过classifier classifier-name behavior behavior-name命令绑定流分类和流行为。例如:
[HUAWEI] traffic policy p1 //创建流策略p1,并进入流策略视图 [HUAWEI-trafficpolicy-p1] classifier c1 behavior b1 //将流分类c1与流行为b1进行绑定 [HUAWEI-trafficpolicy-p1] quit //返回系统视图
每个流策略支持绑定一对或多对流分类和流行为。
单个流策略下,一个流分类只能绑定一个流行为,而一个流行为可以与一个或多个流分类绑定。
- 应用流策略:将流策略应用到全局、接口或VLAN。应用流策略后,设备将对通过全局、接口或VLAN且匹配流分类规则的报文执行流行为中的动作。在接口或VLAN视图下使用命令traffic-policy policy-name { inbound | outbound },可以将流策略应用到接口或VLAN;在系统视图下使用命令traffic-policy policy-name global { inbound | outbound } [ slot slot-id ],可以流策略应用到全局。例如:
[HUAWEI] interface GigabitEthernet0/0/1 //进入接口视图 [HUAWEI-GigabitEthernet0/0/1] traffic-policy p1 inbound //应用流策略p1 [HUAWEI-GigabitEthernet0/0/1] quit //返回系统视图
全局、每个接口或每个VLAN的每个方向上能且只能应用一个流策略。在接口视图、系统视图或VLAN视图下执行traffic-policy命令应用流策略时,需要通过参数inbound或outbound指定对入方向报文(即设备接收的报文)或出方向报文(即设备发出的报文)实施策略控制。
支持应用流策略的接口包括物理接口、以太网子接口、Eth-Trunk接口、Eth-Trunk子接口、端口组和VLANIF接口。
流分类中的匹配规则
流分类通过if-match命令配置匹配规则,一个流分类中可以定义多个匹配规则。
常用的流分类匹配规则包括:MAC地址、802.1p优先级、EXP优先级、IP优先级、DSCP优先级、VLAN ID、ACL、ACL6、所有报文、出接口、入接口、流ID和VXLAN报文的VNI ID。
or:报文只要匹配了流分类中的一个规则,设备就认为报文属于此类。
以下示例中,流分类的规则间的关系为or。只要报文的VLAN ID为10,或报文的入接口为GE0/0/1,或报文匹配ACL 3000,或报文匹配ACL 3001,报文就属于该流分类。# traffic classifier c2 operator or //指定流分类c2中各规则之间的关系为or if-match vlan-id 10 //匹配VLAN ID为10的报文 if-match inbound-interface GigabitEthernet0/0/1 //匹配入接口为GE0/0/1的报文 if-match acl 3000 //匹配ACL 3000的报文 if-match acl 3001 //匹配ACL 3001的报文 #
and:当流分类中没有ACL规则时,报文必须匹配所有规则才属于该类;当流分类中包含ACL规则时,报文必须匹配其中一条ACL规则以及所有非ACL规则才属于该类。
以下示例中,流分类的规则间的关系为and。只有报文的VLAN ID为10,入接口为GE0/0/1,且报文匹配ACL 3000或ACL 3001时,报文才属于流分类c2。# traffic classifier c2 operator and //指定流分类c2中各规则之间的关系为and if-match vlan-id 10 //匹配VLAN ID为10的报文 if-match inbound-interface GigabitEthernet0/0/1 //匹配入接口为GE0/0/1的报文 if-match acl 3000 //匹配ACL 3000的报文 if-match acl 3001 //匹配ACL 3001的报文 #
流行为中的动作
每个流行为下支持定义多个动作,各动作对应具体的QoS业务。只要各动作不冲突,都可以在同一流行为中配置,并且这些动作同时生效。
流行为中的动作 |
命令关键字 |
说明 |
---|---|---|
报文过滤 |
deny | permit |
为匹配ACL规则的报文指定报文过滤动作时,如果ACL中的rule规则配置为permit,则设备对此报文采取的动作由流行为中配置的deny或permit决定;如果此ACL中的rule规则配置为deny,则无论流行为中配置了deny或permit,此报文都被丢弃。 |
流量统计 |
statistic enable |
后续执行display traffic policy statistics命令查看应用流策略后报文通过和被丢弃的统计情况,有助于进行相关的故障诊断与排查。 |
重标记 |
remark |
改变报文的802.1p优先级、DSCP优先级、IP优先级、VLAN ID、流ID和目的MAC地址等。 |
重定向和策略路由 |
redirect |
为报文重新指定路径或方向,转发到指定的位置进行处理。 |
流量监管和层次化流量监管 |
car |
主动丢弃超出速率限制的流量,使输入或输出的流量被限制在一个合理的范围之内。 |
流镜像 |
mirroring |
将符合指定规则的报文流复制到观察端口。 |
灵活QinQ |
add-tag vlan-id |
为报文添加外层VLAN Tag。 |
禁止MAC地址学习 |
mac-address learning disable |
设备在收到数据帧时将不会进行MAC地址的学习。 |
禁止URPF检查 |
ip urpf disable |
不对某些报文进行URPF检查,从而使其不被丢弃。 |
配置基于ACL的简化流策略
- 配置ACL:创建ACL,并配置ACL的rule规则。在系统视图下使用命令acl创建ACL并进入ACL视图,在ACL视图下使用命令rule配置ACL的rule规则。例如:
[HUAWEI] acl 4000 //创建ACL 4000,并进入二层ACL视图 [HUAWEI-acl-L2-4000] rule 5 permit source-mac 0000-0000-0003 //定义rule规则:匹配源MAC为0000-0000-0003的报文 [HUAWEI-acl-L2-4000] quit //返回系统视图
- 基于ACL的简化流策略支持匹配的ACL如表1-2所示。
表1-2 基于ACL的简化流策略支持的ACL
分类
适用的IP版本
规则定义描述
编号范围
基本ACL
IPv4
仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则。
2000~2999
高级ACL
IPv4
既可使用IPv4报文的源IP地址,也可使用目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。
3000~3999
二层ACL
IPv4和IPv6
使用报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、二层协议类型等。
4000~4999
用户自定义ACL
IPv4和IPv6
使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则,即以报文头为基准,指定从报文的第几个字节开始与字符串掩码进行“与”操作,并将提取出的字符串与用户自定义的字符串进行比较,从而过滤出相匹配的报文。
5000~5999
用户ACL
IPv4
既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。
6000~9999
基本ACL6
IPv6
可使用IPv6报文的源IPv6地址、分片信息和生效时间段来定义规则。
2000~2999
高级ACL6
IPv6
可以使用IPv6报文的源IPv6地址、目的IPv6地址、IPv6协议类型、ICMPv6类型、TCP源/目的端口、UDP源/目的端口号、生效时间段等来定义规则。
3000~3999
基于ACL的简化流策略支持在ACL中定义绝大多数的rule规则。例外情况包括:ACL规则匹配报文的VPN实例名称会导致基于ACL的简化流策略下发失败。
- 基于ACL的简化流策略支持匹配的ACL如表1-2所示。
- 给匹配ACL的报文指定执行动作:在全局、VLAN或者接口上,对匹配ACL的报文执行相应的动作。例如:
[HUAWEI] interface GigabitEthernet0/0/1 //对接口GE0/0/1下的报文执行简化流策略 [HUAWEI-GigabitEthernet0/0/1] traffic-statistic inbound acl 4000 //对匹配ACL 4000的入方向报文执行流量统计动作 [HUAWEI-GigabitEthernet0/0/1] quit //返回系统视图
系统视图和接口视图下支持执行的动作如表1-3所示。若需在指定VLAN上实现基于ACL的简化流策略,则在系统视图下执行相关命令时指定参数vlan vlan-id即可。
表1-3 支持执行的动作常用动作
常用命令关键字
说明
报文过滤
traffic-filter
如果ACL中的rule规则配置为permit,则设备允许报文通过;如果ACL中的rule规则配置为deny,则设备丢弃报文。
流量监管
traffic-limit
丢弃超出速率限制的流量。
流镜像
traffic-mirror
将匹配ACL的报文流复制到观察端口。
流量统计
traffic-statistic
后续执行display traffic-statistics命令查看当前匹配ACL规则的报文的通过和丢弃情况,有助于进行相关的故障诊断与排查。
重定向
traffic-redirect
为报文重新指定路径或方向,转发到指定的位置进行处理。
重标记
traffic-remark
改变报文的802.1p优先级、DSCP优先级、IP优先级和VLAN ID等。
若基于用户ACL,则设备仅支持在系统视图下配置报文过滤、重定向和重标记。
MQC与基于ACL的简化流策略的对比
作为QoS业务的常用配置方法或配置工具,MQC和基于ACL的简化流策略都支持将流量分类,并为不同类的报文指定不同的动作。
相较于MQC,基于ACL的简化流策略逻辑简单、配置简洁,一般情况下推荐配置基于ACL的简化流策略。
如果流量的匹配规则无法通过ACL定义,或者需要对报文执行除报文过滤、流量监管、流镜像、重定向、重标记和流量统计以外的动作,此时应选择配置MQC。
支持配置的QoS业务对比
将匹配规则和动作进行组合,可以完成QoS业务配置。与基于ACL的简化流策略相比,MQC支持更多的匹配规则和动作,因此MQC支持完成更多的QoS业务配置。
- 二者都支持将ACL作为匹配规则。
- 二者都支持报文过滤、重标记报文优先级、重标记VLAN ID、重标记目的MAC地址、重定向、流量统计、流量监管、流镜像等动作。
- 仅基于ACL的简化流策略支持对匹配用户ACL的报文进行报文过滤、重定向和重标记。
- 仅MQC支持VLAN ID、IP优先级、DSCP优先级、802.1p优先级、EXP优先级、流ID、应用名称、目的MAC地址、源MAC地址、入接口、出接口、以太网帧头中协议类型字段等匹配规则。
- 仅MQC支持重标记流ID、层次化流量监管、禁止MAC地址学习、灵活QinQ、取消ACL或ACL6中deny规则等动作。
配置灵活程度对比
- 每个流分类支持定义一个或多个匹配规则,每个流行为支持定义一个或多个动作。
- 每个流策略下的每个流分类仅支持绑定一个流行为,而一个流行为可以与不同的流分类绑定。
- 每个流策略下支持一组或多组流分类与流行为的绑定。
而基于ACL的简化流策略,仅支持指定匹配单个ACL或同时匹配二层ACL和三层ACL,并对匹配指定条件的报文执行报文过滤、重标记、重定向、流量统计或流镜像动作。大多数情况下,如果要对同一类报文执行不同动作,就需要为每个动作分别配置一次基于ACL的简化流策略。例如,对全局匹配ACL 3000的入方向报文执行流量监管和流量统计,需要在系统视图下执行命令traffic-limit inbound acl 3000 cir cir-value和traffic-statistic inbound acl 3000。但也有例外情况,例如配置基于ACL的流量监管时,指定参数remark-8021p或remark-dscp,就可以同时实现重标记报文的802.1p优先级或DSCP优先级。
配置简易程度对比
相较于MQC,配置基于ACL的简化流策略要简单得多。基于ACL的简化流策略仅仅是在系统视图或接口视图下执行traffic-limit、traffic-filter或traffic-redirect等命令,同时在该命令中调用已存在的ACL,而MQC至少需要完成配置流分类、配置流行为、配置流策略、应用流策略这四个配置步骤。
使用实例对比
以下示例默认已实现网络互连互通,仅提供QoS的相关配置。
示例一:不同网段间限制互访
业务需求:设备的接口GE0/0/1、GE0/0/2和GE0/0/3分别连接到网段A(192.168.1.1/24)、网段B(192.168.2.1/24)和网段C(192.168.3.1/24),三个网段之间通过此设备进行通信。当前希望允许网段A能够访问网段B,但不允许网段A访问网段C。
# acl number 3001 rule 5 deny ip source 192.168.1.1 0.0.0.255 destination 192.168.3.1 0.0.0.255 rule 10 permit ip source 192.168.1.1 0.0.0.255 destination 192.168.2.1 0.0.0.255 # traffic classifier c1 operator or if-match acl 3001 # traffic behavior b1 permit # traffic policy p1 match-order config classifier c1 behavior b1 # interface GigabitEthernet0/0/1 traffic-policy p1 inbound #
# acl number 3001 rule 5 deny ip source 192.168.1.1 0.0.0.255 destination 192.168.3.1 0.0.0.255 rule 10 permit ip source 192.168.1.1 0.0.0.255 destination 192.168.2.1 0.0.0.255 # interface GigabitEthernet0/0/1 traffic-filter inbound acl 3001 #
结论:本示例中,业务需求简单,推荐使用基于ACL的简化流策略进行配置。
示例二:对不同业务报文配置流量监管并重标记优先级
- 在SwitchA上对不同业务的报文分别进行流量监管,以将流量限制在一个合理的范围之内,并保证各业务的带宽需求。
- 在SwitchA中还需要重标记不同业务报文的DSCP优先级,以便于路由器按照三类报文的不同优先级分别进行处理。其中,语音业务对服务质量要求最高,视频业务次之,数据业务要求最低。
- 在SwitchA上对三类业务报文配置流量统计,便于后续执行display traffic policy statistics命令查看应用流策略后报文通过和被丢弃的统计情况。
#
traffic classifier c1 operator or
if-match vlan-id 120
traffic classifier c2 operator or
if-match vlan-id 110
traffic classifier c3 operator or
if-match vlan-id 100
#
traffic behavior b1
car cir 2000 pir 10000 cbs 250000 pbs 1250000 green pass yellow pass red discard //对红色、黄色和绿色报文采用缺省配置,绿色、黄色报文被允许通过,红色报文被丢弃。下同。
remark dscp ef
statistic enable
traffic behavior b2
car cir 4000 pir 10000 cbs 500000 pbs 1250000 green pass yellow pass red discard
remark dscp af33
statistic enable
traffic behavior b3
car cir 4000 pir 10000 cbs 500000 pbs 1250000 green pass yellow pass red discard
remark dscp af13
statistic enable
#
traffic policy p1 match-order config
classifier c1 behavior b1
classifier c2 behavior b2
classifier c3 behavior b3
#
interface GigabitEthernet0/0/1
traffic-policy p1 inbound
#
# acl number 4001 rule 5 permit vlan-id 120 acl number 4002 rule 5 permit vlan-id 110 acl number 4003 rule 5 permit vlan-id 100 # interface GigabitEthernet0/0/1 traffic-limit inbound acl 4001 cir 2000 pir 10000 cbs 250000 pbs 1250000 traffic-remark inbound acl 4001 dscp ef traffic-statistic inbound acl 4001 traffic-limit inbound acl 4002 cir 4000 pir 10000 cbs 500000 pbs 1250000 traffic-remark inbound acl 4002 dscp af33 traffic-statistic inbound acl 4002 traffic-limit inbound acl 4003 cir 4000 pir 10000 cbs 500000 pbs 1250000 traffic-remark inbound acl 4003 dscp af13 traffic-statistic inbound acl 4003 #
结论:本示例中,MQC的配置逻辑清晰,便于在此基础上增加或修改匹配规则和动作,同时可以免去配置ACL。而基于ACL的简化流策略,对于熟悉ACL的用户而言,更加易于理解和配置。