学习精彩网络技术老师:华为HCIA和HCIP数通eNSP实战视频课
点击学习精彩网络技术老师:华为、华三、锐捷、WLAN、IPv6全套视频课程
通过配置NQA for IPv4静态路由可以快速检测到网络的故障,控制静态路由的发布,实现业务切换。
组网需求
当网络比较简单,或者路由器不能通过动态路由协议建立到达目的网络的路由时,可以配置静态路由。但是,与动态路由协议不同,静态路由自身没有检测机制,当网络发生故障时,静态路由无法感知,需要由管理员介入,这样无法保证及时进行链路切换,可能造成业务较长时间中断。部署BFD for静态路由的方案可以适应链路的变化情况,但是BFD for静态路由要求链路两端的设备都支持BFD功能。如果链路两端有设备不支持BFD功能,可以配置NQA for IPv4静态路由示例,NQA测试例检测到链路故障后,会把与其绑定的静态路由从IP路由表删除,使业务流量切换到无链路故障的路由,避免业务的长时间中断。
如图1所示,在IP城域网组网中,网络设计成冗余备份链路,其中:
- 在RouterB和RouterC上都配置到用户的静态路由,RouterB为主用Router,RouterC为备用Router
- 正常情况下,要求业务流量走主用链路RouterB→SwitchA
- 当主用链路出现故障后,业务流量切换到备用链路RouterC→SwitchA
本案例采用接入交换机SwitchA和SwitchB接入用户,在实际组网中,还可以采用OLT、DSLAM、MSAN、xDSL等方式接入用户,而且在RouterA、RouterB和RouterC上的配置是一样的。
配置思路
采用如下思路配置NQA for IPv4静态路由:
- 在NQA测试例客户端RouterB与被测试设备SwitchA之间建立ICMP类型的NQA测试例,检测主用链路RouterB→SwitchA是否正常。
- 在RouterB和RouterC上配置静态路由,其中在RouterB配置静态路由与NQA联动,当NQA测试例检测到链路故障时,把静态路由从IP路由表中删除。
- 在RouterA、RouterB和RouterC上配置动态路由协议,可以相互学习路由。
- 在RouterB和RouterC上配置OSPF协议引入静态路由,并且为RouterC引入的静态路由设置较高的花费值。RouterA从RouterB和RouterC学习到通往同一目的地址的路由时,会优先选择花费值较低的链路RouterB→SwitchA。
数据准备
为完成此配置例,需准备如下数据:
- 各个接口的IP地址。
- NQA类型、NQA测试例的管理者和测试例名。
- NQA测试例的测试周期和NQA测试例的报文间隔。
- RouterA、RouterB和RouterC位于OSPF骨干区域(Area0)。
操作步骤
- 配置IP地址(略)
- 在RouterB上配置RouterB和SwitchA之间的NQA测试例
<RouterB> system-view
[RouterB] nqa test-instance aa bb
[RouterB-nqa-aa-bb] test-type icmp
[RouterB-nqa-aa-bb] destination-address ipv4 172.16.1.2
[RouterB-nqa-aa-bb] frequency 3
[RouterB-nqa-aa-bb] probe-count 1
[RouterB-nqa-aa-bb] start now
[RouterB-nqa-aa-bb] quit
当链路故障时,NQA ICMP测试例检测结果是失败,同时联动静态路由变为Down。一旦链路故障恢复,由于ICMP测试例报文发送时需要查找路由表,但此时路由已经被NQA联动置Down,导致ICMP测试例仍然检测失败,联动的静态路由也一直得不到恢复,业务流量也无法回切到原先的链路,此时需要配置nexthop ipv4 ip-address命令指定ICMP测试例发送报文时的下一跳地址,这样在链路故障恢复之后可以正常发送NQA探测报文,测试结果恢复成功,同时可联动恢复静态路由。
- 配置静态路由
# 在RouterB上配置与NQA测试例联动的静态路由。
[RouterB] ip route-static 172.16.7.0 255.255.255.0 GigabitEthernet 1/0/0 172.16.1.2 track nqa aa bb
# 在RouterC上配置静态路由。
[RouterC] ip route-static 172.16.7.0 255.255.255.0 GigabitEthernet 3/0/0 172.16.6.2
- 在RouterA、RouterB和RouterC上配置动态路由协议。本例选择OSPF动态路由协议,具体配置请参考OSPF配置。
- 在RouterB和RouterC上配置OSPF动态路由协议引入静态路由
# 在RouterB上配置OSPF动态路由协议引入静态路由,并且把路由花费值设置为10。
[RouterB] ospf 1
[RouterB-ospf-1] import-route static cost 10
[RouterB-ospf-1] quit
# 在RouterC上配置OSPF动态路由协议引入静态路由,并且把路由花费值设置为20。
[RouterC] ospf 1
[RouterC-ospf-1] import-route static cost 20
[RouterC-ospf-1] quit
- 查看配置结果
配置完成后,在系统视图下,在RouterB上执行display current-configuration | include nqa命令,可以看到静态路由已经绑定NQA测试例。执行display nqa results命令,可以看到NQA测试例已经建立。
# 查看NQA for静态路由的配置。
[RouterB] display current-configuration | include nqa
ip route-static 172.16.7.0 255.255.255.0 GigabitEthernet 1/0/0 172.16.1.2 track nqa aa bb
nqa test-instance aa bb
# 查看NQA测试结果。
[RouterB] display nqa results test-instance aa bb
NQA entry(aa, bb) :testflag is active ,testtype is icmp
1 . Test 1987 result The test is finished
Send operation times: 1 Receive response times: 1
Completion:success RTD OverThresholds number: 0
Attempts number:1 Drop operation number:0
Disconnect operation number:0 Operation timeout number:0
System busy operation number:0 Connection fail number:0
Operation sequence errors number:0 RTT Status errors number:0
Destination ip address:172.16.1.2
Min/Max/Average Completion Time: 120/120/120
Sum/Square-Sum Completion Time: 120/14400
Last Good Probe Time: 2012-01-06 19:14:57.5
Lost packet ratio: 0 %
可以看到“Lost packet ratio: 0 %”,这说明链路状态完好。
# 查看RouterB的路由表,可以看到静态路由存在于路由表中。
[RouterB] display ip routing-tableRoute Flags: R - relay, D - download
to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.1.0/24 Direct 0 0 D 172.16.1.1 GigabitEthernet1/0/0
172.16.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet1/0/0
172.16.1.2/32 Direct 0 0 D 172.16.1.2 GigabitEthernet1/0/0
172.16.3.0/24 Direct 0 0 D 172.16.3.2 GigabitEthernet2/0/0
172.16.3.1/32 Direct 0 0 D 172.16.3.1 GigabitEthernet2/0/0
172.16.3.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet2/0/0
172.16.4.0/24 OSPF 10 2 D 172.16.3.1 GigabitEthernet2/0/0
172.16.5.0/24 Direct 0 0 D 172.16.5.1 GigabitEthernet3/0/0
172.16.5.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet3/0/0
172.16.5.2/32 Direct 0 0 D 172.16.5.2 GigabitEthernet3/0/0
172.16.7.0/24 Static 60 0 D 172.16.1.2 GigabitEthernet1/0/0
# 查看RouterA的路由表。
[RouterA] display ip routing-tableRoute Flags: R - relay, D - download
to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 9 Routes : 9
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.3.0/24 Direct 0 0 D 172.16.3.1 GigabitEthernet1/0/0
172.16.3.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet1/0/0
172.16.3.2/32 Direct 0 0 D 172.16.3.2 GigabitEthernet1/0/0
172.16.4.0/24 Direct 0 0 D 172.16.4.1 GigabitEthernet2/0/0
172.16.4.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet2/0/0
172.16.4.2/32 Direct 0 0 D 172.16.4.2 GigabitEthernet2/0/0
172.16.7.0/24 O_ASE 150 10 D 172.16.3.2 GigabitEthernet1/0/0
可以看到有一条到172.16.7.0/24的路由,下一跳指向172.16.3.2,cost值为10,因此业务流量会优先走链路RouterB→SwitchA。
# 关闭RouterB的GigabitEthernet 1/0/0接口,模拟链路故障。
[RouterB] interface GigabitEthernet 1/0/0
[RouterB-GigabitEthernet1/0/0] shutdown
[RouterB-GigabitEthernet1/0/0] quit
# 查看NQA测试结果。
[RouterB] display nqa results test-instance aa bb
NQA entry(aa, bb) :testflag is active ,testtype is icmp
1 . Test 2086 result The test is finished
Send operation times: 1 Receive response times: 0
Completion:failed RTD OverThresholds number: 0
Attempts number:1 Drop operation number:1
Disconnect operation number:0 Operation timeout number:0
System busy operation number:0 Connection fail number:0
Operation sequence errors number:0 RTT Status errors number:0
Destination ip address:172.16.1.2
Min/Max/Average Completion Time: 0/0/0
Sum/Square-Sum Completion Time: 0/0
Last Good Probe Time: 0000-00-00 00:00:00.0
Lost packet ratio: 100 %
可以看到“Lost packet ratio: 100 %”,这说明链路发生了故障。
# 查看RouterB的路由表,可以看到静态路由消失。
[RouterB] display ip routing-tableRoute Flags: R - relay, D - download
to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 10 Routes : 10
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.3.0/24 Direct 0 0 D 172.16.3.2 GigabitEthernet2/0/0
172.16.3.1/32 Direct 0 0 D 172.16.3.1 GigabitEthernet2/0/0
172.16.3.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet2/0/0
172.16.4.0/24 OSPF 10 2 D 172.16.3.1 GigabitEthernet2/0/0
172.16.5.0/24 Direct 0 0 D 172.16.5.1 GigabitEthernet3/0/0
172.16.5.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet3/0/0
172.16.5.2/32 Direct 0 0 D 172.16.5.2 GigabitEthernet3/0/0
172.16.7.0/24 O_ASE 150 20 D 172.16.3.1 GigabitEthernet2/0/0
# 查看RouterA的路由表。
[RouterA] display ip routing-tableRoute Flags: R - relay, D - download
to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 9 Routes : 9
Destination/Mask Proto Pre Cost Flags NextHop Interface
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
172.16.3.0/24 Direct 0 0 D 172.16.3.1 GigabitEthernet1/0/0
172.16.3.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet1/0/0
172.16.3.2/32 Direct 0 0 D 172.16.3.2 GigabitEthernet1/0/0
172.16.4.0/24 Direct 0 0 D 172.16.4.1 GigabitEthernet2/0/0
172.16.4.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet2/0/0
172.16.4.2/32 Direct 0 0 D 172.16.4.2 GigabitEthernet2/0/0
172.16.7.0/24 O_ASE 150 20 D 172.16.4.2 GigabitEthernet2/0/0
因为RouterB上的NQA测试例与静态路由是联动的,当NQA检测到链路故障后,就迅速通知RouterB与其绑定的静态路由不可用,RouterA也不能从RouterB处学到通往172.16.7.0/24的路由。但是RouterA可以从RouterC处学到通往172.16.7.0/24的路由,因此可以看到通往172.16.7.0/24的路由下一跳指向172.16.4.2,cost值为20。业务流量切换到链路RouterC→SwitchB。
配置文件
RouterA的配置文件
#
sysname RouterA
#
router id 1.1.1.1
#
interface GigabitEthernet1/0/0
undo shutdown
ip address 172.16.3.1 255.255.255.0
#
interface GigabitEthernet2/0/0
undo shutdown
ip address 172.16.4.1 255.255.255.0
#
ospf 1
area 0.0.0.0
network 172.16.3.0 0.0.0.255
network 172.16.4.0 0.0.0.255
#
return
RouterB的配置文件
#
sysname RouterB
#
router id 2.2.2.2
#
interface GigabitEthernet1/0/0
undo shutdown
ip address 172.16.1.1 255.255.255.0
#
interface GigabitEthernet2/0/0
undo shutdown
ip address 172.16.3.2 255.255.255.0
#
interface GigabitEthernet3/0/0
undo shutdown
ip address 172.16.5.1 255.255.255.0
#
ospf 1
import-route static cost 10
area 0.0.0.0
network 172.16.3.0 0.0.0.255
#
ip route-static 172.16.7.0 255.255.255.0 GigabitEthernet1/0/0 172.16.1.2 track nqa aa bb
#
nqa test-instance aa bb
test-type icmp
destination-address ipv4 172.16.1.2
frequency 3
probe-count 1
start now
#
return
RouterC的配置文件
#
sysname RouterC
#
router id 3.3.3.3
#
interface GigabitEthernet1/0/0
undo shutdown
ip address 172.16.2.1 255.255.255.0
#
interface GigabitEthernet2/0/0
undo shutdown
ip address 172.16.4.2 255.255.255.0
#
interface GigabitEthernet3/0/0
undo shutdown
ip address 172.16.6.1 255.255.255.0
#
ospf 1
import-route static cost 20
area 0.0.0.0
network 172.16.4.0 0.0.0.255
#
ip route-static 172.16.7.0 255.255.255.0 GigabitEthernet3/0/0 172.16.6.2
#
return