令牌桶基础

概述:

  1. 配合软件队列使用。
  2. 单位是Byte而不是报文的个数,如果一个报文所需的Byte数超过了所剩余的令牌个数,就无法发送,也就是说一个令牌对应一个Byte。
  3. 令牌桶可以看作是一个存放一定数量令牌的容器。系统按设定的速度向桶中放置令牌,当桶中令牌满时,多出的令牌溢出,桶中令牌不再增加。
  4. 在使用令牌桶对流量进行评估时,是以令牌桶中的令牌数量是否足够满足报文的转发为依据的。如果桶中存在足够的令牌可以用来转发报文,称流量遵守或符合约定值,否则称为不符合或超标。

依据令牌桶的令牌注入方式及桶的数量定义了3种令牌桶模型:

  1. 单速单桶双色模型。
  2. 单速双桶三色模型(RFC 2697)。
  3. 双速双桶三色模型(RFC2698)。

令牌桶术语:
一、令牌桶模型中可能有单桶或双桶模型,单桶模型中使用的桶称为CBS桶,而双桶单速模型中使用的桶分别称为CBS和EBS桶;双桶双速模型中使用的桶是CBS和PBS:

  1. CBS (Committed Bucket Size):承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。
  2. EBS (Excess Burst Size): 超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。
  3. PBS(Peak Burst Size):峰值突发尺寸,表示P桶的容量,即P桶瞬间能够通过的超出突发流量。

下文为方便描述将三个令牌桶分别称为C (Committed)桶、E (Excess) 桶和P(Peak)桶。

二、Tc和Te:分别表示C桶和E桶中的当前令牌数量,单位为个。

三、信息速率:

  1. CIR (Committed Information Rate):承诺信息速率,向C桶中注入令牌的速率,同时也是C桶允许传输或转发数据的平均速率,单位bit/s。

  2. PIR(peak Information Rate):峰值信息速率,向P桶中注入令牌的速率,同时也是P桶允许传输或转发数据的平均速率,单位bit/s。

四、色(color):根据桶中当前令牌是否满足数据转发需要而定义的颜色标识,它是模型描述时对分类的数据的颜色定义,将能从桶中取走足量令牌的报文标记为绿色或黄色,而将未能在桶中获得足量令牌的报文,标记为红色。通过命令,如green pass yellow pass red pass,可以设置不同颜色的报文的具体动作。

一、单速单桶双色模型


桶中令牌以承诺的恒定速率CIR注入,桶大小固定,当注入令牌超出桶的容量后,多余的令牌就被丢弃掉。对于到达的报文,图上图中用B表示报文的大小。

  1. 若B≤Tc,报文被标记为绿色,且Tc减少B。
  2. 若B>Tc,报文被标记为红色,且Tc不减少B。.

过程描述:
若桶中有令牌,数据包转发会消耗桶中的令牌,若令牌足量,满足报文转发需要的数量,则报文被标记为绿色,并在桶中取走等量令牌。若待转发报文在桶中得不到足够令牌则标记为红色,桶中令牌不减。

例如:
若当前C桶中有2000个令牌,有2份待转发数据报文,大小分别为1500B和800B。假设此期间没有令牌注入,当第一份数据报文和C桶内令牌进行比较时,令牌满足,则第一份报文转发出去,桶中令牌剩余为500个。而第二份报文需要800个令牌,令牌桶中令牌不够,这份报文被标记为红色,不被转发出去,令牌桶中令牌量不变化,单速单桶的模型因其仅以承诺速率CIR注入令牌到C桶,所以C桶中令牌是承诺的令牌。

消耗C桶令牌的数据报文,其转发速率不会超出CIR,流量图如下:

虚线部分是红色流量,阴影部分是绿色流量。在QoS机制中,只要有提到流量不超出特定速率,则该机制中必内置令牌桶的速率限制模型。

cir 2000 cbs 50000 ,表示承诺信息速率为2000kbit/s,承诺突发尺寸为50000Byte。报文大小小于50000Byte的都能转发,转发速率最大为2000kbit/s。

二、单速双桶三色模型


系统按照CIR速率向桶中投放令牌,向C桶注入令牌,若溢出,则E桶令牌增加。

  1. 若Tc<CBS,Tc 增加。
  2. 若Tc=CBS,Te<EBS, Te增加。
  3. 若Tc=CBS,Te=EBS,则都不增加。

对于到达的报文,用B表示报文的大小。

  1. 若B≤Tc,报文被标记为绿色,且Tc减少B。
  2. 若Tc<B≤Te,报文被标记为黄色,且Te减少B。
  3. 若Te<B,报文被标记为红色,且Tc和Te都不减少。

