OSPF 开放最短路优先


OSPF是由IETF的IGP工作组为IP网络设计的路由协议 , 此工作组于1988年设计了基于最短路优先(SPF)算法的IGP用于Internet 。同IGRP一样 , OSPF的产生是因为80年代中期RIP协议已经不能用于大型异构的Internet结构了 。下面我们谈一下OSPF的路由运行环境 , 路由算法和通常的协议组件 。
OSPF是在包括Bolt , Beranek的努力下完成的 , 它使用了Newman的最短路优先(SPF)算法进行工作 。它有两个基本特点 , 首先它是开放的 , 第二个非凡就是它是基于SPF算法进行的 , 也就是我们在图论所说的Dijkstra算法 。OSPF是内部使用连接状态路由协议 , 协议通过向同层结点发送连接状态信息(LSA)工作 , 当路由器接收到这些信息时 , 它就可以根据SPF算法计算出到每个结点的最短路了 。它的工作方式与我们熟悉的RIP和IGRP协议不同 , SPF只使用发送当前结点到相邻结点的路由信息 , 而RIP和IGRP需要结点把自己结点保留的由路表或路由表的一部分全部到相邻结点 , 相邻结点根据这些信息更新自己的路由表 , 前者发送的信息量少 , 而后者发送的信息量多 。
与我们熟悉的RIP不同 , OSPF的路由信息在一个树状结构内传送 , 这个树状结构内最大的结构就是一个自治域(AS) , 它们是使用同一路由策略的一组网络 。OSPF是一个内部路由协议 , 但这并不是说它不能向其它AS向送路由信息 , 我们可以知道 , OSPF的方法就是寻找一个AS内的最短路 , 它建立在一个基本的假设之上 , 也就是假如在每个小范围内都最短那整个路径一定最短 。一个AS可以被分为不同的域 , 这不同的域包括同构的网络和与之相关的主机 , 有多个接口的路由器可以属于不同的域 , 它些非凡的路由器称为域边界路由器 , 它保存每个域的拓朴结构数据库 。拓朴结构数据库内保存了与这个路由器相连的网络的拓朴结构 , 同时它也保存了同一域中所有路由器发送来的LSA信息 , 我们已经知道了 , 在同一域中的路由器有相同的路由信息 , 因此它们有相同的拓朴结构数据库 。我们在阅读关于OSPF的文档时 , 经常会看到域这个名词 , 它是描述拥有相同拓朴结构数据库的路由器的那部分网络 , 它有时和AS相互混用 , 希望注重 。对于域外的实体而言这个域的拓朴结构对它们来说是可见的 , OSPF使用将AS分块的方法减少网络通信量 。既然分了一个域的概念 , 那路由方法也要分为两种了 , 一种是用于目的结点和源结点在同一个域内和另一种是用于目的结点和源结点在不同的域内 。
OSPF主干负责在域之间传送路由信息 , 它包括所有的边界路由器和未完全包括在任何单独一个域中的网络结构以及与此网络结构相关的设备 。下图就显示了不同情况 , 体现了由路由器连接的不同域 。

在上图中 , 路由器4 , 5 , 6 , 10 , 11和12构成了主干 , 假如在域3中的主机H1希望发送数据到域2中的主机H2 , 那它就必须把包发到路由器13 , 由它将信息发送到路由器12 , 再由12发送到路由器11 , 由路由器11将路由信息发送到域边界路由器10 , 再由两个域内路由器9和7将信息发送到主机H2 。刚才我们提到了主干 , 主干自己也是一个OSPF域 , 此域内的路由器使用相同的路由策略 , 此域的结构对所有域内路由器来说是可见的 。大家要注重到 , 主干域的结构是不同构的 , 因此主干域的相互连接要使用虚拟连接方式进行 , 也就是说 , 两个主干域内的路由器必须通过一个非主干域进行通信 , 而这种通信又是对这两个主干域路由器透明的 。
说到现在 , 我们有些人仍然对SPF算法如坠云雾 , 下面我们就来简单地说一下这个算法 , 假如不理解这个算法就无法理解OSPF的工作过程 。当一个SPF路由器启动时 , 它初始化它的路由信息结构表 , 然后等待下层接口 , 当它确定下层接口可用时 , 它就使用OSPF的Hello协议向相邻的路由器发送一个问候包 , 然后接收这些路由器发回的信息 。这个问候包不但可以帮助路由器在初始工作时了解相邻结构 , 而且可以在运行中了解相邻路由器的工作情况 , 假如相邻的路由器关机了 , 那就不会从它那里收到回应信息了 。假如网络支持多个路由器 , Hello协议可以帮助选择一个主控路由器和一个备份路由器 , 由主控路由器向整个网络发送LSA 。

推荐阅读