BFD 把故障检测压到毫秒级
OSPF 判断邻居失效依赖 Dead 定时器,默认 40 秒,也就是说链路断了可能几十秒后路由才切换。BFD 是一个独立的轻量双向检测协议:两端在链路上周期互发探测报文,连续丢失若干次就判定会话失效,并立刻通知 OSPF 把邻居置为不可用,触发快速重收敛。检测时间大致等于探测间隔乘以检测倍数,通常可以做到几十到几百毫秒。
基本信息
| 适用平台 | 两端都支持 BFD 的设备,含跨厂商链路 |
|---|---|
| 启用方式 | 进程级 bfd all-interfaces enable(华为/H3C)/ bfd all-interfaces(思科),也可在接口级单独开启 |
| 关键参数 | 发送间隔、接收间隔、检测倍数 |
| 权限要求 | OSPF 进程视图或接口视图 |
| 协议标准 | BFD 为独立标准协议,跨厂商互通性通常好于厂商私有快速检测机制 |
典型使用场景
- 双上行环网:一条链路中断后需要毫秒级切换到另一条
- 核心互联链路:承载关键业务,几十秒的收敛窗口不可接受
- 与浮动静态路由配合:BFD 会话失效即撤销静态路由,实现快速倒换
- 无线或长距离链路:物理层状态不稳定,需要更快感知转发能力丧失
- 替换激进 Hello 调小方案:用 BFD 达到同样的快速检测,同时不增加 OSPF 报文压力
华为 VRP
华为 VRP
[Huawei] ospf 1
[Huawei-ospf-1] bfd all-interfaces enable # 进程内所有接口启用 BFD
! 单接口开启:接口视图下 ospf bfd enable
[Huawei] interface GigabitEthernet0/0/1
[Huawei-GigabitEthernet0/0/1] bfd min-tx-interval 100 min-rx-interval 100 detect-multiplier 5
<Huawei> display bfd session all # 查看会话是否 Up思科 IOS
思科 IOS
SW-CORE-01(config)# router ospf 1
SW-CORE-01(config-router)# bfd all-interfaces # 进程级启用
SW-CORE-01(config)# interface GigabitEthernet0/1
SW-CORE-01(config-if)# bfd interval 100 min_rx 100 multiplier 5
! 接口级开关命令以版本帮助为准(部分 IOS 版本用 ip ospf bfd)
SW-CORE-01# show bfd neighbors # 确认会话状态H3C Comware
H3C Comware
[H3C] ospf 1
[H3C-ospf-1] bfd all-interfaces enable
! 单接口开启:接口视图下 ospf bfd enable
<H3C> display bfd session参数与检测时间
| 参数 | 含义 | 取值建议 |
|---|---|---|
| 发送间隔 | 本端发送探测报文的周期 | 常用 100 毫秒,按链路质量调整 |
| 接收间隔 | 本端期望收到探测的周期 | 通常与发送间隔保持一致 |
| 检测倍数 | 连续丢失多少次判定失效 | 常用 3 到 5;倍数越大越不易误判 |
| 检测时间 | 大致为接收间隔乘以检测倍数 | 100 毫秒 × 5 约 500 毫秒,比 Hello 40 秒快两个数量级 |
| 会话状态 | Up 才说明检测生效 | Down 时 OSPF 不受保护,需查两端是否都启用 |
两端都要启用 BFD,只配一侧会话起不来;至少一端工作在主动模式。echo 模式在跨厂商环境下不一定互通,拿不准时使用默认的控制模式。参数别调得太激进:间隔过小、倍数过低时,链路瞬时抖动就会被判成故障,触发不必要的路由切换。