Summary

  • RFC 3345 描述的是确定性的 BGP 路由振荡:路由器按各自可见的不完整路径集合选路,而新通告又改变其他节点能够比较的候选路径。
  • 证据应是跨节点重复出现的路径、UPDATE 与撤回序列,而不是某一时刻某台路由器的“最佳路径”。

分析

先看一个看似正常的动作:路由反射器选出当前最佳出口并通告给对端。接收方把这条通告加入自己的候选集合,再依照本地决策过程选路。随后,一条撤回可能移除最初影响第一个反射器的路径;它重新计算,又回到前一次选择。通告与撤回绕一圈,系统回到起点。这里不需要随机故障;正是局部状态互相改变,使全网无法收敛。

RFC 3345 于 2002 年作为信息性文档发布。它没有把 MED 规则说成错误:BGP 通常只比较从同一相邻 AS 学到的 MED,以保留对端表达出口偏好的局部含义。完整 iBGP 全互联会带来更广的路径可见性,但规模成本高。路由反射和 AS 联盟减轻会话规模,也可能让不同路由器看到不同出口。

Type I 振荡的条件包括单层反射或联盟设计,以及同一前缀从多个 AS 收到并接受不同 MED。RFC 的反射器示例中,MED 与到 NEXT_HOP 的 IGP 代价比较顺序很关键。一次 UPDATE 让另一节点改选;其后通告或撤回又改变第一个节点可见的路径集合。所谓“最佳”只对局部信息成立,并不自动代表分布式系统已稳定。

Type II 不是 Type I 的简单放大:它要求多层路由反射或多个子 AS,并符合文档描述的 MED 条件。联盟示例还显示周期扫描器可能影响何时重新计算。只保存最终路由表,会抹掉触发循环的时间顺序。

文档列出的替代措施各有代价:调整层间 IGP 度量、拒绝 MED、让决策过程不进入 MED 比较,或恢复全互联。没有一种适用于所有网络。RFC 7964 后来描述了包括 ADD-PATH 在内的路径多样性机制,但这不是广泛部署的证明,也不能说明每种振荡条件都已消失。

要证明生产网络出现了类似循环,需要每台相关路由器的候选路径、属性、选路理由、带时间戳的 UPDATE 与撤回、扫描器状态,并另行观察转发表和实际转发。控制平面的振荡本身不能证明丢包或业务中断。

来源