OSPF经典问题汇总

OSPF采用分区域设计有什么好处?

  • 可以在ABR做路由汇总,减少其它区域路由表条目,减轻路由器压力
  • 减少1,2类LSA泛洪
  • 减少路由收敛的范围,一个区域的问题不会影响其它区域

影响OSPF邻接的原因有哪些?

1、ROUTER ID不能相同;
2、HELLO时间必须一致;
3、DEAD时间必须一致;
4、区域ID必须相同;
5、认证必须相同;
6、STUB标志位必须相同(hello包中域外路由重分布能力位);
7、MTU不匹配无法形成邻接关系
8、OSPF版本号不同(目前版本为2);
9、当OSPF网络类型是MA时,要求掩码一定一致(两个邻居)。因为会出现DR和LSA-2,无法描述网段

如果OSPF双方路由器MTU不一致,会发生什么情况

无法建立邻接关系

假设R1 MTU < R2 MTU

首先,双方都可以进入exstart状态。然后双方开始单播发送第一个DBD,
此时
若R2的RID>R1的RID

对于R1:收到R2第一个DBD发现MTU比自己大,无法接受;所以维持发送第一个DBD的状态,即维持exstart状态

对于R2: 正常收到R1的第一个DBD然后可以计算出自己是master,然后等待对方发送LSA摘要;但是发现R1只会发第一个DBD不发LSA摘要,(猜测:可能以为通讯有问题),于是维持发送第一个DBD,即维持exstart状态

若R2的RID<RI的RID

对于R1:收到R2第一个DBD发现MTU比自己大,无法接受;所以维持发送第一个DBD的状态,即维持exstart状态

对于R2: 正常收到R1的第一个DBD然后可以计算出对方是master而自己是slave,然后会发送LSA摘要,即进入exchange状态,但对方没有回复LSA摘要,所以会支持卡在exchange这个状态

总结:
当双方mtu不一致时
若DBD从的mtu小,则双方都卡在exstart
若DBD从的mtu大,则mtu大的进入exchange,mtu小的维持exstart

总之,mtu小的一定卡在exstart,mtu大的有可能进入exchange(取决于是否是DBD从角色)

OSPF何时用组播,何时用单播?

  • HELLO包,不手动指定邻居的话都是发送到组播224.0.0.5
  • DBD,只是两个路由器之间建邻居互传DB摘要,采用单播
  • LSR,请求LSA,直接向DR请求,单播
  • LSU
    • 回复LSR时是单播
    • 触发更新时是组播
      • DR-Other 采用组播224.0.0.6告知DR/BDR,由DR发送224.0.0.5告知其它所有路由器
      • p2p类型网络都是发送到组播224.0.0.5
  • LSAck,组播224.0.05

OSPF邻居表发现2-way是否正常

MA网络中正常
在MA网络中,DR和BDR分别与DROther建立full邻接关系,DROther之间只是2-way关系

如何判断一条LSA的新旧

当一台路由器收到相同的LSA的多个实例时,将通过以下算法决定将哪一条放入数据库:

1、比较LSA实例的序列号,大的优先
2、序列号相同,再比校验和,大的优先
3、校验和也相同,再比老化时间,如果有一条LSA拥有大小为最大生存时间(3600S)的老化时间,则最优
4、如果LSA的老化时间之间的差别多于15分钟,则老化时间小的优先
5、如果以上条件都比不出来,则认为这些LSA相同

如果不相邻的两台OSPF路由器RID相同会发生什么

若这些路由器在同一区域
OSPF RID1
R1-R2-R3连接,且都属于同一区域
假设R2-R3先正常建立邻居后,R1配置R3的RID接入。此时R1与R2可以建立full邻接关系,R1会收到R2发来的较新的1类LSA,这里的1类LSA应该有两条
第一条ADV Router是R3
第二条ADV Router是R1

这里R1会接受R2独有的路由(即ADV Router为R2且R3 没通告的路由,如lo 0的路由),收到R3路由发现和自己RID一样,会报RID dup的错,同时也会发送自己的最新的LSA。R3同理。
最后结果就是R1,R3可以学到R2的loopback 路由但R1,R3互相的路由不稳定会翻动

若这些路由器在不通区域
OSPF RID2
R1-R2-R3连接,R1-R2属于区域1,R2-R3属于区域0
假设R2-R3先正常建立邻居后,R1配置R3的RID接入。此时R1与R2可以建立full邻接关系。这里R2是ABR,R2会吧R3通告的1类LSA转为3类,在发给区域1的时候ADV Router字段会变为自己(即R2的RID),但不会重新处理5类LSA。所以对区域1的内部路由器R1来说,收到的R3路由会当做普通的三类LSA处理,并不知道这些OIA路由来自哪里;同理,R3也能学到R1的域内路由。
最后结果就是R1,R3可以互相学到域内路由