图文并茂解释OSPF邻居关系建立失败的几种常见情况(太实用了!) (360doc.com)
(5条消息) 网络故障排查:OSPF故障排查_小小小糖果人的博客-CSDN博客_ospf路由inactive
一、故障排查
=============================================================================
1、检查OSPF邻居状态
1.1首先查看两端OSPF邻居状态是否正常,正常情况下DRother之间的邻居关系应该稳定在2-way状态,非DRother之间的邻居关系应该稳定在Full状态。
<Huawei> display ospf 1 peer brief OSPF Process 1 with Router ID 1.1.1.1 Peer Statistic Information ------------------------------------------------------------------- Area Id Interface Neighbor id State 0.0.0.0 GigabitEthernet1/0/0 3.3.3.3 Full ------------------------------------------------------------------- Total Peer(s): 1
1.2 确认OSPF及邻居两端OSPF参数匹配
1.2.1 确认接口启动了OSPF
<Huawei> display ospf interface OSPF Process 1 with Router ID 192.168.1.1 Interfaces Area: 0.0.0.0 (MPLS TE not enabled) IP Address Type State Cost Pri DR BDR 192.168.1.2 Broadcast DR 1 1 192.168.1.2 192.168.1.3 Area: 0.0.0.1 (MPLS TE not enabled) IP Address Type State Cost Pri DR BDR 172.16.0.1 Broadcast DR 1 1 172.16.0.1 172.16.0.2
1.2.2 确认邻居两端OSPF参数相匹配
1.2.2.1 OSPF区域是否匹配
1.2.2.2 OSPF区域认证是否匹配
1.2.2.3 两端OSPF接口上计时器设定值是否匹配
1.2.2.4 两端OSPF接口类型是否匹配
1.2.2.5 广播网络中两端接口子网掩码是否相同
1.2.2.6 NBMA网络是否指定邻居
1.3 确认邻接关系的两端接口没有设置为静默端口,当设置为静默端口,它将不能发送OSPF Hello报文,因此OSPF邻居关系无法形成。
<Huawei>display current-configuration configuration ospf ospf 1 silent-interface GigabitEthernet 1/0/1 area 0.0.0.0s network 10.10.1.0 0.0.0.255 network 10.10.4.0 0.0.0.255 area 0.0.0.1 network 10.10.2.0 0.0.0.255
1.4 查看OSPF路由表是否存在相应路由
<Huawei> display ospf routing OSPF Process 1 with Router ID 10.2.2.9 Routing Tables Routing for Network Destination Cost Type NextHop AdvRouter Area 10.12.12.0/24 1 Transit 10.12.12.10 10.2.2.9 0.0.0.1 10.13.13.0/24 1 Stub 10.13.13.1 10.2.2.9 0.0.0.0 10.11.11.0/24 2 Transit 10.12.12.11 10.0.0.1 0.0.0.1 Routing for ASEs Destination Cost Type Tag NextHop AdvRouter 10.0.0.0/8 1 Type2 1 10.12.12.11 10.0.0.1 Total Nets: 4 Intra Area: 3 Inter Area: 0 ASE: 1 NSSA: 0
1.5 查看OSPF路由表未发现响应路由信息,请首先确认路由信息是否在OSPF中正确发布,对于未进行发布的路由请修改配置将路由正确发布。
<Huawei>display current-configuration configuration ospf ospf 1 area 0.0.0.0s network 10.10.1.0 0.0.0.255 network 10.10.4.0 0.0.0.255 area 0.0.0.1 network 10.10.2.0 0.0.0.255
1.6 确认OSPF LSDB数据库中是否存在路由计算所需的正确LSA信息。
1.6.1 区域内的LSDB有: router lsa ,network lsa (广播网络)显示OSPF链路状态数据库中Router LSA的相关信息。
<HUAWEI> display ospf lsdb router OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.0 Link State Database Type : Router Ls id : 2.2.2.2 Adv rtr : 2.2.2.2 Ls age : 52 Len : 48 Options : E seq# : 80000006 chksum : 0xbf5a Link count: 2 Link ID: 1.2.1.2 Data : 1.2.1.2 Link Type: TransNet Metric : 1 Link ID: 2.2.2.2 Data : 255.255.255.255 Link Type: StubNet Metric : 0 Priority : Medium # 显示OSPF链路状态数据库中Network LSA的相关信息。 <HUAWEI> display ospf 1 lsdb network 1.1.1.1 OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.0 Link State Database Type : Network Ls id : 10.1.1.1 Adv rtr : 1.1.1.1 Ls age : 167 Len : 32 Options : E seq# : 80000002 chksum : 0x3408 Net mask : 255.255.255.0 Attached Router 2.2.2.2 Attached Router 1.1.1.1
1.6.2 区域间的LSDB有: Summary lsa , adv Rtr的Router LSA
# 显示OSPF链路状态数据库中Network Summary LSA的相关信息。 <HUAWEI> display ospf 1 lsdb summary 10.2.1.0 OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.0 Link State Database Type : Sum-Net Ls id : 10.2.1.0 Adv rtr : 2.2.2.2 Ls age : 419 Len : 28 Options : E seq# : 80000001 chksum : 0x1d21 Net mask : 255.255.255.0 Tos 0 metric: 1 Priority : Medium
1.6.3 区域外的LSDB有: ASE LSA,adv Rtr的Router LSA
# 显示OSPF链路状态数据库中ASBR Summary LSA的相关信息。 <HUAWEI> display ospf 1 lsdb asbr 2.2.2.2 OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.2 Link State Database Type : Sum-Asbr Ls id : 2.2.2.2 Adv rtr : 1.1.1.1 Ls age : 90 Len : 28 Options : E seq# : 80000001 chksum : 0xec62 Tos 0 metric: 1 显示OSPF链路状态数据库中AS-external LSA的相关信息。 <HUAWEI> display ospf 100 lsdb ase 10.10.1.0 OSPF Process 1 with Router ID 1.1.1.1 Link State Database Type : External Ls id : 10.10.1.0 Adv rtr : 2.2.2.2 Ls age : 569 Len : 36 Options : E seq# : 80000002 chksum : 0x90d0 Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1 Priority : Medium
1.6.4 外部路由通过区域间学习的LSDB有: ASE LSA, ADV Router Asbr Sumarry LSA
# 显示OSPF链路状态数据库中NSSA External LSA的相关信息。 <HUAWEI> display ospf 1 lsdb nssa 10.10.1.0 OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.1 Link State Database Type : NSSA Ls id : 10.10.1.0 Adv rtr : 2.2.2.2 Ls age : 521 Len : 36 Options : None seq# : 80000005 chksum : 0x9ea7 Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 10.2.1.2 Tag : 1 Priority : Medium
1.7 导致OSPF数据库中LSA异常或者缺失的原因主要包括如下几种情况,需要从相关的配置或规划角度进行修正。
1.7.1 骨干区域被分割,导致LSA缺失
1.7.2 虚连接配置错误,导致LSA缺失
1.7.3 Router ID冲突,导致LSA震荡
1.8 外部路由携带FA地址确认FA路由为有效路由,ospf必须能够通过区域内或区域间路由到达该FA地址,否则该该外部地址不会加入OSPF路由表。
<HUAWEI> display ospf 100 lsdb ase 10.10.1.0 OSPF Process 1 with Router ID 1.1.1.1 Link State Database Type : External Ls id : 10.10.1.0 Adv rtr : 2.2.2.2 Ls age : 569 Len : 36 Options : E seq# : 80000002 chksum : 0x90d0 Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1 Priority : Medium <HUAWEI> display ospf routing OSPF Process 1 with Router ID 4.4.4.4 Routing Tables Routing for Network Destination Cost Type NextHop AdvRouter Area 172.16.1.0/24 4 Inter-area 192.168.2.1 2.2.2.2 0.0.0.2 172.17.1.0/24 1 Transit 172.17.1.1 4.4.4.4 0.0.0.2 192.168.0.0/24 2 Inter-area 192.168.2.1 2.2.2.2 0.0.0.2 192.168.1.0/24 3 Inter-area 192.168.2.1 2.2.2.2 0.0.0.2 192.168.2.0/24 1 Stub 192.168.2.2 4.4.4.4 0.0.0.2 Routing for ASEs Destination Cost Type Tag NextHop AdvRouter 10.0.0.0/8 1 Type2 1 192.168.2.1 1.1.1.1 Total Nets: 6 Intra Area: 2 Inter Area: 3 ASE: 1 NSSA: 0
1.9 查看OSPF路由是否加入全局路由表,只有加入到全局路由表的路由才能指导数据包的转发,并需要确保该路由为最优路由。
<HUAWEI> display ip routing-table 1.1.1.1 32 verbose Route Flags: R - relay, D - download to fib --------------------------------------------------------------- Routing Table : Public Summary Count : 1 Destination: 1.1.1.1/32 Protocol: Static Process ID: 0 Preference: 60 Cost: 0 NextHop: 2.2.2.2 Neighbour: 0.0.0.0 State: Active Adv GotQ Age: 02h17m46s Tag: 0 Priority: 0 Label: NULL QoSInfo: 0x0 RelayNextHop: 192.168.12.1 Interface: Ethernet0/2/0 TunnelID: 0x0 Flags: RD BkNextHop: 24.24.24.241 BkInterface: GigabitEthernet6/0/2
Routing Table: 该路由所在的实例名,“Public”特指公网实例 Summary Count:命令行中前缀的路由的条数 Destination:路由的目的地址以及掩码长度 Protocol:路由协议名称 Process ID:路由所在的进程ID Preference:路由协议的优先级 Cost:路由开销 NextHop:路由的下一跳。对于需要迭代的路由,这是原始下一跳。 Neighbour:邻居 State:路由的状态。包括如下几种: Active:活跃的路由 Invalid:无效的路由 Inactive:非活跃的路由 NoAdv:不允许发布的路由 Adv:可以发布的路由 Del:即将被删除的路由 GotQ:迭代成功的路由 WaitQ:尚未迭代成功的路由 Stale:带Stale标记的路由,在GR中使用 Age:路由生成后的持续时间 Tag:路由标识 Label:MPLS分配的标签 QosInfo:Qos信息 RelayNextHop:迭代下一跳 Interface:出接口 TunnelID:隧道ID Flags:路由标记。包括: R:表示该路由是迭代路由 D:表示该路由成功下发到FIB表 BkNextHop:备份下一跳 BkInterface:备份出接口
二、OSPF邻居关系建立失败的几种常见情况
=============================================================================
这里以此拓扑图为基础,来演示几种常见OSPF邻居建立不起来的情况,物理层面的不在此范围内,比如光衰问题,网线老化等。
1
接口未宣告到OSPF进程
R1关键配置如下:
#
interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.0
#
ospf 1
area 0.0.0.1
network 1.1.1.1 0.0.0.0
network 12.1.1.1 0.0.0.0
#
return
[R1-ospf-1]
R2关键配置如下:
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
#
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 24.1.1.2 0.0.0.0
area 0.0.0.1
network 12.1.1.2 0.0.0.0
area 0.0.0.2
network 23.1.1.2 0.0.0.0
#
现象:R1的OSPF邻居表为空。
原因:大家回顾一下,我们学OSPF时,有提到报文类型,是不是有个Hello包,那回顾一下,Hello是干嘛用的? 不管你学到什么P,什么E,不管你是不是大神级别,初心一定不能忘!忘了就没法玩了。Hello是用于建立和维护邻接关系。 本实例中,R2没有把G0/0/0的接口IP宣告到OSPF进程中的区域中,那么意思就是该接口也没有参与到OSPF进程,就不会去发Hello包。R2的G0/0/0不发hello包,R1就不会收到,没有收,怎么握手,怎么建立OSPF邻居呢 是吧~
解决办法:R2的接口宣告到OSPF进程中的区域1下。
检查:
2
接口虽然参与到OSPF进程了但被静默了
R1关键配置不变,如上。
R2关键配置如下:
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
#
ospf 1
silent-interface GigabitEthernet0/0/0
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 24.1.1.2 0.0.0.0
area 0.0.0.1
network 12.1.1.2 0.0.0.0
area 0.0.0.2
network 23.1.1.2 0.0.0.0
#
现象:R1的OSPF邻接表为空,R2对应接口也宣告到OSPF进程了。
原因:R2的OSPF进程下,使用了silent-interface命令用来禁止G0/0/0接口接收和发送OSPF报文。OSPF报文都不能发,更何况是Hello包了,所以邻居也就无法建立了。
解决办法:删除silient-interface命令即可。
检查:
3
广播网络中,OSPF进程反掩码写错了。
R1关键配置不变,如例1。
R2关键配置如下:
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
#
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 24.1.1.2 0.0.0.0
area 0.0.0.1
network 12.1.0.0 0.0.0.255
area 0.0.0.2
network 23.1.1.2 0.0.0.0
#
现象:R1的OSPF邻接表为空
原因:OSPF进程area1宣告的网络掩码写错了,宣告OSPF时,反掩码的0表示精确匹配,255表示不检查。从配置可以看出,OSPF进程精确去查找,将这个12.1.0.x宣告到进程中,但是R2没有哪一个接口属于这个网段的,所以等同于G0/0/0没有宣告到OSPF进程中。
解决办法:要么精确匹配,写4个0,即0.0.0.0,要么修改反掩码为0.0.255.255。
检查:这时就有邻居了。
4
两端的hello间隔和dead间隔时间不匹配
R1关键配置不变,如例1。
R1的hello、dead间隔时间还是默认,没有修改:
R2关键配置如下,修改了G0/0/0的OSPF hello间隔时间。
R1和R2两端的Hello间隔和dead间隔不一样,会收到如下日志:
抓包查看:
很明显可以看出两端的报文,hello和dead间隔时间不一致,两边设备收到对端hello报文,检查发现不一致,丢弃,于是邻居无法建立。
我们也可以使用display ospf error 更加快速地定位出问题:
解决办法:
R2的G0/0/0的Hello间隔改回默认,或者R1的G0/0/0 OSPF的Hello间隔也改为20秒。
检查:
5
区域ID不一致
R1关键配置不变,如例1。
R2关键配置如下:
#
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 12.1.1.2 0.0.0.0
network 24.1.1.2 0.0.0.0
area 0.0.0.2
network 23.1.1.2 0.0.0.0
#
return
[R2-ospf-1]
现象也是:R1的OSPF邻居表为空。
分析:
排查错,有时候,如果你不知道该如何入手?建议可以从Hello报文格式来,根据报文格式,检查一下是不是哪些不匹配?
现在我们再来抓包,看一下R1和R2的hello:
R1的hello包如下:
R2的Hello包如下:
很明显可以看出,R1和R2的区域id字段不一致,R1在区域1,R2在区域0,两边区域ID不一致,双方收到对端hello包,发现不一致,握手失败,所以邻居也就无法建立了。
当然,你也可以使用display ospf error来得快一些:
解决办法:
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 24.1.1.2 0.0.0.0
area 0.0.0.1
network 12.1.1.2 0.0.0.0
area 0.0.0.2
network 23.1.1.2 0.0.0.0
#
检查:
6
认证类型活密码不一致
R1关键配置如下:
interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]ospf authentication-mode simple along123
R2关键配置如下:
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ospf authentication-mode simple along456
现象:R1的OSPF 邻居列表为空,与R2OSPF邻居建立不起来。
分析:
抓包的话,由于是明文,很容易看出密码不一样:
R1:
R2:
7
广播网络中,接口IP掩码写错了
R1的接口IP如下:
#
interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.0
R2的接口IP如下:
#
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.128
OSPF配置均没变化。
现象:R1的OSPF邻居列表为空,建立失败。
分析:从报文的字段去分析,广播网络中会检查掩码,发现不一致,就无法成功建立OSPF邻居,可以使用如下命令快速定位。
解决办法:修改正确的掩码即可。
8
特殊区域类型不匹配,比如stub区域
R2的OSPF配置如下:
#
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 24.1.1.2 0.0.0.0
area 0.0.0.1
network 12.1.1.2 0.0.0.0
area 0.0.0.2
network 23.1.1.2 0.0.0.0
stub
#
return
[R2-ospf-1]
R3的OSPF配置如下:
#
ospf 1
area 0.0.0.2
network 3.3.3.3 0.0.0.0
network 23.1.1.3 0.0.0.0
#
return
[R3-ospf-1]
现象:R2和R3无法建立OSPF邻居关系。
分析:
可知,Hello包里面的option字段不匹配,应该是一边可以支持外部路由,一边不支持外部路由。
咱们,也可以抓个包看看,到底什么情况呢?
再看看R3,
到这来,你应该知道配特殊区域,是需要两端都要配了吧。
解决办法:
将R3也配置为stub
[R3-ospf-1]area 2
[R3-ospf-1-area-0.0.0.2]stub
[R3-ospf-1-area-0.0.0.2]
验证: