跳到主要内容

7. Routing Convergence Properties (路由收敛属性)

7. Routing Convergence Properties (路由收敛属性)​

本节讨论在大规模数据中心中使用 EBGP 的路由收敛特性, 包括故障检测时间, 事件传播时间以及 Clos 拓扑如何影响收敛行为.

7.1 Fault Detection Timing (故障检测时间)​

路由收敛的第一步是检测故障.在数据中心环境中, 可以使用几种机制来检测链路或设备故障.

物理层检测

最快的故障检测方法是物理层 (L1) 信号丢失检测.当链路失败时 (例如, 由于光纤断裂或端口故障), 物理层几乎立即检测到信号丢失.这通常在毫秒级别发生.

优点:

  • 非常快速 (通常 < 1 毫秒)
  • 不需要额外配置
  • 对 CPU 没有开销

限制:

  • 仅检测物理链路故障
  • 不检测设备级别的软件故障
  • 不检测远程端设备挂起的情况

双向转发检测 (BFD)

BFD [RFC5880] 是一种轻量级协议, 专门设计用于快速检测两个相邻路由器之间的转发路径故障.BFD 通过在对等体之间定期发送控制数据包来工作.

在数据中心环境中, BFD 通常配置为:

  • 发送间隔: 300-1000 毫秒
  • 检测倍数: 3
  • 检测时间: 900-3000 毫秒
interface Ethernet1/1
bfd interval 300 min_rx 300 multiplier 3

router bgp 64701
neighbor 10.1.1.1 fall-over bfd

优点:

  • 快速检测 (亚秒级)
  • 检测软件故障和转发路径问题
  • 协议无关 (可与 BGP, OSPF, IS-IS 等一起使用)
  • 可以在硬件中实现以减少 CPU 开销

限制:

  • 需要额外配置
  • 增加一些协议开销
  • 需要设备支持

BGP Keepalive 和 Hold Timer

如果不使用 BFD, BGP 依赖其自己的 keepalive 和 hold timer 机制来检测对等体故障.

默认 BGP 计时器:

  • Keepalive: 60 秒
  • Hold time: 180 秒

对于数据中心, 这些计时器通常调整为:

  • Keepalive: 3-10 秒
  • Hold time: 9-30 秒
router bgp 64701
neighbor 10.1.1.1 remote-as 64601
neighbor 10.1.1.1 timers 3 9

优点:

  • 无需额外协议
  • 广泛支持
  • 简单配置

限制:

  • 比 BFD 慢
  • 仅检测 BGP 会话故障, 而不是转发路径故障
  • 基于 CPU 的处理可能在高负载下不可靠

推荐

对于大规模数据中心, 推荐的故障检测策略是:

  1. 依赖物理层检测用于物理链路故障
  2. 使用 BFD 用于快速检测软件和转发路径故障
  3. 保持积极的 BGP 计时器作为后备

这种组合提供了全面和快速的故障检测, 通常在 1-3 秒内检测到大多数故障.

7.2 Event Propagation Timing (事件传播时间)​

一旦检测到故障, 路由信息必须传播通过网络以允许设备计算新路径.在 EBGP 设计中, 事件传播是增量的和高效的.

BGP 更新传播

当检测到故障时:

  1. 检测故障的设备撤回受影响的路由 (或通告新的最佳路径, 如果存在备用路径)
  2. 邻居接收 BGP 更新并重新计算其最佳路径
  3. 如果邻居的最佳路径改变, 它向其邻居发送更新
  4. 此过程继续, 直到所有受影响的设备收敛

传播时间因素

影响 BGP 更新传播速度的几个因素:

BGP 扫描间隔: 某些 BGP 实现使用定期扫描过程来检查路由变化.这可能会延迟更新的发送.现代实现通常使用事件驱动的更新, 消除了这种延迟.

最小路由通告间隔 (MRAI): BGP 可以配置为限制向同一对等体通告路由的频率.对于 EBGP, 默认 MRAI 通常为 30 秒, 但在数据中心中应将其降低到 0 或接近 0.

