OSPF(Open Shortest Path First)协议的邻接关系状态机描述了两台OSPF路由器之间建立和维护邻接关系的过程。以下是每个状态的简要描述:
Down State(关闭状态)
描述:这是OSPF邻接关系的初始状态,表示路由器尚未从邻居接收到任何Hello报文。
特点:
在此状态下,路由器认为邻居不可达。
如果接口被启用或配置了OSPF,状态会从Down开始。
如果在Dead Interval(死亡间隔)时间内仍未收到Hello报文,状态将保持为Down。Init State(初始化状态)
描述:当路由器收到邻居发送的Hello报文后,进入Init状态。
特点:
路由器已收到邻居的Hello报文,但尚未在Hello报文中看到自己的Router ID。
此时,路由器知道邻居的存在,但尚未建立双向通信。
如果路由器在Hello报文中看到了自己的Router ID,状态将迁移到Two-way状态。Two-way State(双向通信状态)
描述:当路由器在收到的Hello报文中看到自己的Router ID时,进入Two-way状态。
特点:
表示双向通信已经建立,双方都知道彼此的存在。
在广播或多播网络中,此状态下还会进行DR(Designated Router)和BDR(Backup Designated Router)的选举。
如果DR和BDR选举完成,非DR/BDR路由器的状态可能会停留在Two-way状态,而DR和BDR会继续进入后续状态。Exstart State(交换开始状态)
描述:在Two-way状态之后,如果路由器需要建立完全邻接关系(如需要交换LSA信息),则进入Exstart状态。
特点:
此状态用于协商主从关系(Master/Slave),确定哪台路由器先发送数据库描述(DD)报文。
路由器会比较Router ID,Router ID较大的路由器成为主设备,较小的成为从设备。
协商完成后,进入Exchange状态。Exchange State(交换状态)
描述:在Exstart状态协商完成后,进入Exchange状态,开始交换链路状态数据库(LSDB)的摘要信息。
特点:
路由器通过发送数据库描述(DD)报文,交换LSDB的摘要信息。
DD报文包含LSA头部信息,用于判断双方的LSDB是否一致。
如果发现LSDB不一致,路由器会请求缺失或更新的LSA。Loading State(加载状态)
描述:在Exchange状态之后,如果发现LSDB不一致,进入Loading状态。
特点:
路由器通过发送链路状态请求(LSR)报文,请求缺失或更新的LSA。
收到请求的路由器会发送链路状态更新(LSU)报文,将缺失或更新的LSA发送给请求方。
接收方收到LSU后,会更新自己的LSDB,并发送链路状态确认(LSAck)报文确认。Full State(完全邻接状态)
描述:当两台路由器的LSDB完全同步后,进入Full状态。
特点:
表示两台路由器的LSDB完全一致,邻接关系建立完成。
路由器可以基于完整的LSDB计算路由信息。
在Full状态下,路由器会定期发送Hello报文以维持邻接关系,并根据LSA的TTL值更新LSDB。
状态迁移总结
Down → Init:收到Hello报文,但未看到自己的Router ID。
Init → Two-way:在Hello报文中看到自己的Router ID。
Two-way → Exstart:需要建立完全邻接关系,开始协商主从关系。
Exstart → Exchange:协商完成,开始交换LSDB摘要信息。
Exchange → Loading:发现LSDB不一致,请求缺失或更新的LSA。
Loading → Full:LSDB完全同步,邻接关系建立完成。