1、NQA基本概念
NQA测试组是一组测试参数的集合,如测试类型、测试目的地址、测试目的端口等。NQA测试组由一个管理员名称和一个操作标签来标识。管理员通过NQA测试组来实现对NQA测试的管理和调度。
在一台设备上可以创建多个NQA测试组,可以同时启动多个NQA测试组进行测试。
启动NQA测试组后,每隔一段时间进行一次测试,测试的时间间隔由frequency命令来设定。
一次NQA测试由若干次连续的探测组成,探测的次数由probe count命令来设定
NQA支持多种测试类型:ICMP-echo、DHCP、DNS、FTP、HTTP、UDP-jitter、SNMP、TCP、UDP-echo、UDP-tracert、Voice、Path-jitter和DLSw测试。不同测试类型中,探测的含义不同:
· 对于TCP和DLSw测试,一次探测操作是指建立一次TCP或DLSw连接;
· 对于UDP-jitter和Voice测试,一次探测操作是指连续发送多个探测报文,发送探测报文的个数由probe packet-number命令来设定;
· 对于FTP、HTTP、DHCP和DNS测试,一次探测操作是指完成一次相应的功能,例如上传或下载一个文件,获取一个Web页面,申请一个IP地址,将一个域名解析为IP地址;
· 对于ICMP-echo和UDP-echo测试,一次探测操作是指发送一个探测报文;
· 对于SNMP测试,一次探测操作是指发送三个SNMP协议报文,分别对应SNMPv1、SNMPv2c和SNMPv3三个版本;
· 对于Path-jitter测试,一次探测操作分为两个步骤:首先通过tracert探路获取到达目的地址的路径(最大为64跳);再根据tracert结果,分别向路径上的每一跳发送多个ICMP-echo探测报文,发送探测报文的个数由probe packet-number命令来设定;
· 对于UDP-tracert测试,对目的节点进行的整个Tracert过程称为一次测试,对于一个特定TTL值的节点发送一个探测报文的操作称为一次探测,对于同一个TTL值的节点发送探测报文的次数由probe count命令来设定。
1.1 NQA工作机制
图1-1 NQA测试典型组网图
如上图所示,NQA测试的典型组网中包括以下两部分:
· NQA测试的源端设备:又称为NQA客户端,负责发起NQA测试,并统计探测结果。NQA测试组在NQA客户端上创建。
· NQA测试的目的端设备:负责接收、处理和响应NQA客户端发来的探测报文。
¡ 在进行TCP、UDP-echo、UDP-jitter和Voice类型测试时,必须在目的端设备上配置NQA服务器功能,开启指定IP地址和端口上的监听服务。此时,目的端设备又称为NQA服务器。当NQA服务器接收到客户端发送给指定IP地址和端口的探测报文后,将对其进行处理,并发送响应报文。
¡ 在其他类型的测试中,目的端设备只要能够处理NQA客户端发送的探测报文即可,不需要配置NQA服务器功能。例如,在FTP测试中,目的端设备上需要配置FTP服务器相关功能,以便处理客户端发送的FTP报文,而无需配置NQA服务器功能。
(1) NQA客户端构造指定测试类型的探测报文,并发送给目的端设备;
(3) NQA客户端根据是否收到应答报文,以及应答报文中的时间戳,计算报文丢失率、往返时间等。
1.2 支持联动功能
联动功能是指在监测模块、Track模块和应用模块之间建立关联,实现这些模块之间的联合动作。联动功能利用监测模块对链路状态、网络性能等进行监测,并通过Track模块将监测结果及时通知给应用模块,以便应用模块进行相应的处理。联动功能的详细介绍,请参照下文。
如上图所示,NQA可以作为联动功能的监测模块,对NQA探测结果进行监测,当连续探测失败次数达到一定数目时,就通过Track模块触发应用模块进行相应的处理。
以静态路由为例,用户配置了一条静态路由,下一跳为192.168.10.88。通过在NQA、Track模块和静态路由模块之间建立联动,可以实现静态路由有效性的判断:
(1) 通过NQA监测地址192.168.0.88是否可达。
(2) 如果192.168.10.88可达,则认为该静态路由有效,NQA不通知Track模块改变Track项的状态;如果NQA发现192.168.0.88不可达,则通知Track模块改变Track项的状态。
(3) Track模块将改变后的Track项状态通知给静态路由模块。静态路由模块据此可以判断该静态路由项是否有效。
1.3 支持阈值告警功能
NQA可以对探测结果进行监测,在本地记录监测结果,或通过Trap消息将监测结果通知给网络管理系统,以便网络管理员了解NQA测试运行结果和网络性能。
NQA通过创建阈值告警项,并在阈值告警项中配置监测的对象、阈值类型及触发的动作,来实现阈值告警功能。
阈值告警项包括invalid、over-threshold和below-threshold三种状态:
· NQA测试组未启动时,阈值告警项的状态为invalid。
· NQA测试组启动后,每次测试或探测结束时,检查监测的对象是否超出指定类型的阈值。如果超出阈值,则阈值告警项的状态变为over-threshold;如果未超出阈值,则状态变为below-threshold。
如果阈值告警项的触发动作为trap-only,则当阈值告警项的状态改变时,向网络管理系统发送Trap消息。
NQA阈值告警功能支持的监测对象及对应的测试类型,如表1-1所示。
表1-1 NQA阈值告警功能支持的监测对象及对应的测试类型
ICMP-echo、DHCP、DNS、FTP、HTTP、SNMP、TCP、UDP-echo和DLSw测试类型 | |
ICMP-echo、DHCP、DNS、FTP、HTTP、SNMP、TCP、UDP-echo和DLSw测试类型 | |
UDP-jitter和Voice测试类型 | |
UDP-jitter和Voice测试类型 | |
UDP-jitter和Voice测试类型 | |
UDP-jitter和Voice测试类型 | |
ICPIF(Calculated Planning Impairment Factor,计算计划损伤元素)值 | Voice测试类型 |
MOS(Mean Opinion Scores,平均意见得分)值 | Voice测试类型 |
NQA阈值告警功能支持的阈值类型包括:
· 平均值(average):监测一次测试中探测结果的平均值,如果平均值不在指定的范围内,则该监测对象超出阈值。例如,监测一次测试中探测持续时间的平均值。
· 累计数目(accumulate):监测一次测试中探测结果不在指定范围内的累计数目,如果累计数目达到或超过设定的值,则该监测对象超出阈值。
· 连续次数(consecutive):NQA测试组启动后,监测探测结果连续不在指定范围内的次数,如果该次数达到或超过设定的值,则该监测对象超出阈值。
NQA阈值告警功能可以触发如下动作:
· none:只在本地记录监测结果,以便通过显示命令查看,不向网络管理系统发送Trap消息。
· trap-only:不仅在本地记录监测结果,当阈值告警项的状态改变时,还向网络管理系统发送Trap消息。
· trigger-only:在显示信息中记录监测结果的同时,触发其他模块联动。
2、Track联动功能介绍
Track的用途是实现联动功能。如图1-1所示,联动功能通过在监测模块、Track模块和应用模块之间建立关联,实现这些模块之间的联合动作。联动功能利用监测模块对链路状态、网络性能等进行监测,并通过Track模块将监测结果及时通知给应用模块,以便应用模块进行相应的处理。例如,在静态路由、Track和NQA之间建立联动,利用NQA监测静态路由的下一跳地址是否可达。NQA监测到下一跳不可达时,通过Track通知静态路由模块该监测结果,以便静态路由模块将该条路由置为无效,确保报文不再通过该静态路由转发。
如果应用模块直接与监测模块关联,由于不同监测模块通知给应用模块的监测结果形式各不相同,应用模块需要分别处理不同形式的监测结果。联动功能在应用模块和监测模块之间增加了Track模块,通过Track模块屏蔽不同监测模块的差异,将监测结果以统一的形式通知给应用模块,从而简化应用模块的处理。
2.1 联动功能工作原理
· Track模块与监测模块联动
· Track模块与应用模块联动
1. Track模块与监测模块联动
Track模块和监测模块之间通过Track项建立关联。监测模块负责对接口状态、链路状态等进行监测,并将监测结果通知给Track模块;Track模块根据监测结果改变Track项的状态。
· 如果监测结果为监测对象工作正常(如接口处于Up状态、网络可达),则对应Track项的状态为Positive。
· 如果监测结果为监测对象出现异常(如接口处于Down状态、网络不可达),则对应Track项的状态为Negative。
· 如果监测结果无效(如NQA作为监测模块时,与Track项关联的NQA测试组不存在),则对应Track项的状态为NotReady。
目前,可以与Track模块实现联动功能的监测模块包括:
· NQA(Network Quality Analyzer,网络质量分析)
· BFD(Bidirectional Forwarding Detection,双向转发检测)
2. Track模块与应用模块联动
Track模块和应用模块之间通过Track项建立关联。Track项的状态改变后,通知应用模块;应用模块根据Track项的状态,及时进行相应的处理,从而避免通信的中断或服务质量的降低。
目前,可以与Track模块实现联动功能的应用模块包括:
· VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)
在某些情况下,Track项状态发生变化后,如果立即通知应用模块,则可能会由于路由无法及时恢复等原因,导致通信中断。例如,VRRP备份组中Master路由器通过Track监视上行接口的状态。上行接口出现故障时,Track通知Master路由器降低优先级,使得Backup路由器抢占成为新的Master,负责转发报文。当上行接口恢复时,如果Track立即通知原来的Master路由器恢复优先级,该路由器将立即承担转发任务。此时该路由器可能尚未恢复上行的路由,从而导致报文转发失败。在这种情况下,用户可以配置Track项状态发生变化时,延迟一定的时间通知应用模块。
2.2 联动功能应用举例
下面以NQA、Track和静态路由联动为例,说明联动功能的工作原理。
用户在设备上配置了一条静态路由,下一跳地址为192.168.0.88。如果192.168.0.88可达,则报文可以通过该静态路由转发,该静态路由有效;如果192.168.0.88不可达,则通过该静态路由转发报文会导致报文转发失败,此时,需要将该静态路由置为无效。通过在NQA、Track模块和静态路由之间建立联动,可以实现实时监测下一跳的可达性,以便及时判断静态路由是否有效。
(1) 创建NQA测试组,通过NQA测试组监测目的地址192.168.0.88是否可达。
(2) 创建和NQA测试组关联的Track项。192.168.0.88可达时,NQA会将监测结果通知给Track模块,Track模块将该Track项的状态变为Positive;192.168.0.88不可达时,NQA将监测结果通知给Track模块,Track模块将该Track项的状态变为Negative。
(3) 配置这条静态路由和Track项关联。如果Track模块通知静态路由Track项的状态为Positive,则静态路由模块将这条路由置为有效;如果Track模块通知静态路由Track项的状态为Negative,则静态路由模块将这条路由置为无效。
生产网络需求:
1、实时监测ISP链路状态,通过网管IMC报警,拓扑如下图
(1) 配置各接口的IP地址。(配置过程略)
(2) 在MSR5660上配置静态路由,并与Track项关联。
# 配置到默认路由,并配置静态路由与Track项1关联。
[RouterA] ip route-static 0.0.0.0 0.0.0.0 track 1
(3) 在MSR5660上配置NQA测试组
# 创建管理员名为admin、操作标签为test1的NQA测试组。
[MSR5660] nqa entry admin dianxin
# 配置测试类型为ICMP-echo。
[MSR5660-nqa-admin-test1] type icmp-echo
# 配置目的地址为10.2.1.1。
[MSR5660-nqa-admin-test1-icmp-echo] destination ip 1.1.1.1
# 测试频率为9000ms。
[MSR5660-nqa-admin-test1-icmp-echo] frequency 9000
# 配置联动项1(连续失败5次触发联动)。
[MSR5660-nqa-admin-test1-icmp-echo] reaction 1 checked-element probe-fail threshold-type consecutive 5 action-type trigger-only
[MSR5660-nqa-admin-test1-icmp-echo] quit
# 启动ICMP-echo探测操作,并一直进行测试。
[MSR5660] nqa schedule admin dianxin start-time now lifetime forever
(4) 在MSR5660上配置Track项
# 配置Track项1,关联NQA测试组(管理员为admin,操作标签为dianxin)的联动项1。
[MSR5660] track 1 nqa entry admin dianxin reaction 1
# 显示Router A上Track项的信息。
[MSR5660] display track all
Track ID: 1
State: Positive
Duration: 0 days 0 hours 0 minutes 0 seconds
Notification delay: Positive 0, Negative 0 (in seconds)
Tracked object:
NQA entry: admin test1
Reaction: 1
# 显示Router A的路由表。
[MSR5660 display ip routing-table
Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.1.1.0/24 Static 60 0 10.2.1.1 GE2/0/1
10.2.1.0/24 Direct 0 0 10.2.1.2 GE2/0/1
10.2.1.0/32 Direct 0 0 10.2.1.2 GE2/0/1
10.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0
10.2.1.255/32 Direct 0 0 10.2.1.2 GE2/0/1
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0
224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0
255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
以上显示信息表示,NQA测试的结果为下一跳地址1.1.1.1可达(Track项状态为Positive),配置的静态路由生效。
断开ISP链路后。
# 显示MSR5660上Track项的信息。
[MSR5660] display track all
Track ID: 1
State: Negative
Duration: 0 days 0 hours 0 minutes 0 seconds
Notification delay: Positive 0, Negative 0 (in seconds)
Tracked object:
NQA entry: admin test1
Reaction: 1
# 显示MSR5660的路由表。
[MSR5660 display ip routing-table
Destinations : 12 Routes : 12
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.2.1.0/24 Direct 0 0 10.2.1.2 GE2/0/1
10.2.1.0/32 Direct 0 0 10.2.1.2 GE2/0/1
10.2.1.2/32 Direct 0 0 127.0.0.1 InLoop0
10.2.1.255/32 Direct 0 0 10.2.1.2 GE2/0/1
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
224.0.0.0/4 Direct 0 0 0.0.0.0 NULL0
224.0.0.0/24 Direct 0 0 0.0.0.0 NULL0
255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
以上显示信息表示,NQA测试的结果为下一跳地址1.1.1.1不可达(Track项状态为Negative),配置的静态路由无效。