这样讲Qos之令牌桶技术,不懂来打我

郭老师版权所有,禁止转载

背景

简单的来说,是为了保障服务质量,保证重要数据的传输。
服务质量包括带宽,延迟,抖动和丢包率。
打个比方,公司里老总在开会,你在打游戏。那么老总的数据肯定要保证传输,而你的数据,丢了就丢了吧…
那么,如何保证重要数据的传输保证呢?

举例

为了更好地讲解令牌桶,这里引入一个高速公路的例子。
高速公路上容纳的车流量就好比我们的带宽;
车辆就好比我们的数据包;
我们只有在入口处拿到了卡才能顺利进入高速公路。
那么,这里的卡,就好比是令牌,领卡入口就好比是桶,这就是令牌桶技术,报文拿到了令牌中的令牌才可以被顺利转发。
这里的卡是有限的。如果是无限的,那车很多的话高速公路上不是都挤爆啦?同样的道理,保证链路不被“挤爆”,保证数据的传输。

这里注意:高速公路上只拿一张卡就可以了,那是车辆的大小差别不大。可是数据包可不一样,小到几十字节,大到1500字节,差别非常大。所以在令牌桶技术中,根据报文大小领取一定数量的令牌,不止一张哦~~

单速单桶

假设这里有一个发卡机,以固定的速率[1] 源源不断地往桶里发卡,车辆根据自己的货物多少领取相应量的卡。
如果卡足够,则显示绿灯,准许通行;如果卡不够,说明领卡的车太多了,卡暂时都被领完了,红灯亮起,不允许通行。
没有什么车辆通过,那么卡发到规定数量[2]就不再发卡,也就是说桶里最多可以放多少张卡,某一时刻最多允许通过车辆的多少。用来防止Qos中的抖动,处理某一时刻突然通过车辆太多的情况,否则就会发送抖动,产生丢包重传的情况。

[1]:这里指的是CIR(Committed Information Rate):承诺信息速率,表示向C桶(单桶模式中只有一个令牌桶,称为C桶)中投放令牌的速率,即C桶允许传输或转发报文的平均速率。
[2]:这里指的是CBS(Committed Burst Size):承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。

接下来看图就会变得清晰:

这里B可以理解为报文大小。
Tc为令牌数量。
以固定的速率CIR向桶中发放令牌,最多发放到CBS结束。
数据包根据自己的大小领取令牌:若B≤Tc,则令牌数足够,数据包标记为绿色,允许通过;否则令牌数不够,数据包标记为红色,不允许通过。


单速双桶

我们对前面的单速单桶进行了改进,红绿灯还缺少个黄灯呢对不对?
这里有两个桶,第一个桶还叫C桶,多了一个E桶,意为Excess超额桶。
还是以CIR的速率向C桶里发放令牌,当C桶满了(CBS)之后就存放在E桶里,E桶满了[1](EBS)不再发放令牌。
车辆排队领卡,当C桶里的卡足够,则亮绿灯,表示不拥挤,允许通过。
当C桶里的卡不够,则取E桶里的卡,亮黄灯,表示有点拥挤,还是允许通过。
当两个桶里的卡都不够,则亮红灯,表示很拥挤,不允许通过。

[1]:这里E桶满了是指达到了EBS(Excess Burst Size):超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量。

当C桶令牌足够,报文标记为绿色;C桶不够E桶足够,报文被标记为黄色;都不够则标记为红色,可被丢弃。


双速双桶

前面说到的都只有一个发卡机,这里却有两个发卡机(双速),两个桶(双桶),分别是P桶(Peak峰值)和C桶。
系统按照PIR速率[1]向P桶中投放令牌,存满[2]则不再发放,按照CIR速率向C桶中投放令牌:

当Tp<PBS时,P桶中令牌数增加,否则不增加。
当Tc<CBS时,C桶中令牌数增加,否则不增加。
其中Tp为P桶令牌数量,Tc为C桶令牌数量。

[1]:PIR(Peak information rate):峰值信息速率,表示向P桶中投放令牌的速率,即P桶允许传输或转发报文的峰值速率。PIR的值应大于CIR。
[2]:这里指的是P桶存放令牌的峰值PBS(Peak Burst Size):峰值突发尺寸,表示P桶的容量,即P桶瞬间能够通过的峰值突发流量。

这里跟前面是反的哦!先标记红,然后是黄,最后是绿色。
对于到达的报文,用B表示报文的大小:
若B>Tp,说明车这个时候太多了,都超过Peak峰值了,报文被标记为红色,不允许通过。
若Tp≥B>Tc,报文被标记为黄色,且Tp减少B,允许通过;
若Tc≥B,报文被标记为绿色,且Tp和Tc都减少B,允许通过。


发布了99 篇原创文章 · 获赞 44 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/NetRookieX/article/details/92565089