某局点S10506设备OSPF路由无法引入问题案例分析
一、问题现象
如上图所示,设备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月
本期文章
-
卷首语
-
公司动态
-
行业聚焦
-
产品推荐
-
案例介绍
-
经验共享
-
培训天地