为什么需要NQA?NQA到底为何物?一文告诉你!

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 为什么需要NQA?NQA到底为何物?一文告诉你!


网络质量分析NQA(Network Quality Analysis)是一种实时的网络性能探测和统计技术,可以对响应时间、网络抖动、丢包率等网络指标进行统计。NQA能够实时监视网络服务质量,在网络发生故障时进行有效的故障诊断和定位。

Part1为什么需要NQA

随着运营商增值业务的开展,用户和运营商对QoS(Quality of Service)的相关要求越来越高,特别是在传统的IP网络承载语音和视频业务后,运营商与客户之间签订SLA(Service Level Agreement)成为普遍现象。

为了让用户看到承诺的带宽是否达到需求,运营商需要提供相关的时延、抖动、丢包率等相关的统计参数,以及时了解网络的性能状况。传统的网络性能分析方法(如Ping、Tracert等)已经不能满足用户对业务多样性和监测实时性的要求。

NQA可以实现对网络运行状况的准确测试,输出统计信息。NQA可以监测网络上运行的多种协议的性能,使运营商能够实时采集到各种网络运行指标,例如:HTTP的总时延、TCP连接时延、DNS解析时延、文件传输速率、FTP连接时延、DNS解析错误率等。通过对这些指标进行控制,运营商可以为用户提供不同等级的网络服务。同时,NQA也是网络故障诊断和定位的有效工具。

Part2NQA工作原理


NQA客户端和服务器 NQA测试中,把测试两端称为客户端和服务器端(或者称为源端和目的端),NQA的测试是由客户端(源端)发起。客户端根据测试例的测试类型,构造符合相应协议的报文并打上时间戳,再发送至服务器端。

NQA服务器负责处理NQA客户端发来的测试报文,通过侦听指定IP地址和端口号的报文对客户端发起的测试进行响应。客户端根据发送和接收报文来计算各项性能指标,如连通性、时延、丢包率等。

Part3NQA测试例处理机制

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转发路径,以及该路径上各设备的有关的统计信息。

Part4NQA典型应用

静态路由与NQA联动

静态路由本身并没有检测机制,如果非本机直连链路发生了故障,静态路由不会自动从IP路由表中自动删除,需要管理员介入,这就无法保证及时进行链路切换,可能造成较长时间的业务中断。

基于以上原因,需要有一种有效的方案来检测静态路由所在的链路。对于静态路由而言,现有的静态路由与BFD联动特性,由于受到互通设备两端都必须支持BFD的限制,在某些应用场景无法实施。而静态路由与NQA联动则只要求互通设备的其中一端支持NQA即可。


静态路由与NQA联动组网

利用NQA测试例来检测静态路由所在链路的状态,根据NQA的检测结果,决定静态路由是否活跃,达到避免通信的中断或服务质量降低的目的。

以上图为例,RouterA至RouterD有主、备两条链路,RouterA作为NQA客户端来检测至RouterD的链路状态:

  • 如果NQA测试例检测到主链路故障,RouterA将这条静态路由设置为“非激活”状态;
  • 如果NQA测试例检测到主链路恢复正常,RouterA将这条静态路由设置为“激活”状态。
相关文章
|
3月前
|
并行计算 算法 数据处理
编程之道:从代码中领悟技术与生活的哲理
【8月更文挑战第28天】在数字世界的迷宫中,每一行代码都像是宇宙中的一个星系,既独立又相互联系。本文将通过一段简单的Python代码示例,探讨如何从编程实践中汲取生活智慧。我们将看到,代码不仅仅是冷冰冰的指令序列,它也能反映出人类思维的深度和广度。正如甘地所言:“你必须成为你希望在世界上看到的改变。”在编程的世界里,我们同样可以创造并见证这种改变。
43 3
|
1天前
|
Python
探索编程之道:从代码中寻找生活的哲理
【10月更文挑战第35天】在编程的世界里,每一行代码都蕴含着深刻的意义。就像生活中的每一个选择都会影响我们的未来一样,代码中的每个决策也会塑造程序的运行结果。本文将通过一个简单的代码示例,探讨如何从编程中汲取生活的智慧,以及如何在面对技术挑战时保持初心和持续学习的态度。让我们一起走进编程的世界,发现那些隐藏在代码背后的生活哲理吧!
|
10天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】
|
5月前
|
存储 C语言 C++
【C++航海王:追寻罗杰的编程之路】C&C++内存管理你知道哪些?
【C++航海王:追寻罗杰的编程之路】C&C++内存管理你知道哪些?
22 0
|
6月前
|
人工智能 架构师 机器人
高薪程序员的三大窍门,你准备好了吗?
“高薪,月薪过万”已经成为人们对于程序员的刻板印象,但实际上对于二三线城市的码农来说,月薪过万似乎仍然是一个难以达到的目标。地理位置、房价以及升职加薪等问题让程序员陷入了薪资困境。作为一位程序员,若想获得自己理想的工资水平,需要具备哪些要素呢?
|
编译器 C语言 C++
重生之我要学C++第四天
重生之我要学C++第四天
92 0
|
程序员 C++
重生之我要学C++第五天(下)
重生之我要学C++第五天(下)
102 0
|
编译器 C++
重生之我要学C++第五天(上)
重生之我要学C++第五天(上)
72 0
|
算法 程序员 数据安全/隐私保护
2022 年终总结|怎样写出一篇还不错的文章
2022 年终总结|怎样写出一篇还不错的文章
77 0
|
IDE 开发工具 Python
这样的奇技淫巧,劝你不用也罢
这样的奇技淫巧,劝你不用也罢
138 0
下一篇
无影云桌面