欢迎光临散文网 会员登陆 & 注册

【太阁干货】令牌桶是什么?

2021-04-23 10:24 作者:太阁网络  | 我要投稿

要实现流量的控制,必须有一种机制可以对通过设备的流量进行度量。令牌桶是目前最常采用的一种流量测量方法,用来评估流量速率是否超过了规定值。


令牌桶可以看作是一个存放令牌的容器,预先设定一定的容量。系统按给定的速度向桶中放置令牌,当桶中令牌满时,多余的令牌溢出。


令牌桶只是一种流量测量方法,并不能对流量进行过滤或采取某种措施,比如说丢弃数据包等,这些操作由其他功能完成。


令牌桶中装的是令牌而不是分组。


令牌桶限速原理


当数据流到达设备时首先会根据数据的大小从令牌桶中取出与数据大小相当的令牌数量用来传输数据。也就是说要使数据被传输必须保证令牌桶里有足够多的令牌,如果令牌数量不够,则数据会被丢弃或缓存。这就可以限制报文的流量只能小于等于令牌生成的速度,达到限制流量的目的。



在什么地方使用


当前令牌桶算法已广泛应用于CAR技术、流量整形技术以及接口限速LR(Line Rate)等QoS技术中。


两种令牌桶算法

IETF定义了两种令牌桶算法——单速率三色标记算法和双速率三色标记算法,使用红、黄、绿三色来标记评估结果。(注:此处的红、黄、绿三色同流分类中表示丢弃优先级的红、黄、绿三色没有关系,两者只是重名而已)。这两种算法都允许流量在一定程度上突发,但单速率三色标记关注报文尺寸的突发,而双速率三色标记则关注速率上的突发。单速率较双速率实现简单,成为目前业界比较常用的流量评估方式。


两种令牌桶算法都有两种工作模式——色盲模式(Color-Blind)与非色盲模式(Color-Aware,也叫“色敏模式”),其中色盲模式是较常用的,也是默认的模式。


单速率令牌桶主要由如下三个参数构成:

  • CIR(Committed Information Rate):承诺信息速率,单位是kbps,表示向令牌桶中投放令牌的速率。

  • CBS(Committed Burst Size):承诺突发尺寸,单位为byte,用来定义在部分流量超过CIR之前的最大突发流量,即为令牌桶的容量(深度)。承诺突发尺寸必须大于报文的最大长度(最大时一个分组可以领取桶中的全部令牌)。CBS越大,表示所允许的突发量越大。

  • EBS(Extended burst size):表示峰值突发尺寸,用来定义每次突发所允许的最大的流量尺寸,单位为byte。


  • 如果到达的分组未超过CBS,则把它标记为绿色;如果超过了CBS而未超过EBS,则把它标记为黄色;否则,标记为红色。在网络流量比较简单的情况下,单速率三色标记算法可以用在网络入口处来测量流量。

单速率令牌添加方式


单速率标记算法中,初始状态时两桶是满的。先往C桶中添加令牌,等C桶满了,再往E桶中添加令牌(E桶的令牌用做以后临时超过CIR的突发流量),当两桶都被填满时,新产生的令牌将会被丢弃。


单速率流量评估规则

当报文到来后,直接与桶中的令牌数相比较,如果有足够的令牌就转发(通常用一个令牌关联一个比特的转发权限),如果没有足够的令牌则丢弃或缓存。

为方便用Tc和Te表示桶中的令牌数量,Tc和Te初始化等于CBS和EBS。

色盲模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:

  • 对于单速单桶:

  • 如果报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B,

  • 如果报文长度超过C桶中的令牌数Tc,报文被标记为红色,Tc值不变。

  • 对于单速双桶:

  • 如果报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B,

  • 如果报文长度超过C桶中的令牌数Tc但不超过E桶中的令牌数Te,则报文被标记为黄色,且Te=Te-B,

  • 如果报文长度超过E桶中的令牌数Te,报文被标记为红色,但Tc和Te不变。

色敏模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:

  • 对于单速单桶:

  • 如果报文已被标记为绿色但报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B;

  • 如果报文已被标记为绿色且报文长度超过C桶中的令牌数Tc,则报文被标记为红色,Tc保持不变;

  • 如果报文已被标记为黄色或红色,都直接将报文标记为红色,Tc保持不变。

  • 对于单速双桶:

  • 如果报文已被标记为绿色且报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tc=Tc-B,

  • 如果报文已被标记为绿色且报文长度超过C桶中的令牌数Tc但不超过E桶中的令牌数Te,则报文被标记为黄色,且Te=Te-B,

  • 如果报文已被标记为黄色但报文长度不超过E桶中的令牌数Te,则报文被标记为黄色,且Te=Te-B,

  • 如果报文已被标记为黄色且报文长度超过E桶中的令牌数Te,则报文被标记为红色,且Te保持不变,

  • 如果报文已被标记为红色,直接将报文标记为红色,Tc和Te不变。

双速率三色标记算法

双速率令牌桶参数

双速率令牌桶主要包括四个参数:

  • CIR(Committed Information Rate):承诺信息速率,表示端口允许的信息流平均速率,单位是kbps。

  • CBS(Committed Burst Size):承诺突发尺寸,用来定义在部分流量超过CIR之前的最大突发流量,单位为byte。承诺突发尺寸必须不小于报文的最大长度。

  • PIR(Peak Information Rate):表示峰值信息速率,表示端口允许的突发流量的最大速率,单位是kbps。该值必须不小于CIR的设置值。

  • PBS(Peak Burst Size):表示峰值突发尺寸,用来定义每次突发所允许的最大的流量尺寸,单位为byte。

双速率令牌桶结构


双速率三色标记算法业界都使用两个令牌桶,但它关注的是速率的突发,所以不像单速率三色标记算法那样把第一个桶中未使用的令牌放到第二个桶中,而是使用两个独立的令牌桶,存在两个令牌填充速率。为方便将两个令牌桶称为C桶和P桶,C桶容量为CBS,令牌填充速率为CIR,P桶容量为PBS,令牌填充速率为PIR。

 

“双速率”是指该算法中两个令牌桶中的令牌填充速率不同。

 



双速率令牌添加方式

初始状态时两桶是满的。往C桶和P桶分别以CIR和PIR的速率填充令牌。因这两个令牌桶是相互独立的,当其中一个桶被填满时,这个桶新产生的令牌将会被丢弃,另一个桶继续填令牌。


双速率流量评估规则

双速率三色标记算法关注的是速率的突发,首先评估的是数据流的速率是否符合规定的突发要求,其规则是先比较P桶,再比较C桶。

双速率三色标记算法也有色盲模式和色敏模式两种。为方便用Tc和Tp表示桶中的令牌数量,Tc和Tp初始化等于CBS和PBS。


色盲模式下,在对到达报文(假设数据包大小为B)进行评估时,遵循以下规则:

  • 如果报文长度超过P桶中的令牌数Tp,则报文被标记为红色,且Tc和Tp保持不变,

  • 如果报文长度不超过P桶中的令牌数Tp但超过C桶中的令牌数Tc,则报文被标记为黄色,且Tp=Tp-B,

  • 如果报文长度不超过C桶中的令牌数Tc,报文被标记为绿色,且Tp=Tp-B,Tc=Tc-B。

色敏模式下,在对到达报文(假设报文大小为B)进行评估时,遵循以下规则:

  • 如果报文已被标记为绿色且报文长度超过P桶中的令牌数Tp,则报文被标记为红色,且Tp和Tc不变。

  • 如果报文已被标记为绿色且报文长度不超过P桶中的令牌数Tp但超过C桶中的令牌数Tc,则报文被标记为黄色,且Tp=Tp-B,Tc不变。

  • 如果报文已被标记为绿色且报文长度不超过C桶中的令牌数Tc,则报文被标记为绿色,且Tp=Tp-B,Tc=Tc-B。

  • 如果报文已被标记为黄色,则只比较P桶,如果报文长度超过P桶中的令牌数Tp,则报文被标记为红色,且Tp和Tc不变。

  • 如果报文已被标记为黄色,且报文长度不超过P桶的令牌数,则报文被标记为黄色,且Tp=Tp-B,Tc不变。

  • 如果报文已被标记为红色,直接将报文标记为红色,Tc和Tp不变。


【太阁干货】令牌桶是什么?的评论 (共 条)

分享到微博请遵守国家法律