第200篇:广域网链路质量监测:NQA 与 BFD
关键词:NQA、BFD、链路质量监测、网络质量分析、双向转发检测、SLA监测、广域网运维、故障快速检测、丢包时延抖动
一、引言
在第199篇中,我们学习了 MPLS OAM(LSP Ping 和 LSP Traceroute)如何检测标签交换路径的连通性与逐跳状态。LSP Ping 本质上是按需发起的故障排查工具——当问题出现时,运维人员手动触发检测。但在生产网络中,我们需要的是持续、自动化的链路质量监测,能够在故障发生的第一时间发出告警,甚至在业务用户感知之前完成路由切换。
这就是 NQA(Network Quality Analysis,网络质量分析)和 BFD(Bidirectional Forwarding Detection,双向转发检测)的使命所在。NQA 提供全面的链路质量量化指标(丢包率、时延、抖动),BFD 提供毫秒级的链路故障检测。两者互补,共同构成广域网链路质量监测的完整体系。
二、NQA(Network Quality Analysis)框架
2.1 NQA 概述
NQA 是华为自主研发的网络质量分析框架,支持多种探测协议和测量模式,能够对广域网链路进行端到端的性能监测。NQA 不仅是一个故障检测工具,更是一个可量化的 SLA 评估平台。

2.2 NQA 支持的探测类型
| 探测类型 | 协议 | 测量指标 | 适用场景 |
|---|---|---|---|
| ICMP Echo | ICMP Type 8/0 | 丢包率、RTT | 基础连通性与时延 |
| UDP Jitter | UDP | 抖动、单向时延、丢包率 | 语音/视频质量评估 |
| TCP Connect | TCP SYN | 端口可达性、连接时延 | 应用层服务可达性 |
| HTTP/HTTPS | HTTP GET | 页面响应时间、状态码 | Web 服务质量监测 |
| NLRI Tracert | BGP NLRI | VPNv4/VPNv6 路径追踪 | L3VPN 逐跳检测 |
| LSP Ping | MPLS Echo | LSP 连通性、标签状态 | MPLS 路径检测 |
三、NQA 配置与实践
3.1 ICMP Echo 基础连通性监测
# NQA ICMP Ping 配置
<CR-1> system-view
[CR-1] sysname CR-1
# 创建 NQA 测试用例
[CR-1] nqa test-uri icmp-ping test1
[CR-1-nqa-icmp-ping-test1] test-type echo
[CR-1-nqa-icmp-ping-test1] destination-address ipv4 20.1.2.1
[CR-1-nqa-icmp-ping-test1] source-address ipv4 20.1.1.1
[CR-1-nqa-icmp-ping-test1] frequency 10 # 每10秒发送一次
[CR-1-nqa-icmp-ping-test1] probes 5 # 每次发送5个包
[CR-1-nqa-icmp-ping-test1] packet-size 100 # 探测包大小100字节
[CR-1-nqa-icmp-ping-test1] timeout 3000 # 超时3秒
[CR-1-nqa-icmp-ping-test1] ttl 255
[CR-1-nqa-icmp-ping-test1] quit
# 启动 NQA 检测
[CR-1] nqa test-uri icmp-ping test1 start immediately repeat infinite
# 查看检测结果
<CR-1> display nqa test-uri icmp-ping test1 results
Probe 1: RTT = 2.3ms, Success
Probe 2: RTT = 2.1ms, Success
Probe 3: RTT = 2.4ms, Success
Probe 4: RTT = 2.2ms, Success
Probe 5: RTT = 2.5ms, Success
<CR-1> display nqa test-uri icmp-ping test1 statistics
Total Probes Sent : 100
Total Probes Rcvd : 98
Packet Loss Rate : 2.0%
Average RTT : 2.3ms
Minimum RTT : 1.8ms
Maximum RTT : 5.6ms
3.2 UDP Jitter 语音质量监测
UDP Jitter 测试是评估 VoIP 语音质量的核心工具,它模拟真实的语音媒体流(RTP 报文),测量网络抖动(Jitter)、单向时延和丢包率。
# NQA UDP Jitter 配置
[CR-1] nqa test-uri udp-jitter test2
[CR-1-nqa-udp-jitter-test2] test-type udp-jitter
[CR-1-nqa-udp-jitter-test2] destination-address ipv4 20.1.2.1
[CR-1-nqa-udp-jitter-test2] source-address ipv4 20.1.1.1
[CR-1-nqa-udp-jitter-test2] destination-port 9999
[CR-1-nqa-udp-jitter-test2] source-port 9998
[CR-1-nqa-udp-jitter-test2] packet-size 200 # 模拟语音包大小
[CR-1-nqa-udp-jitter-test2] send-interval 20 # 20ms发包间隔(50Hz)
[CR-1-nqa-udp-jitter-test2] frequency 30 # 每30秒一轮测试
[CR-1-nqa-udp-jitter-test2] probes 100 # 每轮100个包
[CR-1-nqa-udp-jitter-test2] timeout 3000
[CR-1-nqa-udp-jitter-test2] quit
[CR-1] nqa test-uri udp-jitter test2 start immediately repeat infinite
# 查看抖动结果
<CR-1> display nqa test-uri udp-jitter test2 statistics
Total Probes Sent : 1000
Total Probes Rcvd : 995
Packet Loss Rate : 0.5%
Average One-way Delay : 15.2ms
Average Jitter : 1.8ms
Maximum Jitter : 8.5ms
3.3 HTTP/HTTPS 应用层监测
# NQA HTTP 配置
[CR-1] nqa test-uri http-test test3
[CR-1-nqa-http-test-test3] test-type http
[CR-1-nqa-http-test-test3] destination-address ipv4 203.0.113.10
[CR-1-nqa-http-test-test3] source-address ipv4 20.1.1.1
[CR-1-nqa-http-test-test3] url http://203.0.113.10/index.html
[CR-1-nqa-http-test-test3] frequency 60
[CR-1-nqa-http-test-test3] probes 1
[CR-1-nqa-http-test-test3] timeout 5000
[CR-1-nqa-http-test-test3] quit
[CR-1] nqa test-uri http-test test3 start immediately repeat infinite
# 查看HTTP测试结果
<CR-1> display nqa test-uri http-test test3 results
Probe 1:
HTTP Status Code : 200 (OK)
Connect Time : 5ms
Response Time : 125ms
Total Time : 130ms
Content Length : 15234 bytes
四、BFD(Bidirectional Forwarding Detection)
4.1 BFD 概述
BFD 是 IETF 标准化的通用双向转发检测协议(RFC 5880/5881),提供独立于数据转发平面的轻量级故障检测机制。与传统协议(如 OSPF Hello、BGP Keepalive)分钟级的检测周期相比,BFD 可以实现毫秒级的故障检测。

