跳转到内容

路由和故障转移

在路由级别高可用性设计中,每个 Customer Edge (CE) 站点都通过边界网关协议 (BGP) 发起相同的服务前缀。北向路由器将可用的宣告安装为等价多路径 (ECMP) 下一跳,并成为分配流量和移除故障路径的关键点。

服务 VIP /32
|
上游路由器: 等价下一跳
| | |
CE 站点 1 CE 站点 2 CE 站点 3

当服务为 IPv4 时,将单个虚拟 IP 地址 (VIP) 作为 /32 主机路由宣告。为这些服务地址保留一个仅用于路由的前缀,并且不要将该前缀附加到虚拟私有云 (VPC)、虚拟网络 (VNet)、VLAN 或本地子网。网络应该从路由宣告中学习服务地址,而不是从相连网段上的地址解析协议 (ARP) 中学习。

保持服务前缀独立可以避免已连接路由与 BGP 路由之间的混淆。它还使路由策略、过滤和容量规划变得明确。根据组织的地址管理流程分配前缀;不要将实验室前缀复制到另一个网络中。

建立的 BGP 会话为上游路由器提供了存活信号。当会话关闭或其保持定时器超时,对等体会撤销通过该会话学习到的路由。当双端对等体均支持并启用双向转发检测 (BFD) 时,它可以提供更快的故障检测。因此,收敛时间取决于配置的协议和定时器;它不是瞬时完成的。

静态路由没有等效的会话状态。在 CE 发生故障后,静态 ECMP 路径仍保持可用状态,除非客户路由器或软件定义广域网 (SD-WAN) 控制器使用支持的健康检查机制跟踪下一跳并移除该路由。在没有该机制的情况下,路由器可能会继续选择已故障的 CE,从而导致部分数据流遭遇黑洞。

在部署 CE 设备前规划路由器容量

Section titled “在部署 CE 设备前规划路由器容量”

路由器决定安装多少个等价路径。将其最大 ECMP 路径数与每个 VIP 预期收到的 CE 宣告数进行比较。当宣告数大于已安装路径限制时,额外的健康 CE 站点可能无法用于该前缀。

请检查已安装的转发表,而不要仅仅依赖 BGP 的已接收路由视图。控制层面保留的候选路由可以多于数据层面实际安装的路由。

将优先级和 ECMP 视为不同的策略

Section titled “将优先级和 ECMP 视为不同的策略”

只有当路由选择属性和开销 (metric) 使它们相等时,路径才是等价的。修改本地优先级、多出口鉴别器 (MED)、管理距离或静态路由度量值,可以使特定 VIP 优选某个 CE。这是一种有效的路由引导策略,但它是主备/优选行为,而不是均等分配。

仅当这种非对称是刻意设计时,才对每个前缀应用优先级。请确认当优选路径被撤销时,次选路径会变得可用,且不要留下一个在 CE 故障后依然存在且未被跟踪的静态优选路径。

将控制层面标签与实际流量证据分离

Section titled “将控制层面标签与实际流量证据分离”

在具有多个隧道或路径的设计中,ACTIVE 标签可以标识被选择用于控制层面同步的路径,但这并不能证明其他 ECMP 路径没有承载数据。不要仅凭该标签推断转发状态。请验证路由或隧道表,并观察每个预期路径上的流量计数器。

对于每个服务前缀,请验证以下所有项:

  • 每个预期的 CE 都在宣告该前缀;
  • 上游 BGP 表接受了预期的路径;
  • 转发表安装的路径数既不大于也不小于平台支持的数量;
  • 撤销一个宣告后,在配置的检测和收敛间隔后,该下一跳会被移除;
  • 应用检查在剩余的路径上运行成功。

使用本仓库的 BGP 诊断工作流 来区分 CE 宣告问题与上游转发问题。

  • RFC 4271 定义了 BGP 路由撤销和保持定时器的行为。
  • RFC 5880 定义了 BFD 故障检测。