某局点S10506设备OSPF路由无法引入问题案例分析

一、问题现象

 4.jpg

  如上图所示,设备A和设备B组成OSPF骨干区域area 0,设备B与下面的S10506组成非骨干区域area 215。设备B上存在一条172.19.0.0/16的静态路由,在设备B的OSPF中通过import-route引入该静态路由,在区域0和区域215中查看该引入的静态路由时发现区域0中的设备上均正常引入,可以在设备A上正常学习到该静态路由,但是在非骨干区域的S10506设备上却学习不到这条16位掩码的路由,只有一条172.0.0.0/8路由。

二、问题分析

1、首先在设备B和设备A上查看OSPF的路由信息,确认该16位的路由已经引入到OSPF,设备A上已经通过OSPF学习到该路由。确认静态路由已经被引入到OSPF中。

<_NBSJ_RT_NE40E-8B>dis ipro 172.19.0.0

Route Flags: R - relay, D - download to fib

------------------------------------------------------------------------------

Routing Table : Public

Summary Count : 2

Destination/Mask Proto Pre Cost Flags NextHop   Interface

172.19.0.0/16    O_ASE 150  1  D   10.17.252.59 GigabitEthernet1/0/3.7

O_ASE 150  1   D   10.17.251.51 GigabitEthernet1/0/4.7

2、在设备S10506上查看路由信息发现仅存在一条172.0.0.0/8的路由通过OSPF学习到,而设备上的172.19.0.0/16的路由为设备上的静态路由。通过display ip routing-table protocol OSPF命令查看设备上的OSPF路由表中并没有172.19.0.0/16的路由,说明S10506设备上并没有通过OSPF学习到该路由。

<NBFH_SW_HX_01>dis ip routing-table 172.19.0.0

Summary Count : 3

Destination/Mask ProtoPre Cost NextHop       Interface

0.0.0.0/0     OSPF 150  1   10.17.101.117   Vlan1001

172.0.0.0/8    OSPF 150   1  10.17.101.117   Vlan1001

172.19.0.0/16  Static 60   0  10.17.205.254   Vlan101

3、继续在S10506上查看设备的lsdb信息,发现在S10506设备的OSPF lsdb中已经存在该路由的LSA,说明设备B上已经将该路由的LSA正常传给S10506,但是在S10506上没有将该LSA加入到路由表中。

<NBFH_SW_HX_01>dis OSPF lsdb | include 172.

Sum-Net   10.17.101.172  10.17.100.113   1027 28    800024B0  3  

External  172.19.48.111  10.17.100.105   194  36    8000A0BC  1  

External   172.0.0.0    10.17.100.253   520  36    800024EB  1

External   172.0.0.0    10.17.100.254   572  36    80000076  1

External  172.17.229.228  10.17.100.253   750  36    80002BB8  1  

External  172.17.229.228  10.17.100.254   696  36    80002BB8  1  

External   172.19.0.0    10.17.100.113   242  36    80001B6A  1

External  172.22.89.254  10.17.100.253   1387 36    8000308D  1  

External  172.22.89.254  10.17.100.254   1385 36    8000308D  1

4、在S10506上继续查看标红的LSA的具体内容,该LSA是由设备B发送而来,但是查看该LSA的FA地址时发现该LSA的FA地址填充的是S10506和设备B互联接口的地址。

<NBFH_SW_HX_01>dis ospflsdbase 172.19.0.0

OSPF Process 1 with Router ID 10.17.100.115

    Link State Database

Type: External

LS ID: 172.19.0.0

Rtr: 10.17.100.113    //设备B的ID

LS Age: 289

 Len: 36

 Options: E

 Seq#: 80001b6a

 Checksum: 0xc2e1

 Net Mask: 255.255.0.0

 TOS 0 Metric: 1

 E Type: 2

 Forwarding Address : 10.17.101.118     //和设备B互联的地址

Tag: 1

