本文转自:http://www.edify.com.cn/html/article/162.html
使用MQC分类
使用MQC对数据分类需要3个步骤,分别使用3个命令,如下所示。
(1)使用class-map命令生成数据类。
(2)使用policy-map命令标记数据(DSCP,CoS等),标记后的数据才能区分出不同的类别。
(3)把第2步设置的策略应用在入口上,使用的命令是service-policy input。当数据从接口进入时,应按照策略进行标记。
class-map 命令
命令语法如下:
Border_A(config)# class-map [match-all | match-any] class-map-name
Border_A(config-cmap)# match {match- criteria} 其中,
class-map-name–名字。
match-all–当设定多个match条件时,满足所有条件的数据才是匹配的。
match-any–当设定多个match条件时,数据满足一个条件即可。
match-criteria–设定的匹配条件。
如果在命令里既没有使用match-all,也没有使用match-any,系统默认使用的是match-all
class- map 示例(1)
当设定匹配条件时,可以使用以下参数。
(1)ACL(名称或代码)。
Border_A (config-cmap)# match access-group access-group access-group–访问列表名称或代码。
例3-10:把两个ACL(subnet-a和subnet-b)定义的数据划归为一类。
Router1(config)# ip access-list extended subnet-a
Router1(config-std-nacl)# permit ip 192.168.200.0 0.0.0.255 any
Router1(config-std-nacl)# end
Router1(config)# ip access-list extended subnet-b
Router1(config-std-nacl)# permit ip 192.168.300.0 0.0.0.255 any
Router1(config)# class-map match-any class1
Router1(config-cmap)# match access-group subnet-a
Router1(config-cmap)# match access-group subnet-b
Router1(config-cmap)# exit
(2)任意数据。
Border_A (config-cmap)# match any
(3)调用其他class-map,即calss-map嵌套。
Border_A( config-cmap)# match class-map class-name class-name–其他class-map的名字。
例3-11:class2 调用class1。
Router1(config)# class-map match-any class2
Router1(config-cmap)# match class-map class1
Router1(config-cmap)# exit
(4)CoS值。
Border_A (config-cmap)# match cos cos-value1[cos-value2 [cos-value3 [cos-value4]]] cos-value–CoS值,最多4个。在同一个match语句里的多个值,匹配一个值即满足条件。
例3-12:把CoS=2和CoS=3的数据划归一类。
Router1(config)# class-map match-all class3
Router1(config-cmap)# match cos 2 3
Router1(config-cmap)# exit
(5)目的MAC地址。
Border_A (config-cmap)# match destination-address mac address address–目的MAC地址(十六进制)。
例3-13:
Router1(config)# class-map match-any class4
Router1(config-cmap)# match destination-address mac 00:01:0c:00:12:34
Router1(config-cmap)# exit
(6)数据进入的接口。
Border_A (config-cmap)# match input-interface interface-name interface-name–入口编号。
(7)DSCP值。
Border_A (config-cmap)# match dscp dscp-value dscp-value–DSCP值,最多7个。在同一个match语句里的多个值,匹配一个值即为满足条件。既可以匹配IPv4数据包,也可以匹配IPv6数据包。
例3-14:把DSCP=2,DSCP=3,DSCP=30,AF=11的数据划归一类。
Router1(config)# class-map match-all class5
Router1(config-cmap)# match dscp 2 3 30 af11
Router1(config-cmap)# exit
(8)IP优先级。
Border_A (config-cmap)# match precedence ip-precedence-value ip-precedence-value–IP优先级值,最多4个值。在同一个match语句里的多个值,匹配一个值即满足条件。既可以匹配IPv4数据包,也可以匹配IPv6数据包。
(9)实时传输协议端口。
Border_A (config-cmap)# match ip rtp starting-port-number port-range starting-port-number–起始端口号。
port-range–端口号范围,自起始端口号之后的端口号范围。
例3-15:匹配自端口号2024及其后100个端口号(2024~2124)。
Router1(config)# class-map match-all class6
Router1(config-cmap)# match ip rtp 2024 100
Router1(config-cmap)# exit (10)MPLS标签。
Border_A (config-cmap)# match mpls experimental topmost exp-values exp-values–MPLS实验字段标记值。
(11)反向选择条件。
Border_A (config-cmap)# match not match-criteria match-criteria–不是该条件的其他情况都匹配。
例3-16:把不是RTP协议的数据归类。
Router1(config)# class-map match-all class7
Router1(config-cmap)# match not rtp
Router1(config-cmap)# exit (12)协议。
Border_A (config-cmap)# match protocol protocol-name protocol-name–协议名称。
(13)源MAC地址。
Border_A (config-cmap)# match source-address mac address address–源MAC地址(十六进制)。
(14)RTP(使用NBAR分类时使用的命令)。
Border_A (config-cmap)# match protocol RTP [ audio | video | payload-type payload-type-code ] audio–音频数据。
video–视频数据。
payload-type-code–数据类型代码。0~23保留给音频数据,24~33保留给视频数据,34~64用户可以自定义。使用代码比仅使用”audio”或”video”关键词产生的匹配更严格。多个类型代码之间使用逗号分隔,也可以使用连线符表示代码区间。代码的表达形式可以是十进制、十六进制和二进制。
例3-17:匹配数据类型代码为2,4,6,7~16的音频数据。
Router1(config)# class-map class8
Router1(config-cmap)# match protocol rtp palyload-type 2,4,6,0×7-0x10
Router1(config-cmap)# exit 提示:根据IOS版本和设备平台的不同,支持的匹配条件会有所不同。这里并没有列出所有可用的匹配条件。读者在使用的时候请注意查阅产品文档和IOS版本。
评论