建立邻居的过程:
Down:邻居的初始状态,表示没有从邻居收到任何信息。
Attempt:只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居収送报文。发送间隔为HelloInterval。 如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
Init:已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
2-Way Received:表示路由器发现与邻居双向通信已经建立,如需要建立邻接关系则进入Exstart开始同步LSDB,如不需要建立邻接关系进入2-WAY
2-Way:双向通信已经建立,但是没有与邻居建立邻接关系。 这是建立邻接关系以前的最高级状态。
1-WAY Received:自己不在邻居的邻居列表中,通常为对端邻居重启造成。
ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。 主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。 在此状态下収送的DD报文不包含链路状态描述。
Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
Loading:相互収送LSR报文请求LSA,収送LSU报文通告LSA。
Full:路由器的LSDB已经同步。邻居之间形成了完全的邻接关系
Router ID、邻居和邻接
Router ID是一个32位的值,它唯一标识了一个自治系统内的路由器,可以为每台运行OSPF的路由器上可以手动配置一个Router ID,或者指定一个IP地址作为Router ID。 如果设备存在多个逻辑接口地址,则路由器使用逻辑接口中最大的IP地址作为Router ID;如果没有配置逻辑接口,则路由器使用物理接口的最大IP地址作为Router ID。
邻居(Neighbor):OSPF路由器启动后,便会通过OSPF接口向外发送Hello报文用于发现邻居。收到Hello报文的OSPF路由器会检查报文中所定义的一些参数,如果双方的参数一致,就会彼此形成邻居关系。
邻接(Adjacency):形成邻居关系的双方不一定都能形成邻接关系,这要根据网络类型而定。只有当双方成功交换DD报文,并能交换LSA之后,才形成真正意义上的邻接关系。
邻居发现
OSPF的邻居収现过程是基于Hello报文来实现的,Hello报文中的重要字段解释如下
Network Mask:发送Hello报文的接口的网络掩码。
HelloInterval:发送Hello报文的时间间隔,单位为秒。
Options:标识发送此报文的OSPF路由器所支持的可选功能。 具体的可选功能已超出这里的讨论范围。
Router Priority:发送Hello报文的接口的Router Priority,用于选举DR和BDR。
RouterDeadInterval:失效时间。 如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效;单位为秒,通常为四倍HelloInterval。
Designated Router:发送Hello报文的路由器所选举出的DR的IP地址。 如果设置为0.0.0.0,表示未选举DR路由器。
Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。 如果设置为0.0.0.0,表示未选举BDR。
Neighbor:邻居的Router ID列表,表示本路由器已经从这些邻居收到了合法的Hello报文。
DR/BDR选择
在广播和NBMA网络中为了减少连接的数量,减轻网络负荷通过选举DR/BDR
在邻居収现完成之后,路由器会根据网段类型迚行DR选举。在广播和NBMA网络上,路由器会根据参不选举的每个接口的优先级迚行DR选举。优先级取值范围为0-255,值越高越先。缺省情况下,接口优先级为1。如果一个接口优先级为0,那么该接口将不会参不DR戒者BDR的选举。如果优先级相同时,则比较Router ID,值越大越优先被选举为DR。
为了给DR做备份,每个广播和NBMA网络上还要选举一个BDR。BDR也会与网络上所有的路由器建立邻接关系。为了维护网络上邻接关系的稳定性,如果网络中已经存在DR和BDR,则新添加进该网络的路由器不会成为DR和BDR,不管该路由器的Router Priority是否最大。 如果当前DR发生故障,则当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR发生故障,则DR不变,重新选举BDR。 这种选举机制的目的是为了保持邻接关系的稳定,使拓扑结构的改变对邻接关系的影响尽量小。
区域划分
划分OSPF区域可以减少LSDB规模,节约链路带宽,减轻路由负荷。
每个区域都要维护一个独立的LSDB.
Area 0 骨干区域,为了避免区域间路由环路,非骨干区域之间不允许直接相互发布路由信息。 因此,每个区域都必须连接到骨干区域。
ABR 区域边界路由器,运行在区域之间的路由器,它包含所有相连区域的LSDB。
ASBR 自治系统边界路由器,是指和其他AS中的路由器交换路由信息的路由器,这种路由器会向整个AS通告AS外部路由信息。
OSPF基于接口带宽计算开销,计算公式为:接口开销=带宽参考值÷带宽。