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   //标记语音报文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接口。

在交换机上查看报文统计信息,可以看到丢弃报文为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 interface-type interface-number

2.      配置入方向的接口限速:qos lr inbound 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 interface-type interface-number

2.      配置入方向的接口限速:qos lr outbound cir cir-value [ cbs cbs-value ]

QoS专题-第4期-QoS实现之限速的更多相关文章

  1. QoS专题-第5期-QoS实现之队列调度与报文丢弃

    QoS实现之队列调度与报文丢弃 前面的专题里面介绍了通过优先级映射或者MQC对报文进行分类和标记,那么分类之后要做什么呢?那就是根据分类结果对报文进行流量控制处理.拥塞管理和拥塞避免就是两种流量控制手 ...

  2. QoS专题-第2期-QoS实现工具之MQC

    QoS实现工具之MQC QoS技术可以对网络中报文进行分类处理,根据优先级提供不同的差分服务,如何实现这种差分服务呢?我们有一种强大的配置方法-模块化QoS命令行MQC(Modular QoS Com ...

  3. QoS专题-第1期-QoS理论篇

    QoS理论篇 1      QoS的产生 随着网络技术的飞速发展,IP网络已经从当初的单一数据网络向集成数据.语音.视频.游戏的多业务网络转变.网络中所承载的数据呈几何级倍数增长,而且这些业务对网络带 ...

  4. QoS专题-第3期-QoS实现之报文简单分类与标记

    QoS实现之报文简单分类与标记 上一期专题我们讲到,MQC中的流分类可以实现报文的分类,流行为可以对报文进行重标记,从而实现对流量的精细化差分服务.而优先级映射则可以根据802.1p优先级.DSCP优 ...

  5. 极客技术专题【008期】:CSS3核心技术:选择器

    日期:2013-8-19  来源:GBin1.com 技术专题介绍 技术专题:CSS3核心技术:选择器 专题演讲稿:CSS3选择器 分享人:知名前端技术博客 - w3cplus.com 博主 - 大漠 ...

  6. 极客技术专题【007期】:jQuery初学者入门 - jQuery Event

    日期:2013-8-19  来源:GBin1.com 技术专题介绍 专题:jQuery初学者入门[第三讲:jQuery Event] 分享人:极客标签技术编辑 -Lana (请站内关注分享人) 授课时 ...

  7. 极客技术专题【011期】:EasyUI初级教程

    来源:GBin1.com 技术专题:EasyUI初级教程 分享人:极客标签技术编辑 - html580(请站内关注分享人) 资深Web前端工程师,HTML580创始人,目前就职于广州一间软件公司.多年 ...

  8. QOS

    QoS控制原理 · 基于设备的QoS保障技术——CAC· 基于优先级设置的QoS保障技术· 基于减小抖动的QoS保障-Jitter BufferIP传输在时延.抖动.丢包率方面的性能不及TDM传输,而 ...

  9. [QoS]cisco3560限速配置案例-收集于网工泡泡

    网络中常用到这些:CISCO和H3C-MAC过滤+端口限速+端口镜像+端口隔离 不同的方式不同的思想:嘎嘎 其他各个厂商的限速链接:http://pan.baidu.com/s/1hrIMoSG 密码 ...

随机推荐

  1. (转) 理解Angular中的$apply()以及$digest()

    原文地址:http://blog.csdn.net/dm_vincent/article/details/38705099 $apply()和$digest()在AngularJS中是两个核心概念,但 ...

  2. Intellij IDEA 2017 通过scala工程运行wordcount

    首先是安装scala插件,可以通过idea内置的自动安装方式进行,也可以手动下载可用的插件包之后再通过idea导入. scala插件安装完成之后,新建scala项目,右侧使用默认的sbt 点击Next ...

  3. 探究linux设备驱动模型之——platform虚拟总线(一)

    说在前面的话 :      设备驱动模型系列的文章主要依据的内核版本是2.6.32的,因为我装的Linux系统差不多就是这个版本的(实际上我用的fedora 14的内核版本是2.6.35.13的.) ...

  4. python-前方高能-面向对象-进阶3

    面向对象 你写代码的时候 什么时候用面向对象 代码量大,功能多的时候 处理比较复杂的角色之间的关系 qq 好友 陌生人 群 组 复杂的电商程序 公司/学校的人事管理/功能的系统 我的代码的清晰度更高了 ...

  5. 基础的Servlet

    1.认识Servlet 今天接触了Servlet,我就写了这篇Servlet的文章.首先,我们了解一下Servlet是什么: 这是百度百科的解释,我个人理解是可以用来前后端交互的一个东西,例如可以实现 ...

  6. cmake-cmake.1-3.11.4机翻

    指数 下一个 | 上一个 | CMake » git的阶段 git的主 最新发布的 3.13 3.12 3.11.4 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 ...

  7. 【ML系列】简单的二元分类——Logistic回归

    对于了解机器学习中二元分类问题的来源与分析,我认为王树义老师这篇文章讲的非常好,通俗且易懂: http://blog.sciencenet.cn/blog-377709-1121098.html 但王 ...

  8. 17 Tips For Writing An Excellent Email Subject Line

    Out of the billions of emails that are sent every day, how can you make sure that yours stands out? ...

  9. /proc/sys目录下各文件参数说明

    linux 其他知识目录 原文链接:https://blog.csdn.net/hshl1214/article/details/4596583 一.前言本文档针对OOP8生产环境,具体优化策略需要根 ...

  10. 根据Unicode码生成汉字

    最近需要一批汉字字符数据,类似数字字符与ASCII码之间的对应关系,汉字字符与Unicode码之间也存在对应关系. 所以可以遍历Unicode码批量生成汉字. 其中,汉字为宽字符,输出时候注意需要修改 ...