完整版下载 | 2022年BGP路由协议排错全方面教程-网络安全文档类资源-优快云下载 |
我们已经全面介绍过从 BGP 对等体接收路由,以及把路由通告给其他对等体的完整过程。
这些知识能够为对等体之间路由通告问题的排错提供系统化思路。对等体之间路由通告失败的
原因有以下这些:
? 下一跳检查失败;
? 不良网络设计;
? 有效性检查失败;
? BGP 团体;
? IOS XR 中的强制 EBGP 路由策略;
? 路由过滤。
工程师可以使用以下手段找到大部分问题。
? BGP Loc-RIB:全局 RIB 表中缺失一条路由,不代表路由器的 BGP 表中也缺失这条路
由。工程师可以检查 BGP Loc-RIB 表中是否有相应的前缀。路由被放入 BGP 表但却没
有被放入 RIB 表的情况是可能发生的。检查本地 BGP 表是排查缺失路由的第一步。
工程师可以使用命令 show bgp afi safi [prefix/prefix-length]来查看 BGP Loc-RIB 表。通
过查看指定前缀,可以知道路由没有被放入 RIB 的原因。
? BGP Adj-RIB-in:BGP Loc-RIB 表中只包含通过了路由器入向路由策略的有效路由。
工程师检查 BGP Adj-RIB-in 表可以确认对等体是否接收到了 NLRI。如果对等体接收到
了 NLRI,说明是本地入向路由策略阻止这条路由被放入 Loc-RIB 表中。要想查看 BGP
Adj-RIB-in 表,需要入向软配置(Inbound Soft Configuration),因为默认情况下在执行
完入向路由策略的处理后,BGP Adj-RIB-in 表会被清除。
? BGP Adj-RIB-out:工程师查看通告路由器上的 BGP Adj-RIB-out 表,可以确认路由是
否被通告,还能查看路由中携带的 BGP PA 列表。如果路由器的 BGP Adj-RIB-out 表中
没有相关路由,工程师可以检查通告路由器的 BGP Loc-RIB 表,确认那里是否有这条
路由。假设 Loc-RIB 表中有这个前缀,但 Adj-RIB-out 表中没有,说明出向路由策略阻
止了这条路由被放入Adj-RIB-out表中。工程师可以使用命令show bgp afi safi neighbor
ip-address [prefix/prefix-length] advertised-routes 来查看 BGP Adj-RIB-out 表的内容。
? 检查 BGP 邻居会话:在每个平台上,BGP 邻居会话中包含的信息可能都会有所不同,
但都会提供很多有用的信息,比如通告的前缀数量、会话和地址家族选项、为指定邻
居应用的 route-map/路由过滤器/路由策略。工程师可以使用命令 show bgp afi safi
neighbor ip-address 来查看 BGP 邻居会话。
? NX-OS 事件历史:NX-OS 提供了在后台运行的日志,它不像运行调试程序那样引人注
意。工程师可以从事件历史中查看发生了什么,以及何时发生的。知道特定事件的发
生时间,就可以把它和同一时间发生的其他事件关联起来。
在 NX-OS 设备上,工程师可以在 BGP 进程下,使用命令 event-history detail size large
来增加事件历史的大小。工程师可以使用命令 show bgp event-history detail 来查看事
件历史。
? 调试(Debug)命令:调试命令能够提供有关 BGP 的最多信息。在 IOS 设备中,工程
师可以使用命令 debug bgp afi safi updates [in | out] [detail]来启用 BGP 更新调试程序。
在 IOS XR 设备中,工程师可以使用命令 debug bgp update[afi afi safi] [in | out]来启用
BGP更新调试程序。在NX-OS设备中,工程师可以使用命令debug bgp update [in | out]
来启用 BGP 更新调试程序。
在图 4-4 所示的示例拓扑中,5 台路由器分别通过点到点链路连接在一起。R1 属于 AS100,
R5 属于 AS300,R2、R3 和 R4 属于 AS200。我们使用这个拓扑来排查由不同原因导致的路由
表中缺失路由的问题。所有 BGP 会话都通过直连接口建立(也就是对等体链路 IP 地址),不包
含多跳会话。网络中通告了如下路由:
? R1 通告了 10.0.0.0/8 聚合前缀;
? R1 通告了 10.1.1.0/24 前缀;
? R2 通告了 10.2.2.0/24 前缀。
4.2.1 下一跳检查失败
R3 的 RIB 中却少 10.0.0.0/8 网络和 10.1.1.0/24 网络,详见例 4-13。R3 的 RIB 中只有 R2
通告的 10.2.2.0/24 网络。
例 4-13 查看 R3 的全局 RIB 表
R3# show ip route
! Output omitted for brevity
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
C 10.1.23.0/24 is directly connected, Ethernet0/2
C 10.1.34.0/24 is directly connected, Ethernet0/1
B 10.2.2.0/24 [200/0] via 10.1.23.2, 00:07:08
192.168.3.0/32 is subnetted, 1 subnets
C 192.168.3.3 is directly connected, Loopback0
缺失的两条路由都是由 R1 通告的。第一步是检查 R3 的 Loc-RIB BGP 表,详见例 4-14。
10.0.0.0/8 网络和 10.1.1.0/24 网络都在这里,但要注意这两个条目上都缺少了最优路径标记>。
例 4-14 查看 R3 的 BGP Loc-RIB 表
R3# show bgp ipv4 unicast
! Output omitted for brevity
BGP table version is 2, local router ID is 192.168.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* i 10.0.0.0 10.1.12.1 0 100 0 100 i
* i 10.1.1.0/24 10.1.12.1 0 100 0 100 i
*>i 10.2.2.0/24 10.1.23.2 0 100 0 ?
例 4-15 使用命令 show bgp afi safi prefix/ prefix-length 查看了具体的网络前缀信息,这里清
晰地显示出这个 NLRI 没有被选为最优路径的原因。
例 4-15 发现 NLRI 没有成为最优路径
R3# show bgp ipv4 unicast 10.1.1.0/24
BGP routing table entry for 10.1.1.0/24, version 0
Paths: (1 available, no best path)
Not advertised to any peer
Refresh Epoch 1
100, (received & used)
10.1.12.1 (inaccessible) from 10.1.23.2 (192.168.2.2)
Origin IGP, metric 0, localpref 100, valid, internal
rx pathid: 0, tx pathid: 0
在例 4-15 的命令输出内容中,下一跳 10.1.12.1 不可达。现在让我们使用命令 show ip route
next-hop-IP-address 查看路由器上是否有这个下一跳,详见例 4-16。
例 4-16 在 RIB 中查找下一跳 IP 地址
R3# show ip route 10.1.12.1
% Subnet not in table
RIB 中没有这个下一跳 IP 地址。对于这个问题有以下多个解决方案。
? 在 R2 上把对等体链路(10.1.12.0/24)通告到 BGP 中。R3 与 R2 是邻接的,会收到一
条下一跳为 10.1.23.2 的路由,这个下一跳 IP 地址在 R3 的 RIB 中是直连路由。那么
10.1.12.1 这个下一跳 IP 地址就可以通过递归查找解析出来了。
? 在 AS200(R2、R3 和 R4)中建立 IGP 路由协议,并把对等体链路(R1-R2)通告到
OSPF 中,但要把 OSPF 中的对等体链路接口设置为被动接口。
? 在 R2 上进行配置,在与 R3 相关的 BGP 对等体的地址家族中,配置 next-hop-self 特
性。这样所有从 R2 学到的路由(所有 EBGP 路由,也就是从 R1 学到的路由),都会
以 R2 作为它们的下一跳。
注释 假设 R3 是一台路由反射器,相同的问题也会影响到 R4。当 R4 从 R3 那里学习路由
时,R3 上必须进行上述与 R2 相同的配置变更,因为 R4 不会知道如何去往 10.1.23.0/24 网络。
多数案例中都会使用 IGP 在 BGP 路由器之间通告内部网络。然后它们选择使用 next-hop-self
特性,或者把对等体链路的网络(被动接口