BFD 双向转发检测
3784 是 BFD(Bidirectional Forwarding Detection,RFC 5881)单跳控制报文的 UDP 端口。BFD 在相邻设备之间建立轻量会话,以毫秒级周期互发探测报文,一旦链路或转发路径失效就迅速通知路由协议,让 OSPF、BGP 之类在秒级完成收敛,而不是等协议自身的慢速超时。同一端口号也被语音软件 Ventrilo 使用,看到它先分辨是哪一种流量。
基本信息
| 服务 | BFD 单跳控制(RFC 5881) |
|---|---|
| 协议 | UDP,单跳 3784、多跳 4784 |
| 联动协议 | OSPF、BGP、静态路由等 |
| 用途 | 链路健康检测、快速重路由 |
| 安全等级 | 仅网管与骨干网,不应跨边界放行 |
典型使用场景
- 数据中心与园区网的核心链路部署 BFD,配合 OSPF 或 BGP 做快速切换
- 排查链路抖动时路由反复切换,先看 BFD 会话是否频繁起落
- 静态路由与 BFD 联动,实现故障时路由自动失效
- 跨厂商对接时核对探测间隔、倍数与回声模式参数
- 资产梳理时分辨 3784 是 BFD 还是语音服务流量
查看 BFD 会话
查看 BFD 会话
vtysh -c "show bfd peers" # FRR 环境查看邻居概览
vtysh -c "show bfd peers brief" # 关注 up/down 与切换次数
sudo tcpdump -ni eth0 'udp port 3784' -c 10 # 抓包确认探测周期BFD 要点速览
| 项目 | 说明 | 要点 |
|---|---|---|
| 单跳 BFD | 直连链路之间的检测 | 使用 UDP 3784,报文 TTL 固定为 255 |
| 多跳 BFD | 经路由可达的两端检测 | 使用 UDP 4784,常配合多跳 BGP 会话 |
| 回声模式 | 设备自发自收探测包 | 减少对端处理负担,需要两端都支持 |
| 检测时间 | 探测间隔乘以倍数 | 参数两端差异过大会导致会话建立失败 |
参数协商:会话建立时两端会协商探测间隔与倍数,配置差异过大可能直接建不起来。跨厂商环境建议用双方都支持的标准模式,先对齐间隔与倍数,再逐步缩短检测时间,避免上线即震荡。
BFD 报文基本没有可用的认证机制,伪造探测包或中途丢弃探测包,都会让设备误判链路故障并引发路由震荡。协议边界上应把 3784 与路由协议同等保护,不要在非受控网段放行。