解决什么问题
复制与消除只说明帧怎样变成多份、怎样在汇合点去重。真正做工程设计时,更难的问题是“这几份副本应该走哪里”。路径选错了,FRER 可能只是制造了更多流量,却没有带来对应的故障连续性。
最常见的误区是把可靠性想成副本数量:一份不够就两份,两份不够就三份。现实里,可靠性首先取决于故障模型。如果两条路径共享同一段链路、同一个桥、同一根线束、同一个机柜或同一个电源,那么某些故障会同时打断所有副本。
背景与直觉
备份文件如果都放在同一个硬盘上,就不是真正的备份。两份纸质文件如果都放在同一个房间,也挡不住房间级灾害。FRER 的路径独立性也是这个意思:你要先说清楚想防什么故障,再判断路径是否足够分离。
网络拓扑图通常只展示逻辑连接,工程风险却存在于物理层和运维层。两条链路可能在图上分开,但实际共用线束;两个交换机可能在图上不同,但共用电源;两条路径可能设备不同,但都经过同一个拥塞上游。
怎么解决
冗余路径设计可以按四步推进。
第一步写故障模型。你想覆盖的是单链路断开、单桥失效、端口错误、短暂拥塞、供电故障,还是线束级损坏?不同故障模型会要求不同的路径分离程度。
第二步标出故障域。把链路、桥、机柜、电源、线束、上游汇聚点标在拓扑上。只有这样,路径独立性才不是口号。
第三步计算资源放大。假设一条关键流周期 1 ms、最大帧 500 B、原本走 3 条链路。复制成两份后,如果路径 A 3 跳、路径 B 4 跳,那么网络里每周期要承载 7 次关键帧发送,而不是原来的 3 次。Qbv 计划也要给这些发送机会留窗口。
第四步验证故障场景。断开主路径上的一条链路,看备用路径是否仍然到达;注入背景压力,看副本是否仍然满足 deadline;恢复故障,看消除窗口是否处理重复和乱序;记录所有配置、抓包和计数器。
| 设计维度 | 应该检查什么 | 如果忽略会怎样 |
|---|---|---|
| 故障模型 | 想覆盖哪类单点或共因故障 | 可靠性结论没有对象 |
| 路径独立性 | 物理链路、桥、电源、线束是否分离 | 图上冗余,实际同断 |
| 带宽成本 | 副本占用多少链路发送机会 | 其他关键流被挤出 |
| 调度成本 | 每条副本路径是否有窗口和 guard band | 故障下连续但迟到 |
| 状态成本 | 消除窗口和序列状态规模 | 设备资源或误判风险上升 |
| 验证成本 | 需要哪些断链、重载、恢复测试 | 只验证正常路径 |
一个简化估算
假设一条控制流最大帧长 300 B,周期 500 us,原路径 4 跳。1 Gbps 链路上,单帧发送时间约 2.4 us,不含前导码、帧间隔和二层开销。原本每周期链路发送占用约 4 x 2.4 = 9.6 us。
现在复制到两条路径:路径 A 4 跳,路径 B 5 跳。仅发送时间占用就变成 9 x 2.4 = 21.6 us。看起来数字仍小,但如果有 80 条类似流,窗口、guard band、队列和端口局部拥塞都会被放大。冗余不是只加一个开关,而是在资源模型里复制了一部分需求。
这个估算还没有算同步误差、设备执行误差、路径延迟差异和恢复窗口。真正的调度工具要把这些项都纳入,而不是只用平均链路利用率判断。
带来了什么新问题
冗余路径设计会让网络优化变成多目标问题。你希望路径足够独立,又希望跳数不太多;希望备用路径也满足 deadline,又不希望占用太多关键窗口;希望恢复窗口覆盖乱序,又不希望设备状态过大。
它还会放大验证工作量。没有 FRER 时,你可能只需要验证一条路径在轻载、重载、边界流量下的表现。有 FRER 后,还要验证主路径故障、备用路径故障、故障恢复、双路径同时到达、乱序到达、重复消除和状态溢出。
因此,FRER 的工程判断通常不是“要不要可靠”,而是“为了这类故障连续性,愿意支付多少资源、配置和验证成本”。
检查点
- 给一条冗余流列出故障模型:你想覆盖单链路断开、单桥失效,还是线束/供电级共因故障?
- 如果主路径 3 跳、备用路径 5 跳,复制后每个周期的链路发送机会大约如何变化?
- 为什么故障注入测试必须同时检查“是否到达”和“是否仍然准时”?