解决什么问题
普通以太网中,一个帧开始发送后通常要完整发完。对关键帧来说,这意味着最坏情况下可能要等待一个最大长度普通帧。帧抢占要解决的就是这个非抢占阻塞问题。
抢占不是把普通帧丢掉,也不是让关键帧随意插进任何比特中间。它把流量分为 express 和 preemptable,让可抢占帧在合法片段边界暂停,express 帧先发,之后再恢复普通帧。
背景与直觉
可以把普通大帧想成一列长货车。没有抢占时,关键车必须等整列货车通过路口。有抢占后,货车被拆成几节车厢,关键车可以在车厢之间穿过。货车没有消失,只是被分段处理。
这就是 express 与 preemptable 的关系。express 是需要低阻塞的关键流量,preemptable 是允许被分片让路的普通流量。两端设备必须都支持并协商相关能力,否则不能假设抢占可用。
怎么解决
帧抢占依赖 MAC 层能力。发送端将可抢占帧切成片段,在片段边界允许 express 帧插入。接收端需要识别片段并恢复原始可抢占帧。这个过程要保证普通帧最终仍然正确到达,同时降低 express 帧等待时间。
在 TSN 组合里,抢占常与 Qbv 一起使用。Qbv 负责定义时间窗口,抢占负责缩小窗口前普通大帧可能造成的阻塞。这样 guard band 可以更短,链路利用率可能提高。
| 配置对象 | 作用 | 配错后果 |
|---|---|---|
| express traffic | 低阻塞关键流量 | 太多流量挤入 express,关键性被稀释 |
| preemptable traffic | 可被分片让路的流量 | 普通流无法被抢占,guard band 假设失效 |
| fragment size | 决定最坏片段阻塞量级 | 太大收益小,太小开销更明显 |
| link partner capability | 确认两端支持 | 单端假设抢占会导致验证失败 |
带来了什么新问题
抢占引入了片段开销和设备能力依赖。不是所有设备、端口或链路都支持;支持也需要正确协商。片段越小,关键帧等待越短,但开销可能越明显。片段恢复和错误处理也会增加验证复杂度。
此外,抢占降低阻塞,不等于给关键帧安排了完整路径。没有 Qbv、CBS 或流级配置,关键帧仍可能在后续跳遇到其他竞争。
检查点
- 为什么说抢占不是丢弃普通帧,而是暂停和恢复普通帧?
- 如果把大量普通业务都配置成 express,会对关键业务保护造成什么问题?