一、准备知识
链路状态路路由选择算法是一种全局式路由选择算法。在此算法中,我们是假设所有网络拓扑和链路费用都是已知的(实践中通常是通过让每个结点向网络中所有其他节点广播链路状态分组来完成的)【OSPF协议】,通过节点广播使所有结点具备了该网络等同的完整视图。获得视图之后,通过LS算法可以计算出从源节点到网络任意结点的最低费用路径。
.
我们下面给出的链路状态路由选择算法叫做Dijkstra算法,在了解此算法之前,我们首先明白以下几个记号:
D(v):表示从源节点到目标结点v的最低费用路径的费用
p(x):从源结点到目标节点v(最低费用路径)的前一个结点(v的邻居)
N':如果从源到v的最低费用路径已知,那么可以将v加入N'集合中
w:可被加入到N' 中结点,且节点的费用最小
.
二、LS算法原理
我们通过图来形象化描述路由选择问题,G=(N,E)是一个有N个节点(代表路由器),E条边(代表链路)的图(代表网络拓扑)。每条链路上的数字代表此链路的费用,如下图所示:
图1-1 网络拓扑及链路费用图
.
假设源节点为u,我们要找到从源节点到其他节点的最低消费路径,其算法如下:
1、初始化:
N'