学习精彩网络技术老师:华为HCIA和HCIP数通eNSP实战视频课
点击学习精彩网络技术老师:华为、华三、锐捷、WLAN、IPv6全套视频课程
通过配置NQA for IPv6静态路由可以快速检测到网络的故障,控制静态路由的发布,实现业务切换。
组网需求
当网络比较简单,或者路由器不能通过动态路由协议建立到达目的网络的路由时,可以配置静态路由。但是,与动态路由协议不同,静态路由自身没有检测机制,当网络发生故障时,静态路由无法感知,需要由管理员介入,这样无法保证及时进行链路切换,可能造成业务较长时间中断。
部署BFD for静态路由的方案可以适应链路的变化情况,但是BFD for静态路由要求链路两端的设备都支持BFD功能。如果链路两端有设备不支持BFD功能,可以配置NQA for IPv6静态路由示例,NQA测试例检测到链路故障后,会把与其绑定的静态路由从IP路由表删除,使业务流量切换到无链路故障的路由,避免业务的长时间中断。
如图1所示,在某公司的IP城域网组网中,网络设计成冗余备份链路,其中:
- 在RouterB和RouterC上都配置到用户的静态路由,RouterB为主用设备,RouterC为备用设备
- 正常情况下,要求业务流量走主用链路RouterB→SwitchA
- 当主用链路出现故障后,业务流量切换到备用链路RouterC→SwitchB
本案例采用接入交换机SwitchA和SwitchB接入用户,在实际组网中,还可以采用OLT、DSLAM、MSAN、xDSL等方式接入用户,而且在RouterA、RouterB和RouterC上的配置是一样的。
配置思路
采用如下思路配置NQA for IPv6静态路由:
- 在NQA测试例客户端RouterB与被测试设备SwitchA之间建立ICMP类型的NQA测试例,检测主用链路RouterB→SwitchA是否正常。
- 在RouterB和RouterC上配置静态路由,其中在RouterB配置静态路由与NQA联动,当NQA测试例检测到链路故障时,把静态路由从IPv6路由表中删除。
- 在RouterA、RouterB和RouterC上配置动态路由协议,可以相互学习路由。
- 在RouterB和RouterC上配置OSPFv3协议引入静态路由,并且为RouterC引入的静态路由设置较高的花费值。RouterA从RouterB和RouterC学习到通往同一目的地址的路由时,会优先选择花费值较低的链路RouterB→SwitchA。
数据准备
为完成此配置例,需准备如下数据:
- 各个接口的IPv6地址。
- NQA类型ICMP、NQA测试例的管理者名称admin1和测试例名test1。
- NQA测试例的测试周期3秒和NQA测试例的测试探针数目1。
- RouterA、RouterB和RouterC位于OSPFv3骨干区域(Area0),它们的router ID分别为1.1.1.1、2.2.2.2和3.3.3.3。
操作步骤
- 配置IPv6地址
请参考图1,配置各接口的IPv6地址,具体配置请参考后面的配置文件。
- 在RouterB上配置RouterB和SwitchA之间的NQA测试例
<RouterB> system-view
[RouterB] nqa test-instance admin1 test1
[RouterB-nqa-admin1-test1] test-type icmp
[RouterB-nqa-admin1-test1] destination-address ipv6 2001:db8:3::2
[RouterB-nqa-admin1-test1] frequency 3
[RouterB-nqa-admin1-test1] probe-count 1
[RouterB-nqa-admin1-test1] start now
[RouterB-nqa-admin1-test1] quit
- 配置IPv6静态路由
# 在RouterB上配置与NQA测试例联动的IPv6静态路由。
[RouterB] ipv6 route-static 2001:db8:7:: 64 GigabitEthernet 1/0/0 FE80:1::1 track nqa admin1 test1
# 在RouterC上配置静态路由。
[RouterC] ipv6 route-static 2001:db8:7:: 64 GigabitEthernet 3/0/0 FE80:2::2
在本端配置的IPv6静态路由的下一跳地址应该为对端的链路本地地址(Link-local Address),这个链路本地地址可以通过在对端执行display ipv6 interface [ interface-type interface-number ]命令获取。
- 在RouterA、RouterB和RouterC上配置动态路由协议。本例选择OSPFv3动态路由协议,具体配置请参考配置OSPFv3的基本功能。
- 在RouterB和RouterC上配置OSPFv3动态路由协议引入静态路由
# 在RouterB上配置OSPFv3动态路由协议引入静态路由,并且把路由花费值设置为10。
[RouterB] ospfv3 1
[RouterB-ospfv3-1] import-route static cost 10
[RouterB-ospfv3-1] quit
# 在RouterC上配置OSPFv3动态路由协议引入静态路由,并且把路由花费值设置为20。
[RouterC] ospfv3 1
[RouterC-ospfv3-1] import-route static cost 20
[RouterC-ospfv3-1] quit
- 查看配置结果
配置完成后,在系统视图下,在RouterB上执行display current-configuration | include nqa命令,可以看到IPv6静态路由已经绑定NQA测试例。执行display nqa results命令,可以看到NQA测试例已经建立。
# 查看NQA for IPv6静态路由的配置。
[RouterB] display current-configuration | include nqa
ipv6 route-static 2001:db8:7:: 64 GigabitEthernet1/0/0 FE80:1::1 track nqa admin1 test1
nqa test-instance admin1 test1
# 查看NQA测试结果。
[RouterB] display nqa results test-instance admin1 test1
NQA entry(admin1, test1) :testflag is active ,testtype is icmp
1 . Test 15 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:2001:db8:3::2
Min/Max/Average Completion Time: 40/40/40
Sum/Square-Sum Completion Time: 40/1600
Last Good Probe Time: 2012-01-07 11:42:46.4
Lost packet ratio: 0 %
可以看到“Lost packet ratio: 0 %”,这说明链路状态完好。
# 查看RouterB的路由表,可以看到静态路由存在于路由表中。
[RouterB] display ipv6 routing-table 2001:db8:7::
Routing Table :
Summary Count : 1
Destination : 2001:db8:7:: PrefixLength : 64
NextHop : 2001:db8:3::1 Preference : 60
Cost : 0 Protocol : Static
RelayNextHop : :: TunnelID : 0x0
Interface : GigabitEthernet 1/0/0 Flags : D
# 查看RouterA的路由表。
[RouterA] display ipv6 routing-table 2001:db8:7::
Routing Table :
Summary Count : 1
Destination : 2001:db8:7:: PrefixLength : 64
NextHop : FE80::D16A:0:7086:1 Preference : 150
Cost : 10 Protocol : OSPFv3ASE
RelayNextHop : :: TunnelID : 0x0
Interface : GigabitEthernet 1/0/0 Flags : D
可以看到有一条到2001:db8:3::3/128的路由,出接口为GigabitEthernet1/0/0,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 admin1 test1
NQA entry(admin1, test1) :testflag is active ,testtype is icmp
1 . Test 81 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:2001:db8:3::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的路由表,可以看到静态路由消失,路由变为了从路由器A学来的OSPFv3路由。
[RouterB] display ipv6 routing-table 2001:db8:7::
Routing Table :
Summary Count : 1
Destination : 2001:db8:7:: PrefixLength : 64
NextHop : FE80::9574:0:DA4F:1 Preference : 150
Cost : 20 Protocol : OSPFv3ASE
RelayNextHop : :: TunnelID : 0x0
Interface : GigabitEthernet 2/0/0 Flags : D
# 查看RouterA的路由表。
[RouterA] display ipv6 routing-table 2001:db8:7::
Routing Table :
Summary Count : 1
Destination : 2001:db8:7:: PrefixLength : 64
NextHop : FE80::740F:0:D240:3 Preference : 150
Cost : 20 Protocol : OSPFv3ASE
RelayNextHop : :: TunnelID : 0x0
Interface : GigabitEthernet 2/0/0 Flags : D
因为RouterB上的NQA测试例与静态路由是联动的,当NQA检测到链路故障后,就迅速通知RouterB与其绑定的静态路由不可用,RouterA也不能从RouterB处学到通往2001:db8:7::/64的路由。但是RouterA可以从RouterC处学到通往2001:db8:7::/64的路由,因此可以看到通往2001:db8:7::/64的路由的出接口变为GigabitEthernet2/0/0,cost值为20。业务流量切换到链路RouterC→SwitchB。
配置文件
RouterA的配置文件
#
sysname RouterA
#
ipv6
#
ospfv3 1
router-id 1.1.1.1
#
interface GigabitEthernet1/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:1::1/64
ospfv3 1 area 0.0.0.0
#
interface GigabitEthernet2/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:2::1/64
ospfv3 1 area 0.0.0.0
#
return
RouterB的配置文件
#
sysname RouterB
#
ipv6
#
ospfv3 1
router-id 2.2.2.2
import-route static cost 10
#
interface GigabitEthernet1/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:3::1/64
#
interface GigabitEthernet2/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:1::2/64
ospfv3 1 area 0.0.0.0
#
interface GigabitEthernet3/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:5::1/64
#
ipv6 route-static 2001:db8:7:: 64 GigabitEthernet1/0/0 FE80:1::1 track nqa admin1 test1
#
nqa test-instance admin1 test1
test-type icmp
destination-address ipv6 2001:db8:3::2
frequency 3
probe-count 1
start now
#
return
RouterC的配置文件
#
sysname RouterC
#
ipv6
#
ospfv3 1
router-id 3.3.3.3
import-route static cost 20
#
interface GigabitEthernet1/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:4::1/64
#
interface GigabitEthernet2/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:2::2/64
ospfv3 1 area 0.0.0.0
#
interface GigabitEthernet3/0/0
undo shutdown
ipv6 enable
ipv6 address 2001:db8:6::1/64
#
ipv6 route-static 2001:db8:7:: 64 GigabitEthernet3/0/0 FE80:2::2
#
return