过程描述:
C桶中令牌是承诺部分,系统始终以速率CIR注入令牌,但若前一时刻C桶中令牌没有用光或没有使用(因没有数据转发),则下次注入时会致C桶溢出,过量的令牌并没有被丢掉,定义的E桶就是专门用来装多余的令牌的。所以E桶的大小可在实现中定义得稍大些,可使系统保留前面时刻未用令牌的能力相对增强,可减少令牌因溢出而致的损失。

报文转发时,先从承诺的C桶中取令牌,如果令牌够,则标记报文为绿色,桶中令牌减少。若C桶中令牌不够(Tc<B), 则继续比较E桶令牌。若E桶令牌够,则标记报文为黄色,否则为红色。

例如:
若C桶当前令牌为2000,E桶令牌为1000,待转发数据报文有3份,大小分别为1500B、 800B、 700B,假设3份报文在转发过程中没有令牌注入。根据上面的逻辑,第一份报文同C桶比较,令牌满足,标记为绿色,此时令牌桶C剩余令牌为500,令牌桶E令牌依然为1000。 第二份报文需要800个令牌,C桶承诺部分不够,则使用E桶令牌,E桶部分是累积起来的令牌,第二份报文使用E桶令牌,并标记为黄色,E桶剩余令牌200。第三份报文在C桶和E桶都没有足量的令牌,所以标记为红色。

双桶模型由于EBS桶的存在,因此流量可以在承诺的CIR速率基础上过量突发,在某时刻速率可以达到很高。由于前一时刻数据量低,令牌没有使用,因此在下一时刻有过量突发所致的流量过高。但虽有过量突发,但流量的平均速率<=CIR。流量图如下:

P1是使用E桶令牌的流量,P3是使用C桶令牌的流量。P2 处没有转发的流量。P1对应黄色流量,P3 对应绿色流量。

三、双速双桶三色模型


系统按照PIR速率(峰值速率)向P桶中投放令牌,按照CIR速率向C桶中投放令牌:

  1. 当Tp<PBS时,P桶中令牌数增加,否则不增加。
  2. 当Tc<CBS时,C桶中令牌数增加,否则不增加。

对于到达的报文,用B表示报文的大小:

  1. 若Tp<B,报文被标记为红色。
  2. 若Tc<B≤Tp,报文被标记为黄色,且Tp减少B。
  3. 若B≤Tc,报文被标记为绿色,且Tp和Tc都减少B。

任何一种模型都做到把流量同令牌桶中的令牌量比对,而打上不同的颜色,并代表不同的分类。如果按令牌量是否足量来决定报文转发,红色代表该类数据没有对应的令牌,而不能被系统转发。黄色代表有对应的令牌,但该令牌不是承诺的令牌(仅取自P桶)。绿色代表该类数据使用的令牌是承诺速率所注入的令牌。

双速模型并没有像单速模型在实际中应用那么广,它一定程度上解决了单速双桶模型的不足,双速模型引入了PIR,PIR一定要大于CIR。

过程描述:
P桶和C桶都是独立注入令牌的,如果桶中令牌溢出,并不会装入到另一个桶里。PIR是峰值速率,CIR是承诺速率,此模型可保证当输入数据的速率超出PIR时,超出部分将被丢弃,而低于PIR部分的报文,高于CIR的部分被标记为黄色,低于CIR部分被标记为绿色。所以待转发的报文先和P桶比较,若P桶令牌不够,则标记为红色,令牌不减。而若P桶令牌够,则继续比较C桶令牌,仅当二者令牌都够时,都做等量相减。

例如:
P桶令牌为2000,C桶令牌为1000,待转发报文有3份,大小分别为1500B、800B、400B,第一份报文和P桶比较,令牌够,继续和C桶比较,C桶不够。第一份转发出去,P桶剩余令牌500,C桶令牌没变化,为1000且报文被标记为黄色。第二份报文大小为800,先和P桶比较,因P桶令牌不够而标记为红色,桶内令牌不变。第三份报文先和P桶比较,再和C桶比较。都满足则都减令牌,并标记为绿色,P 桶剩余100, C桶剩余600。

此模型能解决单速双桶模型中因E桶的原因而致的流量过量突发而引起的速率波动幅度的不确定性,所以对最高的速率做了限制,如果该模型应用在数据转发的场景下,它使实际数据包的转发速率达到PIR,这往往致企业边缘设备流出的报文速率过高,而上游运营商处丢掉超出CIR的部分流量。流量图如下:

P1是超出PIR部分的“红色”流量,P2是黄色”流量,而P3是“绿色”流量。使用双速模型可使流量分为3份,可自定义不同颜色的流量的流行为,可以丢弃或打标记。

单速双桶和双速双桶模型对比


整理资料来源:《HCIE路由交换学习指南》

