对于广播多路访问网络,路由器在启动OSPF进程,到整个OSPF域形成相同的拓扑数据库,这中间一般来说,每台路由器会经历八个状态:
1、失效状态(down):新路由器处于失效状态。路由器尝试发送Hello分组,向网段中的其他路由器介绍自己,并试图发现其他的OSPF路由器。该Hello分组使用多播地址224.0.0.5(所有SPF路由器),其DR,BDR字段都设置为0。0。0。0
2、初始化状态(init):新路由器发送出hello分组等待应答状态。通常等待时间为hello时间的4倍。在这段时间内,新路由器从其他路由器那里收到Hello分组,并获悉谁是DR,BDR。如果收到的hello分组没有指出谁是DR,BDR,则开始选举。
3、双向状态(two–way):在其他路由器A收到来自路由器B的hello分组后,将hello分组中的路由器ID加入到拓扑数据库中,并用多播地址224.0.0.5发送一个HELLO分组,其中包含自己的ID和一个由所有邻居组成的列表。当B收到该HELLO分组后,如果发现自己的ID在这个来自A的HELLO分组里的邻居列表中,那么B将认为和A已经形成了双向的通信状态。
4、预启动状态(exstart):互为邻居的两台路由器A,B。它们根据直连的接口IP选出较大IP那台路由器做为主(master)路由器,这就是预启动状态。两个邻居是根据接口的IP大小来确定主/从关系:谁主谁次并不重要,它们主要是决定由谁来发起通信。
5、交换状态(exchange):两台路由器都发送数据库描述分组(DDP),并切换到交换状态。路由器从邻居路由器那里收到DDP后,将其同自己的拓扑表进行比较。DDP里面只包含拓扑数据库的摘要信息。
6、加载状态(loading):当一台路由器收到了来自邻居的DDP分组,经过比较后发现自己的拓扑数据库信息和DDP中包含的摘要信息存在差异,,这时该接收路由器需要更详细的信息,它将使用LSR分组请求有关特定链路的详细信息。
7、完全邻接(full):当A路由器收到来自B的LSR时,它将返回一种LSU分组(就是指收到LSR分组后发送的一种LSA分组)。然后B收到该LSU后,将返回一种LSACK(链路状态确认)分组。同时B和A的拓扑数据库达到了同步,此时,邻居关系就变成了邻接状态。(loading to full)
(Attempt 只有在NBMA网络里才有,手工进行Neighbor的指定。)
这中间主要出现了四种分组:
1、HELLO分组:用于发现邻居和选举DR,BDR。路由器不断的发送HELLO分组,以确保它始终出现在收到了这些分组的路由器的拓扑数据库中。
2、数据库描述分组(DD):用于向邻居发送摘要信息以同步拓扑数据库。
3、LSR:用于请求更详细的信息,路由器收到包含新信息的数据库描述分组后发送的一种分组
4、链路状态确认(LSACK):确认已经收到了LSU
A——————————hello——————————>B
A<——————————hello——————————B
A——————————DDP——————————>B
A<——————————DDP——————————B
A——————————LSR——————————>B
A<——————————LSU——————————B
A——————————LSACK——————————>B