ISIS SPF算法简单过程
一、Bellman-Ford算法:每个节点基于直连邻居的开销再加上邻居通告的其他路由器的开销来计算路由。
算法本身会有环路产生的可能
收敛慢
占用资源少
二、什么是SPF
也叫做Dijkstra算法(Shortest Path First)
目的在于计算到达网络拓扑中其它路由器的最短路径
通过计算得到的最短路径树SPT (Shortest Path Tree),我们可以建立路由表 (路由信息表 Routing Information Base )
三、SPF创建并维护的三张表
四、算法执行,重复执行以下三步N次
从tentative list 的所有路由器中找出离自己(根)最近的节点,并把它从tentative list 移到 paths list
发现此节点通告的所有前缀并安装到RIB中
发现此节点的所有邻居并把这些邻居移动到 tentative list 中
在IS-IS中,IP前缀是最短路径树上的叶子
不使用IP 前缀来计算和建立SPT
使用CLNS System-ID 来标记路由器
i--SPF(Incremental SPF)
>算法
>树中不改变的部分保持原样
>重新计算树中受影响的部分
>把受影响的部分和保持原样的部分整合到一起
>为了实现 i-SPF,我们必须
>维护父列表 parent list
>维护邻居列表 neighbour list
>使用更多的内存
>i-SPF的计算时间是不可预测的,但是 i-SPF 比完全 SPF要快
>发生改变的地方离根越远,执行i-SPF来更新SPF所需的时间越短
>如果发生变化的地方离执行SPF计算的节点很近,那么i-SPF算法不会带来太多的好处
*SPF实例
z 刚开始时
z 因为A是根,所以把它移动到Path list
z 把A的邻居移动到 Tentative list
z 把 C,3,S1 移动到 Paths list
z 把C的邻居移动到 Tentative list
z 把 E,3,S3 移动到 Paths list
z 把 E的邻居移动到Tentative list
z 把 B,5,S0 移动到Paths list
z 把 B的邻居移动到 Tentative list
z 把 D,5,S3 移动到 Paths list
z 把D的邻居移动到 Tentative list
z 把 F,11,S0 和 F,11,S3 移动到 Paths list
z 因为Tentative list 已经空了,所以SPF计算结束