首页/网络/BGP 与广域网速查/下一跳递归解析:路由可用的前提
路由过滤与重分发66 条

下一跳递归解析:路由可用的前提

BGP 路由安装进 RIB/FIB 需要递归解析出下一跳的直达路径:底层 IGP 没有覆盖 next-hop 时,路由显示不可用或不参与转发。

BGP 与广域网速查网络更新于 2026-10-13

路由可用的前提是下一跳可解析

BGP 路由要装入 RIB 与 FIB,必须先递归解析出下一跳的可达路径:BGP 只负责说「去哪个下一跳」,能不能到达由 IGP 决定。底层 IGP 没有覆盖下一跳时,路由会显示为不可用或不参与转发。eBGP 场景下一跳通常是互联地址,iBGP 场景默认保留从 eBGP 学到的外部下一跳——这正是 next-hop-self 与 IGP 覆盖成为同一件事两面的原因。

基本信息

机制BGP 下一跳依赖 IGP 路由做递归解析
失败表现show ip bgp 显示不可用或 rib-failure 标记
常见原因对端未配 next-hop-self、互联地址未进 IGP、下一跳被过滤
修复方向补齐 IGP 覆盖,或改用 next-hop-self 重新宣告
影响放大解析链越长,IGP 抖动对 BGP 的影响越大
核对命令show ip bgp <前缀>、show ip route <下一跳地址>

典型使用场景

  • iBGP 场景:内部设备学到路由但下一跳不可达
  • 双边界出口:从同一 AS 的多个边界学到路由时设计下一跳传递
  • 排查「路由时有时无」:解析依赖的 IGP 路由在抖动
  • 与静态路由配合:关键邻居用静态路由直达下一跳,降低递归依赖
  • 策略变更评审:修改下一跳相关策略前评估对整个域的影响

核查命令

核查命令
show ip bgp 10.1.0.0/16                 # 看下一跳与可用性标记
show ip bgp 10.1.0.0/16 | include not|invalid|resolved   # 关注解析状态
show ip route 10.0.0.2                  # 确认下一跳在 IGP 中可达
show ip cef 10.1.0.0/16                 # 确认转发面是否已装载

下一跳不可用的常见原因

原因现象核对方式
互联地址未进 IGP路由不可用或 rib-failureshow ip route 查下一跳
对端未配 next-hop-self内部设备下一跳指向外部地址确认下一跳是否在本域可达范围内
下一跳被过滤或汇总路由在表但解析失败核对 IGP 过滤与汇总策略
递归路径抖动路由时有时无关联观察 IGP 收敛与 BGP 变化
转发面未装载控制面正常但转发异常用 CEF 等转发面命令核对
常见误区是只在 BGP 侧找原因:下一跳不可用本质上是「IGP 没有覆盖到」,排查必须落到路由表与 IGP 上,BGP 命令只能告诉你结果。
递归层次越深,IGP 的每次抖动都可能引发 BGP 前缀重新计算;关键邻居可以用静态路由直达下一跳,减少递归层次,用可维护性换稳定性。

易错点

  • 只看 BGP 表不看 IGP:下一跳不可达时表现为路由时有时无,在 BGP 侧怎么调都不见效
  • eBGP 场景随意配置 next-hop-self:掩盖了 IGP 覆盖问题,拓扑变化后仍会失效
  • 把下一跳所在前缀过滤掉:路由在表中却无法解析,现象容易与策略拦截混淆
  • 忽略递归层次过深:多层递归放大了 IGP 抖动的影响,关键路径应尽量扁平
  • 变更后不核对转发面:控制面可用不代表已装载,需用转发面命令确认

数据来源与参考

  • RFC 4271: NEXT_HOP 属性
  • Cisco: BGP Next-Hop 处理
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