联动解决什么问题
BFD(RFC 5880)在两端之间持续发探测包,检测时间可以压到毫秒级;BGP 默认只靠 Hold Timer 判断邻居存活,协商值常见 90 秒,超时需 3 倍即 180 秒。当中间链路断裂而设备本身没有宕机时,BGP 会长时间保持邻居 Established,流量持续丢进黑洞。把 BFD 会话与 BGP 邻居绑定后,BFD 一旦 down 就立即重置邻居并触发重新选路,把失效感知从百秒级压到亚秒级。它只加快感知,不负责重新选路——备份路径是否可用、备份路由是否已经学到,仍取决于 BGP 收敛与路由设计。
基本信息
| 适用平台 | Cisco IOS/IOS-XE、华为 VRP 等主流路由器 |
|---|---|
| 报文封装 | 单跳 UDP 3784,多跳 UDP 4784 |
| 检测时间 | 本端间隔 × 对端倍数,协商后取较严格的一侧 |
| 典型参数 | 间隔 50ms、倍数 3,约 150ms 感知 |
| 启用前提 | 两端都开启 BFD,且邻居地址本身可达 |
典型使用场景
- 双出口主备:主链路中断立即倒换,避免长达 180 秒的黑洞
- 直连 EBGP 会话:链路抖动时不再等 Hold Timer 自然超时
- 与静态路由联动:浮动路由配合 BFD 实现快速失效切换
- 承载语音或交易的线路:业务要求亚秒级切换体验
- 路由振荡排查:把抖动感知窗口压小,便于对齐业务告警时间
配置与验证
配置与验证
# Cisco:接口开启 BFD,BGP 邻居引用
interface GigabitEthernet0/0
bfd interval 50 min_rx 50 multiplier 3 # 50ms 间隔,3 倍判定失效
!
router bgp 65001
neighbor 203.0.113.2 fall-over bfd # 把邻居与 BFD 会话绑定
!
show bfd neighbors client bgp details # 确认 BGP 已注册为 BFD 客户端
show ip bgp summary # 断链后看邻居多久变为 Idle状态对照与判断
| 现象 | 原因 | 处理 |
|---|---|---|
| BFD State 为 Up,BGP 却不切换 | BGP 侧没有引用 BFD | 检查 fall-over bfd 或 peer bfd enable 是否生效 |
| BFD 一直 Down | 底层不可达或参数失衡 | 先测基础连通,再核对 UDP 3784 与间隔倍数配置 |
| BGP 邻居 Established,却无 BFD 会话 | BFD 未启用或平台不支持 | 查接口配置与设备版本能力矩阵 |
| 切换时间仍接近分钟级 | 备用路径不可用或未预收敛 | 检查备份路由、IGP 收敛与下一跳可达性 |
主流实现用的是异步模式:两端各自按固定间隔发探测包,靠倍数判断对端失联;按需模式在实际组网中很少启用,排错时可以忽略。
BFD 参数需要两端协商,最终检测时间取双方 proposal 中较严格的一侧;一端配 50ms、另一端配 300ms,实际会按 300ms 附近工作,别只看本端配置下结论。