购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 使用MQC分类

使用MQC对数据分类需要3个步骤,分别使用3个命令,如下所示。

① 使用class-map命令生成数据类。

② 使用policy-map命令标记数据(DSCP和CoS等),标记后的数据才能区分出不同的类别。

③ 把第2步设置的策略应用在入口上,使用的命令是service-policy input。当数据从接口进入时,应按照策略进行标记。

3.3.1 class-map命令

命令语法如下:

其中,

class-map-name :名字。

● match-all:当设定多个match条件时,满足所有条件的数据才是匹配的。

● match-any:当设定多个match条件时,数据满足一个条件即可。

match-criteria :设定的匹配条件。

如果在命令里既没有使用match-all,也没有使用match-any,系统默认使用的是match-all。

3.3.2 class-map示例

当设定匹配条件时,可以使用以下参数。

① ACL(名称或代码)。

access-group ——访问列表名称或代码。

例3-10:把两个ACL(subnet-a和subnet-b)定义的数据划归为一类。

② 任意数据。

③ 调用其他class-map,即calss-map嵌套。

class-name :其他class-map的名字。

例3-11:class2 调用class1。

④ CoS值。

cos-value :CoS值,最多4个。在同一个match语句里的多个值,匹配一个值即满足条件。

例3-12:把CoS=2 和CoS=3 的数据划归一类。

⑤ 目的MAC地址。

address :目的MAC地址(十六进制)。

例3-13:

⑥ 数据进入的接口。

interface-name :入口编号。

⑦ DSCP值。

dscp-value :DSCP值,最多7个。在同一个match语句里的多个值,匹配一个值即为满足条件。既可以匹配IPv4 数据包,也可以匹配IPv6 数据包。

例3-14:把DSCP=2,DSCP=3,DSCP=30,AF=11 的数据划归一类。

⑧ IP优先级。

ip-precedence-value :IP优先级值,最多4个值。在同一个match语句里的多个值,匹配一个值即满足条件。既可以匹配IPv4 数据包,也可以匹配IPv6 数据包。

⑨ 实时传输协议端口。

starting-port-number :起始端口号。

port-range :端口号范围,自起始端口号之后的端口号范围。

例3-15:匹配自端口号 2024 及其后 100 个端口号(2024~2124)。

⑩ MPLS标签。

exp-values :MPLS实验字段标记值。

反向选择条件。

match-criteria :不是该条件的其他情况都匹配。

例3-16:把不是RTP协议的数据归类。

协议。

● protocol-name:协议名称。

源MAC地址。

address :源MAC地址(十六进制)。

RTP(使用NBAR分类时使用的命令)。

● audio:音频数据。

● video:视频数据。

payload-type-code :数据类型代码。0~23 保留给音频数据,24~33 保留给视频数据,34~64 用户可以自定义。使用代码比仅使用“audio”或“video”关键词产生的匹配更严格。多个类型代码之间使用逗号分隔,也可以使用连线符表示代码区间。代码的表达形式可以是十进制、十六进制和二进制。

例3-17:匹配数据类型代码为 2,4,6,7~16 的音频数据。

提示: 根据IOS版本和设备平台的不同,支持的匹配条件会有所不同。这里并没有列出所有可用的匹配条件。读者在使用时请注意查阅产品文档和IOS版本。

3.3.3 policy-map命令

使用policy-map命令可对已经使用class-map命令分类的数据进行标记。

语法如下所述。

policy-name :自定义的名称。

class-name :使用class-map命令生成的数据类的名称。

● class-default:默认的数据类。系统把不属于任何分类的数据自动归为默认类。默认数据类不需要事先定义,直接调用即可。默认类数据的CoS=0,DSCP=0。

tag ——为数据设置的标记值。

标记值可以是以下几种。

① CoS值。

cos-value :CoS值,取值范围为 0~7。

② DSCP值。

ip-dscp-value :DSCP值,取值范围为 0~63。

③ IP优先级值。

