今天给大家继续讲解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