mlsqos // 在交换机上启用QOS
交换机的分类、标记、管制 2950、3550型
默认情况下,一台激活了QOS特性的交换机的默认动作是不信任边缘设备,并且任何进入该交换机的帧将其cos重写为最低优先级0。如果你信任你的边缘设备,不想对其所设置的cos做改动,哪么要做以下配置: 配置入站信任:
SW1(config-if)#mlsqos trust cos//信任接口进来流量的COS值,不做改动
SW1(config-if)#mlsqoscosdefault-cos//为接口设置一个默认COS值,在没有配置信任的情况下,所有进来的包都将被给予这个值。
SW1(config-if)#mlsqoscos override //本命令将接口进来的所有流量COS都设为默认值。这条命令和任何mlsqos trust 命令不能同时存在
默认情况下,交换机在进行QOS处理时,会使用内部DSCP值重新标记所有的分组,在没有设置入口信任的情况下,所有分组的优先级都会被设为0。
当外部进来的流量有三层标记时,如果想继续保留原有的标记不变。可以通过开启信任入站分组来实现。交换机会将外部进来的分组原有的标记映射到内部DSCP上。这样,在使用内部DSCP值重标记以后,每一个分组其实还是原有的标记不变。(详见下面默认映射表) u型吊臂如果你想改写入站分组的三层标记,还可以手工进行映射,将入站分组的优先级重新标记为另一个DSCP值,而不用默认的映射。(注意,是真正地改变了原有的标记)
SW1(config-if)#mlsqos trust dscp //信任DSCP,根据收到的DSCP值来设置内部的DSCP值
SW1(config-if)#mlsqos trust ip-precedence //基于收到的包的IP优先级来设置内部的DSCP
SW1(config-if)#mlsqos trust cos//基于收到的包的COS来设置内部的DSCP
SW1(config-if)#mlsqos trust device cisco-phone
默认映射表:
COS/IP DSCP
0 0
1 8
2 16
3 24
4 32
5 40
6 48
7 56
运维流程管理手工配置映射修改:
mlsqos map cos-dscp 0 8 16 24 32 46 48 56 //手工配置将进入包的每一个COS值映射到内部的DSCP上
mlsqos map dscp-cos 2 5 8 to 0 //将多个DSCP值映射为一个COS值
mlsqos map ip-prec-dscp 0 8 16 24 32 40 48 56
还可以将外部进入包的DSCP值映射到内部的一个不同的DSCP发光模组值上,这个叫DSCP突变
mlsqos map dscp-mutation DIFFSERV1-TO-DIFFSERV2 18 to 8
int f0/1
mlsqos trust dscp
mlsqosdscp-mutation DIFFSERV1-TO-DIFFSERV2
也可以使用CBMARKING为交换机某一接口进来的流量分类并设置优先级:
例一:在F0/1接口为VOIP流量设DSCP为50
access-list 100 permit udp any any range 16384 32767
class-map VOIP
match access-group 100
policy-map DSCP
class VOIP
setipdscp 50
int f0/1
service-policy input DSCP
总结:
1、交换机默认如果没开MLS QOS,不对IP包做任何处理
2、交换机开启了MLS QOS,默认不信任所收到包的原有标记,会将所有标记重写为0
3、开启MLS QOS后,如果又开启了信任,交换机会用内部DSCP值重新标记IP包
4、如果在接口开启了mlsqos trust cos,则交换机信任原有包的二层COS光碟制作,并根据COS在映射表中到对应的内部DSCP值来改写三层TOS,这也就是COS到TOS的映射。
5、如果在接口开启了mlsqos trust ip-precedence,则交换机信任原有包的IP优先级,并会根据这个IP优先级在映射表中到对应的内部DSCP值来重新标记三层TOS
6、如果在接口开启了mlsqos trust dscp,则交换机信任原有包的DSCP值,并会根据这个外部DSCP值在映射表中到对应的内部DSCP值来重新标记三层TOS
7、不管怎样,交换机一定会重写三层的TOS
交换机的入接口和出接口还可以进行流量管制,进行限速,丢弃包,或者降格包的优先级。
例二:在交换机的入接口,将优先级为5的流量限速为1M,超过的流量将优先级降为3
class-map match-all VOIP
matchip precedence 5
mlsqos map policed-dscp 5 to 3
policy-map WOLF
class VOIP
police 1000000 8000 exceed-action policed-dscp-transmit
int f0/1
service-policy input WOLF
WRRQ(Weighted Round-Robin加权轮询队列) 主要用于交换机的排队技术
MLS QOS在交换机上启用后,每一个端口都会自动开启WRRQ,WRRQ有四个队列,每个队列默认占用25%的带宽,采用循环的方式来调度。可以把第四个队列配置成绝对优先队列,只有绝对优先队列中的数据处理完成后,才会传输其它队列的数据。
配置实例:
需求:配置COS到队列的映射
将优先级为0、1的数据帧放入队列一中
将优先级为2、3的数据帧放入队列二中
将优先级为4、5的数据帧放入队列三中
将优先级为6、7的数据帧放入队列四中
SW1(config)#mlsqos启用命令,必须打上
SW1(config)#int f0/1
SW1(config-if)#wrr-queue cos-map 1 0 1 //定义队列映射表,将cos 0和1映射到队列1
SW1(config-if)#wrr-queue cos-map 2 2 3
SW1(config-if)#wrr-queue cos-map 3 4 5
SW1(config-if)#wrr-queue cos-map 4 6 7
自动擦鞋机SW1#sh mlsqosint f0/1 queueing //查看
也可以根据DSCP值将流量分组映射到不同的队列:
int f0/1
wrr-queuedscp-map 1 12 20 28 36
wrr-queue dscp-map 2 8 10 16 18 //这里要注意一个语句最多只能写8个值,如果还有更多值,需要再写一条语句
可以配置四个队列的权值,使其得到不同的带宽服务,每一个队列得到的带宽百分比是自已的权值除以所有队列的权值之和。
SW1(config-if)#wrr-queue bandwidth 2 4 3 1
队列1得到20%的带宽
队列2得到40%的带宽
队列3得到30%的带宽
队列4得到10%的带宽
int f0/1
priority-queue out //启用绝对优先队列,固定为4号队列
wrr-queue queue-limit //修改队列限制,默认每个队列分配25%的缓存
wrr-queue dscp-map 1 12 20 //将DSCP值为12、20的包映射到到阀值1(详见端到端
QOS的181页)
在配置队列丢弃阀值时有两种方法:
1、尾丢弃
2、WRED
int f0/1
wrr-queue threshold //修改分配给四个出口队列的两个尾丢弃阀值的百分比,默认两个都是100%
wrr-queue random-detect max-threshold 1 40 100 //对队列启用WRED,并且可修改四个队列的两个丢弃阀值的百分比
上例中对队列一启用了WRED,并设置两个阀值,一个是40%,一个是100%
还可将不同的DSCP值映射到一个阀值ID,当这个阀值达到时,所有这些DSCP值的包就会被随机丢弃
int g0/1
wrr-queue dscp-map 1 12 20 28 36 //DSCP值12、20、28、36被映射到第一个阀值
==============================================================
SRRQ
3560/3750交换机与3550在QOS上的主要不同就是排队,3560/3750支持入口调度。并且入口队列只支持共享模式。
在3560的交换机上支持SRR队列(共享循环队列),跟WRR类似,只不过多了一个整形模式。
SRR支持两种拥塞管理模式:
1、整形模式
2、共享模式
整形模式:在此模式中,出站队列可以被整形到接口带宽的准确比例。类似于限速。也就是说,每一个队列的流量不能超过指定速率。即使其他队列有多余带宽也不行。
共享模式:在此模式中,队列根据已经配置的权重来共享他们之间的带宽,出站队列不局限于本队列带宽,如果其他队列有空余带宽未用,可以占用。
如果要使用整形模式,用以下命令配置各队列带宽:
int f0/1
化学浆糊srr-queue bandwidth shape 1 2 3 4
注意:如果一个队列的权重配置为0,则本队列工作在共享模式,并使用以下命令所指定的权重:
int f0/1
srr-queue bandwidth share 1 2 3 4