概述
OSPF协议故障问题大致分为三类:
第一类:涉及OSPF邻居关系的建立问题;
第二类:涉及OSPF LSA的泛洪问题;
第三类:涉及OSPF路由的计算问题。
一、OSPF邻居关系建立
典型故障
- OSPF协议规定,不同区域(Area)之间的边界是路由器,而不是链路。两台路由器之间的链路,必须处于统一区域(Area),当同一链路的两个接口地址被宣告到不同区域时,此两台链路所处的路由器无法建立邻居关系。
- 如果两台路由器的Router-ID发生了冲突,则他们的邻居关系是无法建立的。
- 在OSPF的Hello报文中,携带了接口的掩码信息,如果链路两端接口的掩码长度不匹配,则邻居关系无法建立。
- 如果相邻路由器的Hello报文中的Hello Timer的时间不一致(OSPF Hello Timer默认为10s,Dead为40s,可以在接口下更改),则将导致双方无法建立邻居关系。
- 在OSPF协商建立邻居关系的过程中,链路两端的端口认证类型不匹配时(例:一端为明文认证,一端为MD5加密认证),将导致邻居关系无法建立。
- 在OSPF的虚链路上也会交换Hello报文,但与普通的Hello报文不一样,虚链路的Hello报文是单播报文而并非是组播报文。如果需要建立虚链路的双方所发送的Hello报文中的认证类型不匹配,则双方不能建立虚链路关系。
OSPF邻居关系建立故障排查
常用命令
#display ospf peer //查看邻居关系
#display ospf peer brief //查看邻居关系简要信息
#reset ospf counter //清空ospf计数器
#display ospf error //查看错误报文信息
#display ospf routing router-id //查看router-id
#reset ospf process //重启ospf进程
#dispay ospf interface xx //查看xx接口ospf配置信息,包括Timer,DR/BDR,优先级,Cost等信息。
#interface下
#ospf timer hello xx //设置接口的hello报文时间
#ospf authentication-mode simple/md5 //设置接口下的认证类型
#osps authentication md5 xx xx//设置md5的密钥
排查OSPF邻居关系无法发建立的主要思想就是,使用display ospf error 命令,查看收到的错误报文信息,根据错误报文信息,对故障进行定位。
排查OSPF的虚链路故障
常用命令
#display ospf vlink //查看ospf虚链路建立的情况,需要关注Neighbor-State
#ospf
#area 0.0.0.0
#vlink-peer {router-id} simple/md5 {密钥} hello {Hello Timer 时间} dead {Dead 时间} //建立虚链路的命令
排查虚链路故障,主要思想也是通过display ospf error 命令,查看收到的错误报文信息,主要关注Bad virtual link 和其他字段,进行定位。