ospf有接口状态机和邻居状态机。
接口状态机:
(1)失效(down):这是初始化的接口状态。在这个阶段,接口没有任何作用,只是将所有接口的参数设置成它们各自的初始数值,因而在接口上没有任何路由协议的通信量进行发送和接收。
(2)点到点:这个接口状态只适用于点到点、点到多点以及虚电路等网络类型接口。当接口的状态切换到该状态时,接口就开始起作用了。这时,路由器的接口开始每隔一个hello时间发送一次hello数据包,并尝试和接口链路另一端相连的邻居建立邻接关系。
(3)等待(waiting):这个接口状态仅适用于广播、NBMA网络类型。当接口的状态时这个状态时,这个接口开始发送和接收hello数据包,并设置等待计时器的值。而路由器将在接口处于这个状态的时候,试图去识别网络上的DR和BDR。
(4)指定路由器(DR):在这个状态下,该路由器是所连接网络的指定路由器,并将和所在多址网络上的其他路由器建立邻居关系。
(5)备份(backup):在这个状态下,该路由器就是所连网络的备份指定路由器,并且和所在多址网络上的其他路由器建立邻接关系。
(6)DRother:这个接口状态下,该路由器既不是DR也不是BDR,虽然它将跟踪网络上所有的路由器,但仅仅会和网络上的DR和BDR路由器建立邻接关系。
(7)Loopback:这个接口状态下,路由器的接口通过软件或硬件的方式成为环回的,虽然一个接口在该种状态下不能发送数据包,但是接口的地址还是可以通过路由器LSA通告出去的,因此,进行测试试用的数据包能够发现到达这个接口的路径。
邻居状态机:
(1-1) Down:邻居状态机的初始状态,是指在过去的Dead-Interval时间内没有收到对方的Hello报文。
(1-2) Attempt:只适用于NBMA类型的接口,处于本状态时,定期向那些手工配置的邻居发送HELLO报文。
(2) Init:本状态表示已经收到了邻居的HELLO报文,但是该报文中列出的邻居中没有包含我的Router ID(对方并没有收到我发的HELLO报文)。
(3) 2-Way:本状态表示双方互相收到了对端发送的HELLO报文,建立了邻居关系。在广播和NBMA类型的网络中,两个接口状态是DROther的路由器之间将停留在此状态。其他情况状态机将继续转入高级状态。
(4) ExStart:在此状态下,路由器和它的邻居之间通过互相交换DD报文(该报文并不包含实际的内容,只包含一些标志位)来决定发送时的主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。
(5) Exchange:路由器将本地的LSDB用DD报文来描述,并发给邻居。
(6) Loading:路由器发送LSR报文向邻居请求对方的DD报文。
(7) Full:在此状态下,邻居路由器的LSDB中所有的LSA本路由器全都有了。即,本路由器和邻居建立了邻接(adjacency)状态。