BGP 路由可见性与路径分析

使用内置演示查看 Topolograph 能够证实的路由视图,验证最佳路径决策,比较不同时刻的路由状态,并跟踪 BGP 下一跳如何经过 OSPF。

路由信息可见性 BGP 最佳路径计算

1. BGP 演示

生成的 BGP 演示会自动加载。其中包含 13 台路由器、22 个 BGP 会话,以及两台 BMP 能力刻意不同的 route reflector。

  1. 确认生成的演示拓扑已存在;无需上传或手动加载演示。
  2. 打开常规视图并确认 BGP 叠加层可见。叠加层默认启用;控件可以隐藏并恢复它。
  3. 找到 Router ID 为 123.123.100.100 (RFC 7854) 和 123.123.101.101 (RFC 7854 + RFC 9069 + RFC 8671) 的路由器。这些 RFC 表明 Topolograph 通过 BMP 从每台 route reflector 获取哪些 RIB。

IGP 拓扑仍是基础图。BGP 叠加层在不替换 OSPF 连通性的前提下增加会话。

2. BGP 会话

同时使用两种表示:表格可精确过滤 BGP 会话,BGP 会话的图形叠加层则显示所选会话在拓扑中的位置。

  1. 打开 BGP Sessions,并在 peer ip 列中按 123.123.31.31 过滤。
  2. 确认 123.123.31.31 (PE31) 只有一个 BGP 会话,与 123.123.100.100 (RR1) 建立,且未与 123.123.101.101 (RR2) 建立 BGP 会话。
  3. 返回常规视图,在 BGP 叠加层中定位同一条 PE 到 123.123.100.100 (RR1) 的连接。

下方过滤后的 BGP Sessions 表格使 RFC 7854 限制场景变得具体:123.123.31.31 (PE31) 只有一个可观测会话,到 123.123.100.100 (RR1)。

按 123.123.31.31 (PE31) 过滤的 BGP Sessions 表格,显示其唯一到 123.123.100.100 (RR1) 的会话

123.123.31.31 (PE31) 只有一个 BGP 会话,用于展示本手册后续说明的 RFC 7854 限制。

3. RIB 视图

与 route reflector 建立的 BMP 会话不会自动提供每个 RR 客户端路由表的视图。能够发送 Loc-RIB 的 BMP 会话可提供最准确的路由表状态视图。当部分信息不可用时,Topolograph 也可以在明确假设的基础上工作。例如,即使没有与设备本身建立 BMP 会话,也可以根据相邻 BMP speaker 面向该设备的 RFC 8671 Adj-RIB-Out post-policy 推断该设备的 RIB 状态。

BMP 各 RFC 覆盖范围及其对路径计算的含义
BMP 数据所观测 RIB 的所有者和方向能否为指定设备计算路径?所需假设
RFC 7854 Adj-RIB-In pre-policy/post-policyAdj-RIB-In 属于 BMP speaker,包含它从 BGP 邻居收到的路由Adj-RIB-In 不显示 BMP speaker 在 Loc-RIB 中选择并安装了哪条路由
RFC 9069 Loc-RIBLoc-RIB 属于 BMP speaker,包含它选择的路由
RFC 8671 Adj-RIB-Out post-policyAdj-RIB-Out 属于 BMP speaker,包含它向特定 BGP 邻居通告的路由;对该邻居而言,此数据作为推断的 Adj-RIB-In 使用无法观测 BGP 邻居的入站策略及其最终 Loc-RIB
演示网络中的路由器与路由信息可见范围
路由器或分组Topolograph 中可用的 BMP 数据路径计算假设
123.123.101.101 (RR2)Loc-RIB 属于 123.123.101.101 (RR2),并通过 RFC 9069 直接从该设备获取可用
123.123.30.30 (PE30); 123.14.14.14 (PE14)Adj-RIB-Out post-policy 属于 123.123.101.101 (RR2),并面向相应设备;对该设备而言,它作为推断的 Adj-RIB-In 使用可用无法观测该设备的入站策略及其最终 Loc-RIB
123.10.10.10 (Core10); 123.123.110.110 (Core110)Adj-RIB-Out post-policy 属于 123.123.101.101 (RR2),并面向相应设备;对该设备而言,它作为推断的 Adj-RIB-In 使用可用无法观测该设备的入站策略及其最终 Loc-RIB
123.15.15.15 (PE15)所观测的 Loc-RIB 属于 123.123.101.101 (RR2);其面向 123.15.15.15 (PE15) 的 Adj-RIB-Out 未通过 BMP 导出可用假设 123.123.101.101 (RR2) 已向 123.15.15.15 (PE15) 通告其选定路由,且 123.15.15.15 (PE15) 在应用入站策略后接受该路由
123.11.11.11 (Core11), 123.13.13.13 (Core13), 123.123.111.111 (Core111), 123.30.30.30 (Core30), 123.31.31.31 (Core31)所观测的 Loc-RIB 属于 123.123.101.101 (RR2);其面向这些设备的 Adj-RIB-Out 未通过 BMP 导出可用假设 123.123.101.101 (RR2) 已向每台设备通告其选定路由,且每台设备在应用入站策略后接受该路由
123.123.100.100 (RR1)来自 123.123.100.100 (RR1) 的 RFC 7854 显示其 Adj-RIB-In,而非 Loc-RIB;路径计算使用属于 123.123.101.101 (RR2) 的 Loc-RIB,且 RR2 面向 RR1 的 Adj-RIB-Out 未通过 BMP 导出可用假设 123.123.101.101 (RR2) 已向 123.123.100.100 (RR1) 通告其选定路由,且 123.123.100.100 (RR1) 在应用入站策略后接受该路由
123.123.31.31 (PE31)Adj-RIB-In pre-policy 和 post-policy 属于 123.123.100.100 (RR1),包含它从 123.123.31.31 (PE31) 收到的路由;对 PE31 而言,这只能证明其 Adj-RIB-Out。没有面向 PE31 的路由数据不可用所观测数据既不显示 123.123.31.31 (PE31) 的 Loc-RIB,也不显示其 Adj-RIB-In