Qos令牌桶技术原理相关推荐

  1. QOS基本概念/技术原理理解

    服务质量背景 在传统的IP网络中,所有的报文都被无区别的等同对待,对报文传送的可靠性.传送延迟等性能不能提供保证.随着IP网络上新应用的不断出现,除了传统的 WWW.E-Mail. FTP 应用外,用 ...

  2. java网关限流_基于网关GateWay实现限流-令牌桶 及原理解析

    一.使用流程 1) 引入坐标 org.springframework.boot spring-boot-starter-data-redis-reactive 2.1.3.RELEASE 2) 创建b ...

  3. QoS基础及技术原理实战——1

    QoS--质量服务是非常复杂又应用广泛的技术,这一章从基础及原理讲解,非常重要,只有基础和原理上弄懂,才能对QoS的配置有所理解. QoS主要功能包括流量监管(对进入接口的,超出限制速率的报文进行丢弃 ...

  4. QoS基础及技术原理——1

    QoS基础 QoS(质量服务)是一项非常复杂的技术,但应用广泛.可实现的主要功能包括流量监管(对进入接口的,超出限制速率的报文进行丢弃).流量整形(对接口发送的,超出限制速率的报文先进行缓存,等待流量 ...

  5. 令牌桶实现流量限速实例

    今天继续给大家介绍QoS.本文使用华为eNSP模拟器,完成了QoS中令牌桶技术实现的流量限速. 阅读本文,您需要有一定的QoS基础,如果您对此还存在疑惑,欢迎查阅我博客内的其他文章,相信您一定会有所收 ...

  6. 漏斗算法和令牌桶算法

    目录 干什么用的? 什么是漏斗算法 令牌桶算法 令牌锁的使用 干什么用的? 这两个算法来源于计算机网络.在网络传输数据时,为了防止网络拥塞,需要限制网络中的流量,即限流 什么是漏斗算法 水(大量并发的 ...

  7. 脸书令牌怎么使用_网工知识角|QOS技术令牌桶算法一分钟速记,考试无忧

    点上方蓝字关注公众号,坚持每天技术打卡 学网络,就在IE-LAB 国内最著名的高端网络工程师培养基地 QOS是网络服务质量技术,是所有考试中都会有的考点,主要在SP的课程中详述,是高中低级的网工都有必 ...

  8. QoS服务质量二令牌桶算法及QoS业务分类

    QoS服务质量二令牌桶算法及QoS业务分类 2.3.3.DiffServ模型令牌桶算法 2.3.4.基于DiffServ模型的QoS组成 2.3.3.DiffServ模型令牌桶算法 令牌桶算法是网络流 ...

  9. 高并发策略之限流:计数器、漏桶、令牌桶 三大算法的原理与实战(史上最全)

    导读 网站高可用指的就是:在绝大多的时间里,网站一直处于可以对外提供服务的正常状态. 一般以"年"为单位来统计,"9"的个数越多,代表一年中允许的不可用时间就越 ...

  10. 可能要用心学高并发核心编程,限流原理与实战,分布式令牌桶限流

    实战:分布式令牌桶限流 本节介绍的分布式令牌桶限流通过Lua+Java结合完成,首先在Lua脚本中完成限流的计算,然后在Java代码中进行组织和调用. 分布式令牌桶限流Lua脚本 分布式令牌桶限流Lu ...

最新文章

  1. Python将两个图像合并成一个图像(横向合并)
  2. 2021年3月16日 北京快手Java开发实习面试(海外增长方向)
  3. mysql 中文的数据类型_mysql数据类型整理
  4. WINDOWS下的各类HOOK
  5. 入职三天,公司给了100块钱叫我走人
  6. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(7) - 状态清除指令 小结
  7. CodeForces 214B Hometask
  8. 一个back propagation的例子
  9. Hbase RegionServer 宕机
  10. 【UG NX MCD 机电一体化概念设计】UG NX MCD+PLCSIM Advanced联合仿真实例(二 )仿真序列
  11. java经典算法(三)---zws
  12. 为什么国内抖音没有网页版,原因竟然是这样!
  13. 服务器台式机装win7系统,服务器主机装win7系统安装
  14. java实现物体下落效果_android仿微信表情雨下落效果的实现方法
  15. 给未来的电子工程师nbsp;---电子牛人给…
  16. 动软多数据库链接类实例
  17. DFS(深度优先搜索算法)入门
  18. placement new理解
  19. HMC7044调试说明
  20. sp/计算机产品与流通,计算机产品与流通杂志

热门文章

  1. 【每日算法Day 96】腾讯面试题:合并两个有序数组
  2. 图神经网络在生化医疗方面的相关应用
  3. 2021年的第一本书,就从这里选
  4. 深入搜索引擎——海量信息的压缩、索引和查询
  5. 简单类型视图状态应用
  6. 16.4 多模态情感识别
  7. 图像通道变换python-opencv
  8. 如何提高go代码覆盖率_如何提高代码质量?
  9. mongodb 默认端口号_MongoDB集群方案ReplicaSet
  10. ztree 后台异步加载_zTree树形插件异步加载方法详解