4.2 BFD 与传统协议检测对比
| 检测方式 | 检测时间 | 资源消耗 | 联动能力 |
|---|---|---|---|
| OSPF Hello (默认) | 10s Hello + 40s Dead | 低 | 仅 OSPF |
| BGP Keepalive (默认) | 30s Keepalive + 90s Hold | 低 | 仅 BGP |
| LDP Notify (默认) | 10s Keepalive + 30s Hold | 低 | 仅 LDP |
| BFD(通用) | 300ms × 3 = 900ms | 中 | 全协议联动 |
| BFD Echo(最低) | 100ms × 3 = 300ms | 高 | 全协议联动 |
4.3 BFD 单跳配置(直连邻居)
# 路由器A配置
<R1> system-view
[R1] sysname R1
# 全局使能 BFD
[R1] bfd
# 单跳 BFD 会话配置
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] bfd echo enable
[R1-GigabitEthernet0/0/1] bfd min-tx-interval 300 min-rx-interval 300 min-echo-rx-interval 100 multiplier 3
[R1-GigabitEthernet0/0/1] quit
# 绑定 BFD 到 IS-IS
[R1] isis 1
[R1-isis-1] bfd enable
[R1-isis-1] quit
# 绑定 BFD 到 BGP
[R1] bgp 65000
[R1-bgp-65000] peer 20.1.2.1 bfd enable
[R1-bgp-65000] quit
# 绑定 BFD 到 LDP
[R1] mpls ldp
[R1-mpls-ldp] bfd enable
[R1-mpls-ldp] quit
# 查看 BFD 会话状态
<R1> display bfd session
PeerAddress LocalCircuitID RemCircuitID PeerDiscrim State Holdur
20.1.12.2 100 200 1001 Up 900ms
4.4 BFD for LSP(端到端 LSP 检测)
BFD for LSP 是 BFD 在 MPLS LSP 场景的扩展应用,实现跨多跳的 LSP 端到端检测。
# 入口 PE 配置 BFD for LSP
<PE-A> system-view
[PE-A] sysname PE-A
[PE-A] bfd
[PE-A-bfd] quit
[PE-A] mpls ldp
[PE-A-mpls-ldp] bfd enable
[PE-A-mpls-ldp] bfd session bind explicit-route
[PE-A-mpls-ldp] bfd min-tx-interval 300 min-rx-interval 300 multiplier 3
[PE-A-mpls-ldp] quit
# 查看 BFD for LSP 会话
<PE-A> display bfd session verbose
PeerAddress : 20.1.2.1
State : Up
Local Discriminator : 100
Remote Discriminator : 200
Tx Interval : 300ms
Rx Interval : 300ms
Detect Multiplier : 3
Session Type : LSP
4.5 BFD for BGP-PE(跨域 BGP 检测)
# BFD for eBGP/iBGP 配置
[PE-A] bgp 65000
[PE-A-bgp-65000] peer 20.1.2.1 as-number 65000
[PE-A-bgp-65000] peer 20.1.2.1 connect-interface LoopBack0
[PE-A-bgp-65000] peer 20.1.2.1 bfd enable
# 配置 BFD 专用参数
[PE-A-bgp-65000] peer 20.1.2.1 bfd min-tx-interval 100 min-rx-interval 100 multiplier 3
[PE-A-bgp-65000] quit
五、NQA 与 BFD 联动:IP SLA 驱动的选路
5.1 NACG(Next Hop Auto Change Gateway)
NACG 是华为基于 NQA 探测结果自动切换下一跳的智能选路技术。通过持续监测多条链路的 SLA 指标(丢包率、时延),当主链路 SLA 劣化时自动切换到备用链路。