router bgp 64701
neighbor 10.1.1.1 advertisement-interval 0

处理延迟: 每个设备需要时间来处理接收到的更新, 运行最佳路径算法并生成输出更新.在现代硬件上, 这通常在毫秒范围内.

3 阶段 Clos 的传播时间

在 3 阶段 Clos 拓扑中:

  • 最坏情况跳数: 3 (Tier 2 -> Tier 1 -> Tier 2)
  • 每跳传播时间: 10-100 毫秒 (取决于实现)
  • 总传播时间: 30-300 毫秒

5 阶段 Clos 的传播时间

在 5 阶段 Clos 拓扑中:

  • 最坏情况跳数: 5
  • 总传播时间: 50-500 毫秒

与 IGP 的比较

链路状态 IGP (OSPF, IS-IS) 使用泛洪机制来传播链路状态信息.在大型网络中:

  • IGP 泛洪可能影响更多设备 (整个区域)
  • IGP 需要在每个设备上进行完整的 SPF 计算
  • BGP 的增量更新通常导致更快的收敛

BGP 的优势

在 EBGP Clos 设计中:

  • 更新仅发送到受影响的对等体
  • 如果存在备用路径, 故障可能在本地被掩盖 (不会进一步传播)
  • 增量更新减少了处理开销
  • 没有域范围的泛洪

7.3 Impact of Clos Topology Fan-Outs (Clos 拓扑扇出的影响)​

Clos 拓扑的扇出 (每个设备的连接数) 显著影响收敛行为.

高扇出的优势

更高的扇出 (例如, Tier 2 设备连接到 64 个 Tier 1 设备) 提供:

更好的故障容忍度: 单个链路故障仅影响 1/64 的路径.ECMP 自动将流量重新分配到剩余的 63 条路径.

本地收敛: 在许多情况下, 故障可以在本地处理, 无需将更新传播到网络的其余部分.例如, 如果 Tier 2 设备失去到一个 Tier 1 设备的连接, 它只需从其 ECMP 组中移除该下一跳.对于通过其他 Tier 1 设备具有路径的目的地, 不需要向下游通告任何变化.

减少的收敛时间: 由于更多的备用路径, 受影响的设备数量更少, 收敛更快.

低扇出的挑战

较低的扇出 (例如, 只有 2-4 条上行链路) 导致:

更高的故障影响: 单个链路故障影响更大比例的路径 (例如, 1/2 而不是 1/64).

更广泛的更新传播: 更多的设备需要重新计算路径并发送更新.

潜在的拥塞: 当一条路径失败时, 剩余的路径可能会过载, 特别是如果它们已经高度利用.

推荐

对于大规模数据中心, 建议:

  • 目标至少 16-32 的扇出 Tier 2 到 Tier 1
  • 使用一致性哈希来最小化故障期间的流重新映射
  • 确保设备支持所需的 ECMP 扇出

7.4 Failure Impact Scope (故障影响范围)​

EBGP Clos 设计的关键优势之一是故障的影响通常是局部的和有限的.

Tier 3 <-> Tier 2 链路故障

影响:

  • 仅影响连接到故障链路的服务器
  • Tier 2 从其 ECMP 组中移除故障的 Tier 3
  • 可能需要向 Tier 1 发送更新以撤回不再可达的前缀
  • 影响范围: 非常局部 (1 个 Tier 2, 少数 Tier 1)

收敛时间:

  • 故障检测: 1-3 秒 (物理层或 BFD)
  • 更新传播: 10-100 毫秒
  • 总计: 1-3 秒

Tier 2 <-> Tier 1 链路故障

影响:

  • Tier 2 从其 ECMP 组中移除故障的 Tier 1
  • 对于通过其他 Tier 1 设备可达的目的地, 不需要进一步更新
  • 对于仅通过故障的 Tier 1 可达的目的地 (不太可能在对称 Clos 中), 需要更新
  • 影响范围: 局部 (1 个 Tier 2, 可能一些对等 Tier 2)

收敛时间: 类似于 Tier 3 <-> Tier 2 故障

Tier 1 设备故障

