IP : 边界网关协议(BGP)

BGP 路由没有被广播故障排除

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 23 日) | 反馈


目录


简介

本文档的目的是提供一种系统化的方法,帮助用户解决边界网关协议 (BGP) 路由器不向对等体通告 BGP 路由的问题。

有多种方法可以将前缀添加到 BGP 表中并通告给对等体:

  • 在路由器 BGP 下发出基本的 network 命令。此方法用于从自治系统 (AS) 发起 BGP 路由。有关详细信息,请参阅 BGP 案例分析 1 network 命令部分。

  • 重新分配内部网关协议 (IGP) 或静态配置。

  • 传播从其他内部 BGP (iBGP) 或外部 BGP (eBGP) 对等体获知的 BGP 路由。

    注意: 仅传播从 BGP 对等体接收的最佳路径。有关最佳路径选择的详细信息,请参阅 BGP 最佳路径选择算法

  • 发出 aggregate-address 命令。有关详细信息,请参阅了解 BGP 中的路由聚合

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。然而,在本文显示的输出根据运行Cisco IOS 软件版本12.2(24)a的思科2500系列路由器。

本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

使用基本网络声明宣布的路由

使用基本的 network 语句通告路由时,network 命令的行为并不相同,具体取决于 auto-summary 是处于启用状态还是禁用状态。当 auto-summary 处于启用状态时,它会对本地发起的 BGP 网络(网络 x.x.x.x)在其有类边界内进行汇总(默认情况下,auto-summary 在 BGP 中处于启用状态)。如果路由表中存在子网并且满足以下三个条件,则本地路由表中该有类网络的任何子网(组件路由)都会提示 BGP 将有类网络安装到 BGP 表中:

  • 已启用自动汇总

  • 路由表中存在网络的有类 network 语句

  • 该 network 语句中存在有类掩码

当 auto-summary 处于禁用状态时,不会对本地引入 BGP 表中的路由在其有类边界范围内进行汇总。

例如,如果符合以下条件,BGP 会在 BGP 表中引入有类网络 75.0.0.0 掩码 255.0.0.0:

  • 路由表中的子网是 75.75.75.0 掩码 255.255.255.0。

  • 您可以在 router bgp 命令下配置网络 75.0.0.0。

  • 已启用 Auto-summary。

如果这些条件无法全部满足,则除非 IP 路由表中存在完全匹配项,否则 BGP 不会在 BGP 表中安装条目。

故障排除步骤

在 R101 上启用 auto-summary 时,路由器无法向 R102 通告有类网络 6.0.0.0/8。

bgp_noad_01.gif

  1. 查看 R101 是否向 R102 通告 6.0.0.0/8。显示的输出确认 R101 未向 R102 通告 6.0.0.0/8。

    R101# 
    show ip bgp neighbors 10.10.10.2 advertised-routes
    
    R101#
  2. 检查正在运行的配置。显示的示例说明 R101 是使用有类 network 语句配置的。默认情况下,auto-summary 在用于此方案的 Cisco IOS 软件版本中处于启用状态。

    R101# 
    show running-config | begin bgp
    
    router bgp 1
     network 6.0.0.0
     neighbor 10.10.10.2 remote-as 2
    [...]
  3. 查看路由表中是否存在网络 6.0.0.0/8 的组件路由(有类路由或子网路由)。

    R101# 
    show ip route 6.0.0.0 255.0.0.0 longer-prefixes 
    
    R101#
  4. 由于 R101 IP 路由表中没有组件路由(没有有类路由或子网路由),因此未将网络 6.0.0.0 安装到 BGP 表中。在 network 命令下配置的要在 BGP 表中安装的前缀的最低要求是 IP 路由表存在组件路由。因此,请确保 R101 具有网络 6.0.0.0/8 的组件路由(通过 IGP 或静态配置获知)。在显示的示例中,静态路由配置为 null 0。

    R101(config)# ip route 6.6.10.0 255.255.255.0 null 0 200
    
  5. 只要 IP 路由表中包含 6.0.0.0/8 的组件路由,BGP 便会在 BGP 表中安装有类网络。

    R101# show ip route 6.0.0.0  255.0.0.0 longer-prefixes 
    
    [..]
         6.0.0.0/24 is subnetted, 1 subnets
    S       6.6.10.0 is directly connected, Null0
    
    
  6. 要使更改在 BGP 中生效并开始向 R102 通告网络 6.0.0.0/8,您必须清除 BGP 邻居或对对等体进行软重置。此示例显示了如何对对等体 10.10.10.2 执行出站软重置以使更改生效。有关软重置的详细信息,请参阅配置 BGP 中的“管理路由策略更改”部分。

    R101# clear ip bgp 10.10.10.2 [soft] out
    R101#
  7. 要使更改在 BGP 中生效并开始向 R102 通告网络 6.0.0.0/8,您必须清除 BGP 邻居或对对等体进行软重置。此示例显示了如何对对等体 10.10.10.2 执行出站软重置以使更改生效。有关软重置的详细信息,请参阅配置 BGP 中的管理路由策略更改部分。

    R101# show ip bgp | include 6.0.0.0 
    *> 6.0.0.0 0.0.0.0 0 32768 i
    
  8. show ip bgp 命令确认有类网络 6.0.0.0/8 已引入 BGP。

    R101# show ip bgp | include 6.0.0.0 
    *> 6.0.0.0 0.0.0.0 0 32768 i
  9. 确认 R101 向 R102 通告路由。

    R101# show ip bgp neighbors 10.10.10.2 advertised-routes | include 6.0.0.0 
    *> 6.0.0.0 0.0.0.0 0 32768 i

    注意: 禁用 auto-summary 时,只有当路由表中存在完全匹配的路由时,BGP 才会安装网络 6.0.0.0/8。如果路由表中存在子网路由但不存在完全匹配的路由 (6.0.0.0/8),则 BGP 不会在 BGP 表中安装网络 6.0.0.0/8。

