learn
Credit-Based Shaper:用 credit 把突发压成节奏
理解 CBS 如何通过 credit 增减控制发送机会,以及它为什么适合平滑而不是严格定时。
本节学习目标
- 理解 credit 增加和消耗如何限制队列发送节奏。
- 知道 CBS 适合降低突发和保护带宽,但不是严格窗口调度。
- 能区分 CBS 与 Qbv/TAS 在工程机制上的不同角色。
本章目录
解决什么问题
很多实时业务不是必须在某个精确微秒窗口发送,但需要稳定节奏和带宽保护。突发流量如果随到随发,会让队列压力忽高忽低,也会干扰其他业务。CBS 解决的就是“不要让某类流量以完全突发的方式占用链路”。
它常出现在音视频和周期性数据场景里。相比 Qbv 那种严格开关窗口,CBS 更像流量节拍器:允许发送,但要根据 credit 状态控制速度。
背景与直觉
credit 可以理解成队列的发送余额。当队列有数据但不能发送时,credit 按一定速度积累;当队列发送时,credit 会消耗。credit 低于某些条件时,队列就需要等待。这样一来,流量不会长期超出预留节奏。
这和普通优先级不同。优先级决定谁先发,CBS 还会问“你这类流量最近是不是已经发得太多”。它把竞争从纯抢占式顺序,变成带有速率约束的发送机会。
怎么解决
CBS 的核心参数和保留带宽相关。工程上你要知道某类流量大概需要多少带宽,允许多大突发,以及它和其他队列如何共存。credit 增减速率会影响队列等待和链路占用。
本节的辅助实验让你调节突发强度、保留带宽和 credit 恢复速度。你会看到:保留带宽越充分,突发越容易被吸收;credit 恢复太慢,关键队列会变得保守;突发太强,整形也会承受压力。
带来了什么新问题
CBS 不是严格时间表。它能降低突发和改善抖动,但不能像 Qbv 那样指定“第 100 到 140 微秒只允许某队列发送”。如果业务有非常硬的截止时间,CBS 可能需要和其他机制配合。
此外,CBS 参数配置也需要准确流量描述。保留过少会导致关键流排队,保留过多会浪费链路资源。多个 CBS 队列叠加时,还要分析相互影响。
本节掌握标准
学完后,你应该能不用公式解释 credit 为什么会限制发送节奏,能说清 CBS 适合平滑和带宽保护,不适合单独承诺严格发送时刻。看到队列延迟变大时,也应该能判断是保留带宽不足、突发太强,还是 credit 参数过于保守。
credit shaping
整形把突发流量压成更稳定的节奏。
队列、credit 和发送机会一起决定关键帧是否被挤压。
shaper bench
先把谁和谁竞争说清楚,再谈确定性。
调节突发强度、保留带宽和 credit 恢复,观察整形如何把流量压成更稳定的节奏。
队列与 CBS 实验台
教学估算队列压力
58%
平滑程度
42%
整形正在改变队列压力
保留带宽和 credit 恢复越充分,突发流量越不容易压垮关键队列。
try it
动手调参数
机制拆解
- 1traffic class 把关键流量放入可管理队列。
- 2CBS 用 credit 控制发送节奏。
- 3整形减少突发,但严格窗口仍需要 Qbv 等机制。
engineering check