首页/网络/BGP 与广域网速查/EBGP 的下一跳改写行为
BGP 基础与邻居89 条

EBGP 的下一跳改写行为

EBGP 默认把下一跳改为自身接口地址(第三方下一跳场景例外):多跳 EBGP 与共享媒体场景需要特别核对。

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

下一跳在 BGP 里怎么被改写

NEXT_HOP 是必遵属性,决定接收方如何转发这批流量。eBGP 发送路由时,默认把下一跳改写为本地出接口地址;iBGP 则默认保留原始下一跳不变。这个差异导致典型的双出口组网问题:出口路由器的下一跳指向外部设备,iBGP 邻居无法解析,必须用 next-hop-self 把下一跳改成自己。

基本信息

eBGP 默认改写为本地出接口地址(对端可直接解析)
iBGP 默认保留原始下一跳,需要本 AS 内部可达
第三方下一跳发送方与原始下一跳位于同一网段时保持不改写
常用命令neighbor x next-hop-self;route-map 中 set ip next-hop
下一跳跟踪部分平台支持 BGP 下一跳跟踪,不可达时抑制该路由

典型使用场景

  • 双出口组网:出口设备对 iBGP 邻居设置 next-hop-self,避免内部设备无法解析
  • RR 场景:RR 反射路由时保持下一跳不变,需确认客户端到下一跳的可达性
  • 多跳 eBGP:两端用环回建立邻居,需核对下一跳可达性与 update-source 配置
  • 共享媒体环境:理解第三方下一跳条件,避免误判对端行为
  • 路由存在但不转发:检查下一跳是否可解析,这是仅次于入策略的常见原因

配置与查看

配置与查看
router bgp 65001
 neighbor 10.0.0.2 remote-as 65002
 neighbor 172.16.1.2 remote-as 65001
 neighbor 172.16.1.2 next-hop-self
!
# 查看前缀的下一跳
show ip bgp 10.100.0.0/16
# 关注 Next Hop 列
# 检查该下一跳是否真的可解析
show ip route 10.0.0.2
show ip route 172.16.1.2

场景与下一跳行为

场景默认下一跳处理方式
直连 eBGP本端出接口地址一般无需额外配置
多跳 eBGP(环回建邻)本端出接口地址或环回确认对端到该地址有回程路由
iBGP 传递外部路由保留外部下一跳出口设备对邻居配置 next-hop-self
共享媒体第三方下一跳保持原始下一跳不变确认对端与下一跳在同一网段

下一跳不可达的排查

下一跳不可达的排查
# 1) 看前缀的下一跳属性
show ip bgp 10.100.0.0/16
# 2) 查该下一跳是否有路由
show ip route 10.0.0.2
# 3) 查 CEF 是否安装了转发项
show ip cef 10.100.0.0
# 4) 若未安装,确认 BGP 是否因下一跳不可达而抑制路由
show ip bgp 10.100.0.0/16 | include Not
「BGP 表里有路由、转发表里没有」几乎都可以归结为下一跳不可达或递归解析失败。排查顺序建议固定为:先看属性中的下一跳,再查该地址的路由,最后看转发表项。

易错点

  • 未核对第三方下一跳条件:共享媒体环境下对端保持原始下一跳,本端却按默认改写预期分析
  • iBGP 邻居没有配置 next-hop-self:内部设备学到的路由下一跳位于外部网段,无法转发
  • 多跳 eBGP 未配置 update-source:源地址与对端期望不一致,表现为会话建立但路由不可用
  • 路由出现却不通:先查下一跳再查策略,方向反过来会浪费大量时间
  • 忽略下一跳跟踪行为:下一跳失效时路由被抑制,而前缀仍在 BGP 表中,容易误判为策略问题

数据来源与参考

  • RFC 4271: NEXT_HOP 属性
  • 厂商: 第三方下一跳说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