解决什么问题
这一节回答一个很现实的问题:既然以太网已经有优先级,为什么还要 TSN?优先级当然有用,它能让关键队列在竞争发送机会时排在普通队列前面。但它的作用范围主要是本地的、瞬时的,而 TSN 要的是端到端、可验证的时间边界。
高优先级不能改变已经发生的事实。如果低优先级大帧已经开始发送,关键帧即使优先级最高,也常常只能等待。高优先级也不能保证下一跳已经准备好窗口,更不能自动在整条路径上预留带宽。
背景与直觉
优先级像机场安检的快速通道。它能让你排在普通乘客前面,但不能保证飞机舱门永远开着,也不能保证下一段转机已经为你等候。如果所有人都买了快速通道,快速通道本身也会拥堵。
网络里也是一样。优先级只是相对顺序,不是绝对时间。关键流量过多时,高优先级队列内部仍然会排队;多个设备配置不一致时,某一跳的高优先级不代表下一跳也同样处理;背景大帧已经占用链路时,优先级无法让链路倒流。
怎么解决
TSN 在优先级之上继续加约束。Qbv 用时间窗口避免关键队列总是在运行时抢资源;帧抢占让关键帧不用完整等待普通大帧;CBS 用 credit 控制突发节奏;Qcc 让流级配置沿路径一致;验证方法检查最终结果是否符合边界。
优先级因此变成基础工具,而不是完整方案。它仍然参与 traffic class 映射和队列选择,但要和时间、资源和配置机制配合,才能从“更可能先发”走向“可证明在边界内发送”。
| 只靠优先级缺什么 | 后续机制如何补 |
|---|---|
| 不知道什么时候发 | Qbv/TAS 定义时间窗口 |
| 不能打断普通大帧 | 帧抢占降低最坏阻塞 |
| 不保证多跳一致 | Qcc/集中配置组织路径 |
| 不证明边界 | 测试、抓包、最坏情况分析 |
带来了什么新问题
引入更多机制后,配置错误的空间也变大。优先级映射错了,关键流量会进错队列;Qbv 窗口配错了,高优先级队列可能在错误时间打开;抢占能力两端不一致,guard band 假设可能失效;Qcc 下发不完整,路径上仍会出现断点。
所以 TSN 不是简单取代优先级,而是把优先级纳入更严格的工程体系。学习时要避免两个极端:既不要低估优先级的基础作用,也不要把它误认为确定性的全部。
检查点
- 如果一个关键帧到达时端口正在发送低优先级 1500B 帧,高优先级能否让这个帧立刻停止?为什么?
- 为什么单台交换机上的高优先级配置不能证明端到端 deadline?