解决什么问题
真实网络不会永远使用同一张 GCL。新增流、路径变化、设备维护、故障切换都可能要求更新调度表。问题是,Qbv 依赖多设备窗口接力,如果某些设备已经使用新表,另一些还在旧表,关键帧就可能掉进错位窗口。
本节解决运行时更新问题:调度表不仅要算对,还要切换对。
背景与直觉
多路口绿波如果要改信号灯计划,不能让一半路口今天切换,另一半明天切换。否则原本连续的绿波会断开。Qbv 也是这样,尤其是多跳关键流。
怎么解决
更新 GCL 时要关注四件事。
| 问题 | 为什么重要 |
|---|---|
| 统一生效时间 | 避免新旧表在路径上混用 |
| 配置版本 | 知道每台设备处于哪一版 |
| 状态反馈 | 确认设备是否成功应用 |
| 回滚策略 | 失败时回到可解释状态 |
base time 可以帮助安排未来某个共同时间点生效。控制器先下发新表,让设备准备好,再在同一个未来时间切换。切换后还要确认设备状态和关键流表现。
带来了什么新问题
运行时更新会让验证变复杂。你不仅要验证稳定运行状态,还要验证切换窗口:切换前、切换中、切换后是否出现 miss、重复或乱序。
如果网络支持冗余路径,切换还可能和 FRER 交互。主路径更新失败时是否切备用,备用路径是否有对应新表,都需要设计。
检查点
- 为什么多设备 Qbv 更新需要统一生效时间?
- 如果路径中一台交换机没有切到新 GCL,你会在抓包或计数器里期待看到什么异常?