BFD 与 BGP 联动的原理
BGP 默认靠 Hold Timer 判断邻居是否活着,典型的 90 秒 Hold 意味着链路中断后最长要等 3 倍 Keepalive 周期才会断会话。BFD(RFC 5880)用独立的双向探测报文在毫秒级发现链路或转发路径失效,并直接通知 BGP 断开该邻居,把失效检测时间从十几秒压到几百毫秒以内。
基本信息
| 探测周期 | min-tx-interval 与 min-rx-interval 协商,取双方较大值 |
|---|---|
| 判定条件 | 连续丢失探测报文达到 multiplier 次数即宣告失效 |
| 联动配置 | Cisco 为邻居下 fall-over bfd,华为为 peer x bfd enable |
| 方向性 | BFD 本身双向检测,两端都要启用并参数匹配 |
| 覆盖范围 | 只保证邻居可用性,不替代 BGP 自身的路由收敛 |
典型使用场景
- 数据中心与核心之间要求亚秒收敛,用 BFD 替代 Hold Timer 等待
- 双上行链路做快速切换:主链路故障立即断会话,流量立刻走备用出口
- 中间存在传输设备(光传输、以太环网)时,物理接口不掉但转发已断,BFD 能捕捉这类隐性故障
- 配合 iBGP 与 RR 组网,缩短对等失效后的路由撤销时间
- 验证链路质量时用 BFD 状态与抖动统计作为辅助证据
配置与查看
配置与查看
# Cisco:先定义探测参数,再在邻居下联动
interface GigabitEthernet0/1
bfd interval 300 min_rx 300 multiplier 3
!
router bgp 65001
neighbor 10.0.0.2 fall-over bfd
!
show bfd neighbors 10.0.0.2 details
# 关注 Up/Down、检测时间与丢包计数
!
# 华为:全局与接口参数,再按 peer 使能
# bfd
# peer 10.0.0.2 bfd enable
# display bfd session all参数与收敛时间
| 参数 | 含义 | 设置建议 |
|---|---|---|
| min-tx-interval | 本端最小发送间隔 | 两端一致或按链路能力设定 |
| min-rx-interval | 本端能接受的最小接收间隔 | 协商取较大值,实际以协商结果为准 |
| multiplier | 允许连续丢失的探测报文数 | 过小易误报,过大则收敛变慢 |
| 检测时间 | 约等于协商间隔乘以倍数 | 链路抖动多的链路适当放宽 |
收敛过程观察
收敛过程观察
show bfd neighbors 10.0.0.2 details
show ip bgp neighbors 10.0.0.2 | include BFD
#
# 触发切换时按时间顺序记录:
# 1) BFD 报 Down
# 2) BGP 邻居随之断开并撤销路由
# 3) 备用路径被选为最优并下发转发表
# 用日志时间戳量化实际中断时长探测间隔设得过小时,链路轻微抖动就会触发邻居断开与重建,反而比不用 BFD 更不稳定。建议先在观测模式下记录抖动情况,再决定间隔与倍数,并对承载控制面的链路留出余量。