会话起不来先看四件事
BFD 会话建立失败的原因集中在四类:两端参数差距过大导致协商无法收敛、中间设备或安全策略过滤了 BFD 使用的 UDP 端口、单跳与多跳会话类型配置错配、以及两端实现模式不兼容。排查顺序建议从底层开始:先确认两端地址本身可达,再看会话状态字段处于哪个阶段,然后抓包确认探测报文是否双向互通。状态字段很有信息量——处于管理关闭说明本端被禁用,处于初始化说明收到过对端报文但本端尚未确认,长期停留在下行则通常意味着报文根本没有到达对端。
基本信息
| 参数类原因 | 收发间隔与检测倍数差异过大,协商不收敛 |
|---|---|
| 过滤类原因 | 中间设备或防火墙拦截 BFD 使用的 UDP 端口 |
| 类型错配 | 单跳与多跳会话类型与实际拓扑不符 |
| 模式差异 | 两端实现支持的 BFD 模式不同 |
| 排查手段 | 会话状态查询配合抓包确认双向互通 |
典型使用场景
- 新建立会话不生效:按参数、端口、类型、模式逐项核对
- 链路改造后失效:确认中间是否新增了过滤或代理设备
- 跨防火墙部署:确认 BFD 端口是否被策略放行
- 两端设备异构:不同厂商实现的兼容性验证
- 会话频繁抖动:判断是链路问题还是检测参数过于激进
排查命令
排查命令
# 查看会话状态、协商参数与向上层通知情况
show bfd neighbors details
# 抓包确认探测报文是否双向互通
tcpdump -ni eth0 udp port 3784
# 华为
display bfd session all verbose
# 先确认最基础的连通性,再谈 BFD
ping -c 5 203.0.113.2状态与含义
| 状态 | 含义 | 常见原因 |
|---|---|---|
| AdminDown | 本端管理性关闭 | 会话未启用或被禁用 |
| Down | 尚未建立或已失效 | 报文不可达或参数严重不匹配 |
| Init | 已收到对端报文但未确认 | 单向可达或两端模式不一致 |
| Up | 会话正常 | 此状态下问题通常在联动侧 |
把检测间隔压得过低会放大链路微抖的影响,出现频繁误判;多数场景用百毫秒级别即可获得明显优于协议超时的感知速度。
跨防火墙或负载设备部署 BFD 时,探测报文与数据流量可能走不同路径,导致会话状态与实际转发能力不一致。