交换机QOS实现
说明:此图为QOS的数据处理流程,下面将详细介绍每个步骤的功能作用。
1. Classifying:
将进入的数据流划分成以DSCP值来标识的各个数据流。
进入的数据流分为两类:非IP数据流和IP数据流,两种数据流的DSCP标识方法如下:
非IP数据流的DSCP标识
方法1:在入接口上使用policy-map设定,如下所示:
mac access-list
extended mac_acl
permit …
class-map mac_class
match access-group mac_acl
policy-map mac_policy
class mac_class
set ip cos 6
interface
Gi0/1
service-policy input mac_policy
获取的CoS信息会通过CoS-to-DSCP
MAP进行映射
从而使用DSCP对数据流进行标识
方法2:在入接口上开启端口信任模式为CoS,如果报文的二层头部中包含CoS,那么直接从报文中获取CoS值(Vlan
Tag字段中包含)
interface
Gi0/1
mls qos trust
cos
获取的CoS信息会通过CoS-to-DSCP
MAP进行映射
从而使用DSCP对数据流进行标识
方法3:在入接口上开启端口信任模式为CoS,如果报文的二层头部中不包含CoS,那么从报文的入接口的缺省
CoS值来获取报文的CoS值
interface
Gi0/1
mls qos trust
cos
mls qos cos
6
获取的CoS信息会通过CoS-DSCP
MAP进行映射
从而使用DSCP对数据流进行标识
注意事项:
一、方法2、3只有当端口的QoS
信任模式打开的时候才起作用。打开端口的QoS 的信任模式意味着不通过分析报文的内容,而直接从报文中或报文的输入端口上获得报文QoS 信息。
二、上面三种方法可能会同时作用于一个端口上。在这种情况下,上面三种归类方法按1、2、3
的优先级起作用。即先根据ACLs 归类,在归类失败的情况下,才有可能选择归方法2、3,在这个时候,如果端口的CoS 信任模式打开,则根据准则2 和3 直接从报文中或者从端口上获得CoS
信息;如果端口的QoS 信任模式关闭,那么那些归类失败的报文将被赋予DSCP 的缺省值0。
IP数据流的DSCP标识
方法1:在入接口上使用policy-map设定,如下所示:
ip access-list
extended ip_acl
permit …
class-map
ip_class
match access-group ip_acl
policy-map
ip_policy
class ip_class
set ip dscp 48
interface
Gi0/1
service-policy input ip_policy
方法2:在入接口上开启端口信任模式为ip-precedence,直接从IP报文头部获取
interface
Gi0/1
mls qos trust
ip-precedence
获取的ip-precedence信息会通过ip-prec-dscp
MAP
进行映射,从而使用DSCP对数据流进行标识
方法3:在入接口上开启端口信任模式为cos,
来获取报文的cos信息。分为两种情况:
1.如果二层头部中不包含cos,则根据入接口的缺省cos来获取该报文的cos信息
2.如果二层头部中包含cos,则直接从二层头部获取该报文的cos信息
interface
Gi0/1
mls qos trust
cos
mls qos cos
6
获取的cos信息会通过cos-dscp
MAP
进行映射,从而使用DSCP对数据流进行标识
方法4:在入接口上开启端口信任模式,模式为DSCP,直接从IP报文头部获取DSCP信息
interface
Gi0/1
mls qos trust
dscp
总结:Classifying:将进入的数据流划分成以DSCP值来标识的各个数据流
2. Policing:
发生在数据流分类完成后,用于约束被分类的数据流所占用的传输带宽。
Policing 动作检查被归类的数据流中的每一个报文,如果该报文超出了作用于该数据流的Police所允许的限制带宽,那么该报文将会被做特殊处理,它或者要被丢弃,或者要
被赋予另外的DSCP 值。
在QoS 处理流程中,Policing
动作是可选的。如果没有Policing 动作,那么用于标识被分类的数据流DSCP 值将不会作任何修改,报文也不会在送往Marking 动作之前被丢弃
police rate-bps
burst-byte [exceed-action {drop | dscp dscp-value}]
注意:同一个policy map应用于多个端口时,每个端口速率限制的带宽都是独立
3.Marking:
即标识,经过Classifying
和Policing 动作处理之后,为了确保被分类报文对应DSCP的值能够传递给网络上的下一跳设备,需要通过Marking 动作将为报文写入DSCP信息
4.Queueing:
即队列负责将数据流中报文送往端口的某个输出队列中,送往端口的不同输出队列的报文将获得不同等级和性质的传输服务策略。
每一个端口上都拥有8 个输出队列,通过设备上配置的DSCP-to-CoS
Map 和Cos-to-Queue Map 两张映射表来将报文的DSCP 值转化成输出队列号,以便确定报文应该被送往的输出队列
设备默认的DSCP-to-CoS
Map 和Cos-to-Queue Map 两张映射表
Cos 值到队列的默认映射表:cos-map
Ruijie#sh mls
qos queueing
Cos-queue map:
cos qid
--- ---
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
DSCP to CoS 的默认映射表:DSCP-to-CoS
Ruijie#sh mls
qos maps dscp-cos
dscp cos dscp cos dscp cos dscp cos
---- ---
---- ---
---- ---
---- ---
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 1
16 2
17 2
18 2
19 2
20 2
21 2
22 2 23 2
24 3
25 3
26 3
27 3
28 3
29 3
30 3
31 3
32 4
33 4
34 4
35 4
36 4
37 4
38 4
39 4
40 5
41 5
42 5
43 5
44 5
45 5
46 5
47 5
48 6
49 6
50 6
51 6
52 6
53 6
54 6
55 6
56 7
57 7
58 7
59 7
60 7
61 7
62 7
63 7
5.Scheduling:
即调度,为QoS 流程的最后一个环节。当报文被送到端口的不同输出队列上之后,设备将采用WRR
或者其它算法发送8 个队列中的报文。
可以通过设置WRR 算法的权重值来配置各个输出队列在输出报文的时候所占用的每循环发送报文个数,从而影响传输带宽。
或通过设置DRR 算法的权重值来配置各个输出队列在输出报文的时候所占用的每循环发送报文字节数,从而影响传输带宽。
由于各种业务的报文长度不一致,实际项目使用中,推荐使用DRR功能,能够实现更加符合预期的带宽分配比例。
SP队列类似于路由器的PQ队列,为绝对优先级的队列调度算法,8队列优先级最高,1号队列优先级最低;
SP+DRR/WRR队列类似于路由器的LLQ队列,带宽权重置零的队列为SP队列,带宽权重非零的队列则按照相应比例占用带宽。
在实际的项目部署中,对于语音业务或生产业务可以采用SP队列进行绝对优先调度,对于办公或视频监控业务可以按照带宽比例进行调度,则可以使用SP+DRR的方式。
配置方法:
1.选择输出队列调度算法
Ruijie(config)#
mls qos scheduler {sp | wrr | drr | }
2.配置输出队列的调度权重
当(WRR/DRR)权重值设置为0时,表示此队列进行SP调度,
如果要配置SP+DRR或SP+WRR 调度算法,配置举例如下:
Ruijie(config)#
mls qos scheduler drr ------>SP+WRR,SP+DRR均只需要设置为DRR或WRR即可
Ruijie(config)#
drr-queue bandwidth 1 1 1 1 2 2 3 0------>权重为0,则表示为SP队列
目前非11.X软件平台交换机SP+DRR/SP+WRR的调度方式存在2种行为:
A类交换机:
通过以下的举例来说明SP+DRR的调度算法:
例 1:
组类型 DRR0 SP DRR1 DRR1 DRR1 DRR1 DRR1 DRR1
队列 0 1 2 3 4 5 6 7
配置权重 1 0 1 1 3 1 1 1
DRR0和DRR1组可以分别看做成一个大队列,来参与队列间的SP调度,而DRR组内部队列则按照DRR模式来进行调度。
DDR1的5个队列优先级最高,只有等这5个队列全部为空时(这5个队列使用DRR进行调度),才会调度SP组,SP组对应的队列为空时,才调度DDR0。
例 2:
组类型 SP0 SP0 DRR0 DRR0 DRR0 SP1 DRR1 DRR1
队列 0 1 2 3 4 5 6 7
配置权重 0 0 1 2 3 0 1 1
与例1类似,我们可以将例2中的队列看成4个参加SP调度的队列:SP0、DRR0、SP1、DRR1。
DDR1的2个队列优先级最高;只有等DRR1的队列调度为空时,才会调度SP1组;SP1组对应队列为空时,才调度DDR0;只有等DRR0调度为空时,才会调度SP0组。
所以实际部署时,A类交换机如有有SP队列需要优先调度建议将其DSCP设置为最大,并映射到最后一个队列。(例如只有4个队列有数据,则SP队列映射到第4个队列,权重设置为0)
B类交换机:
SP组的队列优先级最高,只有SP组队列调度为空时,才调度DRR组队列
组类型 SP0 SP0 DRR0 DRR0 DRR0 SP1 DRR1 DRR1
队列 0 1 2 3 4 5 6 7
配置权重 0 0 1 2 3 0 1 1
调度的顺序跟A类交换机存在差异,先后顺序为SP1,SP0,其他的DRR队列则最后按照权重比进行调度。
说明:经过分析比较,该调度模式实现与芯片ASIC硬件实现有关,
A类交换机:(例如S26i/S26S、S29、S3760、S5760、S5750E、S6000,S6200,S7800系列等)。
B类交换机:(例如S23、S26/26E、S29E、S3250/3250E、S3760E、S5750、S6220、S8600、S12000系列等)。
目前11.X软件平台交换机SP+DRR/SP+WRR的调度方式为:
SP组的队列优先级最高,只有SP组队列调度为空时,才调度DRR组队列
组类型 SP0 SP0 DRR0 DRR0 DRR0 SP1 DRR1 DRR1
队列 0 1 2 3 4 5 6 7
配置权重 0 0 1 2 3 0 1 1
调度的顺序跟A类交换机存在差异,先后顺序为SP1,SP0,其他的DRR队列则最后按照权重比进行调度。