什么是NQA?
网络质量分析NQA(Network Quality Analysis)是一种实时的网络性能探测和统计技术,可以对响应时间、网络抖动、丢包率等网络指标进行统计。NQA能够实时监视网络服务质量,在网络发生故障时进行有效的故障诊断和定位。
为什么需要NQA
随着运营商增值业务的开展,用户和运营商对QoS(Quality of Service)的相关要求越来越高,特别是在传统的IP网络承载语音和视频业务后,运营商与客户之间签订SLA(Service Level Agreement)成为普遍现象。
为了让用户看到承诺的带宽是否达到需求,运营商需要提供相关的时延、抖动、丢包率等相关的统计参数,以及时了解网络的性能状况。传统的网络性能分析方法(如Ping、Tracert等)已经不能满足用户对业务多样性和监测实时性的要求。
NQA可以实现对网络运行状况的准确测试,输出统计信息。NQA可以监测网络上运行的多种协议的性能,使运营商能够实时采集到各种网络运行指标,例如:HTTP的总时延、TCP连接时延、DNS解析时延、文件传输速率、FTP连接时延、DNS解析错误率等。通过对这些指标进行控制,运营商可以为用户提供不同等级的网络服务。同时,NQA也是网络故障诊断和定位的有效工具。
NQA工作原理
NQA测试中,把测试两端称为客户端和服务器端(或者称为源端和目的端),NQA的测试是由客户端(源端)发起。客户端根据测试例的测试类型,构造符合相应协议的报文并打上时间戳,再发送至服务器端。
NQA服务器负责处理NQA客户端发来的测试报文,通过侦听指定IP地址和端口号的报文对客户端发起的测试进行响应。客户端根据发送和接收报文来计算各项性能指标,如连通性、时延、丢包率等。
NQA测试例处理机制
ICMP测试
ICMP测试是通过发送ICMP报文来判断目的地的可达性、计算网络响应时间及丢包率。
源端向目的端发送构造的ICMP Echo Request报文。目的端收到报文后,直接回应ICMP Echo Reply报文给源端。
源端收到报文后,通过计算源端接收时间和源端发送时间之差,计算出源端到目的端的通信时间,从而清晰的反映出网络性能及网络畅通情况。
Trace测试
Trace测试用于检测源端到目的端的转发路径,并沿该路径记录源设备到中间各个设备的时延等信息。
Trace测试的过程如下:
- 客户端向目的端发送构造的UDP报文,报文中的TTL为1。
- 第一跳收到该报文后,判断TTL后丢弃该报文,返回一份ICMP超时报文。
- 客户端收到该ICMP超时报文后,记录下第一跳设备的IP地址,并重新构造一份UDP报文,报文中的TTL为2。
- 第二跳收到该报文后,判断TTL后丢弃该报文,返回一份ICMP超时报文。
- 以此类推,最终报文到达最后一跳设备,返回一份ICMP端口不可达报文给客户端。
客户端收到每跳返回的ICMP报文后,统计并打印出从客户端到目的端的转发路径和该路径上各设备的信息,从而清晰的反映出网络状况。
TCP测试
TCP测试用于检测客户端与TCP Server之间经过三次握手建立TCP连接的速度。
客户端通过接收TCP SYN ACK报文和发送TCP SYN报文、ACK报文的时间的差,计算出与TCP Server之间三次握手建立TCP连接的时间,从而清晰地反映出网络中TCP协议的性能状况。
UDP测试
网络中的很多业务都是由UDP协议来承载的,一旦业务质量下降后,没有办法检测是业务本身的问题,还是UDP承载的性能问题。NQA的UDP测试可以用于检测UDP承载的性能问题。
源端向目的端发送构造的UDP报文,目的端回应报文给源端。源端收到数据包后通过计算源端接收报文的时间和源端发送报文的时间的差,计算出源端与目的端之间通信的时间。从而清晰的反映出网络UDP协议的性能状况。
DNS测试
DNS测试以UDP报文为承载,通过模拟DNS Client向指定的DNS服务器发送域名解析请求,根据域名解析是否成功及域名解析需要的时间,来判断DNS服务器是否可用,及域名解析速度。
FTP测试
FTP测试以TCP报文为承载,用于检测是否可以与指定的FTP服务器建立连接,以及从FTP服务器下载指定文件或向FTP服务器上载指定文件的速度。
HTTP测试
HTTP测试主要是测试客户端是否可以与指定的HTTP服务器建立连接,从而判断该设备是否提供了HTTP服务以及建立连接的时间。
SNMP测试
SNMP测试主要用于检测主机与SNMP Agent之间SNMP协议的连通性以及通信速度,以UDP报文为承载。
源端向SNMP Agent发送构造的请求报文,SNMP Agent回应报文给源端。源端收到数据包后通过计算源端接收报文的时间和源端发送报文的时间的差,计算出源端与SNMP Agent之间通信的时间。从而清晰的反映出网络SNMP协议的性能状况。
LSP Ping测试
LSP Ping测试用于检测两种类型(LDP, TE)的LSP路径是否可达。
源端首先构造MPLS Echo Request报文,在IP头填入127.0.0.0/8网段的地址作为IP的目的地,根据配置对端LSR ID查找相应的LSP,按指定的LSP进行MPLS域内的转发。目的端侦听3503端口发送MPLS Echo Reply响应报文。
源端通过接收到的响应报文,统计出测试结果,通过计算源端接收时间和源端发送时间之差,计算出源端到目的端的通信时间,从而清晰地反应出MPLS网络链路畅通情况。
LSP Trace测试
LSP Trace测试用于检测两种类型(LDP,TE)的LSP转发路径,并沿该路径收集各设备的有关的统计信息。
源端首先构造UDP的MPLS Echo Request报文,在IP头填入127.0.0.0/8网段的地址作为IP的目的地,查找相应的LSP。MPLS Echo Request报文应该包含有Downstream MapPing TLV(用来携带LSP在当前节点的下游信息,主要包括下一跳地址、出标签等)。
第一次发送的MPLS Echo Request报文的TTL为1。报文按指定的LSP进行MPLS域内的转发,TTL超时返回MPLS Echo Reply消息。源端继续以TTL递增的方式发送MPLS Echo Request报文,如此重复,直到整条LSP上的所有LSR都应答后,LSP Trace测试过程完成。
源端收到每跳LSR的应答消息后,统计出从源端到目的端的LSP转发路径和该路径上各设备的有关信息。从而清晰的反映出从源端到目的端的LSP转发路径。
PWE3 Ping测试
PWE3(Pseudo-Wire Emulation Edge to Edge) Ping测试例用于检测基于MPLS转发的PW路径是否可达。
源端发送MPLS Echo Request报文并经过PW转发。报文到达远端PE后,返回MPLS Echo Reply报文。源端通过接收到的响应报文,统计出测试结果,通过计算源端接收时间和源端发送时间之差,计算出源端到目的端的通信时间,从而清晰的反应出此条PW通路畅通情况。
PWE3 Trace测试
PWE3 Trace测试用于检测基于MPLS的PW转发路径,并沿该路径收集各设备的有关的统计信息。
PWE3 Trace是源端通过连续发送TTL值从1到某个值的MPLS Echo Request报文,这样路径上的每个节点在TTL超时后,都返回一个MPLS Echo Reply报文。源端就可以收集PW上每个节点的信息,从而清晰的反映出从源端到目的端的PW转发路径,以及该路径上各设备的有关的统计信息。
NQA典型应用
静态路由与NQA联动
静态路由本身并没有检测机制,如果非本机直连链路发生了故障,静态路由不会自动从IP路由表中自动删除,需要管理员介入,这就无法保证及时进行链路切换,可能造成较长时间的业务中断。
基于以上原因,需要有一种有效的方案来检测静态路由所在的链路。对于静态路由而言,现有的静态路由与BFD联动特性,由于受到互通设备两端都必须支持BFD的限制,在某些应用场景无法实施。而静态路由与NQA联动则只要求互通设备的其中一端支持NQA即可。
静态路由与NQA联动组网
利用NQA测试例来检测静态路由所在链路的状态,根据NQA的检测结果,决定静态路由是否活跃,达到避免通信的中断或服务质量降低的目的。
以上图为例,RouterA至RouterD有主、备两条链路,RouterA作为NQA客户端来检测至RouterD的链路状态:
- 如果NQA测试例检测到主链路故障,RouterA将这条静态路由设置为“非激活”状态;
- 如果NQA测试例检测到主链路恢复正常,RouterA将这条静态路由设置为“激活”状态。
NQA和BFD区别
NQA(Network Quality Analyzer)和BFD(Bidirectional Forwarding Detection)都是网络可靠性保障技术,但核心目标不同:NQA侧重于网络质量分析(时延、抖动、丢包等),而BFD专注于链路快速故障检测(毫秒级通断判定)
NQA vs BFD 对比
| 对比维度 | NQA(网络质量分析) | BFD(双向转发检测) |
|---|---|---|
| 核心目标 | 分析网络性能质量,提供 SLA 指标 | 快速检测链路通断,触发路由收敛 |
| 检测内容 | 时延、抖动、丢包率、带宽利用率、应用服务响应 | 链路是否可达(通/断),不关心质量 |
| 检测速度 | 秒级,适合持续监控 | 毫秒级,适合快速切换 |
| 报文类型 | 多种协议探测报文(ICMP、UDP、HTTP、DNS等) | 轻量级 BFD 控制报文(UDP 封装,端口3784) |
| 应用场景 | SLA监控、业务性能保障、故障诊断 | 路由协议快速收敛、FRR保护倒换、多路径监控 |
| 灵活性 | 支持多种测试策略,数据维度丰富 | 协议简单,开销低,专注通断检测 |
| 典型用途 | 验证网络健康状况,定位瓶颈 | OSPF/BGP/MPLS TE 快速切换,保障业务连续性 |
NQA
- 灵活性高,可定制测试策略
- 数据丰富,适合长期性能分析
- 适合运营商 SLA 验证和业务监控
BFD
- 开销极低,报文轻量
- 检测速度极快(毫秒级)
- 常与路由协议结合,提升收敛速度
总结
- 如果目标是监控网络质量和业务性能 → 用 NQA
- 如果目标是快速检测链路故障并触发路由切换 → 用 BFD
两者并非互斥,常常结合使用:NQA负责性能监控,BFD负责快速通断检测,从而实现网络的高可靠性与高可用性。
华为 vs H3C NQA与Track联动配置对照表
1. 概述
- NQA:用于检测链路质量(时延、丢包、抖动等)。
- Track:用于监控对象状态并与路由策略联动。
- 联动作用:当NQA检测失败时,Track会使路由失效,触发备份链路,实现高可用性。
2. 配置对照表
| 功能步骤 | 华为(Huawei)命令 | H3C命令 |
|---|---|---|
| 创建NQA实例 | nqa test-instance |
nqa entry |
| 指定测试类型 | test-type icmp-echo |
type icmp-echo |
| 配置目标地址 | destination ip <目标IP> |
destination ip <目标IP> |
| 启动测试 | commit |
start |
| 创建Track对象 | track nqa test-instance |
track nqa entry |
| 路由绑定Track | ip route-static <目的网段> <掩码> <下一跳> track |
ip route-static <目的网段> <掩码> <下一跳> track |
| 查看Track状态 | display track |
display track |
3. 示例配置
华为设备示例
system-view
nqa test-instance owner1 test1
test-type icmp-echo
destination ip 10.1.1.1
probe-count 5
frequency 2
commit
track 1 nqa test-instance owner1 test1
ip route-static 0.0.0.0 0 10.1.1.254 track 1
H3C设备示例
system-view
nqa entry owner1 test1
type icmp-echo
destination ip 10.1.1.1
probe count 5
probe interval 2
start
track 1 nqa entry owner1 test1
ip route-static 0.0.0.0 0 10.1.1.254 track 1
4. 验证命令
华为
display nqa results test-instance owner1 test1 display track 1H3C
display nqa entry owner1 test1 display track 1
5. 注意事项
- 命令差异:华为用
test-instance,H3C用entry。 - 启动方式:华为用
commit,H3C用start。 - 参数命名:华为用
probe-count,H3C用probe count。 - 联动效果:Track对象状态依赖NQA结果,若NQA检测失败,路由会自动失效。

