QoS实现之限速
通过前面几篇介绍,大家都知道了MQC是实现QoS的技术,优先级映射是实现QoS的前提条件。读完之后也许无法直观感觉到QoS是如何提升网络服务质量。今天小编给大家介绍限速,通过实验,可以直观地感受到QoS如何提升服务质量。
1 什么是限速
有人会问了,既然是限制我的上网速度,怎么说是提高服务质量呢。举个例子,如果一个人使用BT疯狂下载视频,导致网络拥塞,严重影响了其他人的上网质量,所以在某些场景下不得不限速。限速的目的是防止有人恶意占用带宽,在保证用户正常业务前提下,保证整个网络不发生拥塞,提升整个网络的服务质量。
其实大家对限速的概念都不陌生,尤其是开车的同学,估计不少人因超速被惩罚过。流量限速也比较类似,将进/出交换机的流量的速率限制在约定的范围之内。如果不超速皆大欢喜,如果超过限定速率,则对超出部分报文进行惩罚。
l 没有超速,奖励绿卡,可畅通无阻(直接转发)。
l 稍微超速,黄牌警告(报文缓存)。
l 过分超速,红牌罚下,禁止通行(超过的报文丢弃)。
常用的流量限速有两种技术:
l 流量监管:流量监管简单粗暴,如果流量超速,则对超出部分的流量进行“惩罚”,直接丢弃。流量监管一般用于入方向,就像高速路,只有在入口限制进入高速公路车辆的数量,才能保证高速公路不变成“龟速公路”。
l 流量整形:和流量监管相比,流量整形要温柔得多,流量整形是用于限制某个或某些队列的输出速率,超速的报文不是直接丢弃,而是暂时存在缓存里,等空闲了还是会输出,只有缓存满了之后才会丢弃。这样使流量输出比较平稳,从而解决下游设备的拥塞问题,所以流量整形一般用于出方向。
也有人把接口限速作为流量限速的一种技术,在小编看来,接口限速是流量监管、流量整形的一种特殊情况,我们在后边做详细介绍。
2 如何实现限速
既然要限速,那首先要解决测量速度的问题,就像汽车限速,如果没有测速雷达等手段测试汽车速度,那限速就没有任何意义。那交换机如何判断流量是否超速呢?答案是“使用令牌桶”。令牌桶有三种测速方法,对应三种机制:单速单桶、单速双桶、双速双桶。令牌桶原理不是本文介绍的重点,如需了解令牌桶原理详细信息,请参见华为论坛“CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看这里!—-揭秘令牌桶”。
下面简单介绍一下三种令牌桶的应用场景。
l 单速单桶:以CIR速率向C桶投放令牌。报文来了之后,从C桶取令牌,如果令牌够了,则进行转发,如果令牌不够,则直接丢弃。一般用于优先级较低的业务(如企业外网HTTP流量)限速,对于超过额度的流量直接丢弃保证其他业务,不考虑突发。
l 单速双桶:以CIR速率向两个桶投放令牌。先投放小桶C桶,小桶满了再投放大桶E桶。报文来了之后,先使用小桶中的令牌,小桶中令牌数量不够,则放回去,再使用大桶中的令牌。对于超过C桶,而又没有超过E桶的报文标记为***,采用BE方式或者等网络空闲后进行转发。和单桶相比,单速双桶允许突发流量,主要用于较为重要而又不太紧急的业务,比如企业邮件数据,可避免邮件发送失败。
l 双速双桶:以CIR速率向C桶投放令牌,以PIR速率向P桶投放令牌。报文进来之后,会同时取两个桶的令牌,C桶令牌够用则标记为绿色直接转发,如果连P桶的令牌都不够用,则标记为红色直接丢弃,介于C桶和P桶之间,则标记为***。和单速双桶的区别就是向两个桶投放令牌的速率不同,我们一般设置PIR>CIR,P桶投放令牌的速率更快,所以更能长时间撑住突发流量。
使用令牌桶的总体原则:如果不考虑突发流量,使用单速单桶;如果要考虑突发流量,使用单速双桶;如果考虑可能会有长时间的流量突发,使用双速双桶。
3 限速参数设置有讲究
在令牌桶算法中,CIR的值越大,即令牌产生的速率越大,报文可以获取的令牌就越多,流向网络的流量也就越大。因此,CIR的值是控制流入网络中流量多少的关键。CBS也是一个重要参数,CBS的值越大,C桶中可以积累令牌的数目也越多,允许通过的报文尺寸就越大。
由于设备进行的是逐包转发,CBS的值不应该小于当前网络上允许传输的报文的最大长度。
例如,在单速单桶模式下,假设要把流量限定在10Mbit/s,而CBS值太小(如设置成1000byte)。如果某个时间段内流量的报文,每个报文大小都大于1000byte,那么这些报文全都被丢弃。这段时间内,没有报文被转发,报文的转发速率为0,导致网络资源被浪费,业务也出现异常。
那是不是CBS的值越大就越好呢?显然不是。CBS值太大,会失去限速的意义。例如,假设要把流量限定在10Mbit/s,CBS设置成7200Mbyte。某个时刻,令牌桶中的令牌已满,如果接下来1小时内流量的报文,其报文长度不一,但共计7200Mbyte,这些报文都能获得令牌并被转发,那么这段时间内的报文速率为16Mbit/s(7200M * 8 / 3600)而不是10Mbit/s,即没有实现限速。
同理,对于双速双桶模式,PIR和PBS的值也应设置在合理范围内。
4 限速的应用
常用的流量限速技术有流量监管、流量整形。如图1所示,流量监管和流量整形在网络中的应用如图1所示。
华为交换机只支持单速单桶和双速双桶。
图1 限速应用场景
5 基于流分类(MQC)的流量监管
前面我们已经介绍过,流量监管一般用于入方向。下面举个例子,详细介绍如何在入方向配置基于MQC的流量监管。如图2所示,企业的语音业务对应的VLAN ID为120,视频业务对应的VLAN ID为110,数据业务对应的VLAN ID为100。各种业务对服务质量的要求,如表1所示。
表1 各种业务对服务质量要求
流量类型 | CIR(kbps) | PIR(kbps) | 说明 |
语音 | 8000 | 15000 | 语音业务对实时性要求比较高,设置大带宽的同时,将DSCP优先级标记为46,保证后续设备优先转发。 |
视频 | 10000 | 20000 | 视频业务需要大带宽,对实时性要求没语音那么敏感,可以配置大带宽,将DSCP优先级标记为30。 |
数据 | 4000 | 4000 | 数据业务对于报文丢包和实时性要求都不高,CIR和PIR设置一样,相当于使用单速单桶进行限速,将DSCP优先级标记为14。 |
图2 流量监管组网图
设备互通配置这里不做详细介绍,下面主要介绍限速的相关配置。
1. 配置流分类,设备根据报文VLAN进行分类。
[Switch] traffic classifier c1 operator and
[Switch-classifier-c1] if-match vlan-id 120
[Switch-classifier-c1] quit
[Switch] traffic classifier c2 operator and
[Switch-classifier-c2] if-match vlan-id 110
[Switch-classifier-c2] quit
[Switch] traffic classifier c3 operator and
[Switch-classifier-c3] if-match vlan-id 100
[Switch-classifier-c3] quit
2. 创建流行为,配置流量监管参数,并标记优先级
[Switch] traffic behavior b1
[Switch-behavior-b1] car cir 8000 pir 15000 //配置语音业务限速带宽
[Switch-behavior-b1] remark dscp 46 //标记语音报文DSCP为46
[Switch-behavior-b1] statistic enable //用于验证配置结果
[Switch-behavior-b1] quit
[Switch] traffic behavior b2
[Switch-behavior-b2] car cir 10000 pir 20000 //配置视频业务限速带宽
[Switch-behavior-b2] remark dscp 30 //标记视频报文DSCP为30
[Switch-behavior-b2] statistic enable
[Switch-behavior-b2] quit
[Switch] traffic behavior b3
[Switch-behavior-b3] car cir 4000 //配置数据业务限速带宽
[Switch-behavior-b3] remark dscp 14 //标记数据报文DSCP为14
[Switch-behavior-b3] statistic enable
[Switch-behavior-b3] quit
3. 配置流策略,并在接口GE0/0/20入方向应用。
[Switch] traffic policy p1
[Switch-trafficpolicy-p1] classifier c1 behavior b1
[Switch-trafficpolicy-p1] classifier c2 behavior b2
[Switch-trafficpolicy-p1] classifier c3 behavior b3
[Switch-trafficpolicy-p1] quit
[Switch] interface gigabitethernet 0/0/20
[Switch-GigabitEthernet0/0/20] traffic-policy p1 inbound
[Switch-GigabitEthernet0/0/20] quit
4. 使用测试仪验证配置结果
验证数据业务限速情况:
对于数据报文CIR和PIR设置的值一样,其实现效果等同于单速单桶。对数据报文的限速为4000Kbps,4000kbps=4096000bit/s,设置报文速率为4096000bit/s,通过测试仪发送到GE0/0/20接口。
在交换机上查看报文统计信息,可以看到丢弃报文为0,不超过4000kbps,所有报文通过。
在测试器上设置报文速率为5000kbps=5120000bit/s,并发送报文到GE0/0/20。使用reset traffic policy statistics all清空统计报文,重新查看报文统计信息,可以看到入方向报文超过4000Kbps,设备开始丢弃报文。
验证视频业务限速结果:
视频业务配置的双速双桶,CIR为10000Kbps,PIR为20000Kbps。
速率小于CIR和大于PIR的情况我们不再验证,结果可以想到,速率小于CIR,所有报文允许通过,速率大于PIR就会有报文丢弃。
主要验证速率介于CIR和PIR之间会是什么效果,我们先查看下配置,如下图所示,配置信息显示,对于标记为***的报文流(即其速率大于CIR而小于等于PIR),默认是允许通过的。也就是说,设备将按照配置的PIR值进行限速。
我们用测试仪发送15000Kbps(15360000bps)的报文验证一下,可以发现丢包数为0,说明设备按照PIR进行限速。
6 流量整形
下面我们再介绍一下如何配置流量整形。如图3所示,我们会将根据报文的优先级和重要性映射到不同的队列,针对不同队列分别进行整形,要求如下:
l 语音保证带宽(CIR)为3000kbit/s,峰值带宽(PIR)为5000kbit/s。
l 视频保证带宽(CIR)为5000kbit/s,峰值带宽(PIR)为8000kbit/s。
l 数据保证带宽(CIR)为2000kbit/s,峰值带宽(PIR)为3000kbit/s。
图3 流量整形组网图
配置步骤如下:
1. 在设备上将不同优先级报文映射到不同队列,将802.1p优先级6、5、2分别映射为PHB行为CS7、EF、AF2。
[Switch] diffserv domain ds1
[Switch-dsdomain-ds1] 8021p-inbound 6 phb cs7
[Switch-dsdomain-ds1] 8021p-inbound 5 phb ef
[Switch-dsdomain-ds1] 8021p-inbound 2 phb af2
[Switch-dsdomain-ds1] quit
2. 在接口配置针对不同队列的流量整形。
[Switch] interface gigabitethernet 1/0/1
[Switch-GigabitEthernet1/0/1] trust upstream ds1
[Switch-GigabitEthernet1/0/1] quit
[Switch] interface gigabitethernet 2/0/1
[Switch-GigabitEthernet2/0/1] qos queue 7 shaping cir 3000 pir 5000
[Switch-GigabitEthernet2/0/1] qos queue 5 shaping cir 5000 pir 8000
[Switch-GigabitEthernet2/0/1] qos queue 2 shaping cir 2000 pir 3000
[Switch-GigabitEthernet2/0/1] quit
验证方式和流量监管比较类似,这里不再做详细介绍。
7 接口限速
接口限速是对一个接口上全部报文进行限速,当不需要区分报文类型,而要限制通过接口全部流量的速率时,可以使用接口限速功能简化配置。
接口限速可以用在出方向,也可以用在入方向。
l 入方向接口限速是流量监管的一种特殊情况,不需要对报文进行分类的流量监管就是接口限速,配置方法如下:
框式交换机 | 1. 配置CAR参数:qos car car-name cir cir-value [ cbs cbs-value [ pbs pbs-value ] | pirpir-value [cbs cbs-value pbs pbs-value ] ] 2. 进入接口视图:interface interface-type interface-number 3. 在接口下应用CAR模板:car inbound car-name |
盒式交换机 | 1. 进入接口视图: interface-type interface-number 2. 配置入方向的接口限速: cir cir-value [ cbs cbs-value ]。 |
l 出方向接口限速是流量整形的一种特殊情况,不是针对单个队列进行整形,而是针对所有的队列进行整形,如果每个队列报文优先级无差异,可以针对接口配置流量整形。配置方法如下:
框式交换机 | 1. 进入接口视图:执行命令interface interface-type interface-number。 2. 配置出方向接口限速:qos lr cir cir-value [ cbs cbs-value ] [ outbound ] |
盒式交换机 | 1. 进入接口视图: interface-type interface-number 2. 配置入方向的接口限速: cir cir-value [ cbs cbs-value ] |