3、SPF算法
SPF算法(最短路径优先算法,也称Dijkstra算法)由荷兰科学家狄克斯特拉于1959年提出的。
SPF算法将每一个路由器作为根(ROOT)来计算其到每一个目的地路由器的距离,每一个路由器根据一个统一的数据库会计算出路由域的拓扑结构图,该结构图类似于一棵树,在SPF算法中,被称为最短路径树。
在OSPF路由协议中,最短路径树的树干长度,即OSPF路由器至每一个目的地路由器的距离,称为OSPF的Cost。SPF使用开销(cost)作为度量值。
(1)SPF算法基本步骤
1)构建SPF树
根据1类中的P2P,Transnet和2类LSA中的拓扑信息,构建SPF树干。
2)计算最优的路由
基于SPF树干和Router LSA、Network LSA中的路由信息,计算最优路由
(2)步骤详解
步骤1
OSPF路由器将分别以自身为根节点计算最短路径树。(上左图)
以RTA为例,计算过程如下:RTA将自己添加到最短路径树的树根位置,然后检查自己生成的Router-LSA,对于该LSA中所描述的每一个连接,如果不是一个Stub连接,就把该连接添加到候选列表中,分节点的候选列表为Link ID,对应的候选总开销为本LSA中描述的Metric值和父节点到达根节点开销之和。
根节点RTA的Router-LSA中存在TransNet中Link ID为10.1.12.2 Metric=1和P-2-P中Link ID为3.3.3.3 Metric=48的两个连接,被添加进候选列表中。
RTA将候选列表中候选总开销最小的节点10.1.12.2移到最短路径树上,并从候选列表中删除。