5.2 NACG 配置
# NACG 配置(双链路自动选路)
<CR-1> system-view
[CR-1] sysname CR-1
# 创建 NQA 测试(链路1)
[CR-1] nqa test-uri link1 nqa1
[CR-1-nqa-icmp-ping-nqa1] test-type echo
[CR-1-nqa-icmp-ping-nqa1] destination-address ipv4 203.0.113.1
[CR-1-nqa-icmp-ping-nqa1] source-address ipv4 20.1.1.1
[CR-1-nqa-icmp-ping-nqa1] frequency 5
[CR-1-nqa-icmp-ping-nqa1] probes 3
[CR-1-nqa-icmp-ping-nqa1] timeout 2000
[CR-1-nqa-icmp-ping-nqa1] quit
# 创建 NQA 测试(链路2)
[CR-1] nqa test-uri link2 nqa2
[CR-1-nqa-icmp-ping-nqa2] test-type echo
[CR-1-nqa-icmp-ping-nqa2] destination-address ipv4 203.0.113.1
[CR-1-nqa-icmp-ping-nqa2] source-address ipv4 20.1.1.2
[CR-1-nqa-icmp-ping-nqa2] frequency 5
[CR-1-nqa-icmp-ping-nqa2] probes 3
[CR-1-nqa-icmp-ping-nqa2] timeout 2000
[CR-1-nqa-icmp-ping-nqa2] quit
# 创建跟踪路由
[CR-1] tracking 1 nqa test-uri link1 nqa1
[CR-1-tracking-1] tolerance loss-rate 5 delay 50
[CR-1-tracking-1] negative-detect
[CR-1-tracking-1] quit
[CR-1] tracking 2 nqa test-uri link2 nqa2
[CR-1-tracking-2] tolerance loss-rate 5 delay 50
[CR-1-tracking-2] negative-detect
[CR-1-tracking-2] quit
# 创建浮动静态路由
[CR-1] ip route-static 203.0.113.0 255.255.255.0 10.1.12.1 preference 60 tracking 1
[CR-1] ip route-static 203.0.113.0 255.255.255.0 10.1.13.1 preference 70 tracking 2
# 启动NQA
[CR-1] nqa test-uri link1 nqa1 start immediately repeat infinite
[CR-1] nqa test-uri link2 nqa2 start immediately repeat infinite
# 查看跟踪状态
<CR-1> display tracking all
Tracking 1: Positive (链路1正常)
Tracking 2: Positive (链路2正常)
当链路1的丢包率超过 5% 或时延超过 50ms 时,Tracking 1 状态变为 Negative,主用路由(Preference 60)失效,流量自动切换到备用路由(Preference 70)。
六、广域网链路质量监测故障案例
6.1 案例:夜间广域网链路间歇性丢包
故障现象: 某银行每天凌晨 2:00-4:00 期间,跨省专线出现间歇性丢包(约 3-5%),影响批量数据同步业务。白天正常。
排查过程:
# 部署 NQA 持续监测
<CR-1> nqa test-uri overnight icmp-overnight
<CR-1-nqa-icmp-ping-overnight> test-type echo
<CR-1-nqa-icmp-ping-overnight> destination-address ipv4 20.1.2.1
<CR-1-nqa-icmp-ping-overnight> frequency 1 # 每秒探测
<CR-1-nqa-icmp-ping-overnight> probes 1
<CR-1-nqa-icmp-ping-overnight> timeout 2000
<CR-1-nqa-icmp-ping-overnight> quit
<CR-1> nqa test-uri overnight icmp-overnight start immediately repeat infinite
# 次日查看统计结果
<CR-1> display nqa test-uri overnight icmp-overnight statistics
Total Probes Sent : 7200 (2小时,每秒1个)
Total Probes Rcvd : 6984
Packet Loss Rate : 3.0%
Average RTT : 8.5ms
Maximum RTT : 245ms # 偶发大时延
结合时间分析,丢包集中在凌晨 2:30-3:30 期间,时延从 2ms 突增到 245ms。
根因分析: 运营商骨干网在凌晨执行自动化的带宽调度(TDM 波分复用系统的通道调整),导致 MPLS 隧道路径发生临时切换,新路径的时延和丢包率劣化。
解决方案:
# 方案1:使用 NACG 在丢包超过阈值时自动切换到备用链路
[CR-1] tracking 3 nqa test-uri overnight icmp-overnight
[CR-1-tracking-3] tolerance loss-rate 2 delay 100
[CR-1-tracking-3] negative-detect
[CR-1-tracking-3] quit
[CR-1] ip route-static 0.0.0.0 0.0.0.0 10.1.12.1 preference 60 tracking 3
[CR-1] ip route-static 0.0.0.0 0.0.0.0 10.1.13.1 preference 70 # 备用链路
# 方案2:与运营商协调,将带宽调度窗口调整至业务低峰期
6.2 案例:BFD 频繁震荡导致路由抖动
故障现象: 某 PE 设备的 IS-IS 邻居通过 BFD 检测,BFD 会话频繁在 Up/Down 之间震荡(每分钟切换 5-10 次),导致 IS-IS 路由不断刷新,全网路由震荡。
排查过程:
# 查看 BFD 会话状态
<PE-1> display bfd session verbose
PeerAddress : 10.1.12.2
State : Down # 频繁Down
Tx Interval : 100ms
Rx Interval : 100ms
Multiplier : 3
Detect Time : 300ms
# 查看接口错误计数
<PE-1> display interface GigabitEthernet0/0/1
Input packets : 1,234,567
Input errors : 5,678 # 大量输入错误!
Output errors : 0
CRC errors : 4,321 # CRC错误,物理层问题
根因分析: 物理链路存在间歇性光功率衰减(光纤老化或光模块故障),导致部分 BFD 报文丢失。BFD 参数设置过于激进(100ms 间隔 × 3 倍 = 300ms 检测时间),在链路偶发丢包时立即判定故障,引发路由震荡。
解决方案:
# 方案1:放宽 BFD 参数,容忍偶发丢包
[PE-1] interface GigabitEthernet0/0/1
[PE-1-GigabitEthernet0/0/1] bfd min-tx-interval 300 min-rx-interval 300 multiplier 5
[PE-1-GigabitEthernet0/0/1] quit
# 检测时间从300ms放宽到1500ms,偶发丢包不会触发误判
# 方案2:根本修复物理链路
# 更换光模块/重新熔接光纤
七、总结
NQA 和 BFD 构成了广域网链路质量监测的两大支柱:NQA 提供全面的量化指标(时延、抖动、丢包、吞吐量),适用于 SLA 评估和智能选路;BFD 提供毫秒级故障检测,适用于协议的快速收敛。两者配合使用,可实现"事前预防、事中检测、事后定位"的闭环运维体系。
| 技术 | 核心能力 | 检测精度 | 典型场景 |
|---|---|---|---|
| NQA ICMP | 连通性 + RTT | 秒级 | 基础链路质量监测 |
| NQA UDP Jitter | 抖动 + 单向时延 + 丢包 | 毫秒级 | 语音/视频质量评估 |
| NQA HTTP | 应用层响应时间 | 秒级 | Web 服务质量监测 |
| BFD 单跳 | 直连链路故障检测 | 毫秒级(300ms) | IS-IS/BGP/LDP 快速收敛 |
| BFD for LSP | 端到端 LSP 检测 | 毫秒级 | MPLS 隧道快速倒换 |
| NACG | 基于 NQA 结果的智能选路 | 秒级 | 多链路自动负载分担与切换 |
思考题:
- BFD 检测时间 = 发送间隔 × 检测倍数值。如果将发送间隔从 300ms 降低到 100ms,会带来哪些好处和风险?
- NQA UDP Jitter 测试中,send-interval 参数为什么通常设置为 20ms?如果设置为 200ms 或 2ms 会对抖动测量结果产生什么影响?
- NACG 选路中,如果两条链路的 NQA 探测结果同时劣化(均为 Negative),路由会如何选择?如何防止"乒乓切换"(Flapping)?
下篇预告:第201篇《防火墙安全区域与安全策略》将开启网络安全新篇章,深入探讨防火墙的安全区域(Zone)模型、安全策略的匹配流程、以及从传统包过滤到应用层检测(ALG)的安全机制演进。