OSPF确定Router-ID优先级顺序:

  1. 在OSPF协议进程号后配置自己配置的RID(这是属于OSPF的RID,不会影响全局的RID,推荐使用)。
  2. 在全局配置模式中自己配置的RID。改变的是全局RID,在没有配置OSPF的RID的前提下,OSPF会用这个全局RID作为自己的RID。
  3. 没有手动配置情况下最大环回口的IP地址。
  4. 没有手动配置情况下最大物理接口的IP地址。

注:router ID不可以是0.0.0.0 或 255.255.255.255。

OSPF的router-ID刷新规则:

  1. 当且仅当被选举为routerID的接口的地址被删除或修改,才会触发选举过程,此过程需要reset OSPF进程才生效。
  2. 被选择的接口状态改变、新配置更大的loopback或其他接口地址,均不会导致router id重新选举。

OSPF的Router-ID冲突导致的问题:

ospf多进程 ospf多进程router-id有什么影响_router-id


场景1: 同一网段,R1和R2均在area0,R1、R2具有相同的routerID。

结果:R1、R2无法建立OSPF邻居关系。

分析:R1发送hello包后,R2收到R1的hello包,发现routerID与自己的router ID一致,邻居无法建立。

场景2: 不同网段,同一区域,R2/R3具有相同的routerID。

结果:

  1. R1和R3、R1和R2能分别建立OSPF邻居。
  2. R1能学到R2或R3路由,但路由会不停地抖动,一会儿学到R2的,一会儿学到R3。
  3. R2、R3互相学到路由。

分析:

  1. OSPF是以{type、ls id、advrouter}来标识LSA,以(age、seq num、checksum)标识一个LSA实例。
  2. R3发送的LSA,R1泛洪,R2收到该LSA。
  3. R2检查收到的LSA,发现{type、ls id、adv router}与自己一致,就认为是自己始发的LSA。
  4. R2比较(age、seq num、checksum),发现该LSA比自身存的数据库更新,则seq num+1,回复LSA。
  5. R1收到R2的LSA后,发现{type、ls id、adv router}与自己数据库的R3的一致,认为是一条LSA;再比较(age、seq num、checksum),发现seqnum更大,LSA更加新,则泛洪。
  6. R3收到R1转发的R2的LSA,{type、ls id、advrouter}一样,(age、seq num、checksum)更新,跟R2一样的操作。
    h)R3/R1/R2之间不停地传递LSA,不断循环。

因此,R1一会儿学到R3的路由,一会儿学到R2的路由。R2、R3能互相学到路由。但是由于R1路由器的问题,无法正常通信。

华为模拟器实验表明:这种情况循环多次后,R2/R3会重新选举一个routerID发起OSPF邻居建立过程,邻居建立后,R1能正常学到R2、R3的路由。R2和R3也能够进行正常通信。

场景3: 不同区域,R1、R2为area0,R4为area1,R1、R4具有相同的routerID。

结果:

  1. area0,R1能与R2建立邻居关系;
  2. area1,R2能与R4建立邻居关系。
  3. R1、R4能互相学到路由。

分析:

  1. R1发送LSA,R2收到后,向area1发送3类LSA:LS ID为路由前缀,R2为ABR,adv router为R2的router ID
  2. R4收到3类LSA后,发现是新的router id,与自己不同,纳入LSDB,并提交路由表。
  3. R4发送的LSA,R2、R1相同处理,均能学到路由。

这里可以会发现,不同区域中RID相同是可以互相学习到路由条目的,但是为什么要求在同一个AS中要保持唯一的,这是因为中间ABR可能会以为这个路由器同时处在两个AS内部,与实际的拓扑有出入,为了保证没有任何的问题发生,最好不要设置为同样的RID号。