1、前言
在学习HCIE时,相关教材会提到“OSPF与ISIS双点双向引入”这样一个实验,该实验场景实现的核心要素主要有两个——一是防止OSPF和ISIS两域之间在路由的引入和传递过程中出现环路;二是防止次优路由的发生。针对于第一点(环路问题),相关实验的标准解法是,通过路由策略对不同路由协议的路由信息打不同tag,然后在进行双点双向引入时,对可能会产生环路的路由信息,依据其tag进行阻止或者允许引入;而针对于第二点(次优路由)的标准解法为,通过路由策略修改isis路由的preference(参考值)来降低次优路由的优先级。
然而在实验过程中,我们发现所谓的“双点双向引入”似乎时将简单的事情复杂化了,并且这样的复杂化主要集中在路由防环上,而路由防环的实现则完全可以用双点单向引入实现,而无须去配置额外的tag,有关于“双点双向引入”和“双点单向引入”,示意图如下所示:
当然,上述所描述的IGP协议,并不是代表一定是OSPF和ISIS,它可以是任意IGP协议,比如可以是ISIS和RIP这样的组合。
2、OSPF与ISIS双点双向引入的实现
2.1、实验拓扑
2.2、基础网络配置
路由器R1
#
interface Ethernet0/0/0
ip address 10.1.1.1 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.1.2.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
ospf 1 router-id 1.1.1.1
import-route direct
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
路由器R2
#
isis 1
network-entity 49.0000.0000.0002.00
#
interface Ethernet0/0/0
ip address 10.1.1.2 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.1.3.2 255.255.255.0
isis enable 1
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
路由器R3
#
isis 1
network-entity 49.0000.0000.0003.00
#
interface Ethernet0/0/0
ip address 10.1.2.3 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.1.4.3 255.255.255.0
isis enable 1
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
路由器R4
#
isis 1
network-entity 49.0000.0000.0004.00
#
interface Ethernet0/0/0
ip address 10.1.4.4 255.255.255.0
isis enable 1
#
interface Ethernet0/0/1
ip address 10.1.3.4 255.255.255.0
isis enable 1
#
2.3、普通的双点双向引入配置(将产生环路和次优路径)
进行普通引入(重分发)配置,相关配置如下:
路由器R2
#
isis 1
network-entity 49.0000.0000.0002.00
import-route ospf 1
#
ospf 1 router-id 2.2.2.2
import-route isis 1
#
路由器R3
#
isis 1
network-entity 49.0000.0000.0003.00
import-route ospf 1
#
ospf 1 router-id 3.3.3.3
import-route isis 1
#
需要注意的时,当章节2.2和2.3配置结束时,整个网络内将会出现路由环路和次优路由这两个问题,这两个问题的阐述将会在章节2.4和2.5进行描述。
2.4、环路产生以及通过路由策略标记tag消除环路
当上述的配置全部配置完成后,环路不会立刻产生,但我们将位于路由器R1上的环回接口Loopback 0(此接口配置有IP地址1.1.1.1)关闭后,环路就回产生,故障现象如下所示:
(1)在路由器R1上的环回接口Loopback 0配置正常时,从路由器R4上通过tracert命令进行路径和联通性测试,没有发生环路:
#路由器R1
[Huawei-LoopBack0]display this
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
return
#路由器R4
<Huawei>tracert 1.1.1.1
traceroute to 1.1.1.1(1.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.1.3.2 70 ms 70 ms 70 ms
2 10.1.1.1 170 ms 110 ms 80 ms
(2)当路由器R1上的环回接口Loopback 0被删除时,尽管网络环境内已经没有1.1.1.1的目标节点,但从路由器R4上通过tracert命令对1.1.1.1进行路径和联通性测试,发现环路产生:
#路由器R1
[Huawei]undo int loo0
Info: This operation may take a few seconds. Please wait for a moment...succeede
d.
#路由器R4
<Huawei>tracert 1.1.1.1
traceroute to 1.1.1.1(1.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.1.3.2 60 ms 30 ms 30 ms
2 10.1.1.1 80 ms 110 ms 120 ms
3 10.1.2.3 110 ms 100 ms 110 ms
4 10.1.4.4 140 ms 90 ms 110 ms
5 10.1.3.2 160 ms 120 ms 130 ms
6 10.1.1.1 180 ms 190 ms 190 ms
7 10.1.2.3 250 ms 250 ms 170 ms
8 10.1.4.4 160 ms 110 ms 140 ms
9 10.1.3.2 180 ms 210 ms 220 ms
10 10.1.1.1 220 ms 280 ms 220 ms
11 10.1.2.3 290 ms 300 ms 340 ms
12 10.1.4.4 240 ms 290 ms 240 ms
13 10.1.3.2 300 ms 290 ms 330 ms
14 10.1.1.1 380 ms 310 ms 400 ms
15 10.1.2.3 460 ms 370 ms 350 ms
16 10.1.4.4 280 ms 290 ms 430 ms
17 10.1.3.2 480 ms 450 ms 410 ms
18 10.1.1.1 390 ms 500 ms 470 ms
19 10.1.2.3 440 ms 390 ms 370 ms
20 10.1.4.4 460 ms 370 ms 410 ms
21 10.1.3.2 480 ms 440 ms 420 ms
22 10.1.1.1 450 ms 500 ms 520 ms
23 10.1.2.3 470 ms 450 ms 550 ms
24 10.1.4.4 480 ms 520 ms 580 ms
25 10.1.3.2 530 ms 510 ms 490 ms
26 10.1.1.1 540 ms 470 ms 580 ms
27 10.1.2.3 630 ms 500 ms 620 ms
28 10.1.4.4 530 ms 580 ms 660 ms
29 10.1.3.2 650 ms 580 ms 630 ms
30 10.1.1.1 730 ms 610 ms 670 ms
针对环路问题,HCIE实验给出的解决方式是,分别对OSPF路由和ISIS路由打上不同的标签,然后在引入点根据标签进行针对性的阻断。此时,我们通过编写路由策略的方式,将OSPF引入ISIS的路由打上tag 10,将ISIS引入OSPF的路由打上tag 15,并在路由器R2上将tag为10的路由传递设置为deny(阻断),将tag为15的路由传递设置为permit(允许);而在路由器R3上,则进行相反的配置,将tag为10的路由传递设置为permit,将tag为15的路由传递设置为deny。最后路由器R2和路由器R3上的路由策略分别应用在OSPF和ISIS的相互引入(重分发)上,相关配置如下:
修改路由器R2重分发的配置:
#
isis 1
network-entity 49.0000.0000.0002.00
import-route ospf 1 route-policy isis_to_ospf
#
ospf 1 router-id 2.2.2.2
import-route isis 1 route-policy isis_to_ospf
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
route-policy isis_to_ospf deny node 10
if-match tag 10
#
route-policy isis_to_ospf permit node 20
apply tag 15
#
修改路由器R3重分发的配置
#
isis 1
network-entity 49.0000.0000.0003.00
import-route ospf 1 route-policy ospf_to_isis
#
ospf 1 router-id 3.3.3.3
import-route isis 1 route-policy ospf_to_isis
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
route-policy ospf_to_isis deny node 10
if-match tag 15
#
route-policy ospf_to_isis permit node 20
apply tag 10
#
此时在路由器R4再次通过tracert命令对1.1.1.1进行测试,发现网络不通,说明环路已经消除,在路由器R1上重新创建环回接口Loopback 0并配置1.1.1.1的IP地址,可看到通信正常:
#在路由器R4上通过tracert命令对1.1.1.1进行联通性测试,发现网络不通,说明此时环路已经消除
<Huawei>tracert 1.1.1.1
traceroute to 1.1.1.1(1.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 *
#在路由器R1上重新创建环回接口Loopback 0,并配置IP地址1.1.1.1
[Huawei]int loo0
[Huawei]ip add 1.1.1.1 32
#最后返回到路由器R4上进行连通性测试,发现通信正常
<Huawei>tracert 1.1.1.1
traceroute to 1.1.1.1(1.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.1.3.2 40 ms 70 ms 30 ms
2 10.1.1.1 100 ms 90 ms 130 ms
<Huawei>
<Huawei>ping 1.1.1.1
PING 1.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=254 time=80 ms
Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=254 time=60 ms
Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=254 time=90 ms
Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=254 time=80 ms
Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=254 time=140 ms
--- 1.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 60/90/140 ms
2.5、次优路径的消除
【章节2.4】具体阐述了如何对网络内的环路进行消除,但现网环境内仍旧存在次优路由,比如我们在路由器R3上与路由器R1上的1.1.1.1进行通信,正常情况下,我们希望流量应通过路由器R3到路由器R1的直连链路到达1.1.1.1,然而在OSPF和ISIS双点双向引入的场景之下,这里的流量会通过R3->R4->R2->R1这样的次优路径到达1.1.1.1,不符合最短路径的原则,相关现象如下图所示:
造成次优路由的原因在于前往1.1.1.1的路由在由OSPF域引入到ISIS域时,preference(参考值)发生改变造成的,路由器通过比较preference的大小来决定优先选择哪条路由,在路由的选路上,preference的值是越小越优先。
结合现网来看,前往1.1.1.1的路由在OSPF域中的preference值为150,而前往1.1.1.1的路由在路由器R2这里引入(重分发)至ISIS域时,preference会从150变为15,然后通过R2->R4->R3这样的路径有路由器R3学习到,路由器R3同时处在OSPF域和ISIS域中,因此会从OSPF域和ISIS域中同时收到前往1.1.1.1的路由,由于来自OSPF域一侧的preference为150,而来自ISIS一侧的preference为15,所以此时R3会优选来自ISIS一侧的路由,次优路径产生。
路由器R3的路由表(因pref值为15,优选ISIS域中的路由)
路由器R2的路由表(OSPF域中1.1.1.1路由的pref值为150)
针对次优路径的问题,我们仍旧可以通过路由策略的方式修改ISIS域中前往1.1.1.1之路由的preference,将该值调整为大于150的任意值,并将这个路由策略运用在路由器R2和路由器R3上,相关配置如下所示:
路由器R2相关配置:
#
isis 1
network-entity 49.0000.0000.0002.00
preference route-policy pref
#
route-policy pref permit node 10
if-match ip-prefix test
apply preference 160
#
ip ip-prefix test index 10 permit 1.1.1.1 32
#
路由器R3相关配置:
#
isis 1
network-entity 49.0000.0000.0003.00
preference route-policy pref
#
route-policy pref permit node 10
if-match ip-prefix test
apply preference 160
#
ip ip-prefix test index 10 permit 1.1.1.1 32
#
此时查看路由器R2和路由器R3的路由表,preference值都是正常的150,路由器将优先选择OSPF域中的路由(最短路径)
通过tracert进行测试结果如下:
#路由器R3
<Huawei>tracert 1.1.1.1
traceroute to 1.1.1.1(1.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.1.2.1 50 ms 70 ms 40 ms
#路由器R2
<Huawei>tracert 1.1.1.1
traceroute to 1.1.1.1(1.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.1.1.1 60 ms 50 ms 30 ms
2.6、附:完整脚本
路由器R1
#
interface Ethernet0/0/0
ip address 10.1.1.1 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.1.2.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
ospf 1 router-id 1.1.1.1
import-route direct
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
路由器R2
#
isis 1
network-entity 49.0000.0000.0002.00
import-route ospf 1 route-policy isis_to_ospf
preference route-policy pref
#
interface Ethernet0/0/0
ip address 10.1.1.2 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.1.3.2 255.255.255.0
isis enable 1
#
ospf 1 router-id 2.2.2.2
import-route isis 1 route-policy isis_to_ospf
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
route-policy isis_to_ospf deny node 10
if-match tag 10
#
route-policy isis_to_ospf permit node 20
apply tag 15
#
route-policy pref permit node 10
if-match ip-prefix test
apply preference 160
#
ip ip-prefix test index 10 permit 1.1.1.1 32
#
路由器R3
#
isis 1
network-entity 49.0000.0000.0003.00
import-route ospf 1 route-policy ospf_to_isis
preference route-policy pref
#
interface Ethernet0/0/0
ip address 10.1.2.3 255.255.255.0
#
ospf 1 router-id 3.3.3.3
import-route isis 1 route-policy ospf_to_isis
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
route-policy ospf_to_isis deny node 10
if-match tag 15
#
route-policy ospf_to_isis permit node 20
apply tag 10
#
route-policy pref permit node 10
if-match ip-prefix test
apply preference 160
#
ip ip-prefix test index 10 permit 1.1.1.1 32
#
路由器R4
#
isis 1
network-entity 49.0000.0000.0004.00
#
interface Ethernet0/0/0
ip address 10.1.4.4 255.255.255.0
isis enable 1
#
interface Ethernet0/0/1
ip address 10.1.3.4 255.255.255.0
isis enable 1
#
3、OSPF与ISIS双点单向引入的实现
3.1、实验拓扑
3.2、基础网络配置
与章节2.2相同。
3.3、双点单向引入配置
与前文双点双向引入不同,此处我们进行双点单向引入,双点双向引入的思路是——将OSPF和ISIS中的路由相互引入后,为了防止环路的发生,通过打不同tag的方式,然后针对不同tag进行放行或者阻挡。而双点单向引入,在一开始就不会将可能引发环路的路由进行相互引入,相关配置如下:
路由器R2(只在OSPF中引入ISIS,ISIS中不引入任何路由)
#
ospf 1 router-id 2.2.2.2
import-route isis 1 route-policy isis_to_ospf
#
route-policy isis_to_ospf deny node 10
if-match tag 10
#
route-policy isis_to_ospf permit node 20
apply tag 15
#
路由器R3(只在ISIS中引入OSPF,OSPF中不引入任何路由)
#
isis 1
import-route ospf 1 route-policy ospf_to_isis
#
route-policy ospf_to_isis deny node 10
if-match tag 15
#
route-policy ospf_to_isis permit node 20
apply tag 10
#
通过这样的方式对路由进行跨区域引入(重分发)后,将路由器R1上的环回接口Loopback 0删除后,各个节点的路由表都会立即删除前往1.1.1.1的路由(双点双向引入因为路由传递成环路,因此各个节点不会立即删除前往1.1.1.1的路由,即使这个1.1.1.1的节点并不存在),因此不会有环路的发生,如下图所示:
路由器R1上删除环回接口:
路由器R4上的路由表:
3.4、次优路径的消除
尽管双点单向引入不会路由环路的情况发生,但次优路径的情况仍旧是无法避免的,与双点双向引入一样,双点单向引入也是通过路由策略的方式,修改路由的preference值,从而达到改变优先路由的效果,但与双点双向引入不同的是,双点单向引入相关的路由策略,只需在一个区域边界路由器上配置和应用(哪台路由器产生了次优路由就在哪台上配置),而无需向双点双向引入那样在两个区域边界路由器上都进行配置和运用,相关配置如下所示:
#路由器R2上配置
#
isis 1
network-entity 49.0000.0000.0002.00
preference route-policy pref
#
route-policy pref permit node 10
if-match ip-prefix test
apply preference 160
#
ip ip-prefix test index 10 permit 1.1.1.1 32
#
配置完成后如下图所示,次优路由已经消除:
3.5、附:完整脚本
路由器R1
#
interface Ethernet0/0/0
ip address 10.1.1.1 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.1.2.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
ospf 1 router-id 1.1.1.1
import-route direct
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
路由器R2
#
isis 1
network-entity 49.0000.0000.0002.00
preference route-policy pref
#
interface Ethernet0/0/0
ip address 10.1.1.2 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.1.3.2 255.255.255.0
isis enable 1
#
ospf 1 router-id 2.2.2.2
import-route isis 1
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
route-policy pref permit node 10
if-match ip-prefix test
apply preference 160
#
ip ip-prefix test index 10 permit 1.1.1.1 32
#
路由器R3
#
isis 1
network-entity 49.0000.0000.0003.00
import-route ospf 1
#
interface Ethernet0/0/0
ip address 10.1.2.3 255.255.255.0
#
interface Ethernet0/0/1
ip address 10.1.4.3 255.255.255.0
isis enable 1
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 10.0.0.0 0.255.255.255
#
路由器R4
#
isis 1
network-entity 49.0000.0000.0004.00
#
interface Ethernet0/0/0
ip address 10.1.4.4 255.255.255.0
isis enable 1
#
interface Ethernet0/0/1
ip address 10.1.3.4 255.255.255.0
isis enable 1
#
4、对比与总结
从两种配置方式来看,双点双向引入很显然是一种比较复杂的配置方式,且存在不合理的地方,其中最大的问题就是OSPF和ISIS做互相引入操作后,又用tag标签和路由策略去阻拦会产生环路的路由,最终达到的效果从本质而言还是一种单向引入,而如果在一开始就采用双点单向引入的方式,就省去了通过路由策略标记tag的麻烦。
但就另一方面来看,使用tag的方式,可以避免双向引入的两台路由器因为某一台出现故障而造成网络中断。