NQA技术白皮书

目 录

1 概述

1.1 产生背景

随着Internet的高速发展,网络支持的业务和应用日渐增多,传统的网络性能分析方法(如Ping、Tracert等)已经不能满足用户对业务多样性和监测实时性的要求。

NQA通过发送测试报文,对网络性能或服务质量进行分析,为用户提供网络性能参数,如时延抖动、HTTP的总时延、通过DHCP获取IP地址的时延、TCP连接时延、FTP连接时延和文件传输速率等。利用NQA的测试结果,用户可以:

l 及时了解网络的性能状况,针对不同的网络性能,进行相应的处理;

l 对网络故障进行诊断和定位。

NQA还提供了与Track和应用模块联动的功能,实时监控网络状态的变化,及时进行相应的处理,从而避免通信的中断或服务质量的降低。

1.2 技术优点

NQA具有以下几个特点:

l 支持多种测试类型

传统的Ping功能是使用ICMP(Internet Control Message Protocol,互联网控制报文协议)测试数据包在本端和指定目的端之间的往返时间。NQA是对Ping功能的扩展和增强,它提供了更多的功能。

目前NQA支持11种测试类型:ICMP-echo、DHCP、DNS、FTP、HTTP、UDP-jitter、SNMP、TCP、UDP-echo、Voice和DLSw测试。

l 支持多测试组并发

NQA模块支持多个测试组并发,用户可以根据需求手工配置并发个数。但对于DHCP测试,同一时刻只允许有一个测试组进行测试。

l 支持联动功能

联动功能是指NQA提供探测功能,把探测结果通知其他模块,其他模块再根据探测结果进行相应处理的功能。目前实现了与VRRP、静态路由、备份中心和策略路由的联动。

2 特性介绍

2.1 相关术语

l NQA agent:NQA网络测试的客户端。

l NQA server:NQA网络测试的服务器端。狭义上,指UDP-echo、TCP、UDP-jitter和Voice四种测试中的NQA server端。广义上,指所有要被探测的对端设备,如FTP server、HTTP server等。

l 测试组:NQA测试功能以测试组的形式进行组织。每一个测试组都具有一系列的属性,例如,测试类型,测试目的地址,测试目的端口,测试发包频率等。

l 测试组的标识:测试组由管理员名和操作标签来标识。为了更好地管理NQA的测试组,每个测试组都有一个管理员名称和一个操作标签,通过它们可以较少确定一个测试组。测试组创建之后,可以在测试组视图下配置测试类型,然后进入测试类型视图配置其他参数。

l 探测:一个能够得到完整探测结果的独立过程。对于TCP、DLSw测试,一次探测是指一次连接;对于UDP-jitter和Voice测试,一次探测发送探测报文的个数由用户来设定;对于FTP、HTTP、DHCP测试,一次探测是指完成一次相应的功能;对于ICMP-echo、UDP-echo测试,一次探测发送一个探测报文;对于SNMP测试,一次探测发送三个探测报文。

l 测试:一次测试由若干次连续的探测组成。

l UDP-jitter探测:每次UDP-jitter探测发送一组报文,根据各个回应报文中携带的信息计算探测结果。

l SD:从源端到目的端。

l DS:从目的端到源端。

l 测试频率:测试组连续两次测试开始时间的时间间隔。

l 测试结果:测试结果是针对测试而言的,记录了本次测试中所有探测的统计结果信息。如果测试只完成了部分探测,那么会显示已经完成探测的结果信息。

l 历史记录:历史记录是针对探测而言的,每次探测都会生成一次历史记录。

2.2 测试处理机制

2.2.1 ICMP-echo处理机制

ICMP-echo功能是NQA最基本的功能,其实现原理是通过发送ICMP报文来判断目的地的可达性、计算网络响应时间及丢包率。

ICMP-echo测试成功的前提条件是目的设备要能够正确响应ICMP echo request报文。NQA客户端会根据设置的探测时间及频率向探测的目的IP地址发ICMP echo request报文,目的地址收到ICMP echo request报文后,回复ICMP echo reply报文。NQA客户端根据ICMP echo reply报文的接收情况,如接收时间和报文个数,计算出到目的IP地址的响应时间及丢包率,从而反映当前的网络性能及网络情况。

