首页/网络/BGP 与广域网速查/BFD 原理:毫秒级故障检测
广域网排障60 条

BFD 原理:毫秒级故障检测

BFD 用固定间隔的短报文检测双向可达性:与 BGP/OSPF/静态路由联动后,故障检测从秒级降到毫秒级;代价是额外的会话与资源开销。

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

BFD 的工作原理

BFD(双向转发检测)做的事情很简单:两端按约定的间隔互发短小的控制报文,在约定时间内收不到就判定链路失效,并通知绑定的协议联动处理。它的价值在于把故障检测从路由协议的秒级等待降到毫秒级——BGP 默认要等 Hold Timer 到期(常为 180 秒)才发现邻居失效,OSPF 也要等 Hello 超时,而 BFD 能在几百毫秒内给出结论。代价是每个会话都要占用检测资源,检测间隔越短开销越大,因此通常在关键链路上按需启用而不是全网打开。

基本信息

报文UDP 3784(单跳)、4784(多跳)
工作模式异步模式按间隔互发,超时判失效
检测参数发送间隔、接收间隔、检测倍数三者决定超时
典型配置300 毫秒间隔乘 3 倍,约 900 毫秒判失效
联动对象BGP、OSPF、IS-IS、静态路由、VRRP 等
查看show bfd neighbors details(Cisco)

典型使用场景

  • 核心链路承载语音或交易业务:需要毫秒级切换而不是秒级收敛
  • BGP 邻居之间:避免长时间等待 Hold Timer 造成流量黑洞
  • 冗余路径切换:与静态路由或 IGP 联动实现快速倒换
  • 链路质量不稳定:用 BFD 快速确认是否真断,而非依赖应用层超时
  • 对接第三方设备前:确认对端是否支持 BFD 及可配置的最短间隔

配置与验证

配置与验证
# Cisco:接口启用 BFD,再让 BGP 邻居联动
interface GigabitEthernet0/0
 bfd interval 300 min_rx 300 multiplier 3
router bgp 65001
 neighbor 203.0.113.2 fall-over bfd
# 查看会话状态与参数
show bfd neighbors details
# 抓包确认报文是否双向到达
tcpdump -ni eth0 udp port 3784 -c 10
# 华为侧对照
 display bfd session all

检测时延对照

机制典型检测时间特点
BGP Hold Timer默认 180 秒无需额外配置,但慢
OSPF Hello 超时40 秒量级与 Hello 间隔相关
BFD 300x3约 0.9 秒兼顾速度与开销
BFD 50x3约 0.15 秒开销大,需评估设备能力
链路层信号毫秒级仅覆盖本地链路,不覆盖中间路径
两端参数不一致时按较大值协商:本端要求 50 毫秒而对端只支持 300 毫秒,实际生效的多是较慢的那个,验收时要看会话实际参数而非配置文件。
检测间隔设得过小会在链路抖动时频繁判定失效,引发路由反复震荡;广域网建议从 300 毫秒起步实测再收紧。

易错点

  • 只在一端配置 BFD:会话建不起来,BGP 仍按 Hold Timer 慢收敛,误以为已启用
  • 间隔与倍数拍脑袋取极小值:链路稍有抖动就判失效,业务表现比不用 BFD 更差
  • 忽略设备能力上限:低端平台会话数与最小间隔受限,超规格配置可能无法生效
  • BFD 联动只配了 BGP 忘了路由协议:邻居秒断但路由表未更新,流量仍指向失效路径
  • 中间设备拦截 UDP 3784:跨跳场景被拦后会话无法建立,需逐跳确认放行

数据来源与参考

  • RFC 5880: BFD
  • RFC 5881: 单跳 BFD
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