RNS(Reliable Network Service,可靠网络服务)通过探测对端设备服务,监控服务的可用性、端到端连接的完整性和服务的质量。利用RNS探测结果,可以及时了解网络的性能状况,针对不同的网络性能进行相应处理。同时对网络故障进行诊断和定位,本文中RNS探测也称为Track探测。
RNS探测实例,可看作是一个RNS进程。进行RNS探测前,需要创建RNS探测实例。在RNS探测实例中配置RNS探测的参数,如探测类型,探测目的地址,探测频率等。探测实例ID全局唯一。
主要用于监控网络的连通性,服务的可用性,端到端连接的完整性和服务的质量,如探测该设备DNS功能是否正常,目前RNS支持的探测类型包括ICMP-Echo,DNS,TCP,UDP-Echo,DHCP类型的探测。
ICMP-Echo探测是RNS最基本的功能,遵循RFC 2925来实现。其实现原理是通过发送ICMP报文来判断目的地的可达性、计算网络响应时间及丢包率。
ICMP-Echo探测根据设置的探测时间及频率向探测的目的IP地址发ICMP回显请求报文,目的地址收到ICMP 回显请求报文后,回复ICMP回显应答报文。ICMP-Echo探测根据ICMP回显应答报文的接收情况,如接收时间和报文个数,计算出到目的IP地址的响应时间及丢包率,从而反映当前的网络性能及网络情况。ICMP-Echo探测的结果和历史记录将被记录,可以通过命令行来查看。
说明
ICMP-Echo探测成功的前提条件是目的设备要能够正确响应ICMP回显请求报文。
UDP-Echo主要用于探测网络可达性和时延。使用UDP报文探测网络可达性和时延时,对端应当开启RNS server并打开对应的UDP端口或可以回应ICMP端口不可达报文。
UDP-Echo探测根据设置的探测时间及频率向探测的目的IP地址发送UDP报文,目的地址收到UDP探测报文后,直接利用该报文进行回复。UDP-Echo探测根据接收到来自服务端UDP报文的情况,计算报文往返所需的时间及丢包率,以反映当前的网络性能及网络情况。UDP-Echo探测的结果和历史记录将被记录,可以通过命令行来查看。
DHCP探测主要用于探测对端设备的DHCP服务功能以及网络的可达性和时延。使用DHCP报文探测网络可达性和时延时,对端应当开启DHCP 服务。
DHCP探测根据设置的探测时间及频率后,探测过程为:1、客户端向探测的目的IP地址发送DHCP dicovery报文,目的服务器收到DHCP discovery探测报文后,回复offer报文;2、客户端收到offer报文后,回复request报文。目的服务器收到requst报文,回复ack报文;3、客户端收到ack报文之后,视为探测成功,并往服务器发送cancel报文。
探测客户端根据收到DHCP ack报文的情况,计算客户端获得IP地址所需的时间及丢包率,以反映当前的网络性能及网络情况。DHCP探测的结果和历史记录将被记录,可以通过命令show ip rns configureation来查看。
TCP探测主要用于探测目的设备TCP连接是否可用,根据配置的目的IP和端口号进行TCP连接,当TCP连接成功,表示当前探测成功,否则失败。
DNS探测通过模拟DNS客户端向指定的DNS服务器发送域名解析请求,根据域名解析是否成功及域名解析需要的时间,来判断DNS服务器是否可用,及域名解析速度。DNS探测只是模拟域名解析的过程,不保存解析的域名与IP地址的对应关系。DNS探测的结果和历史记录将被记录,可以通过命令行来查看。
RNS探测的配置过程如下:
创建特定类型的探测实例,根据探测类型进行相应探测参数的配置。
启动RNS探测实例。
RNS探测实例构造指定探测类型的报文,并发送给对端。
对端收到探测报文后,回复相应类型的应答报文。
RNS探测实例根据是否收到应答报文,以及接收应答报文的时间,计算报文丢失率、往返时间等。
通过显示命令或调试命令查看探测结果。
track支持跟踪的对象类型包括:跟踪一个RNS探测结果、跟踪一个RNS列表的状态、跟踪一个接口的链路状态以及跟踪一个track列表的状态。同时当track的状态发生变化时,可以触发其他模块进行联动。以下按Track跟踪不同的对象为例,说明track的工作过程。
配置一个track对象,用来跟踪一个RNS探测结果。
当RNS探测结果发生变化时,RNS模块发送状态变化的消息给track模块。
track模块接收到RNS探测结果的消息,经过设置的延迟时间后,若该RNS探测结果未发生变化,则修改该track对象的状态,通告关注该track对象的模块。若在这段时间内,该RNS探测结果又恢复原有状态,则不修改track状态和通告相应的模块。
配置用于跟踪接口链路状态的track对象。
该接口的链路状态为up,则track对象的状态为up。
该接口的链路状态为down,则track对象的状态为down。
配置用于跟踪RNS探测结果的track对象。
若该RNS探测结果为成功,则track对象的状态为up。
若该RNS探测结果为失败,则track对象的状态为down。
配置用于跟踪RNS列表的探测结果的track对象。
结果可以是所有成员状态取“与”或者“或”的结果。
若配置track对象的结果取所有成员状态“与”的结果,则当跟踪的所有RNS探测结果都为成功时,该track对象的状态为up。只要存在一个RNS探测失败时,该track对象的状态为down。
若配置track对象的结果取所有成员状态“或”的结果,则当跟踪的所有RNS探测结果都为失败时,该track对象的状态为down。只要存在一个RNS探测成功,该track对象的状态为up。
配置用于跟踪track列表状态的track对象。
配置track对象的结果取所有成员状态“与”的结果。
当所有成员的状态“与”的结果为up时,该track对象的状态为up。
当所有成员的状态“与”的结果为down时,该track对象的状态为down。
配置track列表成员。
配置一个track列表成员,该列表成员的状态可配置为与对应track对象相同或相反。
调整track的延迟通告时间。
track延迟通告的时间越大,则需要等待越长的时间,才会将该状态通告给关注该track对象的模块。
track延迟通告的时间越小,则需要等待越短的时间,便会将该状态通告给关注该track对象的模块。
配置RNS基本功能
配置icmp-echo探测
配置dns探测
配置tcp-connect探测
配置udp-echo探测
配置dhcp探测
配置track联动功能
通过详细配置RNS探测实例,完成RNS探测实例基本配置。同时也支持简洁配置,一步配置并启动具体的RNS探测实例。
详细配置下,在通过命令进入IP-RNS模式后,若没有进一步配置探测类型,那么该RNS探测实例不会被创建。
详细配置下,在配置完一个RNS探测实例后,应当通过ip rns schedule命令配置它的启动策略,否则该探测不会被执行。
进入特权模式。
enable
进入全局配置模式。
configure terminal
ip rns operation-number [ { dns destination-hostname name-server ipv4-address | icmp-echo destination-ipv4-address | tcp-connect destination-ipv4-address port-number } [ frequency interval ] [ timeout interval ] [ threshold interval ] ]
ip rns reaction-configuration operation-number react { allfail | rtt | timeout } [ action-type track ] [ threshold-type { average [ number-of-measurements ] | consecutive [ occurrences ] | immediate | never | xofy [ x-value y-value ] } ] [ threshold-value max-threshold min-threshold ]
缺省情况下,未配置探测的主动阈值监控和触发机制。
ip rns reaction-trigger source-operation-number target-operation-number
缺省情况下,探测在发生监控阈值超过预期时触发激动机制未配置。
ip rns schedule operation-number [ life { forever | period } ] [ start-time { hh:mm [ :ss ] [ month day | day month ] | pending | now | after hh:mm:ss } ] [ recurring ]
缺省情况下,探测的调度策略未配置。
配置ip rns restart重新启动一个RNS探测实例。
ip rns restart operation-number
若要求重新启动一个调度处于pending状态的探测实例则配置(或者直接配置调度启动ip rns schedule operation-number start-time now)。
缺省情况下,未配置重启探测功能。
配置ip rns reset清空RNS探测配置。
ip rns reset
若要求清除所有配置实例的探测(如配置了大量探测实例,发现配置有误时)则配置。
缺省情况下,未配置清空RNS探测功能。
ip rns-server udp-echo port-number
若要求开启RNS SERVER对UDP-Echo类型的探测提供服务端功能,则必须配置。
缺省情况下,未配置UDP-Echo探测的服务器功能。
创建一个ICMP-Echo类型的RNS探测实例。
必须先配置RNS基本功能。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
interface interface-type interface-number
创建ICMP-Echo类型的RNS探测实例。
icmp-echo { destination-ipv4-address | destination-hostname [ name-server ipv4-address ] } [ source-ipaddr ipv4-address | source-interface interface-type interface-number ] [
[ af-direct ] out-interface interface-type interface-number [ next-hop ipv4-address ] ]
缺省情况下,ICMP-Echo类型的探测未创建。
(可选)配置重复时间间隔参数。
frequency interval
缺省情况下,探测时间间隔为60秒。
(可选)配置标签参数。
tag tag-name
缺省情况下,探测标签未配置。
(可选)配置时间阈值参数。
threshold interval
缺省情况下,探测的上限阈值为5秒。
(可选)配置超时时间参数。
timeout interval
缺省情况下,探测的超时时间为5秒。
(可选)配置RNS探测所处的VRF。
vrf vrf-name
缺省情况下,探测所处的VRF名称未配置。
配置探测的协议载荷大小。
request-data-size bytes
缺省情况下,ICMP-Echo和UDP-Echo类型的探测的协议载荷大小均为36字节。
必须先配置RNS基本功能。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建DNS类型的RNS探测实例。
dns destination-hostname name-server ipv4-address [ source-ipaddr ipv4-address ] [ [ af-direct ] out-interface interface-type interface-number [ next-hop ipv4-address ] ]
缺省情况下,DNS类型的探测未创建。
注意
配置探测通用可选参数相关命令(frequency、tag、threshold、timeout等)请参见1.4 配置icmp-echo探测,此处不一一列举。
创建一个TCP类型的RNS探测实例,进行tcp-connect探测。
必须先配置RNS基本功能。
目的主机必须可以响应TCP连接请求。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建TCP类型的RNS探测实例
tcp-connect { destination-ipv4-address | destination-hostname [ name-server ipv4-address ] } port-number [ source-ipaddr ipv4-address ] [ [ af-direct ] out-interface interface-type interface-number next-hop ipv4-address ]
缺省情况下,TCP类型的探测未配置。
注意
配置探测通用可选参数相关命令(frequency、tag、threshold、timeout等)请参见1.4 配置icmp-echo探测,此处不一一列举。
创建一个UDP-Echo类型的RNS探测实例,进行udp-echo探测。
必须先配置RNS基本功能和rns-server基本功能。
必须开启RNS SERVER提供服务端功能。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建UDP-Echo类型的RNS探测实例。
udp-echo destination-ipv4-address port-number [ out-interface interface-type interface-number next-hop next-hop-ip ]
缺省情况下,UDP-Echo类型的探测对象未配置。
注意
配置探测通用可选参数相关命令(frequency、tag、threshold、timeout等)请参见1.4 配置icmp-echo探测,此处不一一列举。
创建一个dhcp类型的RNS探测实例,进行dhcp探测。
必须先配置RNS基本功能和出端口的IP地址。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建DHCP类型的RNS探测实例。
dhcp destination-ipv4-address out-interface out-interface next-hop next_ip_address
注意
配置探测通用可选参数相关命令(frequency、tag、threshold、timeout等)请参见1.4 配置icmp-echo探测,此处不一一列举。
配置track与rns联动,包括track RNS探测的探测结果、接口的链路状态、track列表的状态、RNS探测列表的状态。
如果配置track跟踪一个RNS探测的探测结果,则需要配置相应的RNS探测。
如果配置track跟踪一个接口的链路状态,则需要配置相应的接口。
如果配置track跟踪一个track列表的状态,则需要配置相应的track列表成员。
如果配置track跟踪一个RNS探测列表的状态,则需要配置相应的RNS探测列表成员。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
interface interface-type interface-number
配置track对象,以下配置至少选择一项配置。
配置跟踪接口的链路状态。
track object-number interface interface-type interface-number line-protocol
配置跟踪跟踪RNS探测的探测结果。
track object-number rns entry-number
配置跟踪一个track列表的状态。
track object-number list boolean { and | or }
配置跟踪一个RNS探测列表的状态。
track object-number rns-list men-list { and | or }
配置track对象的延迟通告时间。
delay { up interval [ down interval ] | [ down interval ] up interval }
跟踪状态由UP/DOWN相互翻转的延迟通告时间,设置其中一种,或者同时设置。
缺省情况下,track状态由UP/DOWN相互翻转不延时。
配置track成员。
object object-number [ not ]
缺省情况下,未配置成员对象。
可以通过show命令行查看功能配置后的运行情况以验证配置效果。
可以通过debug命令打开调试信息。
注意
输出调试信息,会占用系统资源。使用完毕后,请立即关闭调试开关。
RNS监视与维护
作用 |
命令 |
---|---|
查看rns对象探测的详细统计信息 |
|
查看rns对象探测的当前状态信息 |
|
查看rns-server对象的配置信息 |
show ip rns-server udp-echo |
查看rns对象探测的主动阈值监控信息 |
|
查看rns对象探测的触发探测信息 |
show ip rns reaction-trigger [ operation-number ] |
查看rns对象的简单统计信息 |
show ip rns statistics [ operation-number ] |
查看track对象的统计信息 |
|
debug track { all | proc-event | rdnd-event | client } |
|
debug rns { all | interface | lib | rdnd-event | restart | rns_id [ 0, 500 ] } |
|
打开rns-server模块相关的调试开关 |
debug rns-server {udp-echo} { event | fail | packet } |
配置一个ICMP-ECHO类型的RNS探测,要求立即启动,且永久生效。
配置icmp-echo探测组网图
在Device A上配置RNS探测实例1及相应参数。
# 在Device A上面配置。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# ip rns 1
DeviceA(config-ip-rns)# icmp-echo 10.2.2.2
DeviceA(config-ip-rns-icmp-echo)# exit
DeviceA(config)# ip rns schedule 1 start-time now life forever
# 通过show ip rns configuration 命令显示实例配置信息。
DeviceA# show ip rns configuration 1
Entry number: 1
Tag:
Type of operation to perform: icmp-echo
Operation timeout (milliseconds): 5000
Operation frequency (milliseconds): 60000
Threshold (milliseconds): 5000
Recurring (Starting Everyday): FALSE
Life (seconds): foerver
Next Scheduled Start Time:Start Time already passed
Target address/Source address: 10.2.2.2/0.0.0.0
Request size (ARR data portion): 36
配置一个DNS类型的RNS探测,要求立即启动,且永久生效。
配置DNS探测组网图
在DeviceA上配置RNS探测实例1及相应参数。
# 在DeviceA上配置。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# ip rns 1
DeviceA(config-ip-rns)# dns www.abc.com name-server 10.2.2.2
DeviceA(config-ip-rns-dns)# exit
DeviceA(config)# ip rns schedule 1 start-time now life forever
# 通过show ip rns configuration命令显示实例配置信息。
DeviceA# show ip rns configuration 1
Entry number: 1
Tag:
Type of operation to perform: dns
Operation timeout (milliseconds): 5000
Operation frequency (milliseconds): 60000
Threshold (milliseconds): 5000
Recurring (Starting Everyday): FALSE
Life (seconds): foerver
Next Scheduled Start Time:Start Time already passed
Target host name: www.abc.com
Name Server: 10.2.2.2
域名解析服务器IP地址错误。
配置一个TCP类型的RNS探测,要求立即启动,且永久生效。
配置tcp-connect探测组网图
在DeviceA上配置RNS探测实例1及相应参数。
# 在DeviceA配置。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# ip rns 1
DeviceA(config-ip-rns)# tcp-connect 10.2.2.2 8000
DeviceA(config-ip-rns-tcp)# exit
DeviceA(config)# ip rns schedule 1 start-time now life forever
# 通过show ip rns configuration 命令显示实例配置信息。
DeviceA# show ip rns configuration 1
Entry number: 1
Tag:
Type of operation to perform: tcp-connect
Operation timeout (milliseconds): 5000
Operation frequency (millseconds): 60
Threshold (milliseconds): 5000
Recurring (Starting Everyday): FALSE
Life (seconds): foerver
Next Scheduled Start Time:Start Time already passed
Target Address: 10.2.2.2
Target Port: 8000
目的主机不响应TCP连接请求。
RNS探测TCP端口配置错误。
配置一个UDP-Echo类型的RNS探测,要求立即启动,且永久生效。
配置udp-echo探测组网图
在DeviceA上配置RNS探测实例1及相应参数。
# 在DeviceA配置如下。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# ip rns 1
DeviceA(config-ip-rns)# udp-echo 10.2.2.2 1025
DeviceA(config-ip-rns-udp-echo)# exit
DeviceA(config)# ip rns schedule 1 start-time now life forever
# 在DeviceB上配置如下。
DeviceB> enable
DeviceB# configure terminal
DeviceB(config)# ip rns-server udp-echo 1025
# 通过show ip rns configureation命令显示实例配置信息。
DeviceA# show ip rns configuration 1
Entry number: 1
Tag:
Type of operation to perform: udp-echo
Operation timeout (milliseconds): 5000
Operation frequency (milliseconds): 60000
Threshold (milliseconds): 5000
Target Address: 10.2.2.2
Target Port: 1025
Request size (ARR data portion): 36
# 通过show ip rns-server udp-echo命令显示实例配置信息。
DeviceA# show ip rns-server udp-echo
UDP-Echo-Server:10000
Receive packets number: 0
Reflect packets success number: 0
Reflect packets fail number: 0
客户端配置udp服务器端口错误。
配置一个DHCP类型的RNS探测,要求立即启动,且永久生效。
配置DHCP探测组网图
在DeviceA上配置RNS探测实例1及相应参数。
# 在SwitchA上配置如下。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# ip rns 1
DeviceA(config-ip-rns)# dhcp 172.30.30.3 out-interface GigabitEthernet 1/0/1 next-hop 172.30.31.1
DeviceA(config-ip-rns-dhcp)# exit
DeviceA(config)# ip rns schedule 1 start-time now life forever
# 通过show ip rns configureation命令显示实例配置信息。
DeviceA# show ip rns configuration 1
Entry number: 1
Tag:
Type of operation to perform: dhcp
Operation timeout (milliseconds): 5000
Operation frequency (milliseconds): 60000
Threshold (milliseconds): 5000
Recurring (Starting Everyday): FALSE
Life (seconds): forever
Next Scheduled Start Time: Start Time already passed
Target address/Source address: 172.30.30.3/172.30.31.252
Out-interface: GigabitEthernet 1/0/1
Next-hop address: 172.30.31.1
服务端没有开启DHCP服务。
客户端出接口没有配置IP地址。
配置track对象(编号为3),跟踪接口(GigabitEthernet 0/1)的链路状态。
配置Track接口链路状态组网图
配置track对象,跟踪一个接口的链路状态。
配置状态由up变为down的延迟时间。
# 在DeviceA上配置。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# track 3 interface gigabitethernet 0/1 line-protocol
DeviceA (config-track)# delay down 10
# 关闭接口GigabitEthernet 0/1,即链路状态变为down。立即检查track的状态,确认仍旧为up。过10s后,再次检查track的状态,确认track的状态变为down。
DeviceA# show track 3
Track 3
Interface GigabitEthernet 0/1
The state is Up, delayed Down (5 secs remaining)
1 change, current state last: 300 secs
Delay up 0 secs, down 10 secs
track 3 Interface GigabitEthernet 0/1 line-protocol
delay down 10
!
配置了跟踪RNS探测的track,但未配置相应的RNS探测。
配置了跟踪接口链路状态的track,但未配置相应的接口。
配置了跟踪track列表的track对象,但未配置相应的track成员。
配置了跟踪RNS探测列表的track,但未配置相应的RNS探测。
配置一个track对象编号3,当track对象1为up,2为down同时满足时,track对象3为up。
配置Track多接口联动组网图
配置track 1和track 2。
配置track 3,其成员为track 1和track 2。
# 在Device A上配置。
DeviceA# config
DeviceA(config)# track 1 interface gigabitEthernet 0/0 line-protocol
DeviceA(config-track)# delay up 20 down 40
DeviceA(config-track)# exit
DeviceA(config)# track 2 interface gigabitEthernet 0/1 line-protocol
DeviceA(config-track)# delay down 30
DeviceA(config-track)# exit
DeviceA(config)# track 3 list Boolean and
DeviceA(config-track)# object 1
DeviceA(config-track)# object 2 not
DeviceA# show track 3
Track 3
List boolean and
Object 1
Object 2 not
The state is Down
1 change,current state last:10 secs
Delay up 0 secs,down 0 secs
track 1 Interface GigabitEthernet 0/0 line-protocol
delay up 20 down 40
!
track 2 Interface GigabitEthernet 0/1 line-protocol
delay down 30
!
track 3 list boolean and
object 1
object 2 not
!
配置track对象(编号为5),跟踪一个RNS探测(编号为7)的探测结果。
配置一个RNS探测。
配置track对象,跟踪一个RNS探测的探测结果。
配置探测结果由up变为down、由down变为up的延迟通告时间。
# 在Device A上配置。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# ip rns 7
DeviceA(config-ip-rns)# icmp-echo 2.2.2.2
DeviceA(config-ip-rns-icmp-echo)# exit
DeviceA(config)# ip rns schedule 7 start-time now life forever
DeviceA(config)# track 5 rns 7
DeviceA(config-track)# delay up 20 down 30
# 使编号为7的RNS探测结果由成功变为失败。探测结果变为失败时立即检查track的状态,确认仍旧为up。过30s后,再次检查track的状态,确认track的状态变为down。
DeviceA# show track 5
Track 5
Reliable Network Service 7
The state is Down
2 change, current state last: 10 secs
Delay up 20 secs, down 30 secs
ip rns 7
icmp-echo 2.2.2.2
!
ip rns schedule 7 start-time now life forever
!
track 5 rns 7
delay up 20 down 30
!
配置track对象(编号为5),跟踪一个RNS探测列表(编号分别为1,2-5,8)的探测结果。
配置并启动RNS探测。
配置track对象,跟踪一个RNS探测列表的探测结果。
配置探测结果由up变为down、由down变为up的延迟通告时间。
# DeviceA配置。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# track 5 rns-list 1,2-5,8 and
DeviceA(config-track)# delay up 20 down 30
# 使编号为1,2-5,8的RNS探测中的一个结果由成功变为失败。探测结果变为失败时立即检查track的状态,确认仍旧为up。过30s后,再次检查track的状态,确认track的状态变为down。
DeviceA# show track 5
Track 5
rns-list 1,2-5,8 and
The state is Down
2 change, current state last: 10 secs
Delay up 20 secs, down 30 secs
track 5 rns-list 1,2-5,8 and
delay up 20 down 30
!