ICMP-echo测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录

2.2.2 UDP-echo处理机制

UDP-echo主要用于探测网络可达性和时延。使用UDP报文探测网络可达性和时延时,要求对端必须开启NQA server,并在NQA server上打开对应的UDP端口。

NQA客户端会根据设置的探测时间及频率向探测的目的IP地址发送UDP报文,目的地址收到UDP探测报文后,直接利用该报文进行回复。NQA客户端根据接收到UDP报文的情况,计算到达目的IP地址所需的时间及丢包率,以反映当前的网络性能及网络情况。

UDP-echo测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。

2.2.3 UDP-jitter处理机制

UDP-jitter是探测网络状况,监视实时性业务服务质量的重要工具。语音、视频及其它实时业务对时延和时延抖动的要求很高。通过UDP-jitter测试可以反映网络的性能,判断网络能否为实时业务提供服务质量保证。

UDP-jitter测试报文是私有报文,且探测时对端也需要支持NQA并配置NQA server相关参数,因此UDP-jitter测试无法与其他厂商设备互通。

图2-1 UDP-jitter实现原理

UDP-jitter测试的工作过程如图2-1所示:

(1) NQA Agent发送一个UDP-jitter报文给NQA server,并在报文中记录报文离开时间T1。

(2) 当此UDP-jitter报文到达NQA server时,NQA server在报文中加上接收到该报文的时间T2。

(3) 当此UDP-jitter报文离开NQA server时,NQA server再加上报文离开时的时间T3。

(4) 当NQA Agent接收到该响应报文时,记录接收到响应报文的时间T4。

(5) NQA Agent以固定发包间隔(T5-T1)发送多个探测报文,重复上述过程。

(6) NQA Agent根据成功收到回应的相邻两个报文的往返时间,分别计算从源端到目的端和从目的端到源端的抖动。以图2-1中所示的两个报文为例:

SD jitter=(T6-T5)-(T2-T1)=(T6-T2)-(T5-T1)

DS jitter=(T8-T7)-(T4-T3)=(T8-T4)-(T7-T3)

图2-2 UDP-jitter单向丢包统计原理

如图2-2所示,UDP-jitter客户端和服务器配合,可以统计出报文单向丢包个数。

NQA agent发送的每个报文中都包含报文ID。NQA server每收到一个报文,都更新收到的最大报文ID和收包个数,并在应答报文中返回给NQA agent;NQA agent记录回应报文个数,并从回应报文中获取NQA server端信息。

NQA agent可以获取的信息有:

(1) NQA agent发包个数;

(2) NQA server收到的最大报文ID和报文个数;

(3) NQA agent收包个数。

根据这些信息可以计算:

SD丢包个数=NQA server收到的最大报文ID-NQA server端收到报文个数

DS丢包个数=NQA server端收到报文个数-NQA agent收到报文个数

未知方向上丢包个数=NQA agent发包个数-NQA agent收包个数-SD丢包个数-DS丢报个数

UDP-jitter可以统计如下信息:报文响应时间、丢包率、报文探测失败原因统计、agent端到server端抖动时延统计、server端到agent端抖动时延统计以及单向丢包统计。

UDP-jitter测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果

& 说明:

UDP-jitter测试中每次探测发送一组报文,这组报文只对应一条历史记录。因此,如果想了解UDP-jitter测试的结果,建议只查看探测结果,不要查看历史记录。

2.2.4 Voice处理机制

Voice测试主要用来测试VoIP网络情况,统计VoIP网络参数,以便用户根据网络情况进行相应的调整。

Voice测试可以用来计算时延抖动、单向延迟、丢包率等参数,这些参数的计算方法与UDP-jitter测试类似。

Voice测试还可以计算出反映VoIP网络状况的语音参数值,包括:

l ICPIF:用来量化网络中语音数据的衰减,由单向网络延迟和丢包率等决定。数值越大,表明语音网络质量越差。

l MOS:用来衡量语音网络的质量。通过计算网络中语音数据的衰减——ICPIF值,可以估算出MOS值,MOS值的范围为1~15。该值越高,表明语音网络质量越好。

对语音质量的评价具有一定的主观性,不同用户对语音质量的容忍程度不同,因此,衡量语音质量时,需要考虑用户的主观因素。对语音质量容忍程度较强的用户,可以配置补偿因子,在计算ICPIF值时将减去该补偿因子,修正ICPIF和MOS值,以便在比较语音质量时综合考虑客观和主观因素。

Voice测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果

& 说明:

l Voice测试采用的是私有报文,且探测时对端也需要支持NQA并配置NQA server相关参数,因此Voice测试无法与其他厂商设备互通。

l Voice测试中每次探测发送一组报文,这组报文只对应一条历史记录。因此,如果想了解Voice测试的结果,建议只查看探测结果,不要查看历史记录。

2.2.5 TCP处理机制

TCP测试主要是测试客户端和指定的服务器之间是否能够建立TCP连接,以及建立TCP连接所需的时间。

不能太频繁的发起TCP探测,以免占用过多资源,影响到目的设备上的正常服务。

TCP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录

2.2.6 DLSw处理机制

NQA DLSw通过向对端设备的DLSw协议指定端口发起TCP连接,根据连接是否建立,确认对端设备是否使能DLSw功能。由于NQA的DLSw测试只是测试DLSw是否配置,在实现上和TCP基本一样,可以看作固定目的端口号的TCP测试。

DlSw测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录

2.2.7 SNMP处理机制

SNMP测试发送SNMP协议报文到指定端口,根据回应确认对端SNMP功能是否开启。在客户端无法指定SNMP服务的版本号。每次测试时会对SNMP v1/v2c/v3三个版本都进行测试,收到任何一个版本的回复,即认为探测成功。目前,SNMP测试并不区分SNMP server支持哪个版本。

SNMP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录

2.2.8 HTTP处理机制

HTTP测试主要是测试是否可以与指定的HTTP服务器建立连接,从而判断该设备是否提供了HTTP服务以及建立连接的时间。

HTTP测试支持GET和POST操作,即向指定地址的HTTP服务器发送GET请求或者POST请求,在接收到回应信息以后,计算整个测试的时间。整个过程只是和HTTP服务器建立连接,如果建立连接成功即认为成功。

HTTP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录

2.2.9 FTP处理机制

FTP测试主要是测试是否可以与指定的FTP服务器建立连接,以及与FTP服务器之间传送文件的时间,可以使用该功能探测任何FTP服务器。

FTP测试支持GET和PUT操作。GET操作并不会把文件放到本地的文件系统,只是计算下载该文件所需要的时间,取得数据后随即自动释放占用的内存;PUT操作并不是将本地文件放到服务器上,而是上传固定大小及内容的文件(文件名由用户配置,数据为系统内部指定的固定数据;如果配置的文件名和服务器上已有的文件重名,则覆盖原来的文件,测试完成后该文件并不被删除)。因此,FTP测试与本地文件系统无关。

FTP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录

2.2.10 DHCP处理机制

DHCP测试模拟DHCP client在指定的接口上发起DHCP请求,根据是否申请到地址,确定接口所在的网络中是否有DHCP server服务以及测试申请到地址的时间。

DHCP测试只是借用操作接口发送DHCP报文,申请到地址后立即释放DCHP租约,不会为接口真正申请地址,因此不会占用DHCP server的地址资源。进行DHCP测试的操作接口必须处于up状态。

DHCP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。

2.2.11 DNS处理机制

DNS测试通过模拟DNS client向指定的DNS服务器发送域名解析请求,根据域名解析是否成功及域名解析需要的时间,来判断DNS服务器是否可用,及域名解析速度。

DNS测试只是模拟域名解析的过程,不会保存要解析的域名与IP地址的对应关系。

DNS测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。

2.2.12 路径服务质量测试

路径服务质量测试是采用自发包方式,用来测试网络中从源站点到目的站点之间路径的质量。路径服务质量测试可以测试的服务质量指标包括:丢包率、吞吐量、时延。

