最短路径优先算法,正如OSPF路由协议的名字所告诉我们的,该协议用来计算路由的算法,称为最短路径优先(Shortest Path First)算法。该算法是由一位荷兰计算机科学家Dijkstra于1959年发现的,所以该算法又称为Dijkstra算法。
该算法把网络考虑为一组点到点连接的结点,每条链路有一个开销值,每个结点有它自己的名字及一个包含已知物理拓扑的完整链路信息的数据库。图1 表现了一个这样的网络。
图1 运行OSPF的网络环境
表1描述了图1中每一台路由器到达邻居路由器的链路开销。
表1 在图1中各个路由器到达邻居路由器的链路开销
在图1及表1中,我们可以看到整个网络的拓扑,这就是反映在路由器的拓扑表里的网络信息。
但是,这个拓扑还有环路存在。比如,从路由器B到达路由器D就存在着环路,数据包经过路由器A和路由器C都可以到达路由器D。我们需要使用最短路径优先算法从这个拓扑中计算出最短路径优先树。在计算出路由的同时,避免路由环路。
图2显示了在路由器B上经过最短路径优先算法计算之后形成的树型结构。
图2 在路由器B上经过最短路径优先算法计算之后形成的树型结构
从图2我们可以看出,从路由器B到路由器D的最短路径,并不是经过路由器C直接到达路由器D,因为这条路径的开销比经过路由器C和路由器E这条路径的开销还要大。在最短路径优先算法中,到达目的网段开销最低的那条路径是最短的路径。
图2实际上就是路由器B的路由表的图形化表现形式。