1.Router-id冲突

  • 同区域内

OSPF邻居建立hello包发送过程 ospf邻居建立失败的原因_抓包


假设此时在同区域

AR1和AR3的RID冲突都为1.1.1.1。

OSPF邻居建立hello包发送过程 ospf邻居建立失败的原因_数据更新_02


此时邻居关系依然正常建立,但是在AR2的LSDB中,advert为1.1.1.1的LSA (1lsa 2lsa只有一份),此时路由计算就会出现问题。

我们在AR1的G0/0/1接口开启抓包。

OSPF邻居建立hello包发送过程 ospf邻居建立失败的原因_数据更新_03


链路数据更新比Hello包还频繁。路由出现震荡

原因:当AR1把自己环回口1.1.1.1/32的LSA(adv=1.1.1.1,type=1,lsid=1.1.1.1,seq=1)发送给AR2,AR2收到后会传递给其他邻居AR3。发现adv=1.1.1.1但是自己又没有这个网段,于是会发送一个自己的LSACK(age=1s,seq=2)AR2收到AR3通告的LSA后,会与之前的进行比较,选择这个seq=2的。然后将这个传递给AR1,AR1收到后发现自己有这个网段,又会发送一个新的LSA1,seq=3,会反复出现这个情况。

假设AR1引入一个外部路由。11.11.11.11 (adv=1.1.1.1 type=5 lsid=11.11.11.11,seq=1)
发送给AR2,AR2收到转发给AR3,AR3发现adv=1.1.1.1是自己,但是自己却没这个网段,于是会给AR2发送一个age=3600s,seq=1的LSA5。AR2收到后,会比较由于seq一样 checksum一样。则比较age,优选AR3的,转发给AR1。AR1收到发现自己有这个网段,又会发送一个LSA5 seq=2,会一直出现这种情况。路由震荡

但是一段时间后会消失,华为设备有一台会自己修改RID。

不同区域RID相同。
邻居关系正常,路由计算正常,因为LSA的adv是ABR,只要本区域的RID不冲突,就不会有问题。
但是,如果在相同RID的设备上引入外部路由,那么就会出现上面的第二种情况,设备收到adv是自己的LSA5。但是自己却没有路由,则会发送一个LSA5,age=3600s的给其他邻居。其他邻居收到后会比较,发现seq一样,checksum一样,但age=3600s于是选这个,同时向其他邻居发一份。于是原先通告LSA5的设备发现自己有这个,于是又发送一条新的LSA seq在之前基础上+1.重复此种情况,路由震荡,直到冲突的设备修改RID。