对于路径服务质量测试,一次探测操作是指在一段时间内以一定的速率连续发送并接收特定长度的探测帧。路径服务质量测试以二层数据帧作为测试的探测报文。

1. 丢包率测试过程

丢包率测试的具体测试过程如下:

(1) 用户首先设定一种或多种探测帧的长度。测试开始后,NQA客户端按用户设定的较早长度构造环回探测帧,以指定的速率发送,发送持续时间为一个探测周期。

(2) 目的端收到探测帧后,将探测帧返还给NQA客户端。

(3) NQA客户端记录一个探测周期内发送和接收探测帧的总数量,计算出在传输过程中丢失的探测帧占总发送报文的比例,即丢包率。丢包率计算公式为:

(4) 丢包率=((发送报文数-接收报文数)*100 )/发送报文数

(5) NQA客户端按用户设定的第二个长度构造探测帧,测试此类探测帧的丢包率,依此类推,直至完成所有长度的探测帧的测试。

2. 吞吐量测试过程

吞吐量测试的具体测试过程如下:

(1) 用户首先设定一种或多种探测帧的长度。测试开始后,NQA客户端按用户设定的较早长度构造环回探测帧,以指定的速率发送,发送持续时间为一个探测周期。

(2) NQA客户端根据接收到的目的端返回探测帧数目计算出路径上的丢包率,记录测试结果。

(3) NQA客户端调整发送速率,重新发送探测帧,直到计算出的丢包率小于等于可接受的丢包率上限。所有发送速率中的最大速率,即为本次探测的吞吐量。

(4) NQA客户端按用户设定的第二个长度构造探测帧,测试此类探测帧的吞吐量,依此类推,直至完成所有长度的探测帧的测试。

3. 时延测试过程

时延测试的具体测试过程如下:

(1) 用户首先设定一种或多种探测帧的长度。测试开始后,NQA客户端按用户设定的较早长度构造环回探测帧,以指定的速率发送,发送持续时间为一个探测周期。

(2) 接收到对端返回的探测帧后,NQA客户端将接收探测帧的时间减去探测帧中记录的发送时间,计算该探测帧在路径上往返所需的时间,即时延。

(3) 探测周期结束后,NQA客户端通过公式计算出本周期内所有探测帧的时延平均值。平均时延计算公式为:

(4) 平均时延=探测帧时延之和/发送探测帧的数量

(5) NQA客户端按用户设定的第二个长度构造探测帧,测试此类探测帧的时延平均值,依此类推,直至完成所有长度的探测帧的测试。

2.3 联动功能机制

联动功能是指通过建立联动项,对当前所在测试组中的探测进行监测,当连续探测失败次数达到一定数目时,就触发其他模块联动(UDP-jitter测试不支持联动功能)。联动功能的实现如图2-3所示。

图2-3 联动功能的实现

联动功能由应用模块、Track模块和监测功能模块(如NQA)三部分组成。Track模块位于应用模块和NQA之间,当监测项的状态发生变化时,监测功能模块通知Track模块,再由Track模块通知应用模块进行相应的处理,从而实现联动。

以静态路由为例,用户配置了一条静态路由,下一跳为192.168.0.88,如果192.168.0.88可达,那么该静态路由有效;如果192.168.0.88不可达,则该静态路由无效。通过在NQA、Track模块和应用模块之间建立联动,可以实现静态路由有效性的实时判断。如果NQA发现192.168.0.88不可达,NQA将通过Track模块通知静态路由模块,静态路由模块可以据此判断该静态路由项无效。

2.4 NQA server处理机制

进行UDP-jitter、UDP-echo、TCP和Voice测试,需要配置NQA server进行配合测试。对于UDP-echo测试,NQA server只是简单的把接收的报文直接传回客户端;对于TCP测试,NQA server只是建立监听端口,和客户端建立连接;对于UDP-jitter和Voice测试,NQA server需要在报文中打上时间戳,并且记录当前server接收到的最大报文ID、报文个数,并发送给客户端。

3 典型组网案例

NQA通常应用在联动功能中。NQA可以通过Track模块,实现与VRRP、静态路由、备份中心、策略路由联动,以便及时发现网络中的故障,避免通信中断或服务质量降低。

3.1 NQA与VRRP联动

通过NQA与VRRP联动,可以实现对上行链路的监控。当上行链路出现故障,局域网内的主机无法通过路由器访问外部网络时,NQA会通过Track模块通知VRRP将路由器的优先级降低指定的数额。从而,使得备份组内其它路由器的优先级高于这个路由器的优先级,成为Master路由器,保证局域网内主机与外部网络的通信不会中断。上行链路恢复后,NQA通过Track模块通知VRRP恢复路由器的优先级。

图3-1 VRRP与NQA联动

如图3-1所示,在Device A上通过NQA监测10.1.2.2是否可达,配置VRRP通过Track和NQA进行联动。当NQA监测到10.1.2.2不可达时,通过Track通知VRRP,降低Device A在备份组中的优先级,从而使Device B成为Master路由器,取代Device A转发报文。

3.2 NQA与静态路由联动

通过在NQA、Track模块和静态路由模块之间建立联动,可以实现静态路由有效性的实时判断。利用NQA对静态路由的下一跳地址进行探测,如果NQA探测成功,则静态路由有效;否则,静态路由无效。

图3-2 NQA与静态路由联动

如图3-2所示,在Device B上配置到达Device C的静态路由下一跳地址为10.1.2.1,通过NQA监测10.1.2.1是否可达,并配置静态路由通过Track模块与NQA实现联动。如果NQA发现10.1.2.1不可达,它将通过Track模块通知静态路由,将该静态路由项置为无效;如果NQA发现10.1.2.1可达,则通过Track模块通知静态路由,将该静态路由项恢复为有效。

3.3 NQA与备份中心联动

NQA与备份中心联动,用来实现接口根据网络状况动态改变备份状态。

利用NQA监测主接口的状态,如果NQA监测到主接口所在的链路出现故障,则通过Track模块通知备份中心,启动备份接口所在的链路进行通信;如果NQA监测到与主接口相连的链路恢复正常,则通过Track模块通知备份中心,仍然通过主接口所在的链路通信。

图3-3 NQA与备份中心联动

如图3-3所示,Device A可以通过Device B、Device D两条路径达到Device C。假设正常情况下,主链路为Device A-Device B-Device C,即数据通过Device B发送给Device C。在Device A上配置备份中心与Track、NQA联动后,如果NQA监测到通过Device B到Device C的主链路不可达,则通过Track模块通知备份中心,主链路切换为Device A-Device D-Device C,即数据将通过Device D发送给Device C;如果NQA监测到Device B到Device C的链路恢复正常,则通过Track模块通知备份中心,主链路倒换为Device A-Device B-Device C,数据重新通过Device B发送给Device C。

3.4 NQA与策略路由联动

IP单播策略路由通过与NQA、Track联动,增加了应用的灵活性,增强了策略路由对网络环境的动态感知能力。

策略路由可以在配置报文的发送接口、缺省发送接口、下一跳、缺省下一跳时,通过Track与NQA关联。如果NQA探测成功,则该策略有效,可以指导转发;如果探测失败,则该策略无效,转发时忽略该策略。

图3-4 NQA与策略路由联动

如图3-4所示,Device A可以通过Device B和Device C两个设备连入Internet。在Device A上定义策略路由,实现Device A连接局域网接口接收到的所有TCP报文通过Device B转发(报文的下一跳地址为10.2.1.2)。同时,配置策略路由与NQA、Track联动,利用NQA探测Device B的可达性。如果Device B可达,则该策略可以指导转发,接口接收到的TCP报文下一跳地址为10.2.1.2;否则,该策略无效,接口接收到的TCP报文根据路由查找可用的下一跳。

3.5 路径服务质量测试

自发包测试网络的吞吐量、时延抖动、丢包检测,测试本端(Device A)到指定目的端(Device B)间的网络质量。

图3-5 路径服务质量测试

image015

Device A上配置NQA client,Device B配置反射器,可指定检测报文的长度序列,手工启动测试,手工结束测试,结束后即可显示出路径服务质量的结果。

联系我们