使用带有屏蔽的网络声明宣布的路由

位于主网边界上的网络(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。

/image/gif/paws/19345/bgp_noad_02.gif

  1. 查看 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   <---- not advertised to any peers

    以上输出确认 R101 未向 R102 通告 192.168.32.0/22。

  2. 检查正在运行的配置。

    R101# show run | begin bgp
    router bgp 1
      network 172.16.10.0

    注意: 您希望发起网络 172.10.10.0/24。该网络不位于 B 类网络的边界 (255.255.0.0) 上。需要配置带掩码 255.255.255.0 的 network 语句才能使该网络正常工作。

  3. 配置带掩码 255.255.255.0 的 network 语句后,show run 命令将显示与此类似的输出:

    R101# show run | begin bgp
    router bgp 1
      network 172.16.10.0 mask 255.255.255.0
  4. 查看路由是否存在于 BGP 路由表中。

    R101# show ip bgp | include 172.16.10.0
    R101#

    网络 172.16.10.0/24 不存在于 BGP 表中。

  5. 查看 IP 路由表中是否存在确切的路由。显示的输出确认路由表中没有确切的路由。

    R101# show ip route 172.16.10.0 255.255.255.0   
    % Network not in table
    R101#
  6. 确定您希望发起的路由,然后修复 IGP 或配置静态路由。

    R101(config)# ip route 172.16.10.0 255.255.255.0 null 0 200
    
  7. 检查 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
  8. 验证路由存在于 BGP 表中。

    R101# show ip bgp | include 172.16.10.0 
    *> 172.16.10.0/24   0.0.0.0                  0         32768 i
  9. 要使更改在 BGP 中生效并开始向 R102 通告网络 6.0.0.0/8,您必须清除 BGP 邻居或对对等体进行软重置。此示例对对等体 10.10.10.2 使用出站软重置。有关软重置的详细信息,请参阅配置 BGP 中的“管理路由策略更改”部分。

    R101# clear ip bgp 10.10.10.2 [soft] out
    
  10. 确认已将路由通告给 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 地址掩码命令将特定路由聚合到一个路由中。聚合适用于 BGP 路由表中的路由。这与 network 命令相反,该命令适用于 IP 路由表中的路由。如果聚合地址的至少一个或多个特定路由存在于 BGP 路由表中,则可以执行聚合。有关 BGP 聚合和关联属性的详细信息,请参阅了解 BGP 中的路由聚合

故障排除步骤

/image/gif/paws/19345/bgp_noad_03.gif

在此网络图中,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

  1. 确认 R101 未向 R102 通告 192.168.32.0/22。

    R101# show ip bgp neighbors 10.10.10.2 advertised-routes | include 192.168.32.0 
    R101#
  2. 检查正在运行的配置。

    router bgp 1
       [..]
       aggregate-address 192.168.32.0 255.255.252.0 summary-only
       neighbor 10.10.10.2 remote-as 2

    R101 配置为使用“summary-only”属性仅向 R102 通告聚合地址。

  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 表中。

  5. 在本示例中,已使用 network 命令将组件路由 192.168.33.0 安装到 BGP 表中。

    R101(config)# router bgp 1
    R101(config-router)# network 192.168.33.0
    
  6. 查看组件路由是否存在于 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”参数而被抑制。

  7. 确认已向 R102 通告聚合。

    R101# show ip bgp n 10.10.10.2 advertised-routes | include 192.168.32.0/22
    *> 192.168.32.0/22  0.0.0.0

无法宣布 iBGP 获悉的路由

已启用同步的 BGP 路由器在无法在其 IGP 中验证 iBGP 获知的路由的情况下,不会将这些路由通告给其他 eBGP 对等体。假设 IGP 有一个到 iBGP 获知路由的路由,路由器会将 iBGP 路由通告给 eBGP 对等体。否则,路由器会将路由视为未与 IGP 同步而不会通告它。在路由器BGP下使用no synchronization命令禁用同步化可以防止在IGP中验证iBGP路由。有关详细信息,请参阅 BGP 案例分析同步部分。

故障排除步骤

在显示的图中,R101 通过 iBGP 从 R103 获知前缀 130.130.130.0/24,但无法将其通告给 eBGP 对等体 R102。

/image/gif/paws/19345/bgp_noad_04.gif

  1. 首先检查 R101。

    R101# show ip bgp neighbors 10.10.20.2 advertised-routes | include 130.130.130.0
    R101#

    以上输出确认 R101 未向 R102 通告前缀 130.130.130.0/24。查看 R101 上的 BGP 表:

    R101# show ip bgp 130.130.130 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
    * i130.130.130.0/24 10.10.20.3               0    100      0 i
    R101#

    网络 130.130.130.0/24 存在于 BGP 表中。但是,网络 130.130.130.0/24 没有最佳路由的状态码 (>)。这意味着 BGP 最佳路径选择算法没有选择此前缀作为最佳路径。由于系统仅将最佳路径通告给 BGP 对等体,因此网络 130.130.130.0/24 不会被通告给 R102。接下来,您需要弄清楚 BGP 路径选择标准为什么没有选择此网络作为最佳路由。

  2. 检查 show ip bgp 前缀 命令的输出,以便更清楚地了解该前缀既未被选作最佳路由也未被安装到 IP 路由表中的原因。

    R101# show ip bgp 130.130.130.0
    BGP routing table entry for 130.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 (130.130.130.3)
          Origin IGP, metric 0, localpref 100, valid, internal, not synchronized

    输出显示前缀 130.130.130.0/24 未同步。

    注意: 在确认 bug CSCdr90728(“BGP 路径未标记为未同步”)之前,show ip bgp 前缀 命令不会显示标记为未同步的路径。此问题已在 Cisco IOS 软件版本 12.1(4) 和更高版本中更正。

  3. 检查正在运行的 BGP 配置。

    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

    上述输出显示 BGP 同步已启用。默认情况下,BGP 同步在 Cisco IOS 软件中处于启用状态。

  4. 配置 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 扫描程序下次运行期间(BGP 扫描程序每 60 秒扫描 BGP 表一次,并根据 BGP 路径选择标准做出决策),将安装网络 130.130.130.0(因为已禁用同步)。这表示安装路由的最长时间为 60 秒,但也可能更短,具体取决于 no synchronization 命令的配置时间,以及 BGP 扫描程序的下一个实例发生的时间。因此,在进行下一个验证步骤之前,最好等待 60 秒。

  5. 验证是否已安装路由。

    显示的输出确认前缀 130.130.130.0/24 为最佳路由;因此,它将被安装到 IP 路由表中并被传播到对等体 10.10.10.2。

    R101# show ip bgp 130.130.130.0
    BGP routing table entry for 130.130.130.0/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 (130.130.130.3)
          Origin IGP, metric 0, localpref 100, valid, internal, best
    
    R101# show ip bgp neighbors 10.10.10.2 advertised-routes | include 130.130.130.0/24
    *>i130.130.130.0/24 10.10.20.3               0    100      0 i

使用 Redistribute Static 通告的路由

如果路由器与两条链路连接,并且通过 BGP 和浮动静态路由获知路由,则会将浮动静态路由安装到路由表中。如果在 BGP 路由出现故障的情况下重新分配静态路由,则会出现这种情况。如果 BGP 路由重新回到联机状态,则路由表中的浮动静态路由不会更改以反映 BGP 路由。

在 BGP 进程下删除 redistribute static 命令可以解决此问题,避免浮动静态路由的优先级高于 BGP 路由。

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 19345