Technical documentation
发布日期:2022-06-10 浏览次数:3951 来源:杨广成
思科EI CCIE企业基础架构-交换机QOS总结(WRRQ、SRRQ)
思科EI CCIE企业基础架构基础课程入门学习,联系WOLFLAB网络实验室,预约免费试听
mls qos // 在交换机上启用QOS
默认情况下,一台激活了QOS特性的交换机的默认动作是不信任边缘设备,并且任何进入该交换机的帧将其cos重写为最低优先级0。如果你信任你的边缘设备,不想对其所设置的cos做改动,哪么要做以下配置:
配置入站信任:
SW1(config-if)#mls qos trust cos //信任接口进来流量的COS值,不做改动
SW1(config-if)#mls qos cos default-cos //为接口设置一个默认COS值,在没有配置信任的情况下,所有进来的包都将被给予这个值。
SW1(config-if)#mls qos cos override //本命令将接口进来的所有流量COS都设为默认值。这条命令和任何mls qos trust 命令不能同时存在
默认情况下,交换机在进行QOS处理时,会使用内部DSCP值重新标记所有的分组,在没有设置入口信任的情况下,所有分组的优先级都会被设为0。
当外部进来的流量有三层标记时,如果想继续保留原有的标记不变。可以通过开启信任入站分组来实现。交换机会将外部进来的分组原有的标记映射到内部DSCP上。这样,在使用内部DSCP值重标记以后,每一个分组其实还是原有的标记不变。(详见下面默认映射表)
如果你想改写入站分组的三层标记,还可以手工进行映射,将入站分组的优先级重新标记为另一个DSCP值,而不用默认的映射。(注意,是真正地改变了原有的标记)
SW1(config-if)#mls qos trust dscp //信任DSCP,根据收到的DSCP值来设置内部的DSCP值
SW1(config-if)#mls qos trust ip-precedence //基于收到的包的IP优先级来设置内部的DSCP
SW1(config-if)#mls qos trust cos //基于收到的包的COS来设置内部的DSCP
SW1(config-if)#mls qos trust device cisco-phone
默认映射表:
COS/IP DSCP
0 0
1 8
2 16
3 24
4 32
5 40
6 48
7 56
手工配置映射修改:
mls qos map cos-dscp 0 8 16 24 32 46 48 56 //手工配置将进入包的每一个COS值映射到内部的DSCP上
mls qos map dscp-cos 2 5 8 to 0 //将多个DSCP值映射为一个COS值
mls qos map ip-prec-dscp 0 8 16 24 32 40 48 56
还可以将外部进入包的DSCP值映射到内部的一个不同的DSCP值上,这个叫DSCP突变
mls qos map dscp-mutation DIFFSERV1-TO-DIFFSERV2 18 to 8
int f0/1
mls qos trust dscp
mls qos dscp-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
set ip dscp 50
int f0/1
service-policy input DSCP
EI CCIE企业基础架构课程循环开班
总结:
1、交换机默认如果没开MLS QOS,不对IP包做任何处理
2、交换机开启了MLS QOS,默认不信任所收到包的原有标记,会将所有标记重写为0
3、开启MLS QOS后,交换机会用内部DSCP值重新标记IP包
4、如果在接口开启了mls qos trust cos,则交换机信任原有包的二层COS,并根据COS在映射表中找到对应的内部DSCP值来改写三层TOS
5、如果在接口开启了mls qos trust ip-precedence,则交换机信任原有包的IP优先级,并会根据这个IP优先级在映射表中找到对应的内部DSCP值来重新标记三层TOS
6、如果在接口开启了mls qos trust dscp,则交换机信任原有包的DSCP值,并会根据这个DSCP值在映射表中找到对应的内部DSCP值来重新标记三层TOS
7、不管怎样,交换机一定会重写三层的TOS
交换机的入接口和出接口还可以进行流量管制,进行限速,丢弃包,或者降格包的优先级。
例二:在交换机的入接口,将优先级为5的流量限速为1M,超过的流量将优先级降为3
class-map match-all VOIP
match ip precedence 5
mls qos 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加权轮询队列)
主要用于交换机的排队技术
WRRQ在交换机上启用后,每一个端口下都有四个队列,每个队列默认占用25%的带宽,采用轮询的方式来调度。可以把第四个队列配置成绝对优先队列,只有绝对优先队列中的数据处理完成后,才会传输其它队列的数据。
配置实例:
需求:配置COS到队列的映射
将优先级为0、1的数据帧放入队列一中
将优先级为2、3的数据帧放入队列二中
将优先级为4、5的数据帧放入队列三中
将优先级为6、7的数据帧放入队列四中
SW1(config)#mls qos 启用命令,必须打上
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 mls qos int f0/1 queueing //查看
也可以根据DSCP值将流量分组映射到不同的队列:
int f0/1
wrr-queue dscp-map 1 12 20 28 36
wrr-queue dscp-map 2 8 10 16 18 //这里要注意一个语句最多只能写8个值,如果还有更多值,需要再写一条语句
可以配置四个队列的权值,使其得到不同的带宽服务,每一个队列得到的带宽百分比是自已的权值除以所有队列的权值之和。
SW1(config-if)#wrr-queue bandwidth 1 2 3 4
队列1得到10%的带宽
队列2得到20%的带宽
队列3得到30%的带宽
队列4得到40%的带宽
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
例:
int f0/1
srr-queue bandwidth shape 20 0 0 0
srr-queue bandwidth share 20 30 25 25
注意:在SRRQ中,也有一个优先级队列,也叫做加速队列,固定就是1号队列。而在WRRQ中,队列4才是加速队列。
int f0/1
priority-queue out //PQ启用后,分配给它的共享权重就无意义了,因为总是优先为它传递流量,且没有限制,除非做了整形限制
By default, packets with a DSCP value of CS5 (decimal 40) are mapped to queue 1. Because the video media streams are marked DSCP CS5, the video traffic is serviced by the priority queue.
WTD
SRRQ的队列可以使用一个尾丢弃拥塞避免机制的增强版本,加做加权的尾丢弃WTD
WTD可以根据已分配的COS或DSCP值将帧分配给不同的阀值。如果队列中的包达到了阀值,就丢弃帧。
每个队列最多三个阀值,其中有两个是可配置的,第三个是不可配置的,并且预设为队列满状态时才进行丢弃。
mls qos queue-set output 1 buffers 35 30 25 10 //创建一个队列集,并为每个队列配置缓存的分配
mls qos queue-set output 1 threshold 2 40 100 100 100 //为队列2设置丢弃阀值
int f0/1
queue-set 1 //调用一个队列集
使用COS或DSCP到队列/ 阀值的映射:
mls qos srr-queue output dscp-map queue 1 threshold 1 46
mls qos srr-queue output dscp-map queue 2 threshold 1 24 26
mls qos srr-queue output dscp-map queue 2 threshold 2 35 38
mls qos srr-queue output dscp-map queue 3 threshold 1 10
mls qos srr-queue output dscp-map queue 4 threshold 1 12 15
mls qos srr-queue output dscp-map queue 4 threshold 2 20
也可以不管阀值,只将DSCP映射到队列:
mls qos srr-queue output dscp-map queue 1 46
还可以在入队列做映射,不过每个接口只有两个入队列:
EI CCIE企业基础架构基础课程预约免费试听