「QoS」- 桶令牌 | Token Bucket

描述

令牌桶:使用令牌桶对流量进行评估,是否满足报文转发的条件。

令牌桶算法(Token Bucket Algorithm)是一种常用的网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)算法,用于控制发送到网络上的数据的数目,并允许突发数据的发送。

原理

  • 存在某个服务,其以特定的速度,来向桶中投放令牌。通过令牌的投放速度,来控制流量的转发速度。
  • 在数据转发前中,需要从桶中获取令牌。仅当获取到令牌,数据才能得以转发。

  • 令牌生成:系统以固定的速率向桶中添加令牌。例如,每秒添加 10 个令牌。
  • 令牌存储:桶有最大容量,当桶满时,新添加的令牌会被丢弃。
  • 请求处理:当请求到达时,需要从桶中获取相应数量的令牌:
    • 如果有足够的令牌,则请求被允许,令牌被消耗
    • 如果令牌不足,则请求被拒绝或排队等待

概念术语

CIR,承诺信息速率,unit: kbps, kbit/s:表示向令牌桶中投放令牌的速率

CBS:承诺突发尺寸,unit: byte:用来定义在部分流量超过 CIR 之前的最大突发流量,即为令牌桶的容量

EBS:峰值突发尺寸,unit: byte:用来定义每次突发所允许的最大的流量尺寸

PIR:峰值信息速率,unit: kbps, kbit/s:表示端口允许的突发流量的最大速率,表示向令牌桶中投放令牌的速率,大于 CIR

PBS:峰值突发尺寸,unit: byte,Peek Burst Size,用来定义每次突发所允许的最大的流量尺寸,即为令牌桶的容量,大于 CBS

单桶单速双色标记法

特新特征

单桶单速双色标记法,不允许突发流量,只有承诺流量

原理简述

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

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

在色盲模式下,对于单速单桶:
1)如果报文长度不超过 C 桶中的令牌数 Tc,则报文被标记为绿色,且 Tc=Tc-B,
2)如果报文长度超过 C 桶中的令牌数 Tc,报文被标记为红色,Tc 值不变;

双桶单速三色标记法

特性特征

双桶单速三色标记法,允许短暂的突发流量

原理简述

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

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

在色盲模式下,对于双桶单速:
1)如果报文长度不超过 C 桶中的令牌数 Tc,则报文被标记为绿色,且 Tc=Tc-B,
2)如果报文长度超过 C 桶中的令牌数 Tc 但不超过 E 桶中的令牌数 Te,则报文被标记为黄色,且 Te=Te-B,
3)如果报文长度超过 E 桶中的令牌数 Te,报文被标记为红色,但 Tc 和 Te 不变;

双桶双速三色标记法

特性特征

双桶双速三色标记法,允许长期的突发流量

针对双速率三色标记算法,其关注的是速率的突发:

  • 首先评估的是数据流的速率是否符合规定的突发要求,其规则是先比较 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;

应用

  • API 速率限制
  • 网络流量控制
  • 系统资源分配
  • 防止 DDoS 攻击

参考

DeepSeek / 介绍令牌桶算法
Huawei / QoS 基本原理.pptx