learn
入口约束与 policing:坏输入不能交给队列背锅
理解 TSN 里分类和整形之前还要约束输入流量,防止错误 talker、突发或超规格帧破坏队列和调度假设。
第四章:队列与整形资源隔离IEEE 802.1Q17 分钟
本节学习目标
- 理解队列保护依赖输入流量符合规格。
- 知道超周期、超帧长和错误分类会破坏后续调度。
- 能解释 policing 和 shaping 的区别。
建议先读
核心概念
ingress controltraffic contractoversized framerate violation
本章目录
- 01流量分类与队列:关键帧先要进对队列理解 traffic class、VLAN PCP、队列映射和本地调度之间的关系,避免把优先级当成魔法。
- 02Credit-Based Shaper:用 credit 把突发压成节奏理解 CBS 如何通过 credit 增减控制发送机会,以及它为什么适合平滑而不是严格定时。
- 03严格优先级与饥饿:局部保护为什么会伤到其他流理解 strict priority 如何优先服务关键队列,以及它为什么可能让低优先级流量饥饿,促使 TSN 继续引入整形和调度。
- 04整形的边界:平滑流量不等于安排时间窗口理解 CBS 等整形机制能减少突发和保护带宽,但不能像 Qbv 一样指定某个队列在某个时间发送。
- 05入口约束与 policing:坏输入不能交给队列背锅理解 TSN 里分类和整形之前还要约束输入流量,防止错误 talker、突发或超规格帧破坏队列和调度假设。
- 06ATS 与 CQF 放在哪里:先建立位置感,不急着深挖把 Asynchronous Traffic Shaping 和 Cyclic Queuing and Forwarding 放进 TSN 能力地图,理解它们和 CBS、Qbv 的关系。
解决什么问题
队列、CBS 和 Qbv 都默认输入流量大致符合设计规格。如果 talker 本来承诺每 1 ms 发一帧,结果突然连续发 20 帧;或者最大帧长承诺 300 B,实际发 1500 B,那么后面的队列和调度都会被拖下水。
本节解决入口约束问题:确定性不是只靠交换机内部排队,源头输入也要可控。坏输入不能完全交给队列背锅。
背景与直觉
如果餐厅厨房按每分钟 10 单设计,前台却在 10 秒内塞进 100 单,后厨排班再合理也会崩。网络里也是一样。TSN 配置通常来自某个流量 contract,设备必须有办法检查输入是否符合这个 contract。
policing 更像门口检查:不符合规格的流量被标记、限制或丢弃。shaping 更像节奏调整:把符合或近似符合的流量按更温和的节奏发出去。
怎么解决
入口约束通常关注四类问题。
| 输入问题 | 影响 | 需要的动作 |
|---|---|---|
| 最大帧长超规格 | 发送时间和窗口预算变大 | 拒绝、丢弃或重新分类 |
| 周期/速率超规格 | 队列堆积,CBS credit 失真 | policing 或准入重新评估 |
| PCP/流标识错误 | 进入错误队列 | 分类规则和配置校验 |
| 非预期突发 | 尾延迟升高 | 限速、整形或告警 |
入口约束和 Qcc 的 stream contract 联系很紧。contract 描述流应该是什么样,入口设备要尽量保证实际进入网络的流没有偏离太远。
带来了什么新问题
入口限制会引入策略问题:超规格帧应该直接丢弃,还是降级到普通队列?短暂超速是否允许?错误分类是配置问题还是攻击行为?这些策略会影响业务可用性和安全性。
另一个问题是可观测性。你需要计数器和日志知道哪些流被限制过,否则现场只会看到“某条流偶发丢帧”,却不知道是入口保护在工作。
检查点
- 如果一个关键流实际最大帧长比 contract 大 4 倍,后续 Qbv 窗口会受到什么影响?
- policing 和 shaping 都能改变流量行为,它们分别位于哪个阶段,目的有什么不同?
掌握检查
读完本节后,先用下面这些问题校准自己,而不是只确认“看过了”。
- 1能说明为什么 talker 发错最大帧长会让 Qbv 窗口预算失效。
- 2能区分入口丢弃/限制和后续整形分别解决什么问题。