影响:

  • 所有 Tier 2 设备失去到此 Tier 1 的连接
  • 每个 Tier 2 从其 ECMP 组中移除故障的 Tier 1
  • 如果存在足够的冗余 (通常情况下), 不需要进一步更新
  • 影响范围: 中等 (所有 Tier 2, 但通常本地处理)

收敛时间:

  • 故障检测: 1-3 秒
  • 并行处理: 所有 Tier 2 并行收敛
  • 总计: 1-3 秒

Tier 2 设备故障

影响:

  • 连接的 Tier 3 设备失去此上行链路
  • Tier 1 设备失去到此 Tier 2 的连接
  • Tier 1 设备撤回从此 Tier 2 学习的前缀
  • 其他 Tier 2 设备接收更新并可能安装新路径
  • 影响范围: 中等 (本地集群)

收敛时间: 1-5 秒

与 IGP 的比较

在链路状态 IGP 中:

  • 链路状态更新泛洪到整个区域
  • 所有设备运行 SPF 计算
  • 影响范围更广
  • 潜在的收敛时间更长

在 EBGP Clos 中:

  • 更新是增量的和定向的
  • 许多故障是本地处理的
  • 影响范围更窄
  • 通常收敛更快

故障隔离的好处

EBGP Clos 设计的故障隔离特性提供:

  • 降低的爆炸半径: 故障不会影响整个网络
  • 更好的稳定性: 局部问题保持局部
  • 更容易的故障排除: 更容易识别和隔离问题
  • 改进的可预测性: 收敛时间更一致和可预测

7.5 Routing Micro-Loops (路由微环)​

路由微环是在路由收敛期间可能出现的瞬态转发环路.当不同的路由器在不同时间更新其转发表时, 就会发生这种情况, 导致数据包在两个或多个路由器之间循环.

微环的原因

在路由收敛期间:

  1. 路由器 A 检测到故障并更新其转发表
  2. 路由器 B 尚未接收到更新并仍然使用旧路径
  3. 如果路由器 A 的新路径通过路由器 B, 并且路由器 B 的旧路径通过路由器 A, 则发生环路

EBGP Clos 中的微环

在 EBGP Clos 设计中, 微环不太可能发生, 原因如下:

AS 路径环路预防: BGP 的 AS 路径机制自然防止环路.如果路由更新包含接收设备的 ASN, 则该更新被拒绝.

分层拓扑: Clos 拓扑的分层性质减少了环路的可能性.流量从 Tier 2 流向 Tier 1, 然后回到 Tier 2.Tier 1 设备不会将流量转发到其他 Tier 1 设备, Tier 2 设备不会将流量转发到其他 Tier 2 设备 (在没有对等链路的情况下).

快速收敛: 快速的收敛时间减少了路由器处于不一致状态的时间窗口.

ECMP 行为: 在 ECMP 环境中, 当一条路径失败时, 流量被重新分配到剩余的路径.这不会导致环路, 因为 ECMP 下一跳是预先计算的并且是一致的.

何时可能出现微环

虽然不太可能, 但在某些情况下仍可能出现微环:

非对称拓扑: 如果 Clos 拓扑不对称或使用非标准的 BGP 策略, 可能会出现环路.

路由汇总: 如果在拓扑内使用路由汇总 (通常不推荐), 可能会导致黑洞和潜在的环路.

AS 路径操作: 如果使用自定义 AS 路径操作, 可能会绕过环路预防机制.

缓解策略

为了进一步减少微环的风险:

避免拓扑内汇总: 不要在 Clos 拓扑内汇总路由 (仅在边缘).

保持简单的 BGP 策略: 最小化 AS 路径操作和其他 BGP 策略调整.

使用 BFD: 快速故障检测减少了收敛时间和不一致的窗口.

对称设计: 维护对称的 Clos 拓扑, 避免特殊情况和例外.

结论

在正确设计的 EBGP Clos 网络中, 路由微环很少见.拓扑的自然属性, 结合 BGP 的环路预防机制, 提供了强大的保护, 防止转发环路.