在阅读华为IERS文档后的有关SPF的理解,有些详细原理细节省略 图片来自华为文档 计算域内生成树使用Dijkstra算法计算最短路径 使用如下的拓扑图: OSPF的LSA有七种类型,SPF算法计算最小生成树使用一类Router LSA和二类Network LSA。 第一步:在A路由器上display ospf lsdb router self-originate查看自己链路状态数据库中的一类链路状态信息: 红色部分的Link ID是连接的接口,Data是发出连接的接口,Link Type是链路类型,TransNet表示连接到一个Transit网段(如MA和NBMA),Metric是开销。TransNet类型的网络开销为1,经过一个路由器开销加1,P-2-P网络开销为48,折线表示点对点网络的串行线。第三个链路类型是StubNet表示的是路由信息,以上两种表示的是拓扑信息,路由信息在计算最优路径时在用到,此处不需要。 比较连接的两个网络的开销值,故将路由器B加入生成树。 第二步:同样在A上display ospf lsdb router 2.2.2.2查看B的一类LSA B连接了三个网络,比较开销值,虽然有两个开销相同,但是10.1.12.2已经作为B连接A的接口加入了生成树,故把10.1.235.2的接口加入生成树。 第三步:在A上display ospf lsdb network 10.1.235.2查看10.1.235.2的二类LSA 发现连接3个路由器,由于2.2.2.2已经加入生成树,故分别检查3.3.3.3和5.5.5.5的一类LSA 第四步:在A上display ospf lsdb router 3.3.3.3 同理3.3.3.3连接了两个网络,10.1.13.3的接口连接的P-2-P网络开销大于10.1.235.3接口连接的网络,故将10.1.235.3接口加入生成树。 在A上display ospf lsdb router 5.5.5.5 同理 E路由器连接了两个网络,连接的10.1.235.2已经在生成树中,连接的4.4.4.4开销为48,如果D路由器通过E连接父节点A的话计算距离总开销为50,但是在通过B连接A开销为49,故D应该将B作为父节点加入生成树 最后的生成树如下: