今天给大家继续讲解QoS技术。本文主要讲解QoS中令牌桶技术,介绍了单速单桶模型、双速双通模型和双速单桶模型等的原理。
阅读本文,您需要有一定的QoS基础知识。如果您对此还存在困惑,欢迎查阅我博客内其他文章,相信您一定会对此有所收获。

一、令牌桶技术概述

在提到QoS的时候,我们知道可以利用QoS实现流量整形和流量限速。而在网络设备中就是是怎样实现流量整形和流量限速的呢?就是通过我们今天所讲的令牌桶技术。
令牌桶可以看做是一个存放令牌的容器。系统按照指定的速度向桶中存放令牌,并借此实现流量整形和流量限速。我们可以把令牌桶技术简单的看做容器和令牌,并且把令牌视为转发报文的能力。并且凭借令牌桶和令牌以实现接口流量的控制。
借助令牌桶技术,可以将报文实现“染色”,所谓“染色”,可以理解为网络设备内部对报文的一种标记。在华为设备中,支持将报文染成绿色、黄色和红色三种颜色。并支持对这三种颜色的报文实现不同的处理方式。令牌桶技术实现流量监管流程如下所示:

二、令牌桶技术模型

令牌桶技术有以下三种模型

(一)单速单桶模型

单速单桶模型比较简单,但是在华为相关设备中并不可以直接配置单速单桶模型,而是必须使用其他模型的特殊形式单体单速单桶模型。
在单速单桶模型中,只存在一个桶,该桶中可以存放一定数量的令牌,并且系统自动的向桶中以固定的速率存放令牌。当桶满时,桶中存放的令牌数量达到最大限度时,我们称桶中令牌出现了“溢出”,并且桶中令牌数量不再增加。当需要发送报文时,首先比较报文大小和桶中令牌的数量。当报文大小小于桶中令牌数量时,报文正常转发,同时减少桶中的令牌数量,减少的值为报文大小。当报文大小大于桶中令牌数量时,报文根据设置拒绝转发或者存入缓存或者降低优先级后转发。

(二)单速双桶模型

单速单桶模型,又被称为单速三色标记算法。在该算法中,存在C桶和E桶两个桶,与单速单桶算法类似,C桶和E桶也有存放令牌的上限阈值(分别称之为CBS和EBS,在有些资料中称为承诺突发尺寸和超额突发尺寸)。
在本模型中,我们把C桶和E桶内的令牌数量分别称为Tc和Te。并且以固定速率CIR(承诺信息速率)向C桶中注入令牌。当C桶令牌满(Tc达到CBS)后,以CIR向E桶注入令牌。当E桶满后,被称为“溢出”。当发送数据时,首先把报文大小和C桶内令牌数量进行比较,当报文大小小于C桶令牌数量时,将该报文标记为绿色。若报文大小小于C桶令牌数量,则比较报文大小和E桶令牌数量,若报文大小小于E桶内令牌数量,则将该报文标记为黄色。若报文大小大于E桶内令牌数量,则将报文标记为红色。
在默认配置下,绿色和黄色的报文会直接转发,而红色的报文会直接丢弃。但是也可以手工配置其他的处理方式。

(三)双速双桶模型

双速双桶模型,又被称为双速三色标记算法。在该算法中,存在C桶和P桶两个桶,而这两个桶也有自己的令牌上限阈值,我们将其分别称为CBS和PBS(在这里PBS为Peak Burst Size的缩写,叫做峰值突发尺寸)。并且系统以固定速率CIR和PIR向两个桶内放入令牌。在双速双桶模型中,PIR必须大于等于CIR。
若假设C桶和P桶中令牌数量为Tc和Tp,用B表示即将发送的报文大小,则双速双桶中有以下规则:
放入规则:
若Tp<PBS,则P桶中令牌数量增加,负责不增加;
若Tc<CBS,则C桶中令牌数量增加,负责不增加。
报文发送规则:
若Tp<=B,则报文被标记为红色;
若Tc<B<=Tp,则报文被标记为黄色;
若B<=Tc,则报文被标记为绿色。
如果成功发送报文,则相应的桶内较少相应的令牌数量。

三、令牌桶模型比较与应用

(一)令牌桶技术应用

上述介绍的各令牌桶技术模型,都是为了实现流量限速和流量整形而设计的,并且不同的模型,可以实现不同的需求。单速双桶模型更关注报文尺寸的突发,而双速双通模型更关注报文速率的突发。 通过合理的设置令牌通的各项参数的大小,可以实现以下功能:在正常情况下允许一个固定值的带宽,但是在紧急情况下,允许一个突发的更高值的带宽。
以双速双桶模型为例,在普通情况下,可以以CBS的速率发送报文,但是在突发情况下,可以占用P桶的流量,能够获得一个短时的更高的带宽。

(二)令牌桶技术各模型关系

单速双桶模式中,若EBS等于0,则其效果和单速单桶模型是一样的;在双速双通模型中,若PIR=CIR,则效果和单速单桶是一样的。

四、流量整形相关理论

在流量整形配置中,使用的令牌桶技术与流量监管完全相同,但是由于增加了缓存,因此流量整形相关相关流程如下所示:
1、当报文到来的时候,首先对报文进行分类,使报文进入不同的队列。
2、若报文进入的队列没有配置流量整形功能,则直接发送该队列的报文,否则,进入下一步处理。
3、按用户核定的队列整形速率向令牌桶内放置令牌,同时:
(1)如果令牌桶中有足够的令牌,则可以用来发送报文,则报文直接被发送,在报文被发送的同时,令牌数量做相应的减少。
(2)如果令牌桶中没有足够的令牌,则将报文放入缓存队列,如果报文放入缓存队列时,缓存队列已满,则丢弃报文
4、缓存队列中有报文的时候,系统按一定的周期从缓存队列中取出报文进行发送,每次发送都会与令牌桶中的令牌数量进行比较,直到令牌桶中的令牌数减少到缓存队列中的报文不能再发送或者缓存队列中的报文全部发送完毕为止。
5、队列整形后,如果该结构和子接口同时配置了接口正向,则系统还要逐级按照子接口整形速率,接口整形速率对报文流进行速率控制。其处理流程与队列整形相似,单不需要步骤 和步骤2。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118975483

QoS令牌桶技术详解相关推荐

  1. vlan配置实例详解_网工知识角|MUXVLAN技术详解,基本原理一篇搞定

    学网络,就在IE-LAB 国内高端网络工程师培养基地 MUX VLAN(Multiplex VLAN )提供了一种通过VLAN进行网络资源控制的机制.通过MUX VLAN提供的二层流量隔离的机制可以实 ...

  2. ×××技术详解(全)

    ×××技术详解(全)   一.引言   <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...

  3. P2P技术详解(一):NAT详解——详细原理、P2P简介(转)

    这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. <P2P技术详解>系列文章 ➊ 本 ...

  4. 015. P2P技术详解(一):NAT详解——详细原理、P2P简介

    http://www.52im.net/thread-50-1-1.html 这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层 ...

  5. 《Windows驱动开发技术详解》学习笔记

    Abstract   如果推荐 Windows 驱动开发的入门书,我强烈推荐<Windows驱动开发技术详解>.但是由于成书的时间较早,该书中提到的很多工具和环境都已不可用或找不到,而本文 ...

  6. c语言windows驱动编程入门,Windows驱动开发技术详解 PDF扫描版[175MB]

    Windows驱动开发技术详解由浅入深.循序渐进地介绍了windows驱动程序的开发方法与调试技巧.本书共分23章,内容涵盖了windows操作系统的基本原理.nt驱动程序与wdm驱动程序的构造.驱动 ...

  7. 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  8. Linux磁盘阵列技术详解(二)--raid 1创建

    我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还 ...

  9. 《Hadoop技术详解》一导读

    前 言 Hadoop技术详解 本书采用的约定 本书采用以下排版约定. 斜体 用于表明新的术语.URL.电子邮件地址.文件名和文件扩展名. 等宽字体 用于程序清单,正文段落中有关的程序元素,如变量及函数 ...

  10. 科普:5G网络关键技术详解

    不久前,中国华为公司主推的Polar Code(极化码)方案,成为5G控制信道eMBB场景编码方案.消息一出,在网络上就炸开了锅,甚至有媒体用"华为碾压高通,拿下5G时代"来形容这 ...

最新文章

  1. 给GPT-2加上“人类偏好”补丁,它说的话就越来越有人情味了丨代码已开源
  2. 【数据挖掘】数据挖掘简介 ( 数据挖掘引入 | KDD 流程 | 数据源要求 | 技术特点 )
  3. java怎么学好 用好接口_Java公开课|Java的实现接口怎么用,这才是学习好Java必备的实用函数,你会吗...
  4. 行内元素和块级元素的区别,为何img、input等行内元素可以设置宽高??(夯实基础)
  5. 【数据库】Mysql日期/时间相关函数汇总
  6. google bookmarks的书签分类的技术
  7. 21天Jenkins打卡Day10-自动触发项目构建
  8. mysql-------常用函数
  9. SQLyog 安装教程
  10. 解决谷歌翻译用不了的问题
  11. 真正的人工智能,需要理解本体论
  12. hist 在matlab中的含义,matlab中hist函数的用法_matlab中hist函数
  13. 简约网站维护单页html源码
  14. Tomcat安装配置及CATALINA_HOME environment variable is not defined correctly问题的解决
  15. 移植AT91Bootstrap1.15
  16. 去除网页腾讯 优酷 爱奇艺右上角logo水印
  17. Three.js的入门+案例
  18. STM32G4系列通过SPI配置DRV8353S驱动芯片
  19. echarts 地图 区域合并
  20. linux下tshark安装及应用

热门文章

  1. 百面机器学习—12.优化算法
  2. 一文带你弄懂什么是索引二叉堆
  3. Mesos超配:让集群利用率可以达到100%
  4. PIC浅谈--《x86/x64体系探索及编程》试读
  5. 博文视点OpenParty第11期“世界黑客大会那些事儿”成功举办
  6. 《变革中的思索》连载九:放飞的爱;母亲和我
  7. IT技术中的言情小说
  8. 「07」回归的诱惑:深入浅出逻辑回归
  9. 《机器学习实战》原书数据与代码(基于Python3)汇总
  10. PyTorch:全局函数