123.123.101.101 (RR2) 仅通过 BMP 为选定的 BGP 邻居导出 Adj-RIB-Out post-policy 数据。这是合规的:BMP Adj-RIB-Out 监控按 BGP 邻居和地址族分别配置,尽管 BGP 本身会为每个已建立的 BGP 邻居维护 Adj-RIB-Out。

4. BGP 路由

在收窄到单台路由器之前,先从图级别的 BGP Routes 表格开始。这里用于查看和过滤整个演示收集到的路由数据。

  1. 打开 Graph table 并选择 BGP Routes。让表格保持实时模式。
  2. 使用 prefix、bmp source、bmp ribs、peer ip 和路径属性列查找要调查的路由集合。

下方的全屏实时表格是图级别的 BGP Routes 视图。

实时模式下的全屏图级别 BGP Routes 表格

BGP Routes 表格显示为整个图收集的路由。

5. 设备表单中的路由视图

设备表单中的路由计数显示该路由器的 RIB 视图:可以来自与该设备建立的 BMP 会话所提供的 Loc-RIB,也可以来自与相邻设备建立的 BMP 会话所提供的 Adj-RIB-Out post-policy。

  1. 在图上点击 123.14.14.14 (PE14),找到设备表单中的 BGP 部分。
  2. 确认 Routes 为 4,并阅读说明:这些路由由 123.123.101.101 (RR2) 通过 RFC 8671 向该路由器通告。
  3. 阅读 RIB 明细。Adj-RIB-Out post-policy 描述 123.123.101.101 (RR2) 导出的 RIB;从 123.14.14.14 (PE14) 的角度看,这四条通告是其推断出的 Adj-RIB-In。
  4. Adj-RIB-Out (post) 4 这一行计入 Routes:它表示 123.123.101.101 (RR2) 面向 123.14.14.14 (PE14) 的 Adj-RIB-Out,并作为 123.14.14.14 (PE14) 的推断 Adj-RIB-In。

该表单显示 123.14.14.14 (PE14) 的 RIB 视图:通过 BMP 从 123.123.101.101 (RR2) 获取的 Adj-RIB-Out post-policy 中的四条路由。

123.14.14.14 (PE14) 设备表单,显示 123.123.101.101 (RR2) 通告的四条路由以及 Adj-RIB-Out post-policy 数据

123.14.14.14 (PE14) 表单显示四条路由、BMP 来源 123.123.101.101 (RR2) 和 RIB Adj-RIB-Out post-policy。Routes 不包含 123.14.14.14 (PE14) 向 123.123.101.101 (RR2) 通告的路由,也不包含未用于 123.14.14.14 (PE14) RIB 视图的其他 BMP 观测。

6. 单个节点路由的过滤、排序与分页

从设备表单打开路由表;该表保留为 123.14.14.14 (PE14) 选择的 RIB 范围。

  1. 在 123.14.14.14 (PE14) 上点击 Routes 4。确认抽屉中恰好包含 100.30.0.0/24、10.100.31.0/24、2001:db8:123:123:30:30::/96 和 2001:db8:100:31::/64。
  2. 在 prefix 列中按 100.30.0.0/24 过滤。匹配行和表格计数都必须从 4 降到 1。
  3. 清除 prefix 过滤器并分别检查其他属性:local pref = 250 留下两条 VPN 路由,afi = 2 留下两条 IPv6 路由,med = 20 留下两条来自 123.123.30.30 (PE30) 的路由。
  4. 清除过滤器并确认 123.14.14.14 (PE14) 的四条路由全部返回。清除表格过滤器不得移除表单确定的设备范围。
  5. 点击可排序的表头,例如 prefix、nexthop、local pref 或 med。反复点击在升序、降序和不排序之间循环;地址列使用地址顺序,而非文本顺序。
  6. 对较大的路由表使用 Rows per page。在这个节点范围示例中演示只有一页,因此“上一页”和“下一页”控件正确地保持禁用。

下方表格保留 123.14.14.14 (PE14) 范围并加上前缀过滤,仅留下一条匹配路由。

123.14.14.14 (PE14) 路由表从四条路由过滤到前缀 100.30.0.0/24

过滤后的行将 123.123.101.101 (RR2) 显示为 bmp source,并将 Adj-RIB-Out post-policy 显示为观测到的 RIB。

7. 最佳路径选择

对于每个前缀,演示展示一个最佳路径选择条件。从 AS_PATH 开始:比较候选属性,然后从 123.123.101.101 (RR2) 构建路由并验证选定的 BGP next hop。

试点示例:AS_PATH 胜出
  1. 按 198.18.2.0/24 过滤 BGP Routes。
  2. 比较两个候选:两者的 Local Preference 均为 100、Origin 为 IGP、MED 为 10。123.123.30.30 (PE30) 通告 AS_PATH 65010 65011 65012;123.14.14.14 (PE14) 通告 AS_PATH 65010。
  3. 切换到 BGP / VPN 路径模式。将 Router 设为 123.123.101.101 (RR2),将 VPN 或全局表设为 global,将 To 设为 198.18.2.0/24;然后选择 Build a path。
  4. 在 Route resolution 中确认第一行是 123.123.101.101 (RR2) 上的 BGP,next hop 为 123.14.14.14 (PE14)。其余行通过 IGP 解析该选定的 next hop。

下方过滤后的 BGP Routes 表格在构建路由前显示这两个候选。

BGP 路由过滤器以及 198.18.2.0/24 的两个 AS_PATH 候选

接下来,选择 BGP / VPN 路径查找表单,并输入 123.123.101.101 (RR2)、全局表和该前缀。

BGP VPN 路径查找表单设为 123.123.101.101 (RR2)、全局表和 198.18.2.0/24

在 Route resolution 中,第一行显示 123.123.101.101 (RR2) 选择 123.14.14.14 (PE14) 作为 BGP next hop;后续行根据 OSPF 数据构建。

Route resolution 显示 123.123.101.101 (RR2) 的 BGP 决策,选定 123.14.14.14 (PE14) 作为 next hop

post-policy 候选在 AS_PATH 长度上不同,而 Local Preference、Origin 和 MED 相等。从 123.123.101.101 (RR2) 构建路由会选定 123.14.14.14 (PE14) 作为 BGP next hop;随后的 IGP 行显示该 BGP next hop 的可达性。

其他最佳路径选择示例
决策前缀预期 BGP next hop区别所在
LOCAL_PREF198.18.1.0/24123.123.30.30 (PE30)更高的 Local Preference
AS_PATH198.18.2.0/24123.14.14.14 (PE14)更短的 AS_PATH
ORIGIN198.18.3.0/24123.123.30.30 (PE30)origin 为 IGP 优于 incomplete
MED 参与比较198.18.4.0/24123.14.14.14 (PE14)来自同一相邻 AS 的更低 MED
MED 不参与比较198.18.5.0/24123.14.14.14 (PE14)相邻 AS 值不同使 MED 不符合比较条件
Originator ID198.18.6.0/24123.14.14.14 (PE14)在此前多项相等后,更低的 originator ID
其他最佳路径选择条件

演示展示了上表列出的六个 BGP 最佳路径选择条件。它没有展示 eBGP 优于 iBGP、到 next hop 的 IGP 开销、路由存续时间、cluster-list 长度或 BGP 邻居地址的比较。

