今天海翎光电的小编和大家聊一聊 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"命令。
好了,海翎光电的小编就介绍到这里。