.1
QoS简介QoS的一些术语和概念。
流即业务流(traffic),指所有通过交换机的报文。
流分类(traffic classification)是指采用一定的规则识别出符合某类特征的报文。分类规则(classification rule)指配置管理员根据管理需求配置的过滤规则。分类规则可以很简单,比如可根据IP报文头的ToS字段,识别出有不同优先级特征的流量;也可以很复杂,如综合链路层(Layer 2)、网络层(layer 3)、传输层(layer 4)信息诸如MAC地址、IP协议、源地址、目的地址、或应用程序的端口号等相关信息来对报文进行分类。一般的分类依据都局限在封装报文的头部信息,使用报文的内容作为分类的标准比较少见。
包过滤就是将业务流进行过滤操作。例如丢弃操作(deny),该操作将匹配流分类规则的业务流丢弃,而允许其他所有流量通过。以太网交换机采用了复杂的流分类规则,这样可以针对业务流的各种信息进行过滤,丢弃那些无用的、不可靠、值得怀疑的业务流,从而增强了网络的安全性。
实现包过滤,有两个关键的环节:
第一步:是对进入端口的流量按即定的规则进行流分类;
第二步:对区分出来的流进行过滤——丢弃操作(deny)。deny为缺省的访问控制操作。
为了使有限的网络资源可以更好地为用户服务,QoS在输入端口上可以对特定用户的业务流进行监管,使之适应分配给它的那部分网络资源。
端口限速就是基于端口的速率限制,它对端口输出报文的总速率进行限制。
用户可以基于自身QoS策略的需要,重新指定报文的转发端口。
以太网交换机可为特定报文提供优先级标记的服务,标记内容包括TOS、DSCP、802.1p等,这些优先级标记分别适用于不同的QoS模型,在不同的模型中被定义。
下面介绍一下IP优先级、TOS优先级、DSCP优先级和802.1p优先级。
(1) IP优先级、TOS优先级和DSCP优先级
图2-1 DS域和ToS字节
如图2-1所示,IP header的TOS字段有8个bit,其中前3个bit表示的就是IP优先级,取值范围为0~7;第3~6这4个bit表示的是TOS优先级,取值范围为0~15;在RFC2474中,重新定义了IP报文头部的TOS域,称之为DS域,其中DSCP优先级用该域的前6位(0-5位)表示,取值范围为0~63,后2位(6、7位)是保留位。
(2) 802.1p优先级
802.1p优先级位于二层报文头部,适用于不需要分析三层报头,而需要在二层环境下保证QoS的场合。
图2-2 带有802.1Q标签头的以太网帧
如上图所示,每一个支持802.1Q协议的主机,在发送数据包时,都在原来的以太网帧头中的源地址后增加了一个4字节的802.1Q标签头。
这4个字节的802.1Q标签头包含了2个字节的标签协议标识(TPID--Tag Protocol Identifier,它的值是8100),和2个字节的标签控制信息(TCI--Tag Control Information),TPID是IEEE定义的新的类型,表明这是一个加了802.1Q标签的报文,下图显示了802.1Q标签头的详细内容。
图2-3 802.1Q标签头
在上图中,TCI字节中Priority字段就是802.1p优先级,它由3个bit组成,取值范围为0~7。这3位指明帧的优先级。一共有8种优先级,主要用于当交换机阻塞时,优先发送哪个数据包。
之所以称此优先级为802.1p优先级,是因为有关这些优先级的应用是在802.1p规范中被详细定义。
当网络拥塞时,必须解决多个报文同时竞争使用资源的问题,通常采用队列调度加以解决。这里介绍几种各具特色的队列调度算法:严格优先级SP(Strict-Priority)队列调度算法、加权轮循WRR(Weighted Round Robin)调度算法。
(1) SP调度算法
图2-4 优先队列示意图
SP队列调度算法,是针对关键业务型应用设计的。关键业务有一重要的特点,即在拥塞发生时要求优先获得服务以减小响应的延迟。以端口有8个输出队列为例,优先队列将端口的8个输出队列分成8类,依次为7、6、5、4、3、2、1、0队列,它们的优先级依次降低。
在队列调度时,SP严格按照优先级从高到低的次序优先发送较高优先级队列中的分组,当较高优先级队列为空时,再发送较低优先级队列中的分组。这样,将关键业务的分组放入较高优先级的队列,将非关键业务(如E-Mail)的分组放入较低优先级的队列,可以保证关键业务的分组被优先传送,非关键业务的分组在处理关键业务数据的空闲间隙被传送。
SP的缺点是:拥塞发生时,如果较高优先级队列中长时间有分组存在,那么低优先级队列中的报文就会由于得不到服务而“饿死”
(2) WRR调度算法
交换机的端口支持8个输出队列,WRR队列调度算法在队列之间进行轮流调度,保证每个队列都得到一定的服务时间。以端口有4个优先级队列为例,WRR可为每个队列配置一个加权值(依次为w3、w2、w1、w0),加权值表示获取资源的比重。如一个100M的端口,配置它的WRR队列调度算法的加权值为50、30、10、10(依次对应w3、w2、w1、w0),这样可以保证最低优先级队列至少获得10Mbit/s带宽,避免了采用SP调度时低优先级队列中的报文可能长时间得不到服务的缺点。WRR队列还有一个优点是,虽然多个队列的调度是轮循进行的,但对每个队列不是固定地分配服务时间片——如果某个队列为空,那么马上换到下一个队列调度,这样带宽资源可以得到充分的利用。
流镜像,即能将指定的数据包复制到监控端口,以进行网络检测和故障排除。
10. 端口镜像
端口镜像,即能将指定端口的数据包复制到监控端口,以进行网络检测和故障排除。
基于流的流量统计,针对用户感兴趣的报文作统计分析。
基于流的QoS的处理过程
(1) 流识别
(2) 针对不同的流采取不同的QoS动作。
因此基于流的QoS配置需要如下步骤:
(3) 配置用于流识别的流分类规则,这些规则通过定义访问控制列表来实现
(4) 配置QoS动作,在配置过程中使用相应的访问控制列表
如果QoS不是基于流的,则不必首先定义访问控制列表。
访问控制列表的定义请参见1.2.2 定义访问控制列表,本章主要描述如何配置QoS的动作。
2.2.1 设置端口的优先级
可以使用下面的命令设置端口优先级。默认情况下,交换机将使用端口优先级代替该端口接收报文本身带有的802.1p优先级,从而控制报文可以享有的服务质量。
请在以太网端口视图下进行下列配置。
表2-1 设置端口的优先级
操作 | 命令 |
设置端口的优先级 | prioritypriority-level |
恢复端口的优先级为缺省值 | undo priority |
以太网交换机的端口支持8个优先级。用户可以根据需要设置端口的优先级。
priority-level的取值范围为0~7。
缺省情况下,端口优先级为0;对于接收的报文,交换机将使用报文接收端口的优先级替换报文的802.1p优先级。
默认情况下,对于接收的报文,交换机将使用报文接收端口的优先级替换报文的802.1p优先级。但是用户可以通过配置实现交换机信任报文自己携带优先级,而不使用接收端口的优先级来替换报文的优先级。
请在以太网端口视图下进行下列配置。
表2-2 设置交换机信任报文的优先级
操作 | 命令 |
设置交换机信任报文的优先级 | prioritytrust |
设置交换机不信任报文的优先级 | undo priority |
在进行了本配置之后,交换机将不再使用端口的优先级来替换该端口接收到的报文的802.1p的优先级。
流量监管是基于流的速率限制,它可以监督某一流量的速率,如果流量超出指定的规格,就采用相应的措施,如丢弃那些超出规格的报文或重新设置它们的优先级。
可以使用下面的命令来配置流量监管。
请在以太网端口视图下进行下列配置。
表2-3 流量监管配置
操作 | 命令 |
基于流的流量监管配置 | traffic-limitinbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } target-rate [ exceedaction ] |
取消基于流的流量监管配置 | undo traffic-limit inbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } |
在进行此项配置之前一定要先定义相应的访问控制列表。
本配置任务的目的是对匹配访问控制列表的数据流实现流量监管,流量监管的粒度为64kbps,如果用户输入的数字在N*64~(N+1)*64之间(N为自然数),交换机自动将该参数取值为(N+1)*64kbps。
关于命令的详细描述请参见本章相应的命令手册。
端口限速就是基于端口的速率限制,它对端口输出报文的总速率进行限制。
可以使用下面的命令进行端口限速配置。
请在以太网端口视图下进行下列配置。
表2-4 端口限速配置
操作 | 命令 |
基于端口的速率限制配置 | line-rate outboundtarget-rate |
取消基于端口的速率限制配置 | undo line-rate outbound |
关于命令的详细描述请参见本章对应的命令手册。
优先级标记配置就是为匹配访问控制列表的报文重新标记优先级的策略,所标记的优先级可以填入报文头部反映优先级的域中。
请在以太网端口视图下进行下列配置。
表2-5 标记报文优先级
操作 | 命令 |
标记报文优先级 | traffic-priority inbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } { {dscp dscp-value | ip-precedence { pre-value | from-cos } } | cos { pre-value | from-ipprec } | local-precedencepre-value }* |
取消标记报文优先级的配置 | undo traffic-priorityinbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } |
以太网交换机支持为报文打上DSCP优先级(traffic-priority命令中的dscp指定的值)、802.1p优先级(即traffic-priority命令中的cos值)。用户可以根据实际的QoS的策略要求给报文打上不同的优先级。
关于命令的详细描述请参见本章对应的命令手册。
报文重定向就是用户改变转发的报文的输出方向,将其输出到CPU或者输出到其他端口。
请在以太网端口视图下进行下列配置。
表2-6 重定向配置
操作 | 命令 |
重定向配置 | traffic-redirectinbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } { cpu | interface { interface-name | interface-type interface-num } } |
取消重定向配置 | undo traffic-redirectinbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } |
需要注意的是,当报文被重定向到CPU后,将不再正常转发。
重定向配置仅对访问控制列表中动作为permit的规则有效。
关于命令的详细描述请参见本章对应的命令手册。
当网络拥塞时,必须解决多个报文同时竞争使用资源的问题,通常采用队列调度加以解决。交换机支持根据报文的802.1p优先级把报文放入输出队列。
表2-7 802.1p优先级和队列之间的映射关系
802.1p优先级 | 队列 |
0 | 2 |
1 | 0 |
2 | 1 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
可以使用下面的命令来进行队列调度配置。
请在以太网端口视图下进行下列配置。
表2-8 设置队列调度算法
操作 | 命令 |
设置队列调度算法 | queue-scheduler wrr queue1-weight queue2-weight queue3-weight queue4-weightqueue5-weight queue6-weight queue7-weight queue8-weight |
恢复队列调度算法的缺省值 | undo queue-scheduler |
交换机的端口支持8个输出队列,用户可以根据需要配置队列调度方法:SP、WRR。如果某一个或多个队列的权值设为0,则这个或这些队列实行严格优先级调度算法,其他队列仍然使用WRR的调度算法。即可以通过设置,实现WRR+SP的功能。在这种情况下,交换机优先保证SP队列中的报文被发送出去。
缺省情况下,端口所有输出队列采用WRR队列调度方法,缺省权重为:1:2:3:4:5:9:13:15。
关于命令的详细描述请参见本章对应的命令手册。
端口镜像就是将被监控端口上的数据复制到指定的监控端口,对数据进行分析和监视。以太网交换机支持多对一的镜像,即将多个端口的报文复制到一个监控端口上。
1. 配置端口镜像
(1) 配置监控端口
请在以太网端口视图下进行下列配置。
表2-9 配置监控端口
操作 | 命令 |
配置当前端口为监控端口 | monitor-port |
一台交换机只支持配置一个监控端口。如果多台S5600交换机构成了Fabric,整个Fabric只能配置一个监控端口。
(2) 配置被监控端口
请在以太网端口视图下进行下列配置。
表2-10 配置被监控端口
操作 | 命令 |
配置当前端口为被监控端口 | mirroring-port { inbound | outbound | both } |
2. 删除端口镜像配置
(1) 删除被监控端口
请在以太网端口视图下进行下列配置。
表2-11 删除被监控端口
操作 | 命令 |
取消当前被监控端口 | undo mirroring-port |
(2) 删除监控端口
请在以太网端口视图下进行下列配置。
表2-12 删除监控端口
操作 | 命令 |
删除当前监控端口 | undo monitor-port |
关于命令的详细描述请参见本章对应的命令手册。
流镜像就是将匹配访问控制列表规则的业务流复制到指定的监控端口,用于报文的分析和监视。
1. 配置流镜像
(1) 配置监控端口
请在以太网端口视图下进行下列配置。
表2-13 配置监控端口
操作 | 命令 |
配置当前端口为监控端口 | monitor-port |
一台交换机只支持配置一个监控端口。如果多台S5600交换机构成了Fabric,整个Fabric只能配置一个监控端口。
(2) 配置流镜像
请在以太网端口视图下进行下列配置。
表2-14 流镜像配置
操作 | 命令 |
流镜像配置 | mirrored-toinbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } { cpu | monitor-interface } |
2. 删除流镜像
(1) 取消流镜像的配置
请在以太网端口视图下进行下列配置。
表2-15 取消流镜像配置
操作 | 命令 |
取消流镜像的配置 | undo mirrored-toinbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } |
(2) 删除监控端口
请在以太网端口视图下进行下列配置。
表2-16 删除监控端口
操作 | 命令 |
删除当前监控端口 | undo monitor-port |
关于命令的详细描述请参见本章对应的命令手册。
流量统计用于统计指定业务流的数据包,它统计的是交换机转发的数据包中匹配已定义的访问控制列表的数据信息。在进行了流量统计配置之后,用户可以使用命令display qos-interface traffic-statistic显示统计的信息。
可以使用下面的命令来进行流量统计配置。
请在以太网端口视图下进行下列配置。
表2-17 流量统计配置
操作 | 命令 |
流量统计配置 | traffic-statistic inbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } |
取消流量统计配置 | undo traffic-statistic inbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } |
显示流量统计信息 | display qos-interface { interface-name | interface-type interface-num | unit-id } traffic-statistic |
关于命令的详细描述请参见本章对应的命令手册。
在完成上述配置后,在任意视图下执行display命令都可以显示配置后QoS的运行情况。用户可以通过查看显示信息验证配置的效果。在用户视图下执行reset命令可以将有关QoS的统计信息清除。
表2-18 QoS的显示和调试
操作 | 命令 |
显示端口镜像的参数设置 | display mirror |
显示队列调度模式及参数 | display queue-scheduler |
显示所有端口的QoS设置信息 | display qos-interface { interface-name | interface-type interface-num | unit-id } all |
显示流量限制的参数设置 | display qos-interface { interface-name | interface-type interface-num | unit-id } traffic-limit |
显示端口限速的参数设置 | display qos-interface { interface-name | interface-type interface-num | unit-id } line-rate |
显示优先级标记的参数设置 | display qos-interface { interface-name | interface-type interface-num | unit-id } traffic-priority |
显示重定向的参数设置 | display qos-interface { interface-name | interface-type interface-num | unit-id } traffic-redirect |
显示流量统计信息 | display qos-interface { interface-name | interface-type interface-num | unit-id } traffic-statistic |
显示流量镜像的参数设置 | display qos-interface { interface-name | interface-type interface-num | unit-id } mirrored-to |
统计信息清零 | reset traffic-statisticinbound { ip-group acl-number [ rulerule [ link-group acl-number rulerule ] ] | link-group acl-number [ rulerule ] } |
相关命令显示信息及说明请参见命令手册。
2.4 QoS配置实例
1. 组网需求
公司企业网通过以太网交换机的端口实现各部门之间的互连。财务部门的工资查询服务器由GigabitEthernet1/0/1端口接入(子网地址129.110.1.2)。组网需求为要求限制其它部门访问工资查询服务器的流量为128kbps,限制工资查询服务器向外发送流量的平均速率不能超过640kbps,超出规格的报文将报文优先级为4。
2. 组网图
图2-5 QoS配置举例
3. 配置步骤
以下的配置,只列出了与QoS/ACL配置相关的命令。
(1) 定义工资查询服务器向外发送的流量
# 进入3000号的高级访问控制列表视图。
[Quidway] acl number 3000
# 定义3000号高级访问控制列表的规则。
[Quidway-acl-adv-3000] rule 1 permit ip source 129.110.1.2 0.0.0.0 destination any
(2) 对访问工资查询服务器的流量进行流量限制
# 限制工资查询服务器向外发送报文的平均速率为640kbps,对超出规格的报文设置优先级为4。
[Quidway-GigabitEthernet1/0/1] traffic-limit inbound ip-group 3000 640 exceed remark-dscp 4
# 限制端口GigabitEthernet1/0/1发往工资查询服务器的速率为128kbps。
[Quidway-GigabitEthernet1/0/1] line-rate outbound 128
1. 组网需求
对PC1(IP:1.0.0.2)每天8:00~18:00发出的报文打上ef标记,为上层设备提供优先级依据。
2. 组网图
图2-6 QoS配置举例
3. 配置步骤
(1) 定义8:00~18:00时间段
# 定义时间段。
[Quidway] time-range huawei 8:00 to 18:00 daily
(2) 定义PC报文的流规则。
# 进入基于数字标识的基本访问控制列表视图,用2000标识。
[Quidway] acl number 2000
# 定义PC1报文的流分类规则。
[Quidway-acl-basic-2000] rule 0 permit source 1.0.0.2 0 time-range huawei
(3) 对PC1发出的报文重新打上ef优先级
[Quidway-GigabitEthernet1/0/1] traffic-priority inbound ip-group 1 dscp ef
1. 组网需求
交换机队列调度算法采用WRR调度算法,要求各个队列在端口GigabitEthernet1/0/1上输出的报文个数比例为2:2:3:3:4:4:5:5。
2. 组网图
图2-7 QoS配置举例
3. 配置步骤
(1) 定义交换机采用WRR队列调度算法,端口输出队列的权重分别为2、2、3、3、4、4、5、5,可以使用display命令查看配置信息。
[Quidway-GigabitEthernet1/0/1] queue-scheduler wrr 2 2 3 3 4 4 5 5
[Quidway-GigabitEthernet1/0/1] display queue-scheduler
配置完毕后,可以通过抓包来验证各个队列输出的报文个数的比例为2:2:3:3:4:4:5:5。