CN103763191A - 基于生成树的域内多路径生成方法 - Google Patents
基于生成树的域内多路径生成方法 Download PDFInfo
- Publication number
- CN103763191A CN103763191A CN201410031195.6A CN201410031195A CN103763191A CN 103763191 A CN103763191 A CN 103763191A CN 201410031195 A CN201410031195 A CN 201410031195A CN 103763191 A CN103763191 A CN 103763191A
- Authority
- CN
- China
- Prior art keywords
- node
- cost
- current
- queue
- interim
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000009191 jumping Effects 0.000 claims description 32
- 230000014509 gene expression Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- ABEXEQSGABRUHS-UHFFFAOYSA-N 16-methylheptadecyl 16-methylheptadecanoate Chemical compound CC(C)CCCCCCCCCCCCCCCOC(=O)CCCCCCCCCCCCCCC(C)C ABEXEQSGABRUHS-UHFFFAOYSA-N 0.000 description 2
- 241000764238 Isis Species 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005417 image-selected in vivo spectroscopy Methods 0.000 description 2
- 238000012739 integrated shape imaging system Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于生成树的域内多路径生成方法,包括:按照优先级结构将结点加入到创建的优先级队列中;判断优先级队列是否为空,若不空,则选取优先级队列的队首元素,并将其删除;访问队首元素的所有邻居结点,判断各结点是否被访问过,若未被访问过,则更新该结点信息,并将更新后的信息添加到优先级队列中,否则,根据设定规则计算根结点到队首元素的下一跳以及根结点到当前邻居结点的下一跳;若访问完所有邻居结点,则返回判断优先级队列是否为空的步骤。本发明方法可以为运行算法的某一结点到目的结点计算出多条无环的路径,并且运行算法的结点只需要维护一个多路径树即可,降低了复杂度。
Description
技术领域
本发明属于互联网技术领域,涉及域内路由生成方法,具体涉及一种基于生成树的域内多路径生成方法。
背景技术
互联网由上万个独自运维的自治系统AS(Autonomous System)构成。
域内链路状态路由协议(OSPF和ISIS)控制着AS内部的报文转发路径,但是OSPF和ISIS没有很好的利用网络中固有的路径多样性,从源结点到目的结点只能计算出一条最短路径,因此网络的可靠性和安全性都比较差。而多路径路由算法则很好的利用了网络中固有的路径多样性,可以为源结点到目的结点计算出多条路径,因此极大的提高了网络的可靠性和安全性,并且很容易实现负载均衡。
目前已经提出了很多种多路径路由的解决方案。例如,等值多路径路由协议(EqualCost Multipath Routing,ECMP),ECMP可以为源结点到目的结点计算出多条等值的最短路径,网络管理员可以通过调节边的权值来构造多条最短路径,然而这个问题被证明是NP-Hard问题。
多路径算法(Multiple Path Algorithm,MPA)的核心思想是当运行算法的结点的邻居结点到目的结点的最小代价小于该结点到目的结点的最小代价时,该结点可以选择此邻居结点作为其到目的结点的下一跳。如果要实现MPA,运行算法的结点必须得到其所有邻居结点到目的结点的最小代价。可以通过两种方法得到该节点的所有邻居结点到目的结点的最小代价,第一种方法是在该结点上构造以邻居结点为根的SPT,但是这种方法增加了算法的复杂度,另外一种方法是邻居结点将其计算的到目的结点的最小代价传递给该结点,而这种方法则增加了通信开销。最近IETF提出了多拓扑路由(Multi-topology routing),该方法的特点是预先假设某些链路失效,在去除失效链路的网络拓扑图中计算最短路径,该方法同样需要在一个结点上计算多个SPT,因此算法的时间复杂度比较高。
因此,需要本领域研究人员迫切解决的一个问题就是如何计算出从运行算法的结点到目的结点的多条无环路径的同时降低算法复杂度。
发明内容
本发明所要解决的技术问题之一是需要提供一种基于生成树的域内多路径生成方法,该方法能够在计算出某一结点到目的结点的多条无环路径的同时降低算法复杂度。
为了解决上述技术问题,本发明提供了一种基于生成树的域内多路径生成方法,包括:步骤1,初始化一网络的所有结点的结点信息;步骤2,创建优先级队列,按照优先级结构将根结点加入到所述优先级队列中,所述优先级结构包括结点的路由ID、结点的当前代价和结点的当前父结点;步骤3,判断所述优先级队列是否为空,若判断结果为否,则执行步骤4,否则结束操作;步骤4,根据出队列规则选取所述优先级队列中的队首元素,并将其从所述优先级队列中删除,其中,所述出队列规则为:
(1)选取当前代价中最小的结点作为队首元素;
(2)当有多个结点具有相同的最小当前代价时,选取当前父节点的跳数最小的节点;
(3)当有多个结点具有相同的最小当前代价,且当前父节点的跳数相同,则选取路由ID最小的结点;
步骤5,判断所述队首元素是否为根结点,若不是且其未被访问过,则更新该队首元素的结点信息,并计算根结点到该队首元素的最优下一跳;
步骤6,访问所述队首元素的邻居结点,判断当前邻居结点是否被访问过,
其中,若当前邻居结点未被访问过,则更新关于当前邻居结点的结点信息,并将更新后的信息按照优先级结构添加到所述优先级队列中,否则,根据设定规则计算所述根结点到所述队首元素的下一跳以及所述根结点到当前邻居结点的下一跳;
步骤7,判断当前邻居结点是否是该队首元素的最后一个邻居结点,若是,则返回步骤3,否则获取下一个邻居结点并返回步骤6。
在一个实施例中,通过以下表达式来计算最优下一跳Bc(v):
其中,Pc(v)表示结点v的父结点,Hc(v)表示结点c到结点v的跳数,Bc(Pc(v))表示结点c到结点Pc(v)的最优下一跳。
在一个实施例中,所述设定规则为:
假设多路径树中的两个互为邻居关系的结点u和v,如果下面三个条件中的任何一个成立时,则可以将Bc(v)加入到Nc(u),
(1)Dc(u,v)<Cc(u)
(2)Dc(u,v)=Cc(u),Hc(v)<Hc(u)
(3)Dc(u,v)=Cc(u),Hc(u)=Hc(v),R(Bc(v))<R(c)
其中,Bc(v)表示根结点c到结点v的最优下一跳,Nc(u)表示根结点c到结点u的下一跳的集合,Dc(u,v)=Cc(v)-Cc(Bc(v))+LC(u,v),Cc(v)表示根结点c到结点v的代价,Cc(Bc(v))表示根结点c到结点Bc(v)的代价,LC(u,v)表示结点u和结点v的直连代价,Cc(u)表示根结点c到结点u的代价,Hc(u)表示根结点c到结点u的跳数,Hc(v)表示根结点c到结点v的跳数,R(c)表示根结点c的路由ID,R(Bc(v)表示根结点Bc(v)的路由ID。
在一个实施例中,在所述步骤1中,进一步,设置根结点的最小代价为0,将除所述根结点以外的结点的最小代价设置为无穷大;将所有结点的父结点设置为空;将所有结点的访问标记属性设置为未访问。
在一个实施例中,在所述步骤6中,若队首元素v的当前邻居结点u未被访问,则计算结点u的临时代价为tcc(u)=Cc(v)+L(v,u),其中,Cc(v)表示根结点c到队首元素v的最小代价,L(v,u)表示结点u和结点v的直连代价;临时父结点pcc(u)为v,将结点u、它的临时父结点和临时代价按照下面的规则存入优先级队列中:
如果队列中没有该结点的信息,则直接将该结点、该结点的临时代价和临时父结点存入优先级队列中;
如果队列中已经有该结点的信息,则比较该结点的临时代价和当前在队列中该结点的代价,如果临时代价较小,则利用该结点的临时代价和临时父结点更新队列中该结点的当前代价和当前父结点;
如果队列中已经有该结点的信息,且该结点的临时代价和当前在队列中该结点的代价相等,则比较该结点的临时父结点和当前父结点的跳数,如果临时父结点的跳数较小,则利用该结点的临时父结点更新队列中该结点的当前父结点;
如果队列中已经有该结点的信息,且该结点的临时代价和当前在队列中该结点的代价相等,以及该结点和临时父结点和当前父结点的跳数也相等,则比较临时父结点和当前父结点的路由ID,如果临时父结点的路由ID较小,则利用该结点的临时父结点更新队列中该结点的当前父结点。
在一个实施例中,在所述步骤5中,更新该队首元素的访问属性、当前最小代价、当前父节点以及根结点到其的跳数。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
本发明提出了一种基于生成树的域内多路径生成方法,该方法可以为运行算法的某一结点到目的结点计算出多条无环的路径,并且运行算法的结点只需要维护一个多路径树(Multipath Tree,MPT)即可。该方法的时间复杂度和Dijkstra算法是相同的,并且该方法可以为运行算法的结点到目的结点计算出更多的路径。另外,本发明充分利用了网络中路径的多样性,因此具有更高的可靠性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据本发明一实施例的基于生成树的域内多路径生成方法的流程示意图;
图2是一简单网络的拓扑示意图;
图3是根据本发明方法获取图2所示网络中根结点a的最短路径树和a到其它结点的下一跳的示例图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。
为了弥补现有方法的不足,本发明提出了一种基于生成树的域内多路径生成方法。为了确保该方法计算出的从某一源结点到目的结点的路径是没有环路的,网络中所有的结点必须保持一致的计算信息,但是网络中所有的结点是分布式计算的,因此要想得到一致的计算信息,每个结点必须进行相同的计算或者通过邻居交换信息。
在OSPF中每个结点以自身为根结点构造SPT,虽然每个结点构造的SPT是不相同的,但是每个结点计算出的到目的结点的最小代价是相同的,因此可以保证计算出的路径是无环的。
为了方便描述,我们先定义一些标记,这些标记适用于整个发明。我们将网络抽象为一个无向图G(V,E),其中V和E分别代表图的顶点和边,LC(u,v)是结点u和结点v的直连代价,当结点u和结点v不是邻居时,该值为无穷大,R(v)表示结点v的路由ID(RouterID)。在多路径树中,Cc(v)表示根结点c到结点v的代价;Hc(v)表示根结点c到结点v的跳数;Pc(v)表示结点v的父节点(parent)。Nc(v)表示根结点c到结点v的下一跳的集合,Bc(v)表示根结点c到结点v的最优下一跳,且表示如下:
为了描述更加清晰简单,我们将用“结点的最小代价”表示“当前运算的结点c到该结点的最小代价”,“结点的跳数”表示“c到该结点的跳数”。
下面定义选取下一跳的规则:
规则1:假设MPT中的两个结点u和v(u,v互为邻居关系),如果下面三个条件中的任何一个成立时,则可以将Bc(v)加入到Nc(u)。
(1)Dc(u,v)<Cc(u)
(2)Dc(u,v)=Cc(u),Hc(v)<Hc(u)
(3)Dc(u,v)=Cc(u),Hc(u)=Hc(v),R(Bc(v))<R(c)
其中,Dc(u,v)=Cc(v)-Cc(Bc(v))+LC(u,v)。
图1是根据本发明一实施例的基于生成树的域内多路径生成方法的流程示意图,下面参考图1来详细说明本实施例的各个步骤。
步骤S110:初始化一网络的所有结点的结点信息。
具体地,初始化的结点信息包括每个结点的代价、父亲结点、子孙结点以及访问标记属性(visited)。为每个结点定义一个访问标记属性,设置初值为未访问false,当该结点加入到多路径树MPT后,设置访问标记属性为已访问true。
更具体地,初步设置根结点,例如对于根结点c,设置c的最小代价为0,即Cc(c)=0,将除c以外的任意结点v的最小代价设置为无穷大,即Cc(v)=∞。将所有结点的父结点设置为空,即Pc(v)=NULL。将所有结点的访问标记属性(visited)设置为未访问,即v.visited=False,表示结点没有加入到多路径树。
如图2所示,其为一简单网络的拓扑图,在该网络中包括5个结点,分别为结点a、b、c、d和e。每条链路上的数字表示所连接的两结点之间的直连代价,例如,结点a到结点b的直连代价L(a,b)为10。在构造以结点a为根的最短路径树时,首先需要按照上述步骤将该网络中的所有结点进行初始化。
步骤S120:创建优先级队列Q,将根结点c的优先级结构信息加入到优先级队列Q中。
需要说明的是,该优先级队列Q中元素的结构为QStruct(ID,TC,TP),其中ID表示结点的路由ID,TC表示结点的当前代价,TP表示结点的当前父结点。将根结点c的QStruct信息加入到Q中,完成该步骤后,Q中目前只有一个元素Q(c,0,NULL)。
步骤S130,判断优先级队列Q是否为空,若判断结果为否,则执行步骤S140,否则结束操作。
步骤S140,根据出队列规则取出优先级队列Q中的队首元素(Cur),设置该元素为当前结点,并且将该元素从队列Q中删除。
其中,该出队列的规则如下:
(1)选取TC最小的结点。
(2)当有多个结点有相同的最小TC时,选择TP的跳数最小的结点。
(3)当有多个结点有相同的最小TC,并且TP的跳数相等时,选择ID最小的结点。
当一个结点出队列后,该结点的最小代价和父结点就确定了,并且将该结点的访问标记属性(visited)设置为已访问。
如果当前结点不是根结点c,并且访问属性为False,则变更当前结点v的访问标记属性为已访问(v.visited=True),并且更新当前结点的代价:Cc(v)=tc;父结点:Pc(v)=tp;跳数:Hc(v)=Hc(Pc(v))+1。并且根据以下表达式来计算根结点c到当前结点v的最优下一跳Bc(v)。
步骤S150,访问队首元素Cur的所有邻居结点u。
步骤S160:判断当前邻居结点是否被访问过,如果该邻居结点u未被访问,更新该邻居结点u的结点信息,并将该邻居结点更新后的信息按照优先级结构加入到优先级队列Q中。
具体地,若队首元素v的当前邻居结点u未被访问,则计算结点u的临时代价为tcc(u)=Cc(v)+L(v,u),其中,Cc(v)表示根结点c到队首元素v的最小代价,L(v,u)表示结点u和结点v的直连代价;临时父结点pcc(u)为v,将结点u、它的临时父结点和临时代价按照下面的规则存入优先级队列中:
如果队列中没有该结点的信息,则直接将该结点、该结点的临时代价和临时父结点存入优先级队列中;
如果队列中已经有该结点的信息,则比较该结点的临时代价和当前在队列中该结点的代价,如果临时代价较小,则利用该结点的临时代价和临时父结点更新队列中该结点的当前代价和当前父结点;
如果队列中已经有该结点的信息,且该结点的临时代价和当前在队列中该结点的代价相等,则比较临时父结点和当前父结点的跳数,如果临时父结点的跳数较小,则利用该结点的临时父结点更新队列中该结点的当前父结点。
如果队列中已经有该结点的信息,且该结点的临时代价和当前在队列中该结点的代价相等,以及该结点的临时父结点和当前父结点的跳数也相等,则比较临时父结点和当前父结点的路由ID,如果临时父结点的路由ID较小,则利用该结点的临时父结点更新队列中该结点的当前父结点
如果该邻居u已经被访问,根据上述规则1计算根结点c到邻居结点u的下一跳和该根结点c到队首元素Cur的下一跳。
步骤S170,判断当前邻居结点是否是该队首元素的最后一个邻居结点,若是则返回步骤S130,否则获取下一个邻居结点并返回步骤S160。
当队列Q中的元素为空时,算法执行完毕。此时已经计算出根结点c到所有结点的下一跳,将这些下一跳存入到路由表中。
如图3所示,为根据本实施方法计算得到的关于图2所示网络中根结点a的最短路径树的整个过程。在图3中,依次访问并添加根结点a的邻居结点,如访问结点b的时候,得到了根结点a与结点b的关系,即B(b)=b,N(b)={b},直到访问完e,构造了关于根结点a的最短路径树。
根据上述对算法的描述,构造MPT的规则如下:
1.首先将c加入到MPT中;
2.除去c以外的其它结点,按照(1)、(2)和(3)加入到MPT;
(1)选择代价最小的结点加入到MPT;
(2)如果多个结点有相同的最小代价,选择跳数最小的结点加入到MPT;
(3)如果多个结点有相同的最小跳数,选择路由ID最小的结点加入到MPT。
下面具体证明利用本发明方法计算出的路径是没有环路的。
定理1:如果网络中所有的结点构造的以d为根结点的最短路径树Td是相同的,当u>Tdv时(u和v互为邻居),如果将v加入至u到目的结点d的下一跳中,则u到d的路径不会出现环路。
证明:假设到目的结点的任意一条路径是<v1,v2……,vk,……>,根据定理1可以得到v1>Tdv2,v2>Tdv3……vk>Tdvk+1……,这条路径上的任意两点存在一个严格的偏序关系,因此这条路径没有环路存在。
定理2:在以c为根结点的最短路径树Tc中,当任意一个条件成立时,u>Tcv。
(1)Cc(u)>Cc(v)
(2)Cc(u)>Cc(v),Hc(u)>Hc(v)
(3)Cc(u)>Cc(v),Hc(u)>Hc(v),R(u)>R(v)
证明:根据上述对算法的描述,定理2中的(1)(2)(3)和构造MPT规则中的(1)(2)(3)分别对应,因此定理2是正确的。
定理3:给定一个任意的网络G和根结点c,利用上述算法构造的MPT是唯一的。
证明:根据定理2中MPT的构造规则可知给定网络拓扑结构和根节点,构造的MPT一定是唯一的。定理3也说明了网络中所有结点构造的以c为根的MPT是一致的,因此如果定理1的偏序关系成立,则从根结点c到任意目的节点的路径一定是没有环路的。
定理4:给定两个结点u和v,Cu(v)=Cv(u)并且Hu(v)=Hv(u)。
定理5:如果根结点c按照本发明方法计算到目结点d的下一跳集合Nc(d)。对于任意的b∈Nc(d),则c>Tdb。
证明:当b是利用最优下一跳规则计算得到时,b一定在从c到d的最短路径上,因此Cb(d)<Cc(d)。由定理4可以得到Cb(d)=Cd(b),Cc(d)=Cd(c)。所以Cd(b)<Cd(c),由定理2可知c>Tdb。
(2)当b是利用选取下一跳的规则(规则1)计算得到时,d一定有一个邻居v并且Bc(v)=b,根据选取下一跳的规则,存在下面三种情况:
(2.1)Dc(d,v)<Cc(d)
这是因为,Cd(b)=Cb(d)≤Dc(d,v)<Cc(d)=Cd(c),所以Cd(c)>Cd(b)。根据定理2可以得到c>Tdb。
(2.2)Dc(d,v)<Cc(d)并且Hc(d)>Hc(v)
这是因为,Cd(b)=Cb(d)≤Dc(d,v)=Cc(d)=Cd(c),所以可以得到两种情况:
1)当Cd(b)<Cd(c)时,根据定理2可以得到c>Tdb。
2)当Cd(b)=Dc(d,v)=Cc(v)-Cc(b)+LC(v,d)=Cd(c)时,因此v在从b到d的最短路径p上。根据定理4可以得到Hd(b)≤H(p)=Hc(b,v)+1=Hc(v),(Hc(b,v)表示在路径p中b到v的跳数,H(p)表示路径p的跳数),因此结合Hc(d)>Hc(v),可以得到Hd(c)=Hc(d)>Hc(v)≥Hd(b)。
这是因为,Cd(b)=Cd(c)和Hd(c)>Hd(b),由定理4可知c>Tdb。
(2.3)Dc(d,v)<Cc(d),Hc(d)=Hc(v),R(c)>R(b)
这是因为,Cd(b)=Cb(d)≤Dc(d,v)=Cc(d)=Cd(c),所以可以得到两种情况:
1)当Cd(b)<Cd(c)时,根据定理1可以得到c>Tdb。
2)当Cd(b)=Dc(d,v)=Cc(v)-Cc(b)+LC(v,d)=Cd(c)时,因此v在从b到d的最短路径p上。根据定理4我们可以得到Hd(b)≤H(p)=Hc(b,v)+1=Hc(v),(Hc(b,v)表示在路径p中b到v的跳数,H(p)表示路径p的跳数),因此结合Hc(d)≥Hc(v),我们可以得到Hd(c)=Hc(d)≥Hc(v)≥Hd(b)。
所以可以得到两种情况:
1)当Hd(c)>Hd(b)时,因为Cd(b)=Cd(c),所以由定理4可知c>Tdb
2)当Hd(c)=Hd(b)时,因为Cd(b)=Cd(c)并且R(c)>R(b),所以由定理4可知c>Tdb
因此定理5成立。
定理6:假设目的为d,如果c选择Nc(d)中的任意一个值作为到d的下一跳,则从c到d的路径一定不会出现环路。
证明:根据定理1,3,5可以证明定理6成立。
综上所述,本发明提出了一种基于生成树的域内多路径生成方法,在该方法中,每一个结点只需要维护一个多路径树,且本方法计算的路径具有较小的路径拉伸度,并且该方法的时间复杂度和Dijkstra是相同的,通过实验发现本发明可以为运行算法的结点到目的结点找到更多的路径。本发明充分利用了网络中路径的多样性,因此具有更好的可靠性。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (6)
1.一种基于生成树的域内多路径生成方法,其特征在于,包括:
步骤1,初始化一网络的所有结点的结点信息;
步骤2,创建优先级队列,按照优先级结构将根结点加入到所述优先级队列中,所述优先级结构包括结点的路由ID、结点的当前代价和结点的当前父结点;
步骤3,判断所述优先级队列是否为空,若判断结果为否,则执行步骤4,否则结束操作;
步骤4,根据出队列规则选取所述优先级队列中的队首元素,并将其从所述优先级队列中删除,其中,所述出队列规则为:
(1)选取当前代价中最小的结点作为队首元素;
(2)当有多个结点具有相同的最小当前代价时,选取当前父节点的跳数最小的节点;
(3)当有多个结点具有相同的最小当前代价,且当前父节点的跳数相同,则选取路由ID最小的结点;
步骤5,判断所述队首元素是否为根结点,若不是且其未被访问过,则更新该队首元素的结点信息,并计算根结点到该队首元素的最优下一跳;
步骤6,访问所述队首元素的邻居结点,判断当前邻居结点是否被访问过,
其中,若当前邻居结点未被访问过,则更新关于当前邻居结点的结点信息,并将更新后的信息按照优先级结构添加到所述优先级队列中,否则,根据设定规则计算所述根结点到所述队首元素的下一跳以及所述根结点到当前邻居结点的下一跳;
步骤7,判断当前邻居结点是否是该队首元素的最后一个邻居结点,若是,则返回步骤3,否则获取下一个邻居结点并返回步骤6。
2.根据权利要求1所述的域内多路径生成方法,其特征在于,通过以下表达式来计算最优下一跳Bc(v):
其中,Pc(v)表示结点v的父结点,Hc(v)表示结点c到结点v的跳数,Bc(Pc(v))表示结点c到结点Pc(v)的最优下一跳。
3.根据权利要求1所述的域内多路径生成方法,其特征在于,所述设定规则为:
假设多路径树中的两个互为邻居关系的结点u和v,如果下面三个条件中的任何一个成立时,则可以将Bc(v)加入到Nc(u),
(1)Dc(u,v)<Cc(u)
(2)Dc(u,v)=Cc(u),Hc(v)<Hc(u)
(3)Dc(u,v)=Cc(u),Hc(u)=Hc(v),R(Bc(v))<R(c)
其中,Bc(v)表示根结点c到结点v的最优下一跳,Nc(u)表示根结点c到结点u的下一跳的集合,Dc(u,v)=Cc(v)-Cc(Bc(v))+LC(u,v),Cc(v)表示根结点c到结点v的代价,Cc(Bc(v))表示根结点c到结点Bc(v)的代价,LC(u,v)表示结点u和结点v的直连代价,Cc(u)表示根结点c到结点u的代价,Hc(u)表示根结点c到结点u的跳数,Hc(v)表示根结点c到结点v的跳数,R(c)表示根结点c的路由ID,R(Bc(v)表示结点Bc(v)的路由ID。
4.根据权利要求1至3中任一项所述的域内多路径生成方法,其特征在于,在所述步骤1中,进一步,
设置根结点的最小代价为0,将除所述根结点以外的结点的最小代价设置为无穷大;
将所有结点的父结点设置为空;
将所有结点的访问标记属性设置为未访问。
5.根据权利要求1所述的域内多路径生成方法,其特征在于,在所述步骤6中,
若队首元素v的当前邻居结点u未被访问,则计算结点u的临时代价为tcc(u)=Cc(v)+L(v,u),其中,Cc(v)表示根结点c到队首元素v的最小代价,L(v,u)表示结点u和结点v的直连代价;临时父结点pcc(u)为v,将结点u、它的临时父结点和临时代价按照下面的规则存入优先级队列中:
如果队列中没有该结点的信息,则直接将该结点、该结点的临时代价和临时父结点存入优先级队列中;
如果队列中已经有该结点的信息,则比较该结点的临时代价和当前在队列中该结点的代价,如果临时代价较小,则利用该结点的临时代价和临时父结点更新队列中该结点的当前代价和当前父结点;
如果队列中已经有该结点的信息,且该结点的临时代价和当前在队列中该结点的代价相等,则比较该结点的临时父结点和当前父结点的跳数,如果临时父结点的跳数较小,则利用该结点的临时父结点更新队列中该结点的当前父结点;
如果队列中已经有该结点的信息,且该结点的临时代价和当前在队列中该结点的代价相等,以及该结点的临时父结点和当前父结点的跳数也相等,则比较临时父结点和当前父结点的路由ID,如果临时父结点的路由ID较小,则利用该结点的临时父结点更新队列中该结点的当前父结点。
6.根据权利要求1所述的域内多路径生成方法,其特征在于,在所述步骤5中,更新该队首元素的访问属性、当前代价、当前父节点以及根结点到其的跳数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410031195.6A CN103763191B (zh) | 2014-01-23 | 2014-01-23 | 基于生成树的域内多路径生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410031195.6A CN103763191B (zh) | 2014-01-23 | 2014-01-23 | 基于生成树的域内多路径生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103763191A true CN103763191A (zh) | 2014-04-30 |
CN103763191B CN103763191B (zh) | 2017-01-18 |
Family
ID=50530353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410031195.6A Active CN103763191B (zh) | 2014-01-23 | 2014-01-23 | 基于生成树的域内多路径生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103763191B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105577535A (zh) * | 2015-12-17 | 2016-05-11 | 清华大学 | 基于多下一跳和备份路径的混合链路保护方法 |
CN108712345A (zh) * | 2018-05-17 | 2018-10-26 | 山西大学 | 基于逐跳计算的分布式负载均衡方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060268691A1 (en) * | 2005-05-31 | 2006-11-30 | International Business Machines Corporation | Divide and conquer route generation technique for distributed selection of routes within a multi-path network |
JP4800067B2 (ja) * | 2006-02-21 | 2011-10-26 | 株式会社エヌ・ティ・ティ・ドコモ | 通信ノード及びルーティング方法 |
CN100531134C (zh) * | 2006-05-17 | 2009-08-19 | 华为技术有限公司 | 一种实现多路径传输的方法、装置和系统 |
CN100594700C (zh) * | 2007-11-30 | 2010-03-17 | 华中科技大学 | 应用于Ad hoc网络的安全多路径路由方法 |
CN101980565B (zh) * | 2010-09-25 | 2013-08-14 | 重庆邮电大学 | 一种基于QoS的Ad Hoc网络自适应节点速度多路径路由方法 |
CN102148832B (zh) * | 2011-04-07 | 2013-06-12 | 清华大学 | 边界网关路由协议路径鉴定方法 |
CN103532861B (zh) * | 2013-09-30 | 2016-09-21 | 清华大学 | 基于生成树的域内动态多路径生成方法 |
-
2014
- 2014-01-23 CN CN201410031195.6A patent/CN103763191B/zh active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105577535A (zh) * | 2015-12-17 | 2016-05-11 | 清华大学 | 基于多下一跳和备份路径的混合链路保护方法 |
CN105577535B (zh) * | 2015-12-17 | 2018-11-20 | 清华大学 | 基于多下一跳和备份路径的混合链路保护方法 |
CN108712345A (zh) * | 2018-05-17 | 2018-10-26 | 山西大学 | 基于逐跳计算的分布式负载均衡方法 |
CN108712345B (zh) * | 2018-05-17 | 2021-07-27 | 山西大学 | 基于逐跳计算的分布式负载均衡方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103763191B (zh) | 2017-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1690357B1 (en) | Method and apparatus for synchronizing a data communications network | |
US8897141B2 (en) | Network system and routing method | |
EP2880826B1 (en) | Label distribution and route installation in a loop-free routing topology using routing arcs | |
KR20100112144A (ko) | 최단 경로 결정시의 타이브레이킹 | |
JP2007503771A (ja) | 使用しているリンクステートとパスベクトルテクニックテクニカルフィールドとをルーティングするためのシステムと方法 | |
CN101483610B (zh) | 链路状态路由协议的路由更新方法 | |
CN108183856B (zh) | 一种路由建立方法和装置 | |
US9319304B2 (en) | Method of routing and a device for an autonomous system | |
CN107294852B (zh) | 一种使用拓扑分散短路径集的网络路由方法 | |
JP4968117B2 (ja) | 経路計算装置および経路計算システム | |
Michael et al. | Optimal link-state hop-by-hop routing | |
CN103532861B (zh) | 基于生成树的域内动态多路径生成方法 | |
WO2013173900A1 (en) | Tie-breaking in shortest path determination | |
CN102195869A (zh) | 双向回溯路径计算方法及装置 | |
CN102355464B (zh) | 具有生存性的Overlay 网络构建方法 | |
CN108199955A (zh) | 一种路由建立方法和装置 | |
CN101909004B (zh) | 基于边缘roadm环结构的多域光网络路由方法 | |
US7545756B2 (en) | Method and apparatus for constructing a forwarding information structure | |
CN104506374A (zh) | 一种isis协议指定路由管理距离的方法 | |
CN103763191A (zh) | 基于生成树的域内多路径生成方法 | |
CN103475579B (zh) | 优化发布LSAmetric的方法及装置 | |
CN104967562B (zh) | 一种物联网设备节点间的路由方法 | |
WO2016177136A1 (zh) | 一种实现链路状态通告处理的方法及装置 | |
WO2017101981A1 (en) | A method for constructing srlg-disjoint paths under qos constraints | |
CN102573000A (zh) | 基于直接/间接矩阵的无线自组织网络保护路由生成算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |