1 OSPF邻居状态机
2 状态变化描述
Down |
没有收到hello包 |
Init |
收到了hello包,但包里邻居列表里没有包含自己的router ID |
Attemp |
NBMA网络中手工配置邻居的情况下,路由器发送单播的hello给邻居且在dead interval超时之前还没有收到邻居的hello包。 |
2-way |
收到了hello包,包里邻居列表里(Active Neighbor字段)包含自己的router ID,1-way Received表示2-way后只有一方收到hello包就转变为init状态,2-way Received 表示init后双方都收到了hello包就转变为2-way |
ExStart |
信息交换初始状态,邻居间传空的DD报文(包含I(Initialize),M(More),MS(Master/Slave)位),确定主从关系,确定DD的初始序列号,比较接口的MTU(可选) |
ExChange |
开始交换DD报文,以ExStart的结果确定主从关系,交换过程由Master一直发送DD报文(seq=y+n),Slave回应DD报文(seq=y+n),Slave回应时使用Master的序列号,任何一方只要还有未传送完的LSA头,就由Master产生DD报文并由Slave回应。至此邻居都知晓对方的LSA |
Loading |
信息加载状态,本地路由器向邻居路由器请求本地LSDB中没有的LSA,发送LSReq,收到LSReq的路由器会用包含完整的被请求的LSA的LSU回应,请求方收到后确认无误则发送LSAack |
Full |
完全邻接状态,邻居路由器已完成同步过程 |
3 特殊状态变化说明
3.1 邻居停留在Attemp状态
只会出现在NBMA网络中,邻居是手工指定的。
表示路由器发送了hello给邻居,但没有收到邻居的回应:
l 可能是Neighbor邻居配置错误
l NBMA中两端无法连接,比如ACL限制
3.2 邻居停留在Init状态
表示收到了邻居的hello包,但hello包里的邻居列表没有包含自己:
l 可能只在单边启用了验证(实验结果是两边都没有邻居列表)
l 单边有ACL阻止了对方的hello包
3.3 邻居保持在2-WAY状态
正常情况下,在MA网络中,DRother之间的邻居状态是2-WAY,DRother与DR和BDR之间形成FULL状态。因为DRother之间不需要交换LSA,都是与DR和BDR交换。
有一种情况非正常的2-way,就是MA中的接口DR优先级都设置为0,没有选择DR和BDR,导致处于2-way状态。
3.4 邻居保持在Exstart/Exchange状态
MTU不匹配,在进行LSDB同步时,由于MTU不匹配,一端拒收了另一端发送的DD/LSU/LSRq报文。
3.5 P2P与MA邻居建立的不同点
OSPF 在P2P链路上不检测链路两端IP是否在同一子网,不在同一子网IP也可以互通。
OSPF要求MA链路两端在同一子网上,因此如果两端IP不在统一子网邻居无法建立(有sub接口以两端主IP为准比如A段主IP10.1.1.1/24,sub ip 20.1.1.1/24,B端主IP 20.1.1.1/24,sub ip10.1.1.1/24,虽然链路可以互通,但OSPF无法建立邻居,因为OSPF以主接口网段建立邻居。)