本文分析了OSPF router-id重复时的现象,讲解了其背后的原理,主要涉及路由和LSA的变化。主要讲解了区域内router-id重复的情况,捎带简单分析了ABR和ASBR的router-id和其它OSPF路由器重复的情况。
避免router-id重复的最基本的办法是遵循严格的IP地址分配原则。首先为每台设备配置唯一的loopback地址。然后在ospf进程中指定这个loopback地址作为router-id。实际中有些用户部署比较随意,导致了router-id重复。
直连的两台ospf路由器router-id重复很好发现,因为邻居都无法建立。
下面来分析同区域非直连的两台ospf路由器router-id重复的情况。
首先,如果可以查看所有设备的配置,那么可以一一进行检查。但是有时在实际环境中没有权限登录所有设备,无法去查看所有设备的配置。
如果是同一区域内router-id重复,两个路由器互相回收对方的router-LSA。两台路由器都会认为对方生成的router-LSA是过时的,会产生seq值更大的router-LSA进行通告。如果自己是DR,那么也会重新生成seq更大的network LSA,否则只是将network LSA的age置为3600,进行老化。因为LSA的抖动,会导致路由不断重新计算,导致路由时有时无。
查看LSDB时会发现有router-lsa seq迅速增加,伴随network-lsa seq也不断增加或者network-lsa在不停的3600秒老化。并且对应的loopback接口路由时有时无,提示可能是router-id冲突了。
但是接口震荡也可能会导致router lsa seq迅速增加和loopback接口路由时有时无,这导致判断是否存在router-id冲突的困难增加。可以查看该router lsa包含的连接的网络,如果网络在两个完全不同的集合间跳转,那一定是router-id重复了。如果包含的连接的网络只是有一个时有时无,那就是接口震荡了。实际上接口down/up是非常重要的网络事件,通常最基本的网络管理手段也都能很快捕捉到这个情况,所以很容易判断是否是接口震荡引发了故障。
类似的可以分析下面的现象:
如果ABR和其它OSPF路由器的router-id冲突了。可能导致区域间路由和external路由时有时无。如果要进行具体的分析,需要分区“其它OSPF路由器”是ABR和不是ABR的两种情况。是ABR时还要区分两个ABR连接着相同的非骨干区域和不同的非骨干区域两种情况。
如果ASBR和其它OSPF路由器的router-id冲突了。可能导致external路由时有时无。如果要进行具体的分析,需要分区“其它OSPF路由器”是ASBR和不是ASBR两种情况。
要注意串口打印或者网管系统,实现好的路由器对router-id重复的配置错误有一定的检测能力。