8. 两个时刻之间的路由状态比较

实时显示当前路由表状态。对比用于比较 T0 和 T1 时刻的路由状态。

  1. 打开图级别的 BGP Routes 表格,并从实时切换到对比。
  2. 保留演示加载时创建的默认一小时 T0-T1 时间范围,然后按运行。
  3. 表格显示一条新增路由 100.14.210.0/24;changed at 列包含该路由在 T1 之前最后一次变更的时间。
  4. added 表示路由在 T0 不存在而在 T1 存在;withdrawn 表示在 T0 存在而在 T1 不存在;changed 表示两个时刻都存在但属性不同。T1 之后的事件不在比较范围内。
  5. 切回实时以打开当前路由表状态。

下方比较是默认演示窗口的端点差异,而非按时间排列的事件日志。

BGP 路由对比模式,在默认一小时时间范围中把 100.14.210.0/24 显示为新增

在默认演示时间范围内,路由 100.14.210.0/24 的状态为 added,并且在 T1 时 MED 为 80。

单个 BGP 事件

事件模式使用相同的 BGP Routes 表格和时间范围,但显示每一次路由和 BGP 邻居观测,而不只显示 T0 与 T1 之间的差异。

  1. 从对比切换到事件,并保留覆盖演示变更的时间范围。
  2. 按运行,验证有一条路由 add、一个 peer down 事件,以及针对 100.14.210.0/24 的一条路由 change。
  3. 使用 event、kind、prefix、peer source、peer target 和 at 区分路由变更与 BGP 会话状态变更。

下方事件视图按时间列出观测:新增的路由、peer down 事件,然后是 MED 为 80 的变更路由。

BGP Routes 事件模式,显示一条路由 add、一个 peer down 事件和一条路由 change

事件模式按顺序显示全部三次观测。与对比不同,即使最终路由状态未变,它也保留中间事件。

9. BGP 下一跳经 OSPF 解析

BGP 选择路由;OSPF 为选定的 BGP next hop 提供可达性。路径视图明确展示这次交接。

  1. 在 Standard / IGP 路径模式下,用 123.123.30.30 (PE30) 作为源,用 100.14.0.0/24 作为目的。
  2. 查看选定的 BGP 行,确认 123.14.14.14 (PE14) 为 BGP next hop。
  3. 打开 Route resolution,从左到右阅读结果:第一行是 BGP,管理距离 200,next hop 为 123.14.14.14 (PE14)。
  4. 继续查看管理距离为 110 的五个 IGP 行,它们在物理上解析从 123.123.30.30 (PE30) 到 123.14.14.14 (PE14) 的可达性。

下方表格把单一的 BGP 路由选择与使其 next hop 可达的 IGP 跳分开。

Route resolution 表格:一个 BGP 决策,后面是五个 IGP 下一跳解析行

BGP next hop 指向 123.14.14.14 (PE14);其余路径随后根据 OSPF 数据构建。

10. 无法构建的视图

按 123.123.31.31 (PE31) 过滤。Topolograph 能显示 123.123.100.100 (RR1) 从 123.123.31.31 (PE31) 收到的路由,但仅凭 RFC 7854 无法揭示 123.123.31.31 (PE31) 安装了哪条路由,或 123.123.100.100 (RR1) 又向它通告了什么。

  1. 打开 BGP Routes,并在 peer ip 列中按 123.123.31.31 过滤。Adj-RIB-In (pre) 和 Adj-RIB-In (post) 显示 123.123.100.100 (RR1) 从 123.123.31.31 (PE31) 收到的路由,而不是 123.123.31.31 (PE31) 的路由表。
  2. 打开 BGP / VPN 路径查找表单并选择 Router 123.123.31.31。表单会警告未观测到该路由器的表,并且不允许根据 BGP 数据构建路径。
  3. 将 123.123.31.31 (PE31) 与 123.15.15.15 (PE15) 对比:对于 123.15.15.15 (PE15),Topolograph 使用 123.123.101.101 (RR2) Loc-RIB,并明确假设 123.123.101.101 (RR2) 已向 123.15.15.15 (PE15) 通告路由且 123.15.15.15 (PE15) 已应用入站策略。

当可用 BMP 数据无法描述所选设备的路由表时,Topolograph 不会构建路径。要消除此限制,请通过 RFC 9069 提供该设备的 Loc-RIB,或通过 RFC 8671 提供其按 BGP 邻居的 Adj-RIB-Out post-policy。

Topolograph 2.69 📣 加入社区!