跳转到内容
搜索文档

解决路由和 BGP 问题

最后更新 查看 MarkdownAgent 设置

本指南可帮助您诊断和解决 Magic Transit 的常见路由与 BGP 问题。这些问题可能会影响流量交付、导致非预期的延迟或导致连接丢失。

快速诊断清单

如果您遇到路由或 BGP 问题,请先检查以下项目:

  1. BGP 会话状态:验证会话是否为 Established,而不是卡在 Connect(连接)Active(活动)
  2. 防火墙规则:确保您的路由器与 Cloudflare 之间双向允许 TCP 端口 179
  3. 前缀通告状态:确认仪表板中前缀显示为 Advertised,而不是 WithdrawnApproved
  4. 路由传播时间:等待 2 到 5 分钟以使更改在全球范围内传播。Cloudflare 在几分钟内传播更改,但无法控制外部 ISP 刷新其 BGP 表的速度。
  5. 隧道或 CNI 健康状况:检查底层连接是否健康。降级的隧道会影响路由优先级。
  6. 静态路由冲突:在优先级相同的情况下,静态路由优先于 BGP 路由。

路由传播时间

当您通告或撤销 BYOIP 前缀时,更改会在几分钟内传播到 Cloudflare 的整个网络中。

操作 Cloudflare 传播 全球互联网传播
前缀通告 1-2 分钟 通常为 2-5 分钟
前缀撤销 1-2 分钟 2-15 分钟(BGP 路径寻觅)

为什么撤销需要更长的时间

当撤销路由时,互联网网络会执行 BGP 路径寻觅(path hunting)。它们在收敛到新的路由状态之前搜索替代路径。以下因素会放大这一行为:

  • Cloudflare 的全球 anycast 网络和广泛的对等互联关系
  • 最小路由通告间隔(MRAI),通常每次迭代为 30 秒
  • 多个 Tier-1 网络需要独立收敛

在路径寻觅期间,流量可能会被路由到次优路径或被完全丢弃。

有关推荐程序,请参阅安全撤销 BYOIP 前缀

解决常见问题

BGP 会话未建立

本节涵盖您的网络与 Cloudflare 之间通过 CNI 或隧道建立的 BGP 对等互联会话(Beta)。这些会话与 Cloudflare 向互联网通告您的前缀的方式是分开的,后者将在 路由传播时间 中介绍。

症状

  • BGP 会话从未达到 Established 状态
  • 未通告或接收到任何路由
  • 路由器日志显示重复的连接尝试

BGP 会话状态

状态 含义 建议操作
Established 会话已建立,正在交换路由 正常运行
Active(活动) 正在尝试发起连接 检查防火墙规则,验证邻居 IP
Connect(连接) TCP 连接正在进行中 检查端口 179 访问,验证对等互联 IP
Idle 会话关闭,无连接尝试 检查配置,验证 BGP 是否启用

解决方案

  1. 验证您的防火墙在您的路由器与 Cloudflare 对等互联地址之间双向允许 TCP 端口 179
  2. 确认邻居 IP 与 Cloudflare 提供的对等互联地址完全匹配。
  3. 验证您的 ASN 配置与仪表板设置相匹配。仅支持 eBGP,因此您的 ASN 必须与 Cloudflare 账户 ASN 不同。
  4. 如果使用 MD5 身份验证,请验证双方的密码是否一致。

通告后前缀不可达

症状

  • 仪表板显示前缀为 Advertised
  • 外部主机无法到达该前缀中的 IP
  • 流量被丢弃

原因

  • 路由传播仍在进行中
  • 您的网络上缺少返回路径路由
  • 与上游 ISP 的 ROA/RPKI 验证问题

解决方案

  1. 等待传播:等待最多 5 分钟以实现完整的全球传播。更改在 Cloudflare 上传播很快,但外部网络的更新速度各有不同。
  2. 验证返回路径路由:确保您的网络具有在流出(egress)配置下将返回流量通过 Cloudflare 发回的路由。对于仅流入或直接服务器返回(DSR)配置,请通过您的隧道路由返回流量。
  3. 检查外部可见性:使用 BGP 镜子(looking glass)工具,例如 bgp.he.netRIPE RIS,确认您的前缀在外部网络中可见。
  4. 验证 RPKI 配置:如果您使用资源公钥基础设施(RPKI),请确认您的路由起点授权(ROA)记录与您的前缀以及 Cloudflare 中的 ASN 配置相匹配。

撤销前缀期间的流量丢失

症状

  • 通过 API 或仪表板撤销了前缀
  • 外部流量继续到达 Cloudflare 但被丢弃
  • 撤销后连接丢失持续数分钟

原因

这是 BGP 路径寻觅行为。当 Cloudflare 撤销您的前缀时,互联网网络会搜索替代路径。收敛通常需要 2 到 5 分钟,但可能会延长至 11 分钟以上。在此期间,流量可能会:

  • 通过 ISP 的缓存路径路由到 Cloudflare
  • 在尚未收敛的 Tier-1 提供商之间发生环路
  • 在到达您的网络之前被丢弃

解决方案

请遵循安全的前缀撤销程序:

  1. 撤销前:从您的备用提供商通告相同的前缀(完全相同的前缀长度)。这为 BGP 提供了一个立即可用的替代路径。
  2. (可选)降低 Cloudflare 的优先级:向 Cloudflare 的路由添加 AS prepend,使其成为较不首选的路径,从而使流量逐渐转移。
  3. 从 Cloudflare 撤销:通过 API 或仪表板请求撤销前缀。
  4. 等待收敛:在认为迁移完成之前,请至少等待 15 分钟。

在 Cloudflare 和您的 ISP 中使用相同的前缀长度可以防止路径寻觅。网络将立即拥有可用的替代路由。

有关详细说明,请参阅安全撤销 BYOIP 前缀

异常流量路由或延迟

症状

  • 来自特定区域的流量被路由到遥远的数据中心
  • 区域用户的延迟高于预期
  • 流量未使用最近的隧道或 CNI

原因

  • 隧道健康状况降级导致路由优先级下降
  • 区域路由范围(regional route scoping)配置错误
  • BGP 路由优先级未按预期设置
  • 静态路由覆盖了 BGP 路由

解决方案

  1. 检查隧道 health 状况:降级的隧道会在其路由优先级值上增加 500,000。关闭的隧道会增加 1,000,000。流量会转移到更健康的路径,这可能位于不同的区域。诊断步骤请参阅 排除隧道健康状况故障

  2. 检查路由优先级:较低的优先级值表示较高的首选项。验证您的路由是否具有预期的优先级配置。

    • 默认 BGP 路由优先级:100
    • 优先级为 100 的静态路由优先于优先级为 100 的 BGP 路由
  3. 检查区域范围:如果您使用区域范围路由,请确保所有区域都有路由覆盖。到达没有匹配路由的区域的流量将被丢弃。

  4. 使用 Network Analytics:查看流量模式以识别流量的落地位置及其遵循的路径。使用说明请参阅 Network Analytics

CNI 链路故障

症状

  • 仪表板中显示 CNI 关闭
  • 基于 CNI 的 BGP 会话掉线
  • 流量故障转移到隧道或备用 CNI

CNI 问题层级

CNI 问题可能会在多个层级发生:

问题类型 影响 检查内容
物理链路关闭 影响流经该 CNI 的所有流量 光功率、交叉连接状态
BGP 会话关闭 撤销动态路由 您的路由器上的 BGP 邻居状态
前缀被撤销 特定路由不可用 BGP 通告和接收的路由

健康的物理链路仍可能会出现 BGP 问题。也可能在特定前缀被撤销时,BGP 会话仍处于健康状态。

解决方案

检查物理层(您侧):

  1. 验证您的路由器上该接口在管理上处于开启状态。
  2. 检查光功率(Tx/Rx dBm)。异常读数表示光纤或收发器存在问题。
  3. 如果您接收侧的光功率较低或没有,请联系您的数据中心以验证交叉连接状态。

检查 BGP 会话:

  1. 验证您路由器上的 BGP 邻居状态显示为 Established
  2. 如果配置了身份验证,请检查是否存在 MD5 身份验证不匹配。
  3. 查看 BGP 日志,了解说明会话掉线原因的错误消息。

检查是否正在进行维护:

  1. 查看 Cloudflare Status 以了解影响您的 CNI 位置的计划维护。
  2. 某些维护事件可能会临时影响 CNI 连接,即使被标记为无中断。

有关 CNI 配置和设置信息,请参阅 Network Interconnect

静态路由与 BGP 路由冲突

症状

  • 尽管已学习到 BGP 路由,但未被使用
  • 流量未遵循预期的 BGP 路径
  • 路由更改未按预期生效

原因

当静态路由和 BGP 路由共享相同的前缀和优先级时,Cloudflare 会优先选择静态路由。这可确保手动配置的路由具有最高优先级,除非明确降低其优先级。

解决方案

根据您的偏好调整路由优先级:

  • 若要首选 BGP 路由:将静态路由优先级设置为较大的数值(例如,150200)。较大的数值表示较低的优先级。
  • 若要首选静态路由:将静态路由优先级保持在 100 或以下。BGP 路由默认优先级为 100
路由类型 前缀 优先级 是否被选中
静态 10.0.0.0/24 100 是(相同优先级时静态胜出)
BGP 10.0.0.0/24 100

要在此示例中使 BGP 路由成为首选路由,请将静态路由优先级更改为 150 或更高,或完全删除静态路由。

有关优先级如何工作的详细信息,请参阅 路由优先级

CNI、隧道和 BGP 健康状况

了解这些组件之间的关系有助于诊断路由问题:

组件 监控内容 不健康时的影响
CNI 健康状况 物理或虚拟互联链路状态 BGP 会话可能会掉线。影响流经该 CNI 的所有流量。
隧道健康状况 通过健康检查探测逻辑 GRE 或 IPsec 隧道 路由优先级会受到惩罚。流量转向更健康的隧道。
BGP 会话 动态路由的控制平面连接 撤销动态路由。静态路由不受影响。

如果健康检查探测被阻止或配置错误,健康的 CNI 也可能会有不健康的隧道。即使底层物理链路运行正常,BGP 路由也可能被撤销。

收集用于支持的信息

如果您已阅读本指南但仍遇到路由问题,请在联系 Cloudflare 支持之前收集以下信息。

必需信息

  1. 账户 ID 和受影响的前缀、隧道名称或 CNI 标识符
  2. 发生问题时的时间戳(使用 UTC 时区)
  3. BGP 配置详细信息:
    • 您的 ASN 和 Cloudflare 对等互联 ASN
    • 邻居 IP 地址
    • 净化后的路由器配置(删除密码和密钥)
  4. 当前状态信息:
    • 路由器中的 BGP 会话状态
    • 显示前缀、路由或隧道状态的仪表板截图

有帮助的诊断数据

  • 外部 BGP 可见性:显示您前缀的 looking glass 工具的结果
  • 路由器日志:覆盖事件发生时间段的 BGP 邻居日志
  • Traceroute 结果:从受影响的源网络到您的前缀
  • 针对 CNI 问题:您设备的光功率读数

路由器诊断命令

收集这些命令的输出(语法因厂商而异):

# 显示 BGP 邻居状态
show bgp neighbors

# 显示 BGP 摘要
show bgp ipv4 unicast summary

# 显示 BGP 表中的特定前缀
show bgp ipv4 unicast <YOUR_PREFIX>

# 显示接口状态(针对 CNI)
show interface <YOUR_INTERFACE_NAME>

# 显示接收到的路由和通告的路由
show bgp ipv4 unicast neighbors <YOUR_NEIGHBOR_IP> routes
show bgp ipv4 unicast neighbors <YOUR_NEIGHBOR_IP> advertised-routes

资源

这篇文档对您有帮助吗?