解决什么问题
Qbv 中的 guard band 是为了防止普通大帧跨入关键窗口。没有抢占时,guard band 往往要按最大可能普通帧发送时间保守预留。对于低速链路或大帧业务,这会浪费明显带宽。
帧抢占让普通大帧可以被分片暂停,关键窗口前需要防范的最坏阻塞从完整大帧缩小为片段。这就是抢占对 Qbv 最直接的价值。
背景与直觉
guard band 像预留清场时间。没有抢占时,你要等最长车辆完全离开;有抢占时,车辆被拆成短段,你只需要等当前短段离开。清场时间短了,关键窗口和普通窗口之间的空白就可以减少。
但拆车厢不是免费的。每个片段都要有额外处理,链路两端要支持恢复,测试也要确认实际阻塞符合预期。
怎么解决
设计时要同时看片段大小、链路速率、关键窗口长度和设备能力。片段越小,理论阻塞越低;链路速率越高,同样片段发送时间越短;但片段越小,开销和实现压力可能越高。
本节的辅助实验通过普通大帧、链路速率和片段大小展示抢占前后的阻塞变化。你会看到低速链路上抢占收益更直观,高速链路上收益仍有意义但可能被其他误差项掩盖。
| 决策 | 收益 | 代价 |
|---|---|---|
| 启用抢占 | 降低最大普通帧阻塞 | 需要两端能力和验证 |
| 缩小片段 | 降低 express 等待 | 增加片段处理开销 |
| 保守 guard band | 降低跨窗风险 | 降低链路利用率 |
| 不启用抢占 | 配置简单 | guard band 可能过大 |
带来了什么新问题
抢占收益必须被验证。设备是否真的启用抢占,express/preemptable 映射是否正确,片段大小是否符合假设,错误帧和恢复机制是否影响延迟,这些都不能只看配置项。
此外,抢占可能改变普通流量的行为。普通大帧被分片后,完成时间可能增加,某些业务对吞吐或延迟也会感受到变化。TSN 设计不能只优化关键流而完全忽视背景业务。
检查点
- 为什么抢占能把 guard band 从完整大帧量级降到片段量级?
- 启用抢占后,一份测试报告应该证明哪些事情,而不仅仅是显示配置开关为 enabled?