什么是NQA?
网络质量分析NQA.NETwork Quality Analysis)是一种实时的网络性能探测和统计技术,可以对响应时间、网络抖动、丢包率等网络指标进行统计。NQA能够实时监视网络服务质量,在网络发生故障时进行有效的故障诊断和定位。
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报文后,统计并打印出从客户端到目的端的转发路径和该路径上各设备的信息,从而清晰的反映出网络状况。
NQA典型应用
静态路由与NQA联动
静态路由本身并没有检测机制,如果非本机直连链路发生了故障,静态路由不会自动从IP路由表中自动删除,需要管理员介入,这就无法保证及时进行链路切换,可能造成较长时间的业务中断。
基于以上原因,需要有一种有效的方案来检测静态路由所在的链路。对于静态路由而言,现有的静态路由与BFD联动特性,由于受到互通设备两端都必须支持BFD的限制,在某些应用场景无法实施。而静态路由与NQA联动则只要求互通设备的其中一端支持NQA即可。
利用NQA测试例来检测静态路由所在链路的状态,根据NQA的检测结果,决定静态路由是否活跃,达到避免通信的中断或服务质量降低的目的。
以上图为例,RouterA至RouterD有主、备两条链路,RouterA作为NQA客户端来检测至RouterD的链路状态:
- 如果NQA测试例检测到主链路故障,RouterA将这条静态路由设置为“非激活”状态;
- 如果NQA测试例检测到主链路恢复正常,RouterA将这条静态路由设置为“激活”状态。
命令参考
#配置nqa
nqa test-instance test icmp
test-type icmp # 配置测试类型为ICMP
destination-address ipv4 10.0.0.2 #配置 目的地址
source-address ipv4 10.0.0.1 #配置源地址,相当于 ping -a 选项
frequency 11 # 配置NQA测试例自动执行测试的时间间隔。
interval seconds 5 # 配置测试报文的发送间隔。该参数相当于ping命令中的“-m”选项。
timeout 4 # 配置NQA测试例的一次探测的超时时间。
probe-count 2 # 配置探测次数
start now
#配置静态并且关联nqa
ip route-static 0.0.0.0 0.0.0.0 10.0.0.2 preference 50 track nqa test icmp
ip route-static 0.0.0.0 0.0.0.0 20.0.0.2
H3C NQA、静态路由联动
# 创建管理员名为admin、操作标签为test的NQA测试组
[SwitchA] nqa entry admin test
# 配置测试类型为ICMP-echo
[SwitchA-nqa-admin-test] type icmp-echo
# 配置测试的目的地址为10.2.1.4,下一跳地址为10.1.1.2
[SwitchA-nqa-admin-test-icmp-echo] destination ip 10.2.1.4
[SwitchA-nqa-admin-test-icmp-echo] next-hop 10.1.1.2
# 配置测试频率为100ms
[SwitchA-nqa-admin-test-icmp-echo] frequency 100
# 配置可选参数:一次NQA测试中探测的次数为10,探测的超时时间为500毫秒,测试组连续两次测试开始时间的时间间隔为5000毫秒。
[SwitchA-nqa-admin-test-icmp-echo] probe count 10
[SwitchA-nqa-admin-test-icmp-echo] probe timeout 500
[SwitchA-nqa-admin-test-icmp-echo] frequency 5000
# 开启NQA历史记录保存功能,并配置一个测试组中能够保存的最大历史记录个数为10
[SwitchA-nqa-admin-test-icmp-echo] history-record enable
[SwitchA-nqa-admin-test-icmp-echo] history-record number 10
# 配置联动项1(连续失败5次触发联动)
[SwitchA-nqa-admin-test-icmp-echo] reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type trigger-only
# 启动探测
[SwitchA] nqa schedule admin test start-time now lifetime forever
# 配置Track项1,关联NQA测试组(管理员为admin,操作标签为test)的联动项1
[SwitchA] track 1 nqa entry admin test reaction 1
# 显示ICMP-echo测试中最后一次测试的结果
[SwitchA] display nqa result admin test
# 显示ICMP-echo测试的统计结果
[SwitchA] display nqa statistics admin test
# 显示ICMP-echo测试的历史记录
[SwitchA] display nqa history admin test
# 显示Switch A上Track项的信息
[SwitchA] display track all
# 配置静态路由关联track 1
[SwitchA] ip route-static 30.1.1.0 24 10.1.1.2 track 1