OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。
Down(失效)
OSPF邻居状态切换的初始状态。在该状态下,OSPF接口尚未收到邻居发送的Hello报文。
Init(初始)
当OSPF路由器收到直连链路上某个邻居发送过来的有效Hello报文,但并未在Hello报文的“邻居”字段中看到自己的Router-ID时,它会将该邻居置为Init状态。这个状态表明,在该直连链路上有一个活跃的OSPF路由器,但是目前两者尚未确认双向通讯。
Attempt(尝试)
该状态只在NBMA类型的接口中出现。在NBMA网络中,OSPF邻居通常是采用手工的方式指定的,此时OSPF路由器往往通过单播的Hello报文与直连设备建立邻居关系。当路由器的NBMA接口激活后,邻居的状态将从Down过渡到Attempt,在该状态下,路由器周期性地向邻居发送Hello报文,但是当前并未从邻居收到有效的Hello报文。当路由器收到邻居发送的Hello报文后(但是没有在该报文的“邻居”字段中看到自己的Router-ID),则将邻居的状态切换到Init。
2-Way(双向通信)
当OSPF路由器收到直连链路上某个邻居发送过来的Helo报文并且在该报文的“邻居”字段中发现自己的Router-ID时,它会将该邻居置为2-way状态,这表明它与邻居确认了双向通信。2-Way状态可以视为OSPF的稳定状态,也是建立邻接关系的基础。
ExStart(交换初始)
在该状态下,路由器发送空的DD报文以便协商Master/slave,Router-ID最大的路由器会成为Master路由器,DD序列号就是由Master路由器决定的。用于Master/Slave协商的报文是空的、不携带任何LSA头部的DD报文,在这些报文中,比特位被设置为1。
Exchange(交换)
在该状态下,路由器向邻居发送描述自己LSDB的DD报文,DD报文中包含LSA的头部(而不是完整的LSA数据)。DD报文逐个发送,每个报文中包含着DD序列号,DD序列号是由Master路由器决定的,这个序列号在DD报文的交互过程中被递增,以确保DD报文交互过程的有序性和可靠性。
Loading(加载)
在该状态下,路由器向邻居发送LSR以便请求LSA的完整数。对方使用LSU报文进行回应,因此只有LSU报文里才有LSA的完整信息。在收到LSU报文后,路由器需要发送LSAck对其中的LSA进行确认。
Full(全毗邻)
当接口上待请求的LSA列表为空时,表明路由器已经完成了与邻居的LSDB同步,没有再需要请求的LSA了,此时邻居的状态被置为Full。
转载请注明:零五宝典 » OSPF从入门到精通系列(8)—OSPF邻居邻接状态机