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所示。

华为交换机只支持单速单桶和双速双桶。

QoS专题-第4期-QoS实现之限速-LMLPHP

图1 限速应用场景

5      基于流分类(MQC)的流量监管

前面我们已经介绍过,流量监管一般用于入方向。下面举个例子,详细介绍如何在入方向配置基于MQC的流量监管。如图2所示,企业的语音业务对应的VLAN ID为120,视频业务对应的VLAN ID为110,数据业务对应的VLAN ID为100。各种业务对服务质量的要求,如表1所示。

表1 各种业务对服务质量要求

流量类型

CIR(kbps)

PIR(kbps)

说明

语音800015000语音业务对实时性要求比较高,设置大带宽的同时,将DSCP优先级标记为46,保证后续设备优先转发。
视频1000020000视频业务需要大带宽,对实时性要求没语音那么敏感,可以配置大带宽,将DSCP优先级标记为30。
数据40004000数据业务对于报文丢包和实时性要求都不高,CIR和PIR设置一样,相当于使用单速单桶进行限速,将DSCP优先级标记为14。

QoS专题-第4期-QoS实现之限速-LMLPHP

图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   //标记语音报文DSCP46

[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    //标记视频报文DSCP30

[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   //标记数据报文DSCP14

[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接口。

QoS专题-第4期-QoS实现之限速-LMLPHP

在交换机上查看报文统计信息,可以看到丢弃报文为0,不超过4000kbps,所有报文通过。

QoS专题-第4期-QoS实现之限速-LMLPHP

在测试器上设置报文速率为5000kbps=5120000bit/s,并发送报文到GE0/0/20。使用reset traffic policy statistics all清空统计报文,重新查看报文统计信息,可以看到入方向报文超过4000Kbps,设备开始丢弃报文。

QoS专题-第4期-QoS实现之限速-LMLPHP

验证视频业务限速结果:

视频业务配置的双速双桶,CIR为10000Kbps,PIR为20000Kbps。

速率小于CIR和大于PIR的情况我们不再验证,结果可以想到,速率小于CIR,所有报文允许通过,速率大于PIR就会有报文丢弃。

主要验证速率介于CIR和PIR之间会是什么效果,我们先查看下配置,如下图所示,配置信息显示,对于标记为***的报文流(即其速率大于CIR而小于等于PIR),默认是允许通过的。也就是说,设备将按照配置的PIR值进行限速

QoS专题-第4期-QoS实现之限速-LMLPHP

我们用测试仪发送15000Kbps(15360000bps)的报文验证一下,可以发现丢包数为0,说明设备按照PIR进行限速。

QoS专题-第4期-QoS实现之限速-LMLPHP

QoS专题-第4期-QoS实现之限速-LMLPHP

6      流量整形

下面我们再介绍一下如何配置流量整形。如图3所示,我们会将根据报文的优先级和重要性映射到不同的队列,针对不同队列分别进行整形,要求如下:

l  语音保证带宽(CIR)为3000kbit/s,峰值带宽(PIR)为5000kbit/s。

l  视频保证带宽(CIR)为5000kbit/s,峰值带宽(PIR)为8000kbit/s。

l  数据保证带宽(CIR)为2000kbit/s,峰值带宽(PIR)为3000kbit/s。

QoS专题-第4期-QoS实现之限速-LMLPHP

图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 ]

05-11 05:21