上一页 [1] [2] [3] [4] 下一页
2.2 OSPF中最短路径的计算 下面简单介绍一下OSPF的最短路径计算过程,具体的细节处理请参考RFC2328: 首先,计算Area内部路由。因为Router LSA和Network LSA精确的描述出了整个Area内部的网络拓扑,所以根据Dijkstra算法,可以计算出到各个节点(路由器)的最短路径。然后根据Router LSA描述的与路由器相连的网段情况,就得到了到各个网段的最短路径。注意,计算过程中,如果有多条代价相同的最短路径,都保留。 其次,计算跨Area的路由。因为从一个Area内部看,相邻Area的路由对应的网段就好像是直接连在ABR上,而到ABR的最短路径已经在上一步算出,所以直接检查Nerwork Summary LSA,就可以很容易得到这些网段的最短路径值。另外,ASBR也被看做是直接连接在ABR上,所以到ASBR的最短路径也可在这一步计算出来。注意:在这一步,如果发起计算的路由器是ABR,那么很自然,应该只考虑骨干区域的Network Summary LSA;但是对于启用了Virtual Link的拓扑来说,跨Area的路由只是逻辑上通过骨干区域,而实际是通过Transit Area到达的,因为逻辑链路可能并不是物理上最优的,所以在连接到Transit Area的ABR上,考察骨干区域的Network Summary LSA得到的跨Area路由的路径可能不最优,还需要考察Transit Area的Network Summary LSA,以得到最短路径。 最后,计算AS外部路由,因为AS外部路由可以看做是直接连接在ASBR上,而到ASBR的最短路径在上一步已经计算出来,所以逐条检查AS External LSA就可以得到到各个外部网络的最短路径。 2.3 下一跳和出接口 路由表中还有两个重要元素:下一跳和出接口。因为确定这两个元素和计算过程有一定关系,这里也提一下。 其实,一个简单事实是,对于任何一条路径来说,其下一跳和出接口,必然和他的父路径的下一跳和出接口相同。因此,求所有路径的下一跳和出接口,最后可以归结为求到“和V0直接相连的节点”的下一跳和出接口。对于OSPF来说,因为使用了DR模拟伪节点,所以“和V0直接相连的节点”是一台路由器或者是一个伪节点(即广播网、NBMA网络)。 前面Dijkstra算法已经提到,求到各个节点或网段的最短路径的过程,是一个候选路