简介
本文档介绍在边界网关协议 (BGP) 路由器未向对等体通告 BGP 路由时如何进行故障排除。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。但是,本文档中显示的输出基于运行Cisco IOS®软件版本12.2(24)a的Cisco 2500系列路由器。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
背景信息
本文档提供系统化的方法,帮助解决边界网关协议(BGP)路由器不向对等体通告BGP路由的情况。
有多种方法可以将前缀添加到 BGP 表中并通告给对等体:
-
在路由器 BGP 下发出基本的 network 命令。此方法用于从自治系统 (AS) 发起 BGP 路由。有关详细信息,请参阅BGP案例分析1 的network命令部分。
-
重新分配内部网关协议 (IGP) 或静态配置。
-
传播从其他内部 BGP (iBGP) 或外部 BGP (eBGP) 对等体获知的 BGP 路由。
注意:仅传播从BGP对等体接收的最佳路径。有关最佳路径选择的详细信息,请参阅 BGP 最佳路径选择算法。
-
发出 aggregate-address 命令。有关详细信息,请参阅了解 BGP 中的路由聚合。
使用基本Network语句通告的路由
使用基本的network语句通告路由时,network命令的行为根据auto-summary是启用还是禁用而有所不同。当 auto-summary 处于启用状态时,它会对本地发起的 BGP 网络(网络 x.x.x.x)在其有类边界内进行汇总(默认情况下,auto-summary 在 BGP 中处于启用状态)。如果路由表中存在子网并且满足以下三个条件,则本地路由表中该有类网络的任何子网(组件路由)都会提示 BGP 将有类网络安装到 BGP 表中:
-
已启用自动汇总
-
路由表中存在网络的有类 network 语句
-
该 network 语句中存在有类掩码
当 auto-summary 处于禁用状态时,不会对本地引入 BGP 表中的路由在其有类边界范围内进行汇总。
例如,如果符合以下条件,BGP 会在 BGP 表中引入有类网络 10.0.0.0 掩码 255.0.0.0:
如果这些条件无法全部满足,则除非 IP 路由表中存在完全匹配项,否则 BGP 不会在 BGP 表中安装条目。
使用以下步骤排除故障
在R101上启用自动总结后,路由器无法向R102通告有类网络172.16.0.0/16。
路由器无法通告
-
查看R101是否向R102通告172.16.0.0/16。显示的输出确认R101没有向R102通告172.16.0.0/16。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes
Total number of prefixes 0
R101#
-
检查配置是否运行。显示的示例说明 R101 是使用有类 network 语句配置的。默认情况下,auto-summary 在用于此方案的 Cisco IOS 软件版本中处于启用状态。
R101#show running-config | begin bgp
router bgp 1
network 172.16.0.0
neighbor 10.10.10.2 remote-as 2
[...]
-
检查路由表中是否存在network172.16.0.0/16的组成路由(有类路由或子网路由)。
R101#show ip route 172.16.0.0 255.255.0.0 longer-prefixes
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
R101#sh ip route 172.16.0.0 255.255.0.0 longer-prefixes
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
R101#
-
由于R101 IP路由表中没有组成路由(无有类路由或子网路由),因此在BGP表中没有安装网络172.16.0.0。在 network 命令下配置的要在 BGP 表中安装的前缀的最低要求是 IP 路由表存在组件路由。因此,请确保R101具有通向网络172.16.0.0/16的组件路由。如果路由通过IGP或静态配置获知,则会完成此操作。在显示的示例中,静态路由配置为 null 0。
R101(config)#ip route 172.16.10.0 255.255.255.0 null0 200
-
只要 IP 路由表中包含 172.16.0.0/16 的组件路由,BGP 便会在 BGP 表中安装有类网络。
R101#show ip route 172.16.0.0 255.255.0.0 longer-prefixes
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 1 subnets
S 172.16.10.0 is directly connected, Null0
要使更改在BGP中生效并开始向R102通告网络172.16.0.0/16,您必须清除BGP邻居或对对等体执行软重置。此示例显示了如何对对等体 10.10.10.2 执行出站软重置以使更改生效。
R101#clear ip bgp 10.10.10.2 soft out
R101#
-
show ip bgp 命令确认有类网络 172.16.0.0/16 已引入 BGP。
R101#show ip bgp | include 172.16.0.0
*> 172.16.0.0 0.0.0.0 0 32768 i
R101#
-
确认 R101 向 R102 通告路由。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 172.16.0.0
*> 172.16.0.0 0.0.0.0 0 32768 i
注意:在禁用自动汇总的情况下,BGP会在路由表中存在与路由完全匹配时安装网络172.16.0.0/16。如果有子网路由,但路由表中没有与路由(172.16.0.0/16)完全匹配的路由,则BGP不会在BGP表中安装网络172.16.0.0/16。
使用带掩码的Network语句通告的路由
位于主网边界上的网络(255.0.0.0、255.255.0.0 或 255.255.255.0)不需要包括掩码。例如,network 172.16.0.0 命令足以将前缀 172.16.0.0/16 发送到 BGP 表中。但是,不在主网边界上的网络则必须使用带掩码的 network 语句,如 network 172.16.10.0 mask 255.255.255.0。
要使用带掩码的 network 语句将路由安装到 BGP 表中,路由表中必须存在确切的路由。
使用以下步骤排除故障
R101 无法向 R102 通告网络 172.16.10.0/24。
无法向R102通告网络172.16.10.0/24
-
查看 R101 是否向 R102 通告 172.16.10.0/24 前缀。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes
R101#
或者
此命令可用于检查是否通告了路由:
R101#show ip bgp 172.16.10.0/24
R101# BGP routing table entry for 172.16.10.0/24, version 24480684
Bestpath Modifiers: deterministic-med
Paths: (4 available, best #3)
Not advertised to any peer
此输出确认R101没有向R102通告192.168.32.0/22。
2. 检查配置是否运行。
R101#show run | begin bgp
router bgp 1
network 172.16.10.0
注意:您需要发起网络172.16.10.0/24。该网络不位于 B 类网络的边界 (255.255.0.0) 上。需要配置带掩码 255.255.255.0 的 network 语句才能使该网络正常工作。
3. 配置带掩码的network语句后,发出show run 命令可显示类似如下所示的输出:
R101#show run | begin bgp
router bgp 1
network 172.16.10.0 mask 255.255.255.0
-
查看路由是否存在于 BGP 路由表中。
R101#show ip bgp | include 172.16.10.0
R101#
网络 172.16.10.0/24 不存在于 BGP 表中。
-
查看 IP 路由表中是否存在确切的路由。显示的输出确认路由表中没有确切的路由。
R101#show ip route 172.16.10.0 255.255.255.0
% Network not in table
R101#
-
确定您希望发起的路由,然后修复IGP或配置静态路由。
R101(config)#ip route 172.16.10.0 255.255.255.0 null0 200
-
检查 IP 路由表。
R101#show ip route 172.16.10.0 255.255.255.0 longer-prefixes
[..]
172.16.0.0/24 is subnetted, 1 subnets
S 172.16.10.0 is directly connected, Null0
-
验证路由存在于 BGP 表中。
R101#show ip bgp | include 172.16.10.0
*> 172.16.10.0/24 0.0.0.0 0 32768 i
-
要使更改在BGP中生效并开始向R102通告网络172.16.10.0/24,您必须清除BGP邻居,或对对等体执行软重置。此示例对对等体 10.10.10.2 使用出站软重置。
R101#clear ip bgp 10.10.10.2 soft out
-
确认路由已通告给R102。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 172.16.10.0
*> 172.16.10.0/24 0.0.0.0 0 32768 i
使用aggregate-address命令通告的路由
BGP允许使用aggregate-address <address> <mask>命令将特定路由汇聚成一条路由。聚合适用于 BGP 路由表中的路由。这与 network 命令相反,该命令适用于 IP 路由表中的路由。如果聚合地址的至少一个或多个特定路由存在于 BGP 路由表中,则可以执行聚合。有关BGP汇聚及其相关属性的详细信息,请参阅了解BGP中的路由汇聚。
使用以下步骤对此问题进行故障排除
使用aggregate-address命令通告的路由
在此网络图中,R101 无法向 R102 通告聚合地址 192.168.32.0/22。网络 192.168.32.0/22 聚合了以下三个 C 类地址空间:
-
192.168.33.0/24
-
192.168.35.0/24
-
192.168.35.0/24
-
确认 R101 未向 R102 通告 192.168.32.0/22。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 192.168.32.0
R101#
-
检查配置是否运行。
router bgp 1
[..]
aggregate-address 192.168.32.0 255.255.252.0 summary-only
neighbor 10.10.10.2 remote-as 2
R101配置为仅向R102通告具有summary-only属性的聚合地址。
3. 检查IP路由表。
R101#show ip route 192.168.32.0 255.255.252.0 longer-prefixes
[..]
S 192.168.33.0/24 is directly connected, Null0
IP路由表包含聚合192.168.32.0/22的组成路由;但是,对于要向对等体通告的聚合地址,组成路由必须存在于BGP路由表中而不是IP路由表中。IP路由表包含聚合192.168.32.0/22的组成路由;但是,对于要向对等体通告的聚合地址,组成路由必须存在于BGP路由表中而不是IP路由表中。
4. 检查BGP路由表中是否存在组件路由。
R101#show ip bgp 192.168.32.0 255.255.252.0 longer
R101#
输出确认 BGP 表中没有组件路由,因此下一个逻辑步骤是确保组件路由存在于 BGP 表中。
-
在本示例中,已使用network命令将组件路由192.168.33.0安装到BGP表中。
R101(config)#router bgp 1
R101(config-router)#network 192.168.33.0
-
查看组件路由是否存在于 BGP 表中。
R101#show ip bgp 192.168.32.0 255.255.252.0 longer-prefixes
BGP table version is 8, local router ID is 10.10.20.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 192.168.32.0/22 0.0.0.0 32768 i
s> 192.168.33.0 0.0.0.0 0 32768 i
R101#
s表示由于使用了summary-only参数而抑制了组件路由。
-
确认已向 R102 通告聚合。
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 192.168.32.0/22
*> 192.168.32.0/22 0.0.0.0
无法宣布 iBGP 获悉的路由
如果启用了同步的BGP路由器无法验证其IGP中的路由,则不会向其他eBGP对等体通告iBGP获知的路由。IGP具有到iBGP获知的路由的路由,路由器会向eBGP对等体通告iBGP路由。否则,路由器会将该路由视为未与IGP同步,并且不会通告它。 要防止BGP在IGP中验证iBGP路由,请在路由器BGP下使用no synchronization 命令禁用同步。有关详细信息,请参阅 BGP 案例分析的同步部分。
使用以下步骤排除故障
在显示的图中,R101通过iBGP从R103获知前缀10.130.130.0/24,无法将其通告给eBGP对等体R102。
R101无法向eBGP对等体R102通告。
-
首先检查 R101。
R101#show ip bgp neighbors 10.10.20.2 advertised-routes | include 10.130.130.0
R101#
此输出确认R101没有向R102通告前缀10.254.255.255/24。
查看 R101 上的 BGP 表:
R101#show ip bgp 10.130.130.0 255.255.255.0 longer
BGP table version is 4, local router ID is 10.10.20.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
* i10.130.130.0/24 10.10.20.3 0 100 0 i
R101#
网络 10.130.130.0/24 存在于 BGP 表中。但是,网络10.130.130.0/24没有最佳路由的状态代码(>)。这意味着 BGP 最佳路径选择算法没有选择此前缀作为最佳路径。由于只向BGP对等体通告最佳路径,因此网络10.130.130.0/24不会通告给R102。接下来,您需要弄清楚 BGP 路径选择标准为什么没有选择此网络作为最佳路由。
-
检查 show ip bgp 前缀 命令的输出,以便更清楚地了解该前缀既未被选作最佳路由也未被安装到 IP 路由表中的原因。
R101#show ip bgp 10.130.130.0
BGP routing table entry for 10.130.130.0/24, version 4
Paths: (1 available, no best path)
Not advertised to any peer
Local
10.10.20.3 from 10.10.20.3 (10.130.130.3)
Origin IGP, metric 0, localpref 100, valid, internal, not synchronized
输出显示前缀 10.130.130.0/24 未同步。
注意:在识别思科漏洞ID CSCdr90728(BGP路径未标记为未同步)之前,show ip bgp prefix 命令不会显示标记为未同步的路径。此问题已在 Cisco IOS 软件版本 12.1(4) 和更高版本中更正。
2. 检查BGP配置是否运行。
此输出显示BGP同步已启用。默认情况下,BGP 同步在 Cisco IOS 软件中处于启用状态。
R101#show ip protocols
Routing Protocol is "bgp 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
IGP synchronization is enabled
Automatic route summarization is disabled
Neighbor(s):
Address FiltIn FiltOut DistIn DistOut Weight RouteMap
10.10.10.2
10.10.20.3
Maximum path: 1
Routing for Networks:
Routing Information Sources:
Gateway Distance Last Update
10.10.20.3 200 01:48:24
Distance: external 20 internal 200 local 200
3. 配置BGP以禁用同步。在路由器 BGP 下发出 no synchronization 命令。
R101(config)#router bgp 1
R101(config-router)#no synchronization
R101#show ip protocols
Routing Protocol is "bgp 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
IGP synchronization is disabled
Automatic route summarization is disabled
Neighbor(s):
Address FiltIn FiltOut DistIn DistOut Weight RouteMap
10.10.10.2
10.10.20.3
Maximum path: 1
Routing for Networks:
Routing Information Sources:
Gateway Distance Last Update
10.10.20.3 200 01:49:24
Distance: external 20 internal 200 local 200
BGP扫描程序每60秒扫描一次BGP表,并根据BGP路径选择标准做出决策。在下一次运行BGP扫描程序期间,将安装网络10.130.130.0(因为同步已禁用)。这意味着引入路由的最长时间为60秒,但也可能更短,具体取决于配置no synchronization 命令的时间及BGP扫描工具的下一个实例出现的时间。因此,最好等待60秒,然后再执行下一个验证步骤。
-
验证是否已安装路由。
显示的输出确认前缀10.130.130.0/24是最佳路由;因此,它已安装到IP路由表中并传播到对等体10.10.10.2。
R101#show ip bgp 10.130.130.0
BGP routing table entry for 10.254.255.255/24, version 5
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
10.10.10.2
Local
10.10.20.3 from 10.10.20.3 (10.130.130.3)
Origin IGP, metric 0, localpref 100, valid, internal, best
R101#show ip bgp neighbors 10.10.10.2 advertised-routes | include 10.130.130.0/24
*>i10.130.130.0/24 10.10.20.3 0 100 0 i
使用 Redistribute Static 通告的路由
如果路由器与两条链路连接,并且通过 BGP 和浮动静态路由获知路由,则会将浮动静态路由安装到路由表中。如果在 BGP 路由出现故障的情况下重新分配静态路由,则会出现这种情况。如果 BGP 路由重新回到联机状态,则路由表中的浮动静态路由不会更改以反映 BGP 路由。
在 BGP 进程下删除 redistribute static 命令可以解决此问题,避免浮动静态路由的优先级高于 BGP 路由。
相关信息