专利名称:一种建立最短路径树的方法
技术领域:
本发明涉及网络路由选择方法,特别涉及一种采用SPF(最短路径优先)算法的建立最短路径树的方法。
背景技术:
在数据通讯网络中,可以将网络抽象化为枝和点构成的拓扑图,网络中的路由器构成网络中的点。一般情况下,路由器选择最短的路径来传输数据包,SPF算法是路由器中最常用的算法之一。例如在ISIS(网络链路状态路由协议)中就是采用SPF算法选择最优路由的。每个路由器使用SPF算法,在纵横交错的网络中找出以自己为根的最短路径树,路由器根据该最短路径树,决定数据包的转发路径。图1显示了SPF的计算过程。其基本方法是第一步,在网络拓扑中找到当前节点的相邻节点W。
第二步,判断是否将节点W加入侯选节点集合,包括如下步骤如果在最短路径树中已经有到节点W的路径,则返回第一步,检查下一个相邻节点。否则,判断侯选节点集合中有没有节点W;如果侯选节点集合中没有节点W,则直接将W加入到侯选节点集合中;如果侯选节点集合中有节点W,设为W′,计算W到根节点R的距离D,和W′到根节点的距离D′进行比较,如果D·D′,则将W加入到侯选节点集合中,否则,检查下一个相邻节点。
第三步,选出最短距离路径节点并放入最短路径树。
第四步SPF计算的初始化将根节点放入最短路径树,反复执行以上三个计算步骤,到侯选节点集合为空时停止计算,此时网络中根节点A的最短路径树就建立起来了。
下面结合图1来说明SPF算法的执行过程。图2(a)和(b)分别是一个示意性的网络拓扑图,各节点A~E间的距离或称量度(Metric)以图中的数字例示。其中图2(a)中显示了各节点间距离都不为零的情况,而图2(b)显示了节点B、D间距离为零的情况。
首先,参考图2(a),SPF算法通过初始化将根节点A放入最短路径树中。按照前面所述的第一到第三步执行第一次的SPF计算。结果,最短路径树为A·A,Metric=0。
然后,从第一到第三步执行第二次的SPF计算。在网络拓扑图中,取节点A的相邻的节点B和D放入候选节点集合中。接下来,从候选节点集合中选择一个到A距离最短的节点开始计算,此时有可能选B,也有可能选D。假设此时选择了B,则A·B为到B的最短路径,因此将A·B放入最短路径树。此后,节点B就不会再被放入候选节点集合中。结果,最短路径树为A·A,Metric=0A·B,Metric=2接着,从第一到第三步执行第三次的SPF计算。取节点B的相邻节点C和D放入候选节点集合中,与第二次SPF计算相同,此时假设选择D(此时的D相当于W节点)。由于在侯选节点集合中已存在A·D的路径(此时的D相当于W′节点),即A·D(距离为2)。而在该次SPF计算中D作为B的相邻节点放入侯选节点集合中,则存在路径A·B·D(距离为3)。显然此处A·D为根节点A到节点D的最短路径。因此将A·D放入最短路径树中。节点D就不会再被放入候选节点集合中。最短路径树为A·A,Metric=0A·B,Metric=2A·D,Metric=2对于节点B的相邻节点C,根据SPF算法,求出根节点A与节点C的距离。存在两条A·C的路径,即A·B·C(距离为3)和A·D·B·C(距离为4)。根据最短路径优先的原则,将A·B·C放入最短路径树中。此后,节点C就不会再被放入候选节点集合中。结果,最短路径树为A·A,Metric=0A·B,Metric=2A·D,Metric=2A·B·C,Metric=3再从第一到第三步执行第五次的SPF计算。取节点D的相邻节点B和E,根据SPF的算法,节点B不再放入候选节点集合中。因此只有节点E放入节点候选节点集合中。求出节点A与节点E的距离。将最短距离A·D·E放入最短路径树中。候选节点集合清空,SPF算法结束。最终的最短路径树为A·A,Metric=0A·B,Metric=2A·D,Metric=2A·B·C,Metric=3A·D·E,Metric=3下面参考图2(b),说明上述常规的SPF算法中的问题。
图2(b)与图2(a)的差异在于,节点B和D之间的距离为零。在这种情况下,按照现有的SPF算法进行路由选择就会出现问题。具体地说,在图2(b)所示的情况下,现有的SPF算法仍然如上面所描述的情况那样,将A·B的最短路径加入根节点A的最短路径树,再将A·D的最短路径加入根节点A的最短路径树。由于A·B·D在图2(b)的情况下也是最短路径(Metric=2),因此,在第三次SPF计算后,最短路径树为,A·A,Metric=0A·B,Metric=2A·D,Metric=2A·B·D,Metric=2在图2(b)所示的情况下,显然可以看出,存在从A·B·C和从A·D·B·C两条最短的路径。但是,按照现有的SPF算法的第二步,由于在第二次的计算中已找出了从A到B的最短路径,故节点B不再放入侯选节点集合中。因此在第三次计算中就不可能再计算出A·D·B和A·D·B·C两条最短的路径。从而漏掉了两条路由。换言之,采用现有技术的SPF算法来建立最短路径树,在网络节点间距离为0的情况下,就不能正确得到所有的路由。
发明内容
因此,为了克服上述现有技术不能在网络节点间距离为零的情况下不能正确计算出所有路由的缺陷,本发明提出了一种改进的采用SPF算法的建立最短路径树的方法。
根据本发明的方法包括如下步骤1)在网络拓扑中找到当前节点的相邻节点;2)如果在最短路径树中已经存在从根节点到相邻节点的最短路径,判断是否存在到该相邻节点的等价路由;和3)如果存在等价路由,则将该相邻节点加入侯选节点集合中,参加最短路径的计算。
在本发明的一种实施方案中,判断是否存在等价路由的步骤包括2-1)将所述相邻节点到所述最优节点之间的路径与所述最短路径进行路径距离的比较;2-2)如果两条路径的距离相等,则比较两条路径的下一跳;2-3)如果两条路径的下一跳不同,则表明存在到该相邻节点的等价路由。
本发明的方法还可进一步包括如下步骤4)将根节点在初始时放入最短路径树,作为最初的当前节点;和5)重复上述步骤1)至3)。
根据本发明的方法,有效地解决了现有技术对于网络节点间距离为零情况下存在路由计算漏缺的问题,能够正确地建立最短路径树。
下面结合附图和实施例对本发明作进一步说明。
图1是常规的SPF计算过程的示意图;图2(a)和(b)是运用常规SPF算法建立最短路径树的网络拓扑的示例图;图3是本发明的建立最短路径树的方法的优选实施方案的流程图。
优选实施方式的说明参考图3,以一个优选的实施方案来说明本发明的建立最短路径树的方法。为了便于理解,仍以图2(b)所示的网络拓扑结构为例来说明。
在该实施方案中,建立根节点A到节点B、D的最短路径树的过程即前三次的计算与前面描述的现有技术情况相同,在此不再赘述。在经过第三次计算后,最短路径树为A·A,Metric=0
A·B,Metric=2A·D,Metric=2A·B·D,Metric=2接下来,在第四次计算中,取出D节点的相邻节点B和E。
由于最短路径树中存在到B的最短路径,在现有技术中B就不能再放入侯选节点集合中。而根据本发明的方法,先要判断是否存在有从根节点A到B的等价路由。即,比较从A到B的其它路径与当前最短路径的距离。在本例中还有A·D·B的路径。比较A·D·B和A·B两条路径的距离。如果A·D·B路径距离大于A·B的路径,则同样不将节点B放入根目录中。如果相等,则比较A·D·B和A·B的下一跳,即根节点A之后的那个节点。因为A·D·B的下一跳是D,而A·B的下一跳是B,比较结果是下一跳不一样,表明A·D·B与A·B的路径是等价路由。因此,将节点B和E放入候选节点集合。
然后,将节点B的路由A·D·B放入最短路径树。另一方面,A·B·D·B和A·B的距离相等,所以也要按上述方法比较这两条路径的下一跳,比较结果是这两条路径的下一跳都是B。因此路径A·B·D·B不是最短路径A·B的等价路径,不能加入最短路径树。然后,再次将节点B移出候选节点集合。这样,最短路径树为A·A,Metric=0A·B,Metric=2A·D,Metric=2A·B·D,Metric=2A·D·B,Metric=2接下来,进行第五次计算。先取B的相邻节点D和C。由于在最短路径树中已经存在到D的最短路径,即A·B·D和A·D·B·D,而且它们各自的下一跳相同,所以D不用放入候选节点集合中参加计算,只将节点C加入候选节点集合中,求出根节点A到节点C的最短路径。
因为有两条从根节点A到节点C的路径,即A·B·C和A·D·B·C。通过计算可知A·B·C和A·D·B·C的路径距离相同。且它们的下一跳相同。因此,这两条路径是等价路由。将节点C的两条等价路由加入最短路径树中。并将节点C移出候选节点集合。此时,最短路径树就变为A·A,Metric=0A·B,Metric=2A·D,Metric=2A·B·D,Metric=2A·D·B,Metric=2A·B·C,Metric=2A·D·B·C,Metric=3最后,再进行第六次计算。此时,在候选节点集合中只有节点E。路径搜索表明存在两条从根节点到节点E的路径A·D·E和A·B·D·E。按照如上所述的方法判断出这两条路径距离相等(Metric=3),且下一跳也相同,因此这两条路径也是到节点E的等价路由。将这两条路径A·D·E和A·B·D·E放入最短路径树中,并将侯选节点集合清空。至此,SPF计算结束,最后完成了根节点A的最短路径树A·A,Metric=0A·B,Metric=2A·D,Metric=2A·B·D,Metric=2
A·D·B,Metric=2A·B·C,Metric=2A·D·B·C,Metric=3A·D·E,Metric=3A·B·D·E,Metric=3从上面的说明可以看出,本发明的方法在上述例子的网络拓扑结构中存在节点间距离为零的情况下,也能够正确地计算出所有的最短路径,包括在现有技术的方法中未能求出的路径A·D·B·C。因此,本发明很好地解决了关于建立最短路径树的现有技术在网络节点间距离为零(Metric=0)情况下不能正确求出所有最短路径的问题。
上述说明只是通过一个简单的网络拓扑结构的例子对本发明的技术构思和技术方案进行了解释,目的是为了使本领域技术人员更好地理解本发明的精神实质。因此上述说明并不是对本发明的具体限定。现实中的网络拓扑结构当然也会复杂得多。本领域技术员可以理解,本发明可以适应于包括网络节点间距离为零等情况下的各种网络拓扑结构。并且在本发明的精神和实质的基础上也可以进行各种修改和等同方式的替换。
权利要求
1.一种建立最短路径树的方法,所述方法采用SPF算法,其特征在于,包括如下步骤1)在网络拓扑中找到当前节点的相邻节点;2)如果在最短路径树中已经存在从根节点到所述相邻节点的最短路径,判断是否存在到该相邻节点的等价路由;和3)如果存在等价路由,则将该相邻节点加入侯选节点集合中,参加最短路径的计算。
2.根据权利要求1所述的方法,其特征在于,所述步骤2)中判断是否存在等价路由的步骤包括2-1)将所述相邻节点到所述根节点之间的路径与所述最短路径进行路径距离的比较;2-2)如果两条路径的距离相等,则比较两条路径的下一跳;2-3)如果两条路径的下一跳不同,则表明所述两条路径为从所述根节点到该相邻节点的等价路由。
3.根据权利要求2所述的方法,其特征在于,在所述步骤2)之后进一步包括如下步骤2’)如果在最短路径树中没有从根节点到所述相邻节点的最短路径,则直接将该相邻节点加入到侯选节点集合中。
4.根据权利要求3所述的方法,其特征在于,进一步包括如下步骤2”-1)如果所述侯选节点集合中已经有所述相邻节点,则计算要加入到所述侯选节点集合中的所述相邻节点到根节点的距离;和2”-2)如果该距离小于所述的在侯选节点集合中已经存在的相邻节点到所述根节点的距离,则将所述相邻节点加入到所述侯选节点集合中。
5.根据权利要求1-4任一项所述的方法,其特征在于,进一步包括如下步骤4)将从所述根节点到所述相邻节点的最短路径加入最短路径树;和5)将所述最短路径已加入最短路径树中的所述相邻节点从当前侯选节点集合中去掉。
6.根据权利要求5所述的方法,其特征在于,所述当前节点最初为根节点。
7.根据权利要求6所述的方法,其特征在于,进一步包括6)当所述侯选节点集合为空时,结束最短路径树的建立过程。
全文摘要
本发明提供了一种改进的采用SPF算法建立最短路径树的方法。该方法包括在网络拓扑中找到当前节点的相邻节点;对于在最短路径树中已经存在最短路径的相邻节点,判断是否存在到该相邻节点的等价路由;如果存在等价路由,则将该相邻节点加入候选节点集合中,参加路径计算。本发明的方法能够很好地解决关于建立最短路径树的现有技术在网络节点间距离为零情况下不能正确求出所有最短路径的问题。
文档编号H04L12/56GK1518297SQ03142620
公开日2004年8月4日 申请日期2003年6月8日 优先权日2003年1月27日
发明者贺骞, 饶远, 盛成, 张江平, 贺 骞 申请人:华为技术有限公司