今天来给大家讲讲OSPF协议。
OSPF是一种基于SPF算法的链路状态路由协议。
上图是在一个OSPF区域里面添入一台新的路由器的时候,OSPF协议的工作过程,如果你能非常详细的叙述出这张图的话,基本上OSPF协议的工作过程你就掌握了。
首先大家要清楚,一台运行了OSPF协议的路由器,最终都会存储三张表:邻居表、拓扑表、路由表。下面以这三张表的产生过程为线索,来分析在这个过程中,路由器发生了那些变化,从而说明OSPF协议的工作过程。
(一)邻居表的建立
一台新加入OSPF区域的路由器首先要跟邻居路由器建立邻接关系,过程如下:
新路由器发出第一个hello分组以后等待应答,等待的时间间隔为hello分组的四倍等待期间的状态称为路由器的初始状态,等待期间,新路由器从另外一台路由器那里收到hello分组,并获知DE和BDR,如果没有,则开始选择。网络上的其他路由器收到新路由器发的hello0分组以后将该路由器的router Tn加入到拓扑数据库中,并发一回应hello分组,其中包含自己的router ID所有邻居组成的列表。
新路由器看到自己的ID出现在其他路由器应答的邻居列表中建立了邻接关系,新路由器将其状态改为双向。
通过上面3步,新加入的路由器和其邻居路由器已经建立了邻接关系。
(二)拓扑表的建立
在建立拓扑表的时候,新加入的路由器要经历预启动状态、交换状态、加载状态、完全邻接状态。下面就将此过程,以图的形式展示给大家:
(2)交换状态:两台路由器都发送DBD,DR发送一系列的DBD,其中包括含了存储在其database中的网络。DBD中没有包含详细的必要信息,只是为了从其他邻居路由器接收到DBD消息报文之后,与自己的数据库进行比较。
(3)加载状态:新路由器需要更详细的信息,将使用LSR(链路状态请求包)进行特定某LSA的详细信息的请求,而被请求端则会响应,并且会发送LSU(链路状态更新包),此包包含了信息的LSA信息。
经过以上四步,此OSPF区域的所有路由器的数据拓扑图都达到了同步。
(三) 然后每个路由器按照产生的全区域数据拓扑图,在运行SPF算法,产生到达目标网络的路由条目。
经过以上三大步,OSPF协议的运行过程基本结束。
在上面的过程当中有几个很重要的问题需要注意:
1》此协议的管理距离是110、OSPF路由进程ID的范围必须在1-65535之间,而且只具有本地含义,不同路由器的路由进程ID可以不同、区域ID在0至4294967295,当区域值取0时本区域称为主干区域;2》确定router ID遵循如下顺序:用router ID 命令指定的路由器ID的优先级最高
如果没有指定,那么选IP地址最大的环回接口的IP地址为route ID
如果没有换回接口,就选择UP端口中IP值最大的为router ID
但还是建议使用命令指定,这样可控性比较好;
3》DR选举的原则首要因素是时间,最先启动的路由器被选举成为DR
如果同时启动,或者重新选举,则看接口优先级(0-255),优先级最高的被选举成DR,在默认情况下,多路访问网络的接口优先级为1,点到点网络的接口优先级为0,修改接口优先级的命令是“ip ospf priority”,如果接口的优先级被设置为0,那么该接口不参与DR选举。
如果前两者相同,最后看路由器ID,路由器ID最高的被选举成DR。
DR选举时非抢占的,除非人为地重新选举。重新选举DR的方法有两种,一是路由器重新启动;二是执行“clear ip ospf process"命令。