5、首先介绍一下FA地址。FA地址是协助OSPF域内路由器更快捷地到达LSA所通告路由的下一跳地址,可以为全0或者非0。其原理是当OSPF域中的边界路由器收到一个5类或者7类的LSA,要在OSPF路由表中查找生成该LSA的ASBR是否可达,如果ASBR不可达,那么对该LSA不做任何操作。如果可达,LSA就描述了到达AS外部网络的路径,检查LSA中的FA地址,这个地址就是发往该目的网络的数据包应该被送往的地址。如果转发地址被设置为0.0.0.0,这个包应该被转发到ASBR,此时,OSPF Domain内路由器计算外部路由时,会以ASBR ID为Next Hop根据Type4 LSA在OSPF内部进行迭代计算;如果转发地址不是0.0.0.0,那么在OSPF路由表中查找FA地址,以此FA地址作为出口计算外部路由。匹配FA地址的路由表项必须是OSPF区域内或者是区域间路由,如果没有符合条件的表项存在,就不将路由放到路由表中,将认为此5类LSA无效。

也就是说当区域内路由器收到一条5类的LSA时,首先要判断该ASBR是否可达,如果不可达不把该LSA加入到路由表中。如果可达继续判断FA地址是否为全0:如果是全0,则加入到OSPF路由表中;如果不是全0,此时查看FA地址能否通过OSPF区域内或者区域间路由迭代可达,如果不可达则不加入到路由表中。再回头看这个LSA,发现这条LSA中ASBR可达,FA地址非全0地址,但FA地址为自己本身的一个地址,不满足区域内或区域间路由可达,没有加入到OSPF路由表中。

6、明确了S10506上为何没有把那条5类LSA加入到路由表中后,再来分析下为何设备B发来的LSA填充的FA地址为S10506上的接口地址。FA地址填充存在4个条件:

1)OSPF在ASBR的下一跳接口启用;

2)ASBR的下一跳接口没有被设置为被动接口;

3)ASBR的下一跳接口不是OSPF P2P或P2MP类型的;

4)ASBR的下一跳接口地址是落在OSPF协议中发布的网络范围之内。

对于5类LSA上面四个条件均满足时则填写FA地址为下一跳地址,如果存在不满足的条件时会填写全0地址;而对于7类的LSA不满足条件时不会填充全0地址。当7类的LSA判断条件不满足的时候,FA地址与ASBR的OSPF接口有关系,如果有环回口,则环回口优先;如果有多个环回口,从配置顺序上比较,先发布的成为FA地址;如果没有环回口,当存在多个物理接口,从配置顺序上比较,先发布的会成为FA地址。

此时查看设备B上的路由表信息,设备B上引入的16位的静态路由发生了迭代,迭代到了GE2/0/3接口,这个接口是和S10506设备直连的接口,该直连接口的这个网段也被宣告到了OSPF中,满足了上面的四个条件,所以这个5类LSA中的FA地址填充为下一跳地址,也即是S10506上和设备B直连的接口地址。<_RT_HX_01>dis ipro 172.19.0.0

Route Flags: R - relay, D - download to fib

------------------------------------------------------------------------------

Routing Table : Public

Summary Count : 1

Destination/Mask Proto  Pre  Cost  Flags NextHop     Interface

172.19.0.0/16   Static   60   0   RD   10.17.205.129 Ethernet2/0/3 

三、问题处理建议

通过分析可以确认S10506上OSPF路由学习异常的问题是由于设备B上引入的静态路由迭代填充FA地址为本地地址导致,结合组网环境确认具体的路由需求,进行正确的路由引入。在OSPF中,FA地址对路由的学习有重要的影响,其作用是在一个多路访问网络中,为设备选择更优的下一跳,从而防止次优路径的出现。

总结FA地址的影响有如下两点:

1)ASBR与外部路由器的连接,必定是通过一个多点可达的网络,比如广播或者是NBMA,否则,FA就失去意义了;

2)FA必须是一个区域内路由迭代可达的地址,或者区域间路由迭代可达的地址,也就是说,它必须在OSPF域内的LSA中可达。

除了FA本身的影响,在组网中可能遇到不同厂家的设备或者是相同厂家不同版本的设备,在对FA的处理上可能会存在不同,所以需要在配置规划中注意如下一些问题。

1)尽量在ASBR处对外部路由进行聚合。

2)如果不在ASBR处进行路由聚合,那么进行路由过滤,只引入希望引入的外部路由。

3)如果ASBR连接外部网络的接口上使能了OSPF,并且该接口连接了一个多点可达的网络,那么在所有OSPF内的路由器,要可以通过区域内或者区域间路由访问ASBR连接外部网络的接口地址。

4)如果路由器并不存在与ASBR的直接邻接,并且FA直连可达。为了使FA实现转发的优化,必须在直连FA的接口也使能OSPF,可以同时将该接口配置为被动接口以减少对网络的影响。


2017年11月