OSPF 邻居关系不能正常建立的原因和解决方法
OSPF 邻居关系
操作方法
- 01
(1)接口上没有激活 ospf 就是在 network 语句的时候没有匹配清楚,比如配置了错误的反掩码不对,在 show ip ospf interface 的时候不会显示你希望激活的接口。使用 show ip ospf interface 来验证。 这时候的邻居表是空的 R2#show ip ospf neighbor
- 02
(2)物理层或者是数据链路层协议 down. 使用 show ip int brief 或者是 show int type nomber 会导致 ospf packet 封装失败。
- 03
(3)建立邻居的接口被 passive 掉 R2#show ip ospf interface Ethernet 0 Ethernet0 is up, line protocol is up Internet Address 131.108.1.2/24, Area 0 Process ID 1, Router ID 131.108.1.2, Network Type BROADCAST, Cost: 10 Transmit Delay is 1 sec, State DR, Priority 1 Designated Router (ID) 131.108.1.2, Interface address 131.108.1.2 No backup designated router on this network Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 No Hellos (Passive interface) Neighbor Count is 0, Adjacent neighbor count is 0 Suppress hello for 0 neighbor(s)
- 04
(4)OSPF 的 hello 组播地址被 ACL Block R1# interface Ethernet0 ip address 131.108.1.1 255.255.255.0 ip access-group 100 in access-list 100 permit tcp any any access-list 100 permit udp any any access-list 101 permit ip 131.108.1.0 0.0.0.255 host 224.0.0.5 R2# interface Ethernet0 ip address 131.108.1.2 255.255.255.0 ip access-group 100 in access-list 100 permit tcp any any access-list 100 permit udp any any access-list 101 permit ip 131.108.1.0 0.0.0.255 host 224.0.0.5 R2#debug ip packet 101 detail IP packet debugging is on (detailed) for access list 101 IP: s=131.108.1.2 (Ethernet0), d=224.0.0.5, len 68, access denied, proto=89 这时候的邻居关系是 INIT R2#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 131.108.2.1 1 INIT/- 00:00:33 131.108.1.1 Ethernet0 R1#show access-list 101 Extended IP access list 101 permit ip 131.108.1.0 0.0.0.3 host 224.0.0.5 (8 matches) R1#debug ip packet 101 detail IP packet debugging is on (detailed) for access list 101 R1# IP: s=131.108.1.1 (local), d=224.0.0.5 (Ethernet0), len 60, sending broad/multicast, proto=89 IP: s=131.108.1.2 (Ethernet0), d=224.0.0.5, len 82, access denied, proto=89 IP: s=131.108.1.1 (local), d=224.0.0.5 (Ethernet0), len 60, sending broad/multicast, proto=89 IP: s=131.108.1.2 (Ethernet0), d=224.0.0.5, len 82,access denied, proto=89
- 05
(5)在 broadcast 链路上的子网掩码不匹配
- 06
(6)Hello/dead 间隔不匹配
- 07
(7)认证方式或者是认证密码不匹配 使用 debug ip ospf adj 来查看,可以自己使用不同的情况来验证
- 08
(8)两台路由器处于不同的 AREA R1#debug ip ospf adj OSPF adjacency events debugging is on R1# OSPF: Rcv pkt from 131.108.1.2, Ethernet0, area 0.0.0.0 mismatch area 0.0.0.1 in the header R2#show log %OSPF-4-ERRRCV: Received invalid packet: mismatch area ID, from backbone area must be virtual-link but not found from 131.108.1.1, Ethernet0
- 09
(9)Stub/transit/NSSA 区域类型不匹配 这个是常常不小心会被忘记的。 R1#debug ip ospf adj OSPF adjacency events debugging is on R1# OSPF: Rcv hello from 131.108.0.1 area 1 from Ethernet0 131.108.1.2 OSPF: Hello from 131.108.1.2 with mismatched Stub/Transit area option bit R1#debug ip ospf adj OSPF adjacency events debugging is on R1# OSPF: Rcv hello from 131.108.0.1 area 1 from Ethernet0 131.108.1.2 OSPF: Hello from 131.108.1.2 with mismatched NSSA option bit
- 10
(10)使用 secondary IP 来建立 OSPF adjacency R2# interface FastEthernet0/0 ip address 131.108.1.2 255.255.255.0 secondary ip address 131.108.4.2 255.255.255.0 R1# interface Ethernet0 ip address 131.108.1.1 255.255.255.0 R2#debug ip ospf adj OSPF adjacency events debugging is on R2# OSPF: Rcv pkt from 131.108.1.1, FastEthernet0/0, area 0.0.0.1 : src not on the same network
- 11
(11)OSPF 网络类型不匹配(P-TO-P 和 P-TO-M 网络类型在 hello 时间间隔相同的情况下可 以建立 full 关系, 但是会缺少一条路由可以做一下相关使用验证)
- 12
(12)NBMA (Frame Relay, X.25, SMDS, and so on)网络类型上没有手动指定 neighbor ip 地址邻居一直都是 ATTEMPT 状态
- 13
(13)在 Router 两边的 frame-relay map/dialer map 语句声明中缺少了 broadcast 参数
- 14
(14)接口两边的 MTU 不匹配 在 cisco ios 12.0.3 中加入了对 mtu 的检测,而低于这个版本的ios 会忽略 mtu 检测,需要查看 router 的 ios version,debug ip ospf adj 的结果是发现有大量的 dbd 重传,出现 loading 的原因 就是一边的 router 需要对 mtu 进行检测,而一边忽略。 R2#debug ip ospf adj OSPF adjacency events debugging is on R2# OSPF: Retransmitting request to 131.108.2.1 on Serial0 OSPF: Database request to 131.108.2.1 OSPF: sent LS REQ packet to 131.108.1.1, length 12 OSPF: Retransmitting request to 131.108.2.1 on Serial0 解决方法是接口命令:mtu 4470 而不是:ip mtu 4470 这时候的状态是 loading 。 R2#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 131.108.2.1 1 LOADING/- 00:00:37 131.108.1.1 Serial0 还有一种 mtu 不匹配的情况是邻居关系是 EXSTART,因为两边的 mtu 都需要检测,而 mtu 大 小又不匹配. R2#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 131.108.2.1 1 EXSTART/- 00:00:33 131.108.1.1 Serial0 R1#debug ip ospf adj OSPF: Retransmitting DBD to 131.108.1.2 on Serial0.1 OSPF: Send DBD to 131.108.1.2 on Serial0.1 seq 0x1E55 opt 0x2 flag 0x7 len 32 OSPF: Rcv DBD from 131.108.1.2 on Serial0.1 seq 0x22AB opt 0x2 flag 0x7 len 32 mtu 1500 state EXSTART OSPF: Nbr 131.108.1.2 has larger interface MTU
- 15
(15)在 broadcast 网络上需要选举 dr,而这时候两边的优先级又都是 0