第200篇:广域网链路质量监测:NQA 与 BFD

关键词

NQA、网络质量分析、BFD、双向转发检测、链路质量监测、SLA 保障、故障检测、联动机制


一、为什么需要链路质量监测

1.1 广域网链路的挑战

广域网(WAN)链路与局域网不同,存在各种质量问题:

局域网(LAN)              广域网(WAN)
───────────────         ─────────────────
低延迟(<1ms)           高延迟(10-500ms)
无抖动                  抖动不可预测
丢包率≈0%               丢包率 0.1%-5%
带宽持续                带宽可能波动
故障少                  链路故障常见(光纤被挖断等)

所以,广域网需要持续监测链路质量,以便:
1. 及时发现故障(秒级甚至毫秒级)
2. 量化链路质量指标(时延、抖动、丢包)
3. 联动路由协议切换(故障时绕行)

1.2 NQA 与 BFD 的定位

对比项 NQA BFD
全称 Network Quality Analysis Bidirectional Forwarding Detection
本质 主动探测、质量分析工具 快速故障检测协议
检测速度 秒级(1-60s) 毫秒级(3.3ms-1s)
检测内容 时延、抖动、丢包、吞吐 UP/DOWN 状态
适用场景 SLA 监控、性能基线 路由/FRR 联动
是否消耗带宽 定期发送探测报文 定期发送 Hello 报文
标准 厂商私有 + 部分 RFC RFC 5880-5885

二、NQA 详解

2.1 NQA 的探测类型

NQA 支持多种探测类型:

NQA 探测类型 1. ICMP NQA ── ping 类,测时延和可达性 2. TCP NQA ── TCP 端口连通性 3. UDP NQA ── UDP 时延和抖动 4. UDP Jitter ── 专测抖动(会记录抖动值) 5. HTTP NQA ── HTTP 响应时间 6. DHCP NQA ── DHCP 服务器可用性 7. DNS NQA ── DNS 解析时延 8. LSP NQA ── MPLS LSP 连通性 9. SNMP NQA ── 查询设备指标

2.2 NQA 配置示例

# 基本 ICMP NQA(检测对端可达性)
nqa test-instance admin_icmp ISP_LINK_1
 test-type icmp                              # ICMP 探测
 destination-address ipv4 8.8.8.8           # 目标地址
 source-address ipv4 10.0.0.1               # 源地址
 source-port 2000
 interval seconds 5                          # 每 5 秒探测一次
 timeout 2                                   # 超时 2 秒
 probe-count 2                               # 每次探测发 2 个包
 frequency 30                                # 每 30 秒一次完整测试
!
 start now                                    # 立即启动

2.3 UDP Jitter 监测

# UDP Jitter 探测(监测时延和抖动)
nqa test-instance admin_jitter WAN_LINK_1
 test-type jitter                             # Jitter 探测
 destination-address ipv4 10.0.1.2
 source-address ipv4 10.0.0.1
 source-port 3000
 destination-port 3000
 interval milliseconds 20                     # 20ms 发包间隔
 probe-count 10                               # 每次 10 个包
 frequency 60                                 # 每 60 秒测试一次
!
 start now

# 查看 Jitter 结果
display nqa results test-instance admin_jitter WAN_LINK_1
  NQA 测试结果:
    最小时延: 5 ms
    最大时延: 25 ms
    平均时延: 12 ms
    平均抖动: 3 ms
    丢包率: 0.1%
    SD 抖动: 2 ms     ← 正向抖动(源到目标)
    DS 抖动: 4 ms     ← 反向抖动(目标到源)

2.4 NQA 与路由联动

# NQA 检测到链路质量恶化后触发路由切换

配置步骤:

1. 创建 NQA 测试实例
nqa test-instance admin_icmp ISP_1
 test-type icmp
 destination-address ipv4 8.8.8.1
 frequency 10
!
 start now

2. 配置静态路由 + NQA 联动
ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet0/0/0 10.0.1.1
 track nqa admin_icmp ISP_1
  description "NQA track - 如果 ISP_1 不通则撤销默认路由"

3. 备选路由(NQA 检测到主链路故障后启用)
ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet0/0/1 10.0.2.1
 preference 70                                # 低优先级作为备份

# 联动效果:
# 主链路不通 → NQA 检测失败 → 主路由被撤销 → 启用备选路由
# 切换时间:NQA 检测周期(10s)+ 路由收敛(< 1s)≈ 11s

2.5 NQA 结果与报告

# 查看 NQA 历史记录
display nqa history test-instance admin_icmp ISP_1
  Index   Response Status      Time          RTT(ms)
  1       Success             2024-03-15 10:00:01  12
  2       Success             2024-03-15 10:00:11  15
  3       Timeout             2024-03-15 10:00:21  -     ← 故障发生
  4       Timeout             2024-03-15 10:00:31  -
  5       Success             2024-03-15 10:00:41  18    ← 链路恢复

# 计算 SLA(过去 24 小时)
display nqa statistics test-instance admin_icmp ISP_1
  测试总数: 8640
  成功: 8597 (99.5%)
  超时: 43 (0.5%)
  平均 RTT: 14 ms
  最大 RTT: 256 ms
  最小 RTT: 3 ms

三、BFD 详解

3.1 BFD 基本原理

BFD(Bidirectional Forwarding Detection)是一种轻量级快速故障检测协议:

正常状态: | R1 | ─── BFD Hello ─→ ←── BFD Hello ─ | R2 | | --- | --- | --- | 每 10ms 发一次 Hello 检测倍数 3,共 30ms 可检测故障

故障状态: | R1 | ─── BFD Hello ─→ (无回复) 3 次超时后 → DOWN | (R2 故障) | | --- | --- | --- | R1 在 30ms 内检测到故障 立即通知上层协议(OSPF/BGP/LDP)

3.2 BFD 的三种模式

模式 说明 应用场景
异步模式(默认) 双方周期性发送 Hello 大多数场景
查询模式 平时不发,需时才启动 省带宽场景
回声模式 一端发,另一端反射回来 减少处理开销

3.3 BFD 参数

关键参数及其影响:

参数 默认值 最小值 说明
Tx Interval Rx Interval Detect Mult 总检测时间 100ms 100ms 3 300ms 3.3ms 3.3ms 2 6.6ms 发送间隔 接收间隔 检测倍数 Tx × Detect Mult

配置注意: - 太快的检测间隔(<10ms)可能消耗 CPU - 对等体协商较慢一方的参数 - 实际检测时间 = max(local_tx, peer_rx) × detect_mult

3.4 BFD 配置示例

# 全局使能 BFD
bfd
!

# BFD for OSPF
ospf 1
 bfd all-interfaces enable                   # OSPF 所有接口启用 BFD
 bfd block interface GigabitEthernet0/0/1    # 排除不需要的接口
!
interface GigabitEthernet0/0/0
 ospf bfd enable
 ospf bfd min-tx-interval 10                 # 发送间隔 10ms
 ospf bfd min-rx-interval 10                 # 接收间隔 10ms
 ospf bfd detect-multiplier 3                # 检测倍数 3(30ms 检测)

# BFD for BGP
bgp 100
 peer 10.0.0.2 bfd enable
 peer 10.0.0.2 bfd min-tx-interval 10
 peer 10.0.0.2 bfd min-rx-interval 10
 peer 10.0.0.2 bfd detect-multiplier 3

# BFD for LDP
mpls ldp
 bfd all-interfaces enable
 bfd min-tx-interval 10
 bfd min-rx-interval 10
 bfd detect-multiplier 3

# BFD for Static Route
bfd 1 bind peer-ip 10.0.1.2 interface GigabitEthernet0/0/0
 discriminator local 1
 discriminator remote 1
 commit
!
ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet0/0/0 10.0.1.1
 track bfd-session 1

四、NQA vs BFD 协同定位

4.1 各司其职

实时性:          BFD              NQA
              < 50ms            1-60s

功能:        UP/DOWN 检测      时延、抖动、丢包

适用:        故障快速切换        SLA 监控、性能评估

联动对象:     IGP/BGP/LDP     静态路由、策略路由

4.2 协同工作示例

链路故障场景:

时间轴:
  0ms     链路中断(光纤被挖断)
  10ms    BFD 检测失败(连续 3 次丢包)
  11ms    通知 OSPF/ISIS
  12ms    OSPF 重新计算 SPF
  15ms-50ms  路由收敛完成,流量切换

  30s     NQA 第一次探测超时
  60s     NQA 第二次探测超时
  90s     NQA 标记链路为 DOWN(确认持续故障)
  91s     发送告警到网管系统
  120s    记录到 SLA 报告(该时段可用性 = 99.97%)

两台工具协同:
  BFD:负责截止到 50ms 的快速切换
  NQA:负责秒级以上的质量评估和报告

4.3 典型配置模板

# 推荐配置:BFD 快速检测 + NQA 质量监控

bfd
!

# BFD:快速故障检测(用于路由联动)
ospf 1
 bfd all-interfaces enable
 bfd min-tx-interval 10
 bfd min-rx-interval 10
 bfd detect-multiplier 3

# NQA:链路质量监控(用于 SLA 报告)
nqa test-instance sla_icmp WAN_LINK_1
 test-type icmp
 destination-address ipv4 10.0.0.2
 interval seconds 5
 probe-count 2
 frequency 60
!
nqa test-instance sla_jitter WAN_LINK_1
 test-type jitter
 destination-address ipv4 10.0.0.2
 interval milliseconds 20
 probe-count 100
 frequency 300
!
 start now

五、SLA 报告生成

5.1 SLA 指标定义

基于 NQA 的 SLA 报告指标:

SLA 可用性 = 成功探测次数 / 总探测次数 × 100%
  NQA:每 5 秒一次,每天 17280 次
  99.99% = 允许 1.7 次失败/天
  99.999% = 允许 0.17 次失败/天 ≈ 1.5 秒中断/天

SLA 时延 = NQA 探测的平均 RTT
  < 10ms:优秀(同城专线)
  < 30ms:良好(省内骨干)
  < 80ms:可接受(长途骨干)
  > 80ms:需要优化

SLA 抖动 = NQA Jitter 探测结果
  < 3ms:优秀
  < 10ms:良好
  > 10ms:可能影响实时业务

SLA 丢包率 = 丢包数 / 总发送数
  < 0.01%:优秀(金融级)
  < 0.1%:良好
  > 0.5%:需要关注
  > 1%:严重影响应用

5.2 月度 SLA 报告输出示例

链路:WAN_LINK_1 (PE1 ↔ PE2 核心链路)
月份:2024年3月

指标             目标值      实际值      达标情况
──────────────────────────────────────────────
可用性           ≥ 99.99%    99.993%    ✔
平均时延         < 20ms      12ms       ✔
最大时延         < 100ms     45ms       ✔
平均抖动         < 5ms       2ms        ✔
丢包率           < 0.1%      0.02%      ✔

本月故障事件:
  3月15日 10:00:21-10:00:31(10秒中断)→ BFD 在 30ms 切换
  3月22日 14:22:10-14:22:15(时延飙升至200ms)→ 未切换,NQA 标记为事件

六、总结

知识点 核心要点
NQA 主动探测工具,检测时延/抖动/丢包/可达性
BFD 快速故障检测协议,毫秒级检测 UP/DOWN
检测速度 BFD 毫秒级 < NQA 秒级
联动机制 BFD 联动 IGP/BGP/LDP,NQA 联动静态路由/策略路由
协同 BFD 负责快速切换,NQA 负责质量评估和 SLA 报告
SLA 报告 基于 NQA 数据生成可用性/时延/抖动/丢包报告
检测类型 NQA 支持 ICMP/TCP/UDP/Jitter/HTTP/DNS 等

七、思考

  1. NQA 和 BFD 在广域网链路监测中各承担什么角色?为什么需要两者并存?
  2. BFD 的检测时间是如何计算的?最小可以达到多少?
  3. 如果一条链路的 BFD 检测间隔设置为 10ms,检测倍数为 3,链路中断后最快多久能感知到?
  4. NQA 的 UDP Jitter 探测如何计算正向抖动(SD)和反向抖动(DS)?
  5. 请画出一个完整的 NQA+BFD 协同故障切换的时间线(从故障发生到流量切换完成)。

下篇预告:第201篇《防火墙安全区域与安全策略》——开启第五篇章「网络安全技术」,从防火墙的基础安全模型开始,详解区域隔离和策略控制。