ip-precedence-value :IP优先级值,取值范围为 0~7。

④ MPLS实验字段值。

value :实验字段值,取值范围为 0~7。

⑤ QoS组。

qos-group-value :用户自定义的组ID号,范围为 0~99。该命令的作用是把满足某条件的数据人为地划分到一个组里,以便在其他设备上识别。

⑥ 信任数据携带的标记值。

提示: 根据IOS版本和设备平台的不同,可被支持的命令有所不同。这里并没有列出所有的用法,请读者在使用的时候查阅产品文档和IOS版本。

3.3.4 policy-map示例

例3-18:对class1 的数据标记DSCP=AF21。

注意: 虽然没有调用class-default,系统仍然把非class1 的数据放置在class-default里,并设置DSCP=0(默认值)。

例3-19:设置音/视频数据的CoS=5,其他数据的CoS=1。

例3-20:设置class3 数据的DSCP=af11,class4 数据的DSCP=af21,class5 数据的DSCP=af31,不属于上述三个类别的数据的DSCP=af13。

3.3.5 service-policy命令

该命令把policy-map应用在接口上,对进入该接口的数据进行分类和标记。其语法如下所述。

policy-map-name :使用的policy-map的名字。

3.3.6 MQC应用示例

例3-21:交换机连接IP电话,桌面PC与IP电话相连。假设数据VLAN=10,地址为172.16.10.0/24;语音VLAN=100,地址为 192.168.100.0/24。

由于设置了class-default数据的DSCP=af13,该端口的CoS值由DSCP-CoS的映射表计算而得。

如果在端口上使用了“mls qos trust”命令,则该命令会在应用了service-policy命令后失效。

3.3.7 class-map 嵌套

class-map嵌套也叫做class-map调用,即由一个class-map语句调用另一个class-map语句,从而达到灵活分类数据的目的。

例3-22:class-map嵌套例子。

class4 使用的是match-any关键词,即匹配3个条件中任意一个条件的数据都是符合要求的。

class5 调用了class4,并且使用的是match-all关键词,这样的结果是匹配class4 中任意一个条件并且同时匹配class5 中其他条件的数据才是符合要求的。

policy-map命令调用的是class5,这样就产生了{[A or B or C]and D}的匹配结果。如果不使用class-map嵌套,在一个class-map里是不可能产生这样的结果的,因为在一个class-map里不能同时使用match-any 和match-all。程序如下所示。

3.3.8 policy-map嵌套

类似于class-map调用,policy-map也可以调用。policy-map嵌套形成的是具有分层结构的策略。

例3-23:policy-map嵌套。

在本例中,inner-class 匹配的条件是EXP=2,outer-class匹配的条件是 VLAN=203。Inner-policy的目的是把EXP=2 的数据更改为EXP=5。Outer-policy调用inner-policy,执行的结果放在VLAN203 中,EXP=2 的数据都被改写为EXP=5。

提示: inner-class定义的数据集合应该小于或等于outer-class定义的数据集合。

3.3.9 检查配置的命令

① 查看class-map的命令。

语法如下:

例3-24:查看名字叫ipp5 的class-map。

输出显示名字叫ipp5 的class-map使用的关键词是match-all,匹配的是IP优先级等于 5的数据包。

② 查看policy-map的命令。

语法如下:

例3-25:查看名字叫ipp5-policy的policy-map。

③ 查看接口上应用的policy-map。

语法如下:

例3-26:查看端口 5/36 上应用的policy-map。

输出显示该端口在入口方向(Input)上应用了名字叫Policy-1 的策略。Policy-1 调用了c-1(match access-group 100),有 38 437 个数据包匹配。没有数据匹配默认数据类。

提示: 根据设备平台和IOS版本的不同,命令的输出结果会有所不同。 6fu5zvfB4weAbjGmhRfHOQayTyYlmdnOSFc5tKEN0fY+qQD2EcJUHCsAAzVlCajj

点击中间区域
呼出菜单
上一章
目录
下一章
×