FAQ-GRE隧道建立OSPF邻居频繁的UP、DOWN

发布时间:  2016-12-20 浏览次数:  4129 下载次数:  0
问题描述


网络拓扑如上图,Area1不连续,IP地址规划为:10.区域号.0.0。现在R1—R3之间建立一条GRE隧道,使R1—R3建立Area1的邻居关系,让Area1在逻辑上形成连续的区域。此时两个分隔的Area1逻辑上为同一个区域,此时Area1为双ABR区域:R1、R3。

关键配置:
R4:
#
ospf 1
area 0.0.0.1
  network 10.0.4.4 0.0.0.0
  network 10.1.14.0 0.0.0.3
#
R1:
#
ospf 1                                   
area 0.0.0.0
  network 10.0.12.0 0.0.0.3
area 0.0.0.1
  network 10.1.14.0 0.0.0.3
  network 13.1.1.0 0.0.0.3
  network 10.1.1.1 0.0.0.0
#
R2:
#
ospf 1                                   
area 0.0.0.0
  network 10.0.2.2 0.0.0.0
  network 10.0.12.0 0.0.0.3
  network 10.0.23.0 0.0.0.3
#
R3:
#
ospf 1                                   
area 0.0.0.0
  network 10.0.23.0 0.0.0.3
area 0.0.0.1
  network 10.1.35.0 0.0.0.3
  network 13.1.1.0 0.0.0.3
  network 10.1.3.3 0.0.0.0
#
R5:
#
ospf 1
area 0.0.0.1                            
  network 10.1.5.5 0.0.0.0
  network 10.1.35.0 0.0.0.3
#

在R1—R3之间建立GRE隧道,并把隧道宣告到Area1,使R1—R3建立Area1的邻居。
R1:
#
interface Tunnel0/0/0                    
ip address 10.1.13.1 255.255.255.252
tunnel-protocol gre
source LoopBack0            //源为R1的loop0地址
destination 10.1.3.3   //目标为R3的loop0地址
#
ospf 1
area 0.0.0.1
    network 10.1.1.1 0.0.0.0   
  network 10.1.13.0 0.0.0.3       //把loop0、tunnel口宣告到Area1
#

R3:

ospf 1
area 0.0.0.1
    network 10.1.3.3 0.0.0.0
  network 10.1.13.0 0.0.0.3      //把loop0、tunnel口宣告到Area1
#

   此时dispaly显示,R1—R3之间通过GRE隧道可以建立Area1的邻居关系,但邻居关系立马又变为Down。R1—R3之间的邻居关系不停的UP、Down。如下图,


解决方案
1、通过display ospf error命令查看ospf的错误信息。可以发现interface down发生了528次,由此可以知道ospf邻居关系频繁UP、DOWN是由于tunnel接口不停的UP、DOWN造成的。



2、分析GRE的配置。

R1的GRE配置:
#
interface Tunnel0/0/0                   
ip address 10.1.13.1 255.255.255.252
tunnel-protocol gre
source LoopBack0            //源为R1的loop0地址
destination 10.1.3.3   //目标为R3的loop0地址
#
R3的GRE配置:
#
interface Tunnel0/0/0                   
ip address 10.1.13.2 255.255.255.252
tunnel-protocol gre
source LoopBack0          //源为R3的loop0地址
destination 10.1.1.1 //目标为R1的loop0地址
#

3、分析Tunnel接口的UP条件,是要有destination IP地址所在网络的路由表。所以,R1上要有R3 loop0的路由并,下一跳可达。反正R3上亦然。
分两步分析:
a、R1、R3通过GRE建立邻居之前:
R1、R3的loop口都宣告在各自的Area1中,所以R1、R3都通过3类LSA学习到对方loop0(Tunnel目的地址)的路由下一跳都为R2。dis ip route如下图:



此时,Tunnel口正常UP,OSPF通过GRE正常建立邻居。

b、通过GRE建立OSPF邻居后:
  此时R1、R3逻辑上同属于一个区域,R1、R3通过1类LSA学习到对端Loop0(Tunnel目的地址)的路由,但是此时的下一跳并不是R2,而是对端的Tunnel口地址,此地址对于R1、R3并不是一个可达的IP地址。此时Tunnel口DOWN掉,OSPF邻居关系也会DOWN掉。



此时下一跳为对端Tunnel口IP地址,此时下一跳不可达。Tunnel口Down掉,OSPF邻居也DOWN掉。

4、通过分析可知OSPF频繁UP、DOWN是由于Tunnel口的频繁UP、DOWN。通过第2步的分析不难发现,Tunnel口的频繁UP、DOWN主要是由于通过GRE建立邻居后逻辑拓扑发生改变,导致到对端loop0(Tunnel目的地址)路由下一跳发生改变。我们可以通过改变GRE隧道Tunnel的源、目,使到Tunnel目的地址的路由下一跳不发生改变即可。

解决方法:

1、把R1、R3的loop0宣告到Area0:
R1:
#
ospf 1 router-id 10.1.1.1
area 0.0.0.0
  network 10.0.12.0 0.0.0.3
  network 10.1.1.1 0.0.0.0   //loop0
#
R2:
ospf 1 router-id 10.1.3.3
area 0.0.0.0
  network 10.0.23.0 0.0.0.3
  network 10.1.3.3 0.0.0.0    //loop0
#
此时OSPF邻居关系保持到FULL状态并保持稳定。如下图:



2、建立GRE使用物理接口IP作为隧道的源目地址。
其实两种方法都是把建立隧道的源目地址选用Area0内的地址。

END