让下一跳变化尽快传导
BGP 选路时会把下一跳交给内部网关协议去解析,只有当下一跳前缀在路由表中有效时,这条 BGP 路由才会被使用。如果下一跳前缀失效了,但 BGP 不主动跟进,受影响的路由会继续挂在已失效的下一跳上,直到会话层超时或定时器到期。下一跳跟踪让 BGP 订阅下一跳前缀的状态变化,一旦该前缀在路由表中发生变化或被撤销,立即重新评估所有依赖它的路由。它在多出口边缘路由器上价值明显,但效果上限取决于内部网关协议发现底层故障的速度。
基本信息
| 机制 | BGP 跟踪下一跳前缀在路由表中的状态变化 |
|---|---|
| 收益 | 仅受影响的前缀被重新评估,避免整表重算 |
| 依赖 | 内部网关协议侧的检测速度决定整体收敛上限 |
| 常见命令 | 启用触发跟踪并设置延迟,查看下一跳跟踪表 |
| 适用场景 | 多出口边缘、大量依赖递归下一跳的部署 |
典型使用场景
- 多出口边缘:出口链路故障时快速重新选路
- 递归下一跳部署:大量 BGP 路由依赖同一个下一跳前缀
- 主备出口:主下一跳失效时尽快切到备份
- 收敛优化:与快速检测机制配合缩短失效感知时间
- 排错核对:确认 BGP 是否真的在跟踪下一跳状态
Cisco 配置
Cisco 配置
router bgp 65001
bgp nexthop trigger enable # 开启下一跳触发跟踪
bgp nexthop trigger delay 1 # 触发后延迟重算,单位为秒
!
show ip bgp nexthop # 看跟踪表与各下一跳状态
show ip bgp 10.2.2.0 # 确认受影响路由的选路结果
debug ip bgp nexthop # 观察触发事件(排障后及时关闭)检查项与判断
| 检查项 | 正常表现 | 异常含义 |
|---|---|---|
| 跟踪表条目 | 包含实际使用的下一跳 | 缺失说明未纳入跟踪范围 |
| 触发延迟 | 与实际收敛要求匹配 | 过大时感知快但重算被拖慢 |
| 内部网关收敛 | 底层变化能被及时感知 | 底层不动,跟踪再多也无效果 |
| 路由选路结果 | 切换后指向可用下一跳 | 仍指向失效下一跳说明触发未生效 |
触发延迟不是越小越好:设为 0 意味着每次底层变化都立即重算,路由条目多时会造成瞬时压力。
下一跳跟踪只解决下一跳失效的传导问题;如果底层协议本身要靠数十秒才能发现故障,整体收敛时间仍会被这一环限制。