LSDB和SPF算法

1.链路状态数据库(LSDB)
除了洪泛扩散LSA,发现邻居外,链路状态协议的第三个任务就是建立链路状态数据库。链路状态数据库把接收的LSA作为一串记录保存下来。虽然LSA中包括年龄、序列号和其他信息,但这些信息都是用于管理LSA洪泛扩散进程。对于最短路径的决策进程来说,通告路由器ID,连接网络和邻居路由器以及网络和邻居相关联的代价是非常重要的信息。
LSA中的两类通用信息:
路由器链路信息——使用三元组(路由器ID,邻居ID,代价)通告邻居路由器。这里的代价是链路到邻居的代价。
末梢网络信息——使用三元组(路由器ID,网络ID,代价)通告路由器直接相连的末梢网络。
最短路径优先算法对路由器链路信息进行计算以建立到达每台路由器的最短路径树,然后使用末梢网络信息添加网络。LSDB和SPF算法_第1张图片
上图中给出的网络包括路由器及路由器之间的链路。简单起见没有末梢网络。注意,在几条链路两端的代价是不同的。因为代价是按照接口的出站方向计算的,且在一个网络中所有的代价没有必要完全相同。如,RB到RC的链路代价为1,但对于相同链路,从RC到RB的代价为5.
拓扑图所示网络的链路状态数据库大致如下:
LSDB和SPF算法_第2张图片
2.SPF算法
SPF算法中的三个数据库:
1)树数据库——通过向数据库中添加链路实现向最短路径树中添加分支。当算法完成时,这个数据库可以描述最短路径树。
2)候选对象数据库——按照规定的顺序从链路状态数据库中复制链路到该数据库中,作为向树数据库添加的候选对象。算法完成时该数据库为空。
3)链路状态数据库——保存着网络中的所有链路。
SPF算法计算过程:
第1步:路由器初始化树数据库,将自己作为树的根。代价为0.
第2步:查看链路状态数据库,将所有描述通向根的路由器邻居链路三元组添加到候选对象数据库中。
第3步:计算从根到每条链路的代价,将候选对象数据库中代价最小的链路添加到树数据库中,如果2条或多条链路距离根的最小代价相同,选择其中一条添加。
第4步:检查添加到树数据库中的邻居ID,除了已经添加到树数据库中的三元组之外,将链路状态数据库中描述路由器邻居的三元组都添加到候选对象数据库中。
第5步:如果候选对象数据库中还有剩余的表项,回到第3步。如果候选对象数据库为空,那么终止算法。在算法终止时,树数据库中的每个单一的邻居ID表项将表示一台路由器。此时,最短路径树构建完成。
第6步:添加末梢网络。到此SPF算法完成。
以拓扑图中的路由器A为例,计算最短路径树:
LSDB和SPF算法_第3张图片
LSDB和SPF算法_第4张图片

你可能感兴趣的:(概念篇)