南方數據技术观察
首页行业新闻技术文章 官网 咨询与报价
首页 / 教程

BGP 宣告不生效的七个排查方向

本地 BGP 表里有前缀,对端却没收到——这是「BGP 宣告不生效」最典型的表现。下面按从易到难的七个方向逐层剥离。

一、先确认对方到底收没收到前缀

排障第一步不是改配置,而是把「本地优选 → 本地已发送 → 对端已接收 → 对端已优选」这四个环节切开,定位断点在哪一段。很多所谓「宣告不生效」,其实前缀已经在对端 BGP 表里,只是没被优选或没进转发表。

show ip bgp 45.123.45.0/24
show ip bgp neighbors 203.0.113.1 advertised-routes
show ip bgp neighbors 203.0.113.1 received-routes
show ip bgp summary | include 203.0.113.1

advertised-routes 显示的是经过出方向策略后实际发出的前缀,如果这里面没有,问题在本地;如果有而对端 Looking Glass 上没有,问题在对端。注意 received-routes 必须先配 neighbor 203.0.113.1 soft-reconfiguration inbound,否则命令直接报错;不想开软重配就用 clear ip bgp 203.0.113.1 soft in 触发 route-refresh 再看 routes。

还要区分三种本地成因:

  • network 命令不匹配:network 45.123.45.0 mask 255.255.255.0 要求路由表里存在掩码完全一致的路由,有一条 /24 明细但写成 network 45.123.45.0(类自然掩码)就发不出去。
  • aggregate-address 无明细:BGP 表里只有聚合前缀,没对应的明细路由,聚合不会被宣告。
  • 出方向策略过滤:ACL、prefix-list、route-map 过滤掉了前缀,导致 advertised-routes 里没显示该前缀。

具体排查步骤:

  • 执行 show ip route 45.123.45.0,确认本地路由表是否存在对应路由,且掩码匹配。
  • 检查 BGP 配置中 network 和 aggregate-address 命令,确认是否包含该前缀或聚合。
  • 执行 show ip bgp neighbors 203.0.113.1 advertised-routes,确认前缀是否真正发出。
  • 若 advertised-routes 有该前缀但对端无,联系对端确认或使用对端 Looking Glass 工具验证。

二、确认 BGP 会话状态和邻居能力

BGP 会话不稳定或邻居能力不匹配,都会导致前缀无法正常传递。常见问题有 TCP 会话断开、BGP 版本不兼容、邻居认证失败等。

show ip bgp summary
show ip bgp neighbors 203.0.113.1

关键字段说明:

字段说明
State/PfxRcd显示邻居状态和已接收前缀数,若显示 Idle/Active,说明会话未建立;若为 Established,说明会话正常。
Last reset显示上次会话重置时间,频繁重置可能是链路或配置问题。
Capabilities确认是否启用 Route Refresh、4字节 ASN、Add-path 等功能,缺少关键能力可能导致路由不同步。

排查步骤:

  • 确认 TCP 端口 179 通畅,可使用 telnet 203.0.113.1 179 或 ping 测试链路。
  • 查看 BGP 会话状态,确认是否处于 Established。
  • 检查邻居配置,确认 ASN、密码、BGP 版本是否匹配。
  • 确认双方是否都支持必要的能力,如 Route Refresh,避免必须重启 BGP 才能同步路由。
  • 若频繁断开,查看系统日志 show logging | include BGP,定位原因。

三、检查路由策略和过滤规则

路由策略是 BGP 宣告的关键环节,错误配置或策略冲突会导致前缀被过滤或修改,影响对端接收。

常见策略包括 prefix-list、route-map、distribute-list、policy-map 等。需逐一确认入站和出站方向是否正确。

示例检查命令:

show run | section prefix-list
show run | section route-map
show ip bgp neighbors 203.0.113.1 route-map
show ip prefix-list

具体排查步骤:

  • 确认出站方向的策略是否允许该前缀通过,例如 route-map OUT permit 10 是否匹配该前缀。
  • 检查是否有 deny 规则误伤目标前缀。
  • 使用 show ip bgp neighbors 203.0.113.1 advertised-routes 对比策略前后路由。
  • 若使用 prefix-list,确保前缀和掩码范围精确匹配,避免因掩码不符被拒。
  • 针对复杂策略,使用 debug ip bgp updates(生产环境谨慎)观察路由更新的匹配过程。

四、确认本地路由表和 BGP 路由选择

BGP 宣告前提是本地路由表必须有对应路由,且 BGP 需要优选该路由。若本地路由不符合要求,BGP 不会宣告。

检查本地路由状态:

show ip route 45.123.45.0/24

确认路由来源(静态、直连、OSPF、EIGRP 等),以及是否存在更优路由覆盖该前缀。

查看 BGP 表中该前缀的路径:

show ip bgp 45.123.45.0/24

重点关注:

  • 路径是否存在,是否被标记为 valid。
  • AS_PATH 是否合理。
  • 是否被 local-preference、weight 或 MED 影响,导致不被优选。

如果 BGP 表中没有该前缀,确认是否有路由重分发或同步策略遗漏。

示例命令:

show run | section redistribute
show ip bgp summary

若使用 aggregate-address 聚合,确认是否配置了 summary-only 选项,防止明细路由被宣告。

五、验证对端 BGP 表和路由转发

确认对端收到前缀后,是否已优选并安装入转发表。对端不优选可能因本地路由冲突、策略过滤或路由环路检测。

常用对端验证方式:

  • 使用对端 Looking Glass 查询 BGP 表和路由表。
  • 请求对端执行 show ip bgp 45.123.45.0/24 和 show ip route 45.123.45.0/24。
  • 确认对端是否有更优路径覆盖该前缀。

示例对端命令:

show ip bgp 45.123.45.0/24
show ip route 45.123.45.0/24

若对端未安装路由,需排查对端策略或本地发出的 BGP 属性是否合理,如 MED、local-preference。

六、检查 BGP 属性和路径选择

BGP 属性直接影响路径优选和宣告,错误设置可能导致前缀虽发出但不被对端优选。

重点属性:

属性作用排查重点
AS_PATH路径长度,影响优选确认无环路,路径合理
LOCAL_PREF本地优先级,影响出口选择确认对端设置合理,非零或默认值
MED多出口间优选确认是否被对端忽略或误用
COMMUNITY策略标记确认是否触发过滤或修改

排查步骤:

  • 使用 show ip bgp 45.123.45.0/24 查看本地属性。
  • 确认路由策略中是否修改了上述属性。
  • 对端是否有策略过滤特定社区或 MED。
  • 必要时用 debug ip bgp updates 跟踪属性变化。

七、排查软硬件和链路问题

若以上均正常,仍无法宣告,需排查软硬件故障或链路异常。

  • 确认路由器 CPU、内存使用率正常,避免资源瓶颈。
  • 检查接口状态和链路质量,使用 show interfaces 和 show controllers。
  • 查看 BGP 相关日志,确认无异常重启或错误。
  • 确认机房侧(如南方數據 IDC)是否有链路变更或过滤策略。
  • 必要时升级路由器 IOS/Firmware,修复已知 BUG。

示例命令:

show processes cpu sorted
show interfaces GigabitEthernet0/0
show logging | include BGP

常见问题

问:为什么本地有路由但 BGP 不宣告?

答:通常是 network 命令掩码不匹配,或者出方向策略过滤。确认本地路由掩码和 BGP 配置严格一致,且策略允许。

问:对端显示已接收路由,但无法转发?

答:可能对端路由策略过滤或本地路由冲突,导致未安装入转发表。建议检查对端路由优选和策略。

问:BGP 会话频繁断开如何排查?

答:查看链路稳定性、TCP 会话状态和邻居配置,关注日志中的错误信息,确认认证和版本匹配。

返回列表