网络里最尴尬的故障不是「设备挂了」,而是设备都活着,但中间不通了。物理接口检测不到这种情况,必须靠协议层探测。
为什么物理 Down 不够
R1 ──── [光传输设备 A] ════ [光传输设备 B] ──── R2
│ │
光纤断了(中间) 本端物理口还是 Up
R1 的接口状态:Up(因为光模块和传输设备之间是通的)
R1 的协议状态:Up
R1 认为:一切正常,继续把流量往这条链路发
实际:全部丢包
→ 靠路由协议的 Hello 超时能恢复,但 OSPF 默认 40 秒、BGP 默认 180 秒
→ 这段时间业务全断
BFD 要解决的就是这个「感知太慢」的问题
BFD:毫秒级检测
BFD(Bidirectional Forwarding Detection)是一个极轻量的协议,只干一件事:快速判断两个端点之间的双向转发是否还通。
工作方式
| 方式 | 怎么工作 | 适用 |
|---|---|---|
| 控制报文模式(异步) | 两端定期互发 BFD 控制报文(UDP 3784),一段时间收不到就判定 Down | 最常用,两端都要配 |
| Echo 模式 | 本端发 Echo 报文,对端只负责原路回环,本端收不到就判 Down | 只需一端配置;但要求对端能正确回环 |
检测时间 = 发送间隔 × 检测倍数
例:min-tx-interval 10 ms + detect-multiplier 3
→ 10 × 3 = 30 ms 内没收到 3 个报文就判定 Down
★ 两端会协商,取【较大】的间隔和倍数(保证双方节奏一致)
★ 配得越激进(间隔越小),CPU 和带宽开销越大
生产环境常用 100~300 ms,而不是极限的 3 ms
BFD 要绑定到别的东西上才有用
BFD 自己不会切路由,它只是「感知器」。要把它绑到 VRRP、静态路由、OSPF、BGP 上,才能触发切换。
# ① 绑定静态路由(最常见)
bfd
bfd bind peer-ip 10.0.0.2 interface GigabitEthernet0/0/0
discriminator local 1
discriminator remote 2
min-tx-interval 100
min-rx-interval 100
detect-multiplier 3
# 静态路由联动:
ip route-static 192.168.2.0 24 10.0.0.2 track bfd-session 1
# ② 绑定 VRRP
vrrp vrid 1 track bfd-session 1 reduced 40
# ③ 绑定 OSPF(让 OSPF 快速感知邻居失效)
ospf 1
bfd all-interfaces enable
bfd all-interfaces min-tx-interval 100 min-rx-interval 100
# ④ 绑定 BGP
bgp 100
peer 10.0.0.2 bfd enable
peer 10.0.0.2 bfd min-tx-interval 100 min-rx-interval 100
# ★ discriminator(本地/远端标识符)两端必须【互为镜像】:
# 本端 local 1 / remote 2 ←→ 对端 local 2 / remote 1
# 这是 BFD 配置最常见的错误
NQA:不只是「通不通」
NQA(Network Quality Analysis)是主动发包探测,能测出具体指标:
| 测试类型 | 测什么 |
|---|---|
| ICMP | 最基本的连通性与时延 |
| UDP jitter | 时延、抖动、丢包率——语音/视频质量评估必用 |
| TCP | 测特定端口的可达性(能验证应用层) |
| HTTP | 测网站响应时间 |
| DNS / DHCP | 测这两类服务是否正常 |
nqa test-instance admin icmp-test
test-type icmp
destination-address ipv4 10.0.0.2
frequency 10 # 每 10 秒测一次
probe-count 3 # 每次发 3 个包
timeout 3 # 单包超时 3 秒
start now
nqa test-instance admin jitter-test
test-type udp-jitter
destination-address ipv4 10.0.0.2
destination-port 9000
frequency 60
start now
# 结果与联动
display nqa results
# 与静态路由联动(质量不达标就切走):
ip route-static 192.168.2.0 24 10.0.0.2 track nqa admin icmp-test
IP FPM 与 SPR:再往上一层
| 技术 | 解决什么 |
|---|---|
| IP FPM(IP Flow Performance Measurement) | 在真实业务流上做逐包染色统计,测出真实业务的丢包和时延,而不是靠探测包推测 |
| SPR(Smart Policy Routing) | 把 NQA 的探测结果和路由联动,自动选质量最好的链路转发 |
三者定位不同:BFD 管「快」(毫秒级知道通不通),NQA 管「细」(测出质量指标),IP FPM 管「真」(在真实业务流上测,不靠探测包推测)。
排错
display bfd session all # ★ 所有 BFD 会话状态
display bfd session all verbose # 详细:间隔、倍数、收发包数
display bfd configuration all # BFD 配置
display nqa results # ★ NQA 测试结果
display nqa history # 历史记录
display nqa test-instance admin icmp-test # 单个实例
display ip routing-table # 看 track 是否生效(路由是否消失)
- BFD 会话起不来 → 90% 是 discriminator 没配成镜像关系。本端
local 1 / remote 2必须对应对端local 2 / remote 1; - 会话 Up 但没切换 → 检查 track 绑定是否生效:
display ip routing-table看那条路由在不在; - BFD 频繁 Up/Down → 间隔配得太激进(比如 3ms),链路稍有抖动就误判。放宽到 100ms 以上;
- BFD 会话 Up 但业务不通 → BFD 只测到 BFD 对端的可达性,不代表整条路径的业务都通。这种情况要靠 IP FPM;
- NQA 结果一直是 timeout → 目标地址不可达,或者中间的 ACL/防火墙挡了探测包(UDP jitter 用的端口尤其容易被挡)。
一句话总结:物理 Down 只覆盖「线断了」,中间有传输设备时必须靠协议探测。BFD 管快、NQA 管细、IP FPM 管真。BFD 的关键是 discriminator 镜像和 track 绑定。
📌 本篇整理自 2024–2025 的「数通」学习笔记(HCIE-Datacom 方向)
合并了原始笔记中「BFD / 链路探测 / NQA / IP FPM / SPR」五页。
原笔记各页独立,本文按「为什么需要 → BFD → NQA → IP FPM/SPR」串成一条线,并补上了 discriminator 镜像这个高频配置错误。
配置命令保留华为 VRP 原样。