加载中...

实验ensp 双点双向路由引入导致的次优路径和环路问题


双点双向路由引入导致的次优路径和环路问题

拓扑图

实验目的

R1和R3上均存在一个loopback地址100.1.1.1/32和200.1.1.1/32,使用路由引入使两侧路由互通,同时R5上存在两个loopback地址,要求只引入loopback 1的地址。

对于OSPF引入外部路由后,出现的==次优路径和环路问题==进行解决。

OSPF的外部路由引入到ISIS后,==由于OSPF的外部路由优先级大于ISIS外部路由优先级==,导致在设计了路由冗余的另一点存在路由回馈现象。

在双点双向环境中,主要解决的主要问题就是

1、路由回馈问题(导致路由环路)

2、次优路径问题

解决问题的思路

1.修改ospf的优先级(存在问题,不能使用)——(如果将ospf的外部优先级修改的比isis的低,将会导致isis端的路由回馈现象)

2.路由过滤办法(不是最优解,但每添加一条外部路由,就需要重新配置。对于运维的成本增加)

3.路由打上tag,使用route-policy来变换路由的优先级。从而避免次优路径和环路问题。

必须知道的知识点

1、OSPF和ISIS路由协议优先级分别是什么

OSPF: 10 150

ISIS: 15 15

2、加表原则

当一台路由器通过不同路由协议学到了相同目的网段时,比较优先级,优先级数值小的会被优选加表

3、路由引入

import-route static:将路由表中的静态路由引入进OSPF

4、常用的路由策略

filter-policy

import-route

route-policy

实验步骤

1.实现AR1和AR3之间互通

R1

#
 sysname R1
#
interface GigabitEthernet0/0/0
 ip address 12.1.1.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 14.1.1.1 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 15.1.1.1 255.255.255.0 
#
interface LoopBack0
 ip address 100.1.1.1 255.255.255.255 
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 12.1.1.1 0.0.0.0 
  network 14.1.1.1 0.0.0.0 
  network 100.1.1.1 0.0.0.0 
#

R2

#
 sysname R2
#
isis 1
 is-level level-2
 network-entity 49.0001.0000.0000.0002.00
 import-route ospf 1 
#
interface GigabitEthernet0/0/0
 ip address 12.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 23.1.1.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 12.1.1.2 0.0.0.0 
#

R3

#
 sysname R3
#
isis 1
 is-level level-2
 network-entity 49.0001.0000.0000.0003.00
#
interface GigabitEthernet0/0/0
 ip address 23.1.1.3 255.255.255.0 
 isis enable 1
#
interface GigabitEthernet0/0/1
 ip address 34.1.1.3 255.255.255.0 
 isis enable 1
#
interface LoopBack0
 ip address 200.1.1.1 255.255.255.255 
 isis enable 1
#

R4

#
 sysname R4
#
isis 1
 is-level level-2
 network-entity 49.0001.0000.0000.0004.00
 import-route ospf 1 
#
interface GigabitEthernet0/0/0
 ip address 14.1.1.4 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 34.1.1.4 255.255.255.0 
 isis enable 1
#
ospf 1 router-id 4.4.4.4 
 import-route isis 1
 area 0.0.0.0 
  network 14.1.1.4 0.0.0.0 
#

从100.1.1.1 ping 200.1.1.1,检查连通性。

[R1]ping -a 100.1.1.1 200.1.1.1
  PING 200.1.1.1: 56  data bytes, press CTRL_C to break
    Reply from 200.1.1.1: bytes=56 Sequence=1 ttl=254 time=30 ms
    Reply from 200.1.1.1: bytes=56 Sequence=2 ttl=254 time=20 ms
    Reply from 200.1.1.1: bytes=56 Sequence=3 ttl=254 time=20 ms
    Reply from 200.1.1.1: bytes=56 Sequence=4 ttl=254 time=40 ms
    Reply from 200.1.1.1: bytes=56 Sequence=5 ttl=254 time=40 ms

  --- 200.1.1.1 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 20/30/40 ms

2.到了这一步双点双向的路由引入就完成了,我们可以在R1上查看路由表。可以看到R1去往200.1.1.1有两条路由。

[R1]dis ip routing-table 200.1.1.1
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 2
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

      200.1.1.1/32  O_ASE   150  1           D   14.1.1.4        GigabitEthernet
0/0/1
                    O_ASE   150  1           D   12.1.1.2        GigabitEthernet
0/0/0

3.现阶段的双点双向的路由引入没有任何问题,但是当在ospf端再添加一个R5的路由,且R5上的loopback0被引入ospf域内,而loopback1不被引入ospf。

R5

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]sys R5
[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ip add 15.1.1.5 24
[R5-GigabitEthernet0/0/0]q
[R5]un in en
[R5]ospf 1 router-id 5.5.5.5
[R5-ospf-1]area 0
[R5-ospf-1-area-0.0.0.0]net 15.1.1.5 0.0.0.0
[R5-ospf-1-area-0.0.0.0]q
[R5-ospf-1]q
[R5]int loopback 0
[R5-LoopBack0]ip add 192.168.1.1 32
[R5-LoopBack0]int loopback 1
[R5-LoopBack1]ip add 192.168.2.2 32
[R5-LoopBack1]q
[R5]ip ip-prefix lp0 permit 192.168.1.1 32 less-equal 32			#配置前缀列表匹配loopback 0
[R5]route-policy lp0 permit node 10						#route-policy过滤lp0
[R5-route-policy]if-match ip-prefix lp0
[R5-route-policy]q
[R5]ospf 
[R5-ospf-1]import-route direct route-policy lp0 				#在ospf域内引入/这里会产生后续需解决的问题,这里只是先引入。

4.在R1上使用dis ospf lsdb查看,只有192.168.1.1,没有192.168.2.2。但是可以看见有两条去往192.168.1.1的路由

明明只从R5引入了192.168.1.1,可为什么会存在一条由2.2.2.2产生的路由呢?出现这样的情况又是由什么造成的呢?

究其原因,其实是因为在R1接收到来自R5的LSA后,将带有192.168.1.1这一路由信息的LSA泛洪给了R2、R4,R4比R2计算可能快了那么0.0001秒,导致==R4率先加表==了192.168.1.1的路由。同时R4又将ospf引入到isis内。这样ISIS内的路由器也学到了192.168.1.1的路由,最后又传递到R2。

而R2在从OSPF和ISIS中都学到了去往192.168.1.1的路由,但是isis的优先级15远小于ospf的外部优先级150,优先级更高(优先级越小越优)。故在R2上又将isis中的192.168.1.1的路由引入到了ospf中。这样在R1上就存在了两个去往192.168.1.1的路由。这一问题叫做路由回馈,将会导致环路或次优路径问题。

解决办法

方法一(路由过滤)

产生上述问题的根本原因是isis的外部路由优先级高于ospf,从而加表成功。

在ISIS上配置路由过滤,阻止从ISIS来的192.168.1.1的路由加表。只要无法加表,那么就不会被引入到ospf。

R2

[R2]ip ip-prefix 192.168.1.1 deny 192.168.1.1 32
[R2]ip ip-prefix 192.168.1.1 permit 0.0.0.0 0 le 32
[R2]isis 1
[R2-isis-1]filter-policy ip-prefix 192.168.1.1 import 		#在isis上使用filter-policy,拒绝192.168.1.1的路由加表。

R4

[R4]ip ip-prefix 192.168.1.1 deny 192.168.1.1 32
[R4]ip ip-prefix 192.168.1.1 permit 0.0.0.0 0 le 32
[R4]isis 1
[R4-isis-1]filter-policy ip-prefix 192.168.1.1 import 

这样就解决了问题。但是这种解决办法不是最优解,如果存在n条外部路由时,运维难度增大。同时对于R2和R4上的路由没有冗余。

当R1和R2的线路断了时,连接在R2的其他设备将无法访问192.168.1.1.因为isis无法加表,从而引入ospf,R2上没有去往192.168.1.1的路由。

方法二(打上TAG,再过滤)——最优解

在R2上如果出现回馈现象,分哪几个步骤
1、R2在ISIS方向学习到了外部路由,并且加表了
2、R2在OSPF进程中引入了ISIS路由

在方法一中我们是采用了拒绝R2加表192.168.1.1的路由,从而路由无法引入ospf。但这样就会存在上面讲到的线路故障导致R2上没有去往192.168.1.1的路由问题。

而现在的解决方法就是要让R2在isis上的外部路由可以加表,又不可以让其引入ospf。

==问题(修改优先级)==

到这里有人可能会想为什么不将ospf的外部优先级修改为14,这样传递到isis的外部路由就无法回馈到ospf了。但是修改优先级的这一方法实际上是有问题的,因为他将会发生如下的情况:

当我们使用修改优先级的方法(进入OSPF 1,pre ase 14),将OSPF的外部路由优先级修改为14时。R3在ISIS中发送200.1.1.1/32的路由信息,R2将其引入到OSPF中,然后这条路由会在OSPF中以5类LSA开始泛洪,随着上图的箭头方向传达R4。R4可以同时从OSPF和ISIS中学到200.1.1.1/32的路由,而因为我们将OSPF的外部路由改为了14,这样就导致了R4在转发目的地在为200.1.1.1的数据包时会优先选择R1而不是实际上的最优路径R3.反之亦然。

解决办法
1、在R2上,允许ISIS加表,但是对于加了表的路由条目,在引入OSPF时进行过滤,考虑使用import-route isis route-policy过滤
2、在R2上针对外部路由修改优先级

3.在R5上引入lp0的ip时,配置ip-prefix将其打上tag500的标签,在使用import-route ospf route-policy来引入isis。

R5:

ip ip-prefix lo0 index 10 permit 192.168.1.1 32
route-policy import permit node 10
if-match ip-prefix lo0
apply tag 500

ospf 1
import-route driect route-policy import

现在使用display ospf lsdb ase 192.168.1.1的时候就可以看见如下图所示,路由器5在产生这一条5类LSA的时候,其tag已经变成了500.

同时在R2和R4上查看该条路由其tag同样为500.

4.现在在R2上创建一个名字为PRE的route-policy,使用prefix去匹配tag 500的路由

R2|R4

route-policy PRE permit node 10
if-match tag 500				
apply preference 10


ospf 1 
preference ase route-policy PRE 150   

==preference ase route-policy PRE 150==

这句的意思是在R2和R4上的ospf外部路由在修改优先级时会先匹配PRE的route-policy,如果匹配上了就会将优先级改为10,如果匹配不上就还是ospf默认的150外部优先级。(就是从192.168.1.1在R2上优先级会变成10,其他路由优先级还是150)。

这样就解决了上面的次优路劲的问题(==问题——修改优先级==),接下来只要处理路由回馈问题就可以。

5.在R2和R4上配置route-policy,具体情况请参照下表

顺时针方向
R2:
ospf——>isis deny tag 200
ospf——>isis permit tag 100
R4:
isis——>ospf deny tag 100
isis——>ospf permit tag 200
逆时针方向
R2:
isis——>ospf deny tag 400
isis——>ospf permit tag 300
R4:
ospf——>isis deny tag 300
ospf——>isis permit tag 400

R2(顺时针):

route-pilicy oti deny node 10
  if-match tag 200
route-policy oti permit node 20
  apply tag 100
  
isis 1
  import-route ospf 1 route-policy oti

R4(顺时针):

route-policy ito deny node 10
  if-match tag 100
route-policy ito permit node 20
  apply tag 200
  
ospf 1 
  import-route isis 1 route-policy ito

R2(逆时针):

route-pilicy ito deny node 10
  if-match tag 400
route-policy ito permit node 20
  apply tag 300
  
ospf 1
  import-route isis 1 route-policy ito

R4(逆时针):

route-pilicy oti deny node 10
  if-match tag 300
route-policy oti permit node 20
  apply tag 400
  
isis 1
  import-route ospf 1 route-policy oti

文章作者: okra2saber
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 okra2saber !
评论
  目录