一、什么是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服务器负责处理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将这条静态路由设置为“激活”状态。