NQA技术白皮书
关键词:NQA、测试、探测、联动、调度
摘 要:NQA是一种实时的网络性能探测和统计技术,可以对响应时间、网络抖动、丢包率等网络信息进行统计。NQA还提供了与Track和应用模块联动的功能,实时监控网络状态的变化。本文首先介绍NQA的基本概念,然后重点介绍NQA的原理、技术特点以及典型组网应用等。
缩略语清单:
缩略语 | 英文全名 | 中文解释 |
DHCP | Dynamic Host Configuration Protocol | 动态主机配置协议 |
DLSw | Data Link Switching | 数据链路交换 |
DNS | Domain Name System | 域名系统 |
FTP | File Transfer Protocol | 文件传输协议 |
HTTP | Hypertext Transfer Protocol | 超文本传输协议 |
ICMP | Internet Control Message Protocol | 互联网控制报文协议 |
ICPIF | Calculated Planning Impairment Factor | 计算计划损伤元素 |
MOS | Mean Opinion Scores | 平均意见得分 |
NQA | Network Quality Analyzer | 网络质量分析 |
SNMP | Simple Network Management Protocol | 简单网络管理协议 |
TCP | Transmission Control Protocol | 传输控制协议 |
UDP | User Datagram Protocol | 用户数据报协议 |
VoIP | Voice over IP | 在IP网络上传送语音数据 |
目 录
随着Internet的高速发展,网络支持的业务和应用日渐增多,传统的网络性能分析方法(如Ping、Tracert等)已经不能满足用户对业务多样性和监测实时性的要求。
NQA通过发送测试报文,对网络性能或服务质量进行分析,为用户提供网络性能参数,如时延抖动、HTTP的总时延、通过DHCP获取IP地址的时延、TCP连接时延、FTP连接时延和文件传输速率等。利用NQA的测试结果,用户可以:
l 及时了解网络的性能状况,针对不同的网络性能,进行相应的处理;
l 对网络故障进行诊断和定位。
NQA还提供了与Track和应用模块联动的功能,实时监控网络状态的变化,及时进行相应的处理,从而避免通信的中断或服务质量的降低。
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、静态路由、备份中心和策略路由的联动。
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 历史记录:历史记录是针对探测而言的,每次探测都会生成一次历史记录。
ICMP-echo功能是NQA最基本的功能,遵循RFC 2925来实现,其实现原理是通过发送ICMP报文来判断目的地的可达性、计算网络响应时间及丢包率。
ICMP-echo测试成功的前提条件是目的设备要能够正确响应ICMP echo request报文。NQA客户端会根据设置的探测时间及频率向探测的目的IP地址发ICMP echo request报文,目的地址收到ICMP echo request报文后,回复ICMP echo reply报文。NQA客户端根据ICMP echo reply报文的接收情况,如接收时间和报文个数,计算出到目的IP地址的响应时间及丢包率,从而反映当前的网络性能及网络情况。
ICMP-echo测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
UDP-echo主要用于探测网络可达性和时延。使用UDP报文探测网络可达性和时延时,要求对端必须开启NQA server,并在NQA server上打开对应的UDP端口。
NQA客户端会根据设置的探测时间及频率向探测的目的IP地址发送UDP报文,目的地址收到UDP探测报文后,直接利用该报文进行回复。NQA客户端根据接收到UDP报文的情况,计算到达目的IP地址所需的时间及丢包率,以反映当前的网络性能及网络情况。
UDP-echo测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
UDP-jitter是探测网络状况,监视实时性业务服务质量的重要工具。语音、视频及其它实时业务对时延和时延抖动的要求很高。通过UDP-jitter测试可以反映网络的性能,判断网络能否为实时业务提供服务质量保证。
UDP-jitter测试报文是私有报文,且探测时对端也需要支持NQA并配置NQA server相关参数,因此UDP-jitter测试无法与其他厂商设备互通。
图1 UDP-jitter实现原理
UDP-jitter测试的工作过程如图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根据成功收到回应的相邻两个报文的往返时间,分别计算从源端到目的端和从目的端到源端的抖动。以图1中所示的两个报文为例:
SD jitter=(T6-T5)-(T2-T1)=(T6-T2)-(T5-T1)
DS jitter=(T8-T7)-(T4-T3)=(T8-T4)-(T7-T3)
图2 UDP-jitter单向丢包统计原理
如图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测试的结果,建议只查看探测结果,不要查看历史记录。
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测试的结果,建议只查看探测结果,不要查看历史记录。
TCP测试主要是测试客户端和指定的服务器之间是否能够建立TCP连接,以及建立TCP连接所需的时间。
不能太频繁的发起TCP探测,以免占用过多资源,影响到目的设备上的正常服务。
TCP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
NQA DLSw通过向对端设备的DLSw协议指定端口发起TCP连接,根据连接是否建立,确认对端设备是否使能DLSw功能。由于NQA的DLSw测试只是测试DLSw是否配置,在实现上和TCP基本一样,可以看作固定目的端口号的TCP测试。
DlSw测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
SNMP测试发送SNMP协议报文到指定端口,根据回应确认对端SNMP功能是否开启。在客户端无法指定SNMP服务的版本号。每次测试时会对SNMP v1/v2c/v3三个版本都进行测试,收到任何一个版本的回复,即认为探测成功。目前,SNMP测试并不区分SNMP server支持哪个版本。
SNMP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
HTTP测试主要是测试是否可以与指定的HTTP服务器建立连接,从而判断该设备是否提供了HTTP服务以及建立连接的时间。
HTTP测试支持GET和POST操作,即向指定地址的HTTP服务器发送GET请求或者POST请求,在接收到回应信息以后,计算整个测试的时间。整个过程只是和HTTP服务器建立连接,如果建立连接成功即认为成功。
HTTP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
FTP测试主要是测试是否可以与指定的FTP服务器建立连接,以及与FTP服务器之间传送文件的时间,可以使用该功能探测任何FTP服务器。
FTP测试支持GET和PUT操作。GET操作并不会把文件放到本地的文件系统,只是计算下载该文件所需要的时间,取得数据后随即自动释放占用的内存;PUT操作并不是将本地文件放到服务器上,而是上传固定大小及内容的文件(文件名由用户配置,数据为系统内部指定的固定数据;如果配置的文件名和服务器上已有的文件重名,则覆盖原来的文件,测试完成后该文件并不被删除)。因此,FTP测试与本地文件系统无关。
FTP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
DHCP测试模拟DHCP client在指定的接口上发起DHCP请求,根据是否申请到地址,确定接口所在的网络中是否有DHCP server服务以及测试申请到地址的时间。
DHCP测试只是借用操作接口发送DHCP报文,申请到地址后立即释放DCHP租约,不会为接口真正申请地址,因此不会占用DHCP server的地址资源。进行DHCP测试的操作接口必须处于up状态。
DHCP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
DNS测试通过模拟DNS client向指定的DNS服务器发送域名解析请求,根据域名解析是否成功及域名解析需要的时间,来判断DNS服务器是否可用,及域名解析速度。
DNS测试只是模拟域名解析的过程,不会保存要解析的域名与IP地址的对应关系。
DNS测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。
联动功能是指通过建立联动项,对当前所在测试组中的探测进行监测,当连续探测失败次数达到一定数目时,就触发其他模块联动(UDP-jitter测试不支持联动功能)。联动功能的实现如图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模块通知静态路由模块,静态路由模块可以据此判断该静态路由项无效。
进行UDP-jitter、UDP-echo、TCP和Voice测试,需要配置NQA server进行配合测试。对于UDP-echo测试,NQA server只是简单的把接收的报文直接传回客户端;对于TCP测试,NQA server只是建立监听端口,和客户端建立连接;对于UDP-jitter和Voice测试,NQA server需要在报文中打上时间戳,并且记录当前server接收到的最大报文ID、报文个数,并发送给客户端。
NQA通常应用在联动功能中。NQA可以通过Track模块,实现与VRRP、静态路由、备份中心、策略路由联动,以便及时发现网络中的故障,避免通信中断或服务质量降低。
通过NQA与VRRP联动,可以实现对上行链路的监控。当上行链路出现故障,局域网内的主机无法通过路由器访问外部网络时,NQA会通过Track模块通知VRRP将路由器的优先级降低指定的数额。从而,使得备份组内其它路由器的优先级高于这个路由器的优先级,成为Master路由器,保证局域网内主机与外部网络的通信不会中断。上行链路恢复后,NQA通过Track模块通知VRRP恢复路由器的优先级。
图4 VRRP与NQA联动
如图4所示,在Device A上通过NQA监测10.1.2.2是否可达,配置VRRP通过Track和NQA进行联动。当NQA监测到10.1.2.2不可达时,通过Track通知VRRP,降低Device A在备份组中的优先级,从而使Device B成为Master路由器,取代Device A转发报文。
通过在NQA、Track模块和静态路由模块之间建立联动,可以实现静态路由有效性的实时判断。利用NQA对静态路由的下一跳地址进行探测,如果NQA探测成功,则静态路由有效;否则,静态路由无效。
图5 NQA与静态路由联动
如图5所示,在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模块通知静态路由,将该静态路由项恢复为有效。
NQA与备份中心联动,用来实现接口根据网络状况动态改变备份状态。
利用NQA监测主接口的状态,如果NQA监测到主接口所在的链路出现故障,则通过Track模块通知备份中心,启动备份接口所在的链路进行通信;如果NQA监测到与主接口相连的链路恢复正常,则通过Track模块通知备份中心,仍然通过主接口所在的链路通信。
图6 NQA与备份中心联动
如图6所示,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。
IP单播策略路由通过与NQA、Track联动,增加了应用的灵活性,增强了策略路由对网络环境的动态感知能力。
策略路由可以在配置报文的发送接口、缺省发送接口、下一跳、缺省下一跳时,通过Track与NQA关联。如果NQA探测成功,则该策略有效,可以指导转发;如果探测失败,则该策略无效,转发时忽略该策略。
图7 NQA与策略路由联动
如图7所示,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报文根据路由查找可用的下一跳。
Copyright ©2008-2009 杭州华三通信技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
本文档中的信息可能变动,恕不另行通知。