图文并茂解释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): 11.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.21.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/2Routing 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]
验证:

