CN104396198A - 在最短路径确定中打破平局 - Google Patents
在最短路径确定中打破平局 Download PDFInfo
- Publication number
- CN104396198A CN104396198A CN201280073362.2A CN201280073362A CN104396198A CN 104396198 A CN104396198 A CN 104396198A CN 201280073362 A CN201280073362 A CN 201280073362A CN 104396198 A CN104396198 A CN 104396198A
- Authority
- CN
- China
- Prior art keywords
- identifier
- path
- node
- cost
- ranking criteria
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 50
- 238000012163 sequencing technique Methods 0.000 claims description 42
- 230000007423 decrease Effects 0.000 claims description 26
- 230000001174 ascending effect Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 description 94
- 230000004048 modification Effects 0.000 description 42
- 238000012986 modification Methods 0.000 description 42
- 230000009191 jumping Effects 0.000 description 23
- 238000005516 engineering process Methods 0.000 description 10
- 235000008694 Humulus lupulus Nutrition 0.000 description 7
- 230000008859 change Effects 0.000 description 7
- 230000037361 pathway Effects 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 1
- HJLNKWYSKFDHDG-ZETCQYMHSA-N (2s)-2-amino-5-(3,4-dihydroxyanilino)-5-oxopentanoic acid Chemical compound OC(=O)[C@@H](N)CCC(=O)NC1=CC=C(O)C(O)=C1 HJLNKWYSKFDHDG-ZETCQYMHSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000003455 independent Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/20—Hop count for routing purposes, e.g. TTL
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/48—Routing tree calculation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
通过比较针对多条端对端路径中的每一个的节点标识符的有序集合达成相等成本最短(最低成本)路径之间的一致的打破平局决策。可替换地,通过使用树的分叉分支的节点标识符做出相等成本路径的选择,可以在构造最短路径树时即时达成相同的结果。两个变型允许做出相等成本路径的一致选择,不管在网络中的哪里计算最短路径。这确保任何两个节点之间的业务流在正向方向和反向方向二者上将总是沿相同路径通过网络。
Description
技术领域
本发明一致地涉及在诸如以太网之类的分组转发通信网络中的多个可能性之中选择诸如相等成本(equal-cost)最短路径之类的路径。
背景技术
在分组转发通信网络中,节点可以获悉网络的拓扑并且可以在它获得的拓扑知识的基础上决定它将如何将业务路由到其它网络节点中的每一个。用于选择路径的主要基础是路径成本,其可以在节点之间的许多跳(hop)的方面,或者通过诸如连接节点的链路的带宽之类的一些其它度量或者这二者来指定。开放最短路径优先(OSPF)和中间系统对中间系统(IS-IS)是广泛使用的链路状态协议,其基于每个节点的路径成本的通告而建立最短路径。这些协议通常并不尝试在多条相等成本路径之间打破平局(tie-break)。而是,它们通常跨若干相等成本路径传播业务。传播算法并不被指定并且可以逐个路由器地变化。可替换地,它们可能在不考虑与由其它路由器做出的选择的一致性的情况下做出单个路径的局部选择。结果,在任一种情况中,并不保证流的反方向使用由正方向所使用的路径。
诸如多播开放最短路径优先(MOSPF)之类的多播路由协议取决于构造相同最短路径树的网络中的每一个路由器。为此,MOSPF实现基于链路类型、LAN与点对点的关系以及路由器标识符的打破平局的方案以确保产生相同的树。然而,使打破平局的决定基于具有最大标识符的父代暗示了一般而言由反向(reverse)流使用的路径将与由正向流使用的路径不相同。
生成树协议(生成树协议(STP)、快速生成树协议(RSTP)、多生成树协议(MSTP)是在任意拓扑中创建无回路生成树的方式。生成树协议由网络中的每一个节点执行。所有生成树协议使用基于(桥标识符、端口标识符)的局部打破平局决策来在相等成本路径之间进行选择。在生成树中首先选取根节点,并且然后通过所有节点相对于该根构造树。因此,尽管所有路径对于往返业务而言是对称的(通过定义,简单树使这成为唯一可能的构造),选取过程是缓慢的并且简单树结构不能使用任何冗余容量。类似地,Radia Perlman的Rbridges提案使用父节点的标识符作为平局打破器。
Mick Seaman在他对IEEE 802.1工作组的最短路径桥接提案(http://www.ieee802.org/1/files/public/docs2005/new-seaman-shortest-path-0305-02.pdf)中描述了对快速生成树协议的简单协议增强,其通过添加“切断向量(cut vector)”实施一致的打破平局决策。提案使用每个节点的VID以标识每个节点的生成树。为了适合需要通过单个合法以太网帧中的桥传输的所有信息,该技术当前将以太网的大小限制到32个桥。
图1图示了甚至对于普通网络示例,基于父节点标识符的打破平局方法如何未能产生对称的路径。在该示例中,链路被视为具有相等成本并且因此路径成本的确定简单地考虑跳数。首先考虑计算从A到B的路径。当计算到达节点2时,将发现相等成本路径的存在。存在第一路径(A-1-3-6)和第二路径(A-1-4-5)。如果打破平局算法基于具有最小标识符的父节点选择路径,它将选择第二路径(A-1-4-5),因为节点标识符5小于节点标识符6。然而,现在考虑计算从B到A的路径。当计算到达节点1时,将发现相等成本路径的存在。存在第一路径(B-2-6-3)和第二路径(B-2-5-4)。使用相同的打破平局准则,打破平局算法选择第一路径(B-2-6-3),因为节点标识符3小于节点标识符4。因此可以看到由节点A和B做出的最短路径计算提供不一致的结果。
在诸如对IEEE 802.1aq的提案的提供商链路状态桥接(PLSB)之类的一些新兴协议中存在需求以保持跨用于单播和未知/多播业务二者的网络转发的一致性并且在流的正方向和反方向二者上使用共同路径。因此,重要的是当在相等成本路径之间打破平局时节点可以一致地得出相同的决策。另外,合期望的是节点可以用最小量的处理努力执行打破平局。
发明内容
本发明的第一方面提供了一种确定用于在分组转发网络的第一节点处在转发分组中使用的转发信息的方法。该方法确定网络的第一节点与第二节点之间的最短路径并且确定何时多条最短路径具有大体上相等成本。该方法针对每条大体上相等成本路径形成限定路径中的节点集合的节点标识符集合并且然后使用第一排序准则对节点标识符的每个集合排序以形成路径标识符。第一排序准则独立于其中节点标识符在路径中出现的次序。该方法然后通过比较路径标识符而在多条相等成本路径之间进行选择。网络的每个节点具有唯一的节点标识符。
有利地,第一排序准则为递增词典(lexicographic)次序或者递减词典次序,尽管可以使用创建节点标识符的全有序集合的任何排序准则。
优选地,该方法还包括使用第二排序准则将多个路径标识符排序成有序列表。类似地,第二排序准则可以是创建路径标识符的全有序集合的递增词典次序、递减词典次序或任何排序准则。
本发明的另一方面提供了一种确定用于在分组转发网络的第一节点处在转发分组中使用的转发信息的方法。该方法包括通过迭代地形成最短路径树而确定网络的第一节点与第二节点之间的最短路径并且在形成最短路径树的同时,当多条路径具有相等成本时,确定包括从对相等成本路径共同的分叉(divergence)节点分叉的分支的每条相等成本路径。该方法使用第一选择准则在每个分叉分支中标识节点标识符以形成分支标识符并且通过比较分支标识符而在多个分支之间进行选择。
有利地,该方法使用全排序准则来比较和选择每个分支中的节点标识符,诸如词典次序。
有利地,该方法在回溯到分叉节点的同时记录每一个分叉分支中的满足第一选择准则的节点标识符。这在进一步简化计算和降低存储需求中具有优势。
本发明的两个方面可以用于通过使用不同的第一排序/选择准则和共同的第二排序/选择准则或者通过使用共同的第一排序准则/选择和不同的第二排序/选择准则选择两条相等成本路径。可以以类似的方式通过在节点处一致地应用第一和第二排序/选择准则并且选择有序列表中的特定位置处的标识符来选择三条或四条相等成本路径。
本发明可以用作平局打破器以通过比较针对多个端到端路径中的每一个的节点标识符的有序集合来在相等成本路径之间进行选择。可替换地,已经发现,局部于需要做出选择决策的位置,通过使用树的分叉分支的节点标识符做出相等成本路径的选择,可以在构造最短路径树时即时(on-the-fly)达成相同的结果。这具有降低计算量并且降低需要存储的数据量的优势。可以逐对地比较分支以进一步降低计算量。当网络的大小和复杂性增加时这变得尤为重要。本发明的两个变型具有允许做出相等成本路径的一致选择的重要属性,不论在网络中的哪里计算最短路径。这确保任何两个节点之间的业务流在正向和反向方向二者上将总是沿相同路径通过网络。
本发明不旨在被约束到确定最短路径的任何特定方式:可以使用Dijkstra的算法、Floyd的算法或任何其它合适的替换。
本发明可以用作具有确切相同值的相等成本路径或者二者在链路度量或跳数方面在彼此的期望偏移内的路径之间的平局打破器。这在现实生活情景中对增加合格路径的集合之间的多样性是合期望的。例如,以达成任何两个端点之间的确切相等成本一般所需的对称方式部署节点和链路可能并不总是成本有效的。通过将约束放宽到需要不同路由上的跳计数在彼此的一跳内,适度的不对称仍旧可以导致合格的路由,并且仍旧保证无回路拓扑,因为两跳的差异是达成回路路径所必要的最小值。
将理解,术语“最短路径”不限于仅基于距离确定路径,而是旨在涵盖可以用于指定链路的“成本”的任何度量或度量的组合。度量的非穷举列表为:距离、跳数、容量、速度、使用、可用性。
该方法在相等成本最短路径的选择不受诸如故障节点或链路之类的未在所选路径上的网络部分的移除影响的意义上是稳定的。
有利地,网络是以太网,尽管本发明可以应用于其它类型的分组转发网络,特别是具有对于对称业务路由路径的需求的那些。
在此描述的功能可以以软件、硬件或这些的组合来实现。本发明可以借助于适当编程的计算机或任何形式的处理装置实现。因此,本发明的另一方面提供了用于实现所描述的方法中的任一个的软件。软件可以存储在电子存储器设备、硬盘、光盘或其它机器可读存储介质上。软件可以作为在机器可读载体上的计算机程序产品被递送或者它可以经由网络连接下载到节点。
本发明的另外的方面提供了包括被配置成执行任何所描述的方法的处理器的网络节点。
本发明的另外的方面提供了均一致地应用所描述的方法以在相等成本路径之间进行选择的节点的网络。
附图说明
现在将参照附图,仅通过示例的方式描述本发明的实施例,在附图中:
图1示出了具有相等成本路径的网络拓扑;
图2示出了其中可以实现本发明的分组转发网络的示例;
图3示意性地示出了图2的桥接节点之一处的装置;
图4示出了最短路径的局部性(locality);
图5示出了打破平局决策的局部性;
图6至8示出了用于说明最短路径的计算的示例网络拓扑;
图9示出了用于说明最短路径的计算的另一示例网络拓扑;
图10至12示出图9中所示的网络拓扑的最短路径计算的打破平局步骤;
图13示出了双归属到网状网络上的节点的示例;以及
图14示出了可能需要增强的打破平局技术来针对其提供逐个节点一致的结果的相等成本路径的示例。
具体实施方式
图2示出了其中可以实现本发明的链路状态协议控制的以太网10的示例,并且图3示意性地示出了在节点41-48之一处的装置。形成网状网络的节点(也称为桥或桥接节点)与彼此交换链路状态通告56。这经由链路状态路由系统的良好理解的机制达成。路由系统模块51使用链路状态路由协议与网络中的对等节点交换关于网络拓扑的信息56。该信息交换允许节点生成网络拓扑的同步视图。在每个节点处,最短路径确定模块52计算最短路径树,其确定到每一个其它节点的最短路径。由模块52确定的最短路径用于填入具有用于引导业务通过网络的条目的转发信息库54。如将在下文更加详细地描述的,状况将出现在模块52将遭遇多条相等成本路径时。打破平局模块53以一致的方式选择相等成本路径中的一条(或多条)。在正常操作中,分组在节点处被接收57并且目的地查找模块55使用FIB 54确定所接收的分组应当通过其被转发58的端口(或在多播分发的情况中的多个端口)。如果在FIB 54中不存在有效条目则分组然后可以被丢弃。将领会到图3中所示的模块仅仅是为了说明性目的并且可以通过组合或在节点的模块之中分布功能来实现,如本领域技术人员将会理解的那样。
各种最短路径算法可以用于确定给定节点是否在给定桥对之间的最短路径上。诸如Floyd的算法[R. Floyd:Algorithm 97 (shortest path) (算法97(最短路径)),Communications of the ACM,7:345,1962]或者Dijkstra的单个源最短路径算法[E. W. Dijkstra:A note on two problems in connexion with graphs(关于与图有关系的两个问题的注解),Numerical Mathematics,1:269–271,1959]之类的全配对最短路径算法可以在节点41-48中实现以计算节点对之间的最短路径。应当理解,也可以利用任何合适的最短路径算法。由最短路径算法使用的链路度量可以是静态的或者被动态修改以虑及业务工程信息。例如,链路度量可以包括诸如容量、速度、使用和可用性之类的成本的量度。
通过对问题的介绍的方式,将首先描述可以在相等成本路径之间做出一致决策的打破平局算法的需求。在以下的表1中阐述需求的列表:
# | 需求 | 描述 |
1 | 完整 | 打破平局算法必须总是能够在两条路径之间进行选择 |
2 | 可互换 | tiebreak(a, b) = tiebreak(b, a) |
3 | 结合的 | tiebreak(a, tiebreak(b, c)) = tiebreak(tiebreak(a, b), c) |
4 | 对称 | tiebreak(reverse(a), reverse(b)) = reverse(tiebreak(a, b)) |
5 | 局部 | tiebreak(concat(a, c), concat(b, c)) = concat(tiebreak(a, b), c) |
表1。
打破平局算法的本质是总是“工作”。无论算法被呈现有什么路径集合,算法应当总是能够选择一条且仅一条路径。首先并且最首要的,打破平局算法应当因此是完整的(1)。为了一致的打破平局,算法必须产生相同的结果而不管相等成本路径被发现和打破平局被执行的次序。也就是说,打破平局算法应当是可互换(commutative)(2)和结合的(associative)(3)。三条路径之间的打破平局必须产生相同结果而不管路径对所被考虑的次序需求(3)并不是如此明显的但是在以取决于通过网络的计算方向的不同次序发现相等成本路径时这对于一致的结果是绝对必要的。打破平局算法必须是对称(4)的,即打破平局算法必须产生相同的结果而不管路径的方向:两个节点A和B之间的最短路径必须是B和A之间的最短路径的反向。最后,局部性是被路由系统采用的最短路径的非常重要的属性(5)。局部性属性简单来说是:最短路径的子路径同样是最短路径。这种最短路径的看来普通的属性在使用基于目的地的转发的分组网络中具有重要应用。在这些网络中,在沿路径的中间节点处的转发决策仅仅基于分组的目的地地址而非其源地址。结果,为了生成它的转发信息,节点只需要计算从它自身到所有其它节点的最短路径并且所产生的转发信息的量随网络中的节点数目线性地而非二次地增长。为了实现基于目的地的转发,打破平局算法必须因此保持最短路径的局部性属性:由打破平局算法选择的最短路径的子路径必须是打破平局算法选择的最短路径。
计算效率的考虑在打破平局算法上施加另一表面看来不同的需求:相等成本路径一经发现,算法就应当能够做出打破平局决策。图5图示了这一点。中间节点I通过两条相等成本路径p和q连接到节点A并且通过另一对相等成本路径r和s连接到节点B。因此在节点A和B之间存在四条相等成本路径,所有都经过节点I:p+r、p+s、q+r、q+s。当从A到B的最短路径的计算进行时,将首先发现A与I之间的相等成本子路径的存在。为了避免必须向前携带这两条路径的知识,第二相等成本最短子路径的存在一经发现,打破平局算法就应当能够在它们之间进行选择。在中间节点处做出的打破平局决策将最终影响计算的结果。通过排除节点A与I之间的两条子路径p和q之一,算法从进一步的考虑中移除节点A与B之间的四条最短路径中的两条。类似地,在反方向上,打破平局算法将在做出最后确定之前在子路径r和s之间进行选择。这些局部决策必须与彼此一致并且特别地,如果路径要以相同方式延伸,则两条相等成本路径之间的选择应当保持相同。例如,在图3中描述的情况中,打破平局算法应当验证以下四个恒等式:
。
事实证明对称(4)和局部性(5)条件二者都是必要的并且足以保证打破平局算法将做出一致的局部决策,该事实可以用于在相等成本最短路径存在的情况下产生单个源最短路径算法的非常高效的实现。
表1中阐述的需求列表不旨在是穷举的,并且存在本应在表1中包括的最短路径的其它属性。例如,如果从图中移除并非最短路径的部分的链路,最短路径不受影响。同样地,如果从图中移除并非所选路径的部分的链路,并且即便该链路是被算法拒绝的一些相等成本路径的部分,打破平局算法在多条相等成本路径之间的选择也应当不受影响。
现在将描述一致的打破平局算法的第一实施例。该算法通过形成针对每条路径的路径标识符开始。路径标识符是通过网络的路径遍历的每个节点的标识符的有序列表。以词典次序对节点标识符进行定序。路径标识符是所得到的有序节点标识符的串联(concatenate)。图6示出了具有端节点A、B和中间节点0-9的示例网络。节点A与B之间的第一路径(沿图6的顶部)遍历具有节点标识符A-0-5-6-1-4-8-B的节点。在以上升词典次序对节点标识符的列表进行排序之后,路径可以由路径标识符014568AB表示。该构造确保路径及其反向将具有相同的路径标识符。另外,因为算法仅应对最短路径或接近最短路径,仅两条路径——直接路径和对应的反向路径——可以共享标识符。最后,打破平局算法简单地选择具有最小(或最大)路径标识符的路径。算法可以归纳为:
1)根据达成节点标识符集合的全排序的第一排序准则对路径中的节点的标识符集合进行定序。优选的第一排序准则是递增或递减词典次序;
2)串联有序节点标识符的集合以创建路径标识符;
3)根据达成路径标识符集合的全排序的第二排序准则对路径标识符进行定序。优选的第二排序准则是递增或递减词典次序;
4)选择其路径标识符出现在路径标识符的定序集合的一端(第一或最后)处的路径。有利地,该步骤选择首先出现在路径标识符的有序集合中的路径标识符。
执行该算法的网络中的每个节点一致地使用相同的排序准则并且选择在路径标识符的集合中的相同商定的位置处的路径以便选择相同路径。
术语“词典次序”意指节点标识符的集合以标识符的大小的次序布置。因此,如果节点标识符是字母的,节点标识符的集合以字母次序A、B、C、D……等布置;如果节点标识符是数字的,节点标识符的集合以数字次序布置。显然,该方案可以适应标记节点的任何方式和标识符类型的任何组合。例如,可以通过商定数字相对于字母的次序(例如,首先对数字进行排序,然后是字母)而对数字和字母的混合进行排序。可替换地,可以为每个字符给出它的美国信息交换标准码(ASCII)代码并且ASCII代码可以以递增(递减)次序进行定序。每个节点使用相同的惯例来以相同方式对路径的节点标识符进行排序。该算法将产生一致的结果,因为:在路径(严格来说是由路径及其反向构成的对之间)与其标识符之间存在一对一映射,并且存在路径标识符的严格排序。
再次参考图6,在排序之后,节点A与B之间的顶部路径由路径标识符014568AB表示。类似地,节点A与B之间的第二路径遍历节点A-0-7-9-1-4-8-B,并且在排序之后这可以由路径标识符014789AB表示。最后,节点A与B之间的第三路径(沿图6的底部)遍历节点A-0-7-9-2-3-8-B,并且在排序之后这可以由路径标识符023789AB表示。打破平局算法以商定方向比较有序路径标识符的每个元素。在该示例中,将使用的惯例是当在特定方向(例如从左到右)上比较路径标识符时,每个节点选择有序路径标识符中的最低的。有序路径标识符对于三条相等成本路径为:
以标识符的左手侧元素开始,所有三个路径标识符以“0”开始。下一元素为“1”或“2”,因此仅顶部两个标识符需要被任何进一步地考虑。到达第四元素,“0145……”小于“0147……”并且因此选择顶部路径。IS-IS和以太网中的实际节点标识符由六个8位字节组成并且通常写作十六进制串,诸如:00-e0-7b-c1-a8-c2。还可以使用节点的别名,只要它们被一致地使用。
图7示出了简单网络拓扑以说明不同排序准则的效果。两个节点X、Y通过具有节点标识符1-8的四条相等成本路径连接。现在将描述四个可能的选项:
·通过上升次序对节点ID进行定序;通过上升次序对路径ID进行定序;选择第一(最小)路径ID。如果每条路径中的节点标识符以大小的上升次序排序(例如具有节点1、7的顶部路径变为17),则给出路径标识符17、28、35、46。以大小的上升次序布置这些路径标识符并且选择有序列表中的第一路径标识符具有选择具有节点1和7的第一(顶部)路径的结果。
·通过上升次序对节点ID进行定序;通过上升次序对路径ID进行定序;选择最后(最大)路径ID。该选项具有选择具有节点4和6的最后(底部)路径的结果。
·通过下降次序对节点ID进行定序;通过上升次序对路径ID进行定序;选择第一(最小)路径ID。以大小的下降次序对每条路径中的节点标识符进行定序给出路径标识符(71,82,53,64)。以大小的上升次序布置这些路径标识符给出(53,64,71,82)并且选择有序列表中的第一(最小)路径标识符具有选择具有节点3和5的第三路径的结果。
·通过下降次序对节点ID进行定序;通过上升次序对路径ID进行定序;选择最后(最大)路径ID。该选项具有选择具有节点8和2的第二路径的结果。
如下文将更加详细地描述的,存在其中对于节点而言应用多个不同的排序和/或选择准则来选择多条相等成本路径合期望的情景。
目前为止本描述假设算法是非局部的并且打破平局在已经找到所有相等成本路径之后执行。然而,已经发现该算法的局部版本可以通过仅考虑分叉分支上的节点而产生相同结果。事实上,打破平局结果仅取决于在分叉分支中的最小节点标识符的相对位置。一致的打破平局算法的第二实施例可以归纳为:
1)找到满足第一选择准则的第一路径的分叉分支中的节点标识符。这可以被视为针对第一路径的分支标识符;
2)找到满足第一选择准则的第二路径的分叉分支中的节点标识符。这可以视为针对第二路径的分支标识符;
3)使用操作在通过步骤(1)和(2)选择的分支标识符上的第二选择准则选择路径之一。
针对第一选择准则的优选选项是当使用诸如词典次序(递增或递减词典次序)之类的全排序方案布置节点标识符时找到第一(或最后)的节点标识符。如将在下文解释的,对于方案而言不必编译分支中的节点标识符的全集并且然后对该集合排序。而是,方案可以使用词典次序的认知迭代地比较节点标识符对。类似地,针对第二选择准则的优选选项是当分支标识符使用诸如词典次序(递增或递减词典次序)之类的全排序方案布置时找到第一(或最后)的分支标识符。
再次参考图7的拓扑,节点X与Y之间的四条相等成本路径可以表示从父节点X的四条相等成本分叉分支。打破平局算法需要选择四个分支之一。存在四个可能的选项:
·在每个分支中标识最小节点ID。这导致(1,2,3,4)作为分支标识符。然后,标识最小的分支标识符。这具有选择具有节点1和7的第一(顶部)路径的结果。
·在每个分支中标识最小节点ID。然后,标识最大的分支标识符。该选项具有选择具有节点4和6的最后(底部)路径的结果。
·在每个分支中标识最大节点ID。这导致(5,6,7,8)作为分支标识符。然后,标识最小的分支标识符。这具有选择具有节点3和5的路径的结果。
·在每个分支中标识最大节点ID。然后,标识最大的分支标识符。该选项具有选择具有节点2和8的路径的结果。
如下文将更加详细地描述的,存在其中对于节点而言应用多个不同的排序和/或选择准则来选择多条相等成本路径合期望的情景。
该算法可以利用简单的比较非常容易和高效地实现。图8示出了另一网络拓扑。方法的局部版本将在节点13处开始并且继续进行到找到从节点15引出的两条分叉路径。方法探索两条分离的路径直至节点16,其中两条路径再次会合。在这点处,方法检查针对两条路径中的每一个的节点标识符。对于第一路径,节点标识符为:10,14,17,21并且对于第二路径,节点标识符为11,12,19,20。具有最低标识符(10)的路径为顶部路径。将描述比较路径的两种方式。第一,方法可以维护针对分叉路径中的每一个的节点标识符的列表并且可以比较这些列表的元素。可替换地,方法可以简单地从节点16朝向节点15回溯,追踪在每个分支中找到的最低节点标识符。在每个后向步骤处,方法将目前找到的最低节点标识符与在该步骤处遭遇的新节点标识符比较。存储最低节点标识符。当方法已经回溯直到节点15时,两个最低值(顶部分支中的10,下分支中的11)可以简单地与彼此比较以找到具有最低节点标识符的路径。因此,选择顶部路径。
用于在网络中找到最短成本路径的最常见算法之一是Dijkstra的算法[Dijkstra 59]。它解决了当路径长度被定义为正逐跳链路成本的和时找到从图中的点(源或根节点)到所有可能的目的地的最短路径的问题。该问题有时被称为单个源最短路径问题。对于图G=(N,L),其中N为节点的集合并且L为连接它们的链路的集合,Dijkstra的算法使用通常称为TENT的优先队列(priority queue)以增加距源节点的距离的次序来拜访节点。实现Dijkstra的算法需要的其它数据结构为:
距离:从源节点到每个节点的最短距离的最佳估计的阵列
父代:针对每个节点的前驱(predecessor)的阵列
以下文本描述了已知的Dijkstra的算法,并且描述了当发现多个相等成本路径时它可以如何被修改以执行打破平局。在此描述了Dijkstra的算法,因为它是最常使用的最短路径查找算法之一。然而,将领会到还可以同等地使用其它算法。初始化阶段将除源节点自身之外的每个节点的距离设成无穷。将源节点的距离设成零并且将它的父代设成空值,因为它是树的根。在计算的开始处,优先队列仅包含源节点。随着算法进行,当找到从源节点到节点的路径时将节点添加到优先队列。在已经找到节点与源节点之间的最短路径之后,将节点以增加距源节点的距离的次序从优先队列拖出。当从源节点可到达的所有节点已经被循环通过优先队列时算法停止。当优先队列TENT非空时,算法执行以下步骤:
1)在TENT中找到最接近源节点的节点N并且从TENT移除它
2)对于连接到N的每个节点,如果节点到源的距离将通过使N作为其父代而降低,则将节点的父代改变成N,将节点的距离设成新的距离,并且将节点添加到TENT。
当算法完成后,距离(节点)包含从源节点到节点的最短距离(或者如果节点从源节点不可到达则为无穷)并且父代(节点)包含节点在生成树中的前驱(除源节点和从源节点不可到达的节点之外)。只有在改变父代实际上降低节点的距离的情况下更新节点的父代。这意味着如果在源节点与某个其它节点之间存在多条相等成本最短路径,则将仅考虑在算法的执行期间遭遇的第一个。
以上步骤是Dijkstra的算法的常规步骤。在这点处Dijkstra被修改以添加一致的打破平局步骤。对以上的步骤2进行如下修改:
2)对于连接到节点N的每个节点做以下事情:
2a)如果通过使N作为其父代将会降低节点到源的距离,则将节点的父代改变成N,将节点的距离设成新的距离,并且将节点添加到TENT。
2b)如果在使N作为其父代之后节点到源节点的距离将会保持相同,则调用打破平局算法来确定节点的父代是否应当改变。
当到达两个分叉分支的会合点时调用打破平局算法。例如,考虑图8中所示的拓扑,如果Dijkstra的算法从节点13开始,发现从节点15引出的分叉分支(具有节点10,14,17,21的上分支和具有节点11,12,19,20的下分支)并且这些分叉分支在节点16处会合。正是在节点16处将会调用打破平局算法以在两个分支之间进行选择。
以下的伪代码示出经修改的Dijkstra的算法的实现,其具有使用TENT集合的优先队列实现的一致的打破平局。入列操作采用两个自变量,队列和节点,并且将节点根据其距源节点的距离置于适当的队列位置中。出列操作从队列移除在队列端头处的节点,即具有距源节点最小距离的节点。
打破平局算法通过回溯两条相等成本路径进行操作,分别从节点的当前父代和新候选父代开始,一直回到分叉点。两条分叉路径可以具有不同跳数这一事实使事情稍微复杂化,因为两条路径必须通过未知的、不相同跳数回溯。该问题可以通过总是首先回溯两条路径中的较长者或者当它们具有相等成本时同时回溯二者来解决。可替换地,该困难可以通过确保两条路径如果并且仅在它们具有相同跳数的情况下将仅被视为具有相等成本来一起排除。这通过或者将跳计数合并在路径成本中或者通过使用跳计数作为一阶平局打破器而容易地完成。
以下伪代码示出假设两条路径具有相同跳数(并且因此它们的分叉分支数目相同)的打破平局算法的实现。打破平局功能采取两条相等路径端处的两个节点并且返回它们之一以指示它选择了两条路径中的哪个。
算法需要以其执行的频率取决于应用。PLSB本质上需要计算所有对最短路径(有时为其子集)。在这种情况中Dijkstra的算法需要针对网络中的所有节点(准确来说除了一个之外的全部)运行。Floyd的算法计算所有对最短路径,因此将仅需要运行一次。其它应用可以仅需要较小数目的路径的计算(例如如果仅需要一个最短路径,则Dijkstra的算法将必须运行仅一次,其中路径的端点之一作为源)。
图9示出通过链路互连的节点A-H、J的示例网络。对于每个链路,与该链路相关联的度量被示出为链路上的整数数值。在该网络中的节点A与节点B之间存在六个不同的相等成本最短路径。这些以其相应长度和路径标识符在下表示出:
路径 | AGDHB | AGCHB | AGCJB | AFCHB | AFCJB | AFEJB |
长度 | 10 | 10 | 10 | 10 | 10 | 10 |
标识符 | ABDGH | ABCGH | ABCGJ | ABCFH | ABCFJ | ABEFJ |
所有这六条路径具有相同长度10。打破平局算法的非局部版本将选择具有最小路径标识符(ABCFH)的一个,即路径AFCHB。该章节的其余部分示出打破平局算法的局部版本如何在Dijkstra的算法的执行期间当发现相等成本的路径和子路径时通过仅做出局部打破平局决策而得出相同的结果。Dijkstra的算法初始化针对网络中的节点的距离和父代(或前驱)的表。除了其距离被设成零的源节点之外的所有距离最初被设成无穷。父代在该阶段未定义:
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | ∞ | ∞ | ∞ | ∞ | ∞ | ∞ | ∞ | ∞ |
父代 | - | - | - | - | - | - | - | - | - |
Dijkstra算法还将其优先队列初始化成仅包含源节点,A:TENT=[(A,0)]。
Dijkstra循环的第一迭代选择TENT中的第一和仅有的节点,节点A。然后对于节点A的每个近邻(即节点F和G)它更新它们到源的距离并且使节点A作为它们的父代。最后将这两个节点添加到TENT优先队列。在Dijkstra算法的该第一迭代期间,距离和父代的表变为:
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | ∞ | ∞ | ∞ | ∞ | 2 | 1 | ∞ | ∞ |
父代 | - | - | - | - | - | A | A | - | - |
在该第一迭代的结尾处优先队列为:TENT=[(G,1),(F,2)]。
Dijkstra循环的第二迭代从优先队列移除具有最小距离的节点(节点G)。它更新尚未被处理的G的两个近邻(节点C和D)并且将它们添加到优先队列:
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | ∞ | 5 | 4 | ∞ | 2 | 1 | ∞ | ∞ |
父代 | - | - | G | G | - | A | A | - | - |
在第二迭代的结尾处,优先队列为:TENT=[(F,2),(D,4),(C,5)]。
Dijkstra循环的第三迭代从优先队列移除节点F。它更新节点F的两个近邻(节点C和E)并且将节点E添加到优先队列(节点C已经在那里)。节点C的距离不改变但是在节点A与节点C之间存在经过节点F的新的候选相等路径。因此必须调用打破平局算法来在经过节点F的这条新路径与经过节点G的旧路径之间进行选择。这在图10中示出。打破平局算法被调用有节点C的新候选父类(节点F)以及其旧的父代(节点G)调用打破平局算法。将oldMin设成旧的父代的标识符G,并且将newMin设成新的父代的标识符F。因为节点F和G共享相同父代(节点A),所以不执行回溯循环。打破平局简单地比较oldMin和newMin并且因为newMin=F<G=oldMin,所以将节点F选为节点C的新的父代:
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | ∞ | 5 | 4 | 4 | 2 | 1 | ∞ | ∞ |
父代 | - | - | F | G | F | A | A | - | - |
在第三迭代的结尾处,优先队列为:TENT=[(D,4),(E,4),(C,5)]。
Dijkstra循环的第四迭代从优先队列移除具有距离4的两个节点之一,例如节点D。更新D的两个近邻中的仅一个(节点H)并且将其添加到优先队列:
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | ∞ | 5 | 4 | 4 | 2 | 1 | 6 | ∞ |
父代 | - | - | F | G | F | A | A | D | - |
在第四迭代的结尾处,优先队列为:TENT=[(E,4),(C,5),(H,6)]。
Dijkstra循环的第五迭代从优先队列移除节点E。更新E的两个近邻中的仅一个(节点J)并且将其添加到优先队列。
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | ∞ | 5 | 4 | 4 | 2 | 1 | 6 | 6 |
父代 | - | - | F | G | F | A | A | D | E |
在第五迭代的结尾处,优先队列为:TENT=[(C,5),(H,6),(J,6)]。
Dijkstra循环的第六迭代从优先队列移除节点C。C的两个近邻(节点J和H)具有通过节点C到节点A的相等成本路径。因此必须分别针对节点J和H两次调用打破平局算法。
对于节点J,以新的潜在父代(节点C)和旧的父代(节点E)调用打破平局算法。将oldMin设成旧的父代的标识符E,并且将newMin设成新的父代的标识符C。因为这两个节点E和C共享相同父代(节点F),所以不执行回溯循环。打破平局简单地比较oldMin和newMin并且因为newMin=C<E=oldMin,所以选择新的父代。节点J的父代因此被节点C取代。这在图11中示出。
对于节点H,以新的潜在父代(节点C)和旧的父代(节点D)调用打破平局算法。将oldMin设成旧的父代的标识符D,并且将newMin设成新的父代的标识符C。因为这两个节点具有不同的父代,必须进一步对这两条路径回溯一跳。D的父代为G并且因为G>oldMin(=D),所以oldMin不改变。C的父代为F并且因为F>newMin(=C),所以newMin也不改变。因为F和G共享相同的父代(节点A),所以回溯循环停止。打破平局算法然后比较oldMin和newMin并且因为newMin=C<D=oldMin,所以将节点C选为节点H的新的父代。这在图12中示出。
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | ∞ | 5 | 4 | 4 | 2 | 1 | 6 | 6 |
父代 | - | - | F | G | F | A | A | C | C |
在第六迭代的结尾处,优先队列为:TENT=[(H,6),(J,6)]。
Dijkstra循环的第七迭代从优先队列移除具有距离6的两个节点之一,例如节点H。更新H的仅一个近邻(节点B)并且将其添加到优先队列:
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | 10 | 5 | 4 | 4 | 2 | 1 | 6 | 6 |
父代 | - | H | F | G | F | A | A | C | C |
在第七迭代的结尾处,优先队列为:TENT=[(J,6),(B,10)]。
Dijkstra循环的第八迭代从优先队列移除节点J。在J的近邻中,仅需要更新节点B。它的距离不改变但是在节点A与节点B之间存在经过节点J的新的候选相等路径。
以节点B的新的潜在父代(节点J)以及其旧的父代(节点H)调用打破平局算法。将oldMin设成旧的父代的标识符H,并且将newMin设成新的父代的标识符J。因为这两个节点H和J共享相同父代(节点C),所以不执行回溯循环。打破平局简单地比较oldMin和newMin并且因为oldMin=H<J=newMin,所以选择旧的父代并且节点B的父代维持相同。
节点 | A | B | C | D | E | F | G | H | J |
距离 | 0 | 10 | 5 | 4 | 4 | 2 | 1 | 6 | 6 |
父代 | - | H | F | G | F | A | A | C | C |
在第八迭代的结尾处,优先队列为:TENT=[(B,10)]。
最后,Dijkstra循环的最后迭代从队列移除节点B并且算法终止,因为没有B的近邻可以被更新(节点B为最远离源节点A的节点)。
可以通过从在节点B处开始并且跟随父代直到到达节点A从父代表直接读取从节点A到节点B的最短路径的反向:BHCFA。由局部打破平局算法选择的从节点A到节点B的最短路径因此是其反向路径:AFCHB。
尽管在节点A与节点B之间存在6条相等成本路径,在Dijkstra算法的执行期间仅共计调用4次局部打破平局。在其第一调用处,打破平局算法必须在子路径AFC与AGC之间进行选择。它选择了子路径AFC,从而从进一步考虑中排除了两条路径AGCJB和AGCHB。在其第二调用处,打破平局算法必须在子路径AFCJ与AFEJ之间进行选择。它选择了子路径AFCJ,从而从进一步考虑中排除了第三路径AFEJB。在其第三调用处,打破平局算法必须在子路径AGDH与AGCH之间进行选择。它选择了子路径AGCH,从而从进一步考虑中排除了第四路径AGDHB。最后,在其第四调用处,打破平局算法必须在路径AFCHB与AFCJB之间进行选择。它排除了第五路径AFCJB并且选择了路径AFCHB作为最后的解决方案。
用于负载散布的相等成本多路径的选择
在许多联网应用中,使用若干相等成本路径通常是有利的,特别是如果这可以以一致的方式达成的话。通过使用打破平局算法的两个变型,当在节点对之间的两条相等成本路径存在时使用它们是可能的。图13示出了其中边缘节点X和Y每一个都双归属在核心节点A、B、C、D的完整网格上的常见联网场景。为了冗余,每个边缘节点连接至两个核心节点,其中节点X连接到核心节点A和B并且节点Y连接到节点C和D。每个核心节点连接到所有其它核心节点,例如节点A连接至B、C和D。关于该拓扑的问题在于如果在一对节点之间仅使用一条最短路径,则在正常环境之下将浪费大量存取容量。当在两个节点之间存在多条相等成本最短路径时,打破平局算法的两个变型可以用于一致地确切选择两条路径。所有节点商定的任何惯例可以用于在相等成本路径之间做出选择。一个特别方便的惯例是选择具有最小标识符的第一路径和具有最大标识符的第二路径。在图13中,由于核心节点被完全网状化,因此在边缘节点X和Y之间存在四条相等成本路径:(X, A, C, Y),(X, A, D, Y),(X, B, C, Y),(X, B, D, Y)。打破平局算法的两个变型将选择这两条路径:
(X, min(A, B), min(C, D), Y)和
(X, max(A, B), max(C, D), Y)。
因为节点标识符是唯一的,min(A, B) != max(A, B)并且min(C, D) != max(C, D):这两条路径最为不同:它们仅具有其共同的端点。在图13中,两条所选路径为(X, A, C, Y)和(X, B, D, Y)。
用于具有不同的跳计数的相等成本最短路径的打破平局
以上描述的作为第二实施例的局部打破平局技术的4个变型由以下规则定义——
1. 选择包含最小节点标识符的分支。
2. 选择不包含最小节点标识符的分支。
3. 选择包含最大节点标识符的分支。
4. 选择不包含最大节点标识符的分支。
如上文所定义的,全部4个变型对于遍历不相等数目的节点的相等成本路径是有效的。然而,以上作为第一实施例描述的全局打破平局技术在相等成本路径遍历不同数目的节点的情况中可能不是有效的。一个这样的情景图示在图14中。链路A-C、C-B和B-D中的每一个被分配成本1,并且链路A-B被分配成本2。结果路径A-C-B和A-B每一个具有成本2并且是相等成本路径。通过使用上文描述的技术,路径A-B的标识符AB按词典排序在路径A-C-B的标识符ABC之前。然而,通过添加链路B-D,路径A-C-B-D和A-B-D每一个具有成本3并且同样是相等成本路径。通过使用上文描述的技术,路径A-C-B-D的标识符ABCD按词典排序在路径A-B-D的标识符ABD之前。因此选择路径A-B而不是路径A-C-B的打破平局算法将同样选择路径A-C-B-D而不是路径A-B-D,其结果是与上文讨论的局部性属性不一致。
上文作为第一实施例描述的全局打破平局技术的4个变型由以下规则定义——
1. 以递增次序对节点标识符进行定序以形成路径标识符,以词典次序对路径标识符进行定序并且在定序的路径标识符之中选择其标识符为第一个的路径。
2. 以递增次序对节点标识符进行定序以形成路径标识符,以词典次序对路径标识符进行定序并且在定序的路径标识符之中选择其标识符为最后一个的路径。
3. 以递减次序对节点标识符进行定序以形成路径标识符,以词典次序对路径标识符进行定序并且在定序的路径标识符之中选择其标识符为第一个的路径。
4. 以递减次序对节点标识符进行定序以形成路径标识符,以词典次序对路径标识符进行定序并且在定序的路径标识符之中选择其标识符为最后一个的路径。
如上文所定义的,全局打破平局算法的变型3和4对遍历不相等数目的节点的相等成本路径是有效的,但是变型1和2并不总是提供一致的结果。
全局打破平局技术的变型1和2在针对相等成本路径之一的路径标识符是针对另一相等成本路径的路径标识符的前缀时不适当地工作。出现问题是因为较短路径标识符在可以做出路径选择之前用尽节点标识符。
为了解决该问题,可以通过添加虚拟节点标识符来填充较短路径标识符,使得对于要比较的所有相等成本路径的路径标识符具有相同数目的节点标识符。然而,填充应当与用于形成路径标识符的排序准则一致。
例如,向具有比其它相等成本路径更少节点的路径的标识符的尾端添加被赋予比任何节点标识符更低的值的空标识符直到所有相等成本路径标识符具有相同长度可能看似是自然的。这是例如在对字典中的词汇进行排序时采取的惯例。然而,这与以递增值的次序对每条路径中的节点的标识符进行定序并不一致。
如果每条路径中的节点标识符以递增值的次序定序以得到路径标识符,应当向具有比其它相等成本路径标识符更少的节点标识符的路径标识符的尾端添加被赋予比任何节点标识符更高的值的特殊标识符直到所有相等成本路径标识符具有相同长度。可替换地,可以向具有比其它相等成本路径标识符更少的节点标识符的路径标识符的前端添加被赋予比任何节点标识符更低的值的空标识符直到所有相等成本路径标识符具有相同长度。
类似地,如果每条路径中的节点标识符以递减值的次序定序以得到路径标识符,应当向具有比其它相等成本路径标识符更少的节点标识符的路径标识符的尾端添加被赋予比任何节点标识符更低的值的空标识符直到所有相等成本路径标识符具有相同长度。这是常规词典排序。可替换地,可以向具有比其它相等成本路径标识符更少的节点标识符的路径标识符的前端添加被赋予比任何节点标识符更高的值的特殊标识符直到所有相等成本路径标识符具有相同长度。
综上所述,存在归纳成处理遍历不同节点的相等成本路径的全局打破平局技术的8个变型——
变型 | 用于节点ID的排序准则 | 用于添加的路径ID的端 | 所添加的虚拟ID的值 | 路径ID选择 |
1 | 递增 | 尾端 | 最大 | 第一个 |
2 | 递增 | 尾端 | 最大 | 最后一个 |
3 | 递减 | 尾端 | 最小 | 第一个 |
4 | 递减 | 尾端 | 最小 | 最后一个 |
5 | 递增 | 前端 | 最小 | 第一个 |
6 | 递增 | 前端 | 最小 | 最后一个 |
7 | 递减 | 前端 | 最大 | 第一个 |
8 | 递减 | 前端 | 最大 | 最后一个 |
表2。
当以递增值的次序对每条路径中的节点标识符进行定序以得到路径标识符时存在达成期望结果的若干方式。例如,替代于通过向具有较少节点标识符的路径标识符的尾端添加特殊标识符直到所有相等成本路径标识符具有相同长度来填充它们,在按词典次序对路径标识符进行排序之前向较短路径标识符的尾端添加被赋予比任何节点标识符更高的值的单个特殊标识符是足够的。达成相同结果的又一方式是如果并且只有如果路径标识符之一在可以通过词典次序比较做出确定之前用尽,执行路径标识符的词典次序比较作为第一排序准则但是使用跳数作为辅排序准则。换言之,当路径标识符之一是另一路径标识符的前缀时,具有较长标识符的路径被认为在具有较短标识符的路径之前到来。当路径标识符之一在词典次序比较可以做出确定之前用尽时,相等长度串的词典排序被用作主排序准则并且路径标识符的长度(即在路径中的跳数)被用作辅排序准则。在这种情况中,具有较大跳数的路径被认为在具有较小跳数的路径之前到来。
相反地,替代于通过向具有较少节点标识符的路径标识符的前端添加空标识符直到所有相等成本路径标识符具有相同长度来填充它们,可以简单地选择将具有较小跳数的路径排序在具有较大跳数的路径前面。路径标识符的词典排序然后被用作用于具有相同跳数的路径的辅排序准则。在这种情况中,具有较小跳数的路径被认为在具有较大跳数的路径之前到来。路径标识符的长度被用作主排序准则——具有较少跳的路径总是在具有较多跳的路径之前——并且词典排序被用作用于具有相同跳数的路径的辅排序准则。
类似地,当每条路径中的节点标识符以递减值的次序进行定序以得到路径标识符时,存在达成期望的结果的若干方式。例如,替代于通过向具有较少节点标识符的路径标识符的尾端添加空标识符直到所有相等成本路径标识符具有相同长度来填充它们,在按词典次序对路径标识符进行排序之前向较短路径标识符的尾端添加被赋予比任何节点标识符更低的值的单个空标识符是足够的。达成相同结果的又一方式是如果并且只有如果路径标识符之一在可以通过词典次序比较做出确定之前用尽,执行路径标识符的词典次序比较作为第一排序准则但是使用跳数作为辅排序准则。换言之,当路径标识符之一是另一路径标识符的前缀时,具有较短标识符的路径被认为在具有较长标识符的路径之前到来。当路径标识符之一在词典次序比较可以做出确定之前用尽时,相等长度串的词典排序被用作主排序准则并且路径标识符的长度(即在路径中的跳数)被用作辅排序准则。在这种情况中,具有较小跳数的路径被认为在具有较大跳数的路径之前到来。
相反地,替代于通过向具有较少节点标识符的路径标识符的前端添加特殊标识符直到所有相等成本路径标识符具有相同长度来填充它们,可以简单地选择将具有较大跳数的路径排序在具有较小跳数的路径前面。路径标识符的词典排序然后被用作用于具有相同跳数的路径的辅排序准则。在这种情况中,具有较大跳数的路径被认为在具有较小跳数的路径之前到来。路径标识符的长度被用作主排序准则——具有较多跳的路径总是在具有较少跳的路径之前——并且词典排序被用作用于具有相同跳数的路径的辅排序准则。
归纳成处理遍历不同数目的节点的相等成本路径的全局打破平局技术的8个变型可以在其中路径标识符的长度以及路径标识符自身被用于建立路径标识符的完整排序的若干经修改的词典排序的方面来表述。在以下的表3中,用作主排序准则的词典排序为传统词典排序的有限版本:如果一个路径标识符是另一路径标识符的前缀,它不做出确定——
变型 | 用于节点ID的排序准则 | 用于路径ID的主排序准则 | 用于路径ID的辅排序准则 | 路径ID选择 |
1 | 递增 | 词典 | 递减长度 | 第一个 |
2 | 递增 | 词典 | 递减长度 | 最后一个 |
3 | 递减 | 词典 | 递增长度 | 第一个 |
4 | 递减 | 词典 | 递增长度 | 最后一个 |
5 | 递增 | 递增长度 | 词典 | 第一个 |
6 | 递增 | 递增长度 | 词典 | 最后一个 |
7 | 递减 | 递减长度 | 词典 | 第一个 |
8 | 递减 | 递减长度 | 词典 | 最后一个 |
表3。
其中主排序准则是词典次序并且共享共同前缀的串以递增长度的次序进行定序的传统词典排序对应于变型3和4。变型1和2对应于其中共享共同前缀的串以递减长度的次序进行定序的经修改的词典次序。变型5-8对应于其中串的长度是主排序准则并且词典排序被用作用于相等长度的串的辅排序准则的对串进行排序的方法。
作为主打破平局方法的跳计数
已经建立了用于产生不同长度的路径标识符的完整排序的框架,可以阐释使用跳计数(路径标识符的长度)作为第一级平局打破器的效果。在一些情况中,使用路径标识符的长度执行的第一打破平局并不从考虑中排除本应最终被选择的路径——即基于跳计数的第一打破平局并不影响最后结果。然而,如果第一级打破平局剪除正常本应被选择的路径,则获得新的打破平局变型。
如果第一级打破平局仅通过考虑具有最小(或最大)跳数的相等成本路径来执行,则在变型1至4产生与变型5-8相同的结果,因为词典排序是用于路径标识符的仅有排序准则:变型1-4的辅准则和变型5-8的主准则全部变得不可操作,由于输入到打破平局的相等成本路径的标识符全部共享相同的(最大或最小)长度。变型5和8总是选择具有最小跳数的路径并且因此不受选择具有最小跳数的相等成本路径的第一级打破平局影响。这些对应于以上的第一实施例的两个变型。相反地,如果第一级打破平局通过变型6和7中的任一个所遵循的选择具有最小跳数的相等成本路径来执行,则获得第一实施例的其它两个变型。类似地,变型6和7总是选择具有最大跳数的路径并且因此不受选择具有最大跳数的相等成本路径的第一级打破平局影响。
综上所述,以上的8个变型中的前2个不是上文所描述的第一实施例的变型。变型3和4对应于第一实施例的变型,其中对不相等长度的路径标识符应用传统的词典排序。后4个变型在数学上等同于第一实施例的变型,其中第一级打破平局通过仅选择具有最大跳数的路径来执行。以下12个全局打破平局变型可以在用于节点标识符和路径标识符的排序准则方面来表述——
变型 | 用于节点ID的排序准则 | 用于路径ID的主准则 | 用于路径ID的辅排序准则 | 路径ID选择 |
1 | 递增 | 词典 | 递减长度 | 第一个 |
2 | 递增 | 词典 | 递减长度 | 最后一个 |
3 | 递减 | 词典 | 递增长度 | 第一个 |
4 | 递减 | 词典 | 递增长度 | 最后一个 |
5 | 递增 | 最小长度 | 词典 | 第一个 |
6 | 递增 | 最小长度 | 词典 | 最后一个 |
7 | 递减 | 最小长度 | 词典 | 第一个 |
8 | 递减 | 最小长度 | 词典 | 最后一个 |
9 | 递增 | 最大长度 | 词典 | 第一个 |
10 | 递增 | 最大长度 | 词典 | 最后一个 |
11 | 递减 | 最大长度 | 词典 | 第一个 |
12 | 递减 | 最大长度 | 词典 | 最后一个 |
表4。
在以上的表4中,用作主排序准则的词典排序是传统的词典排序的有限版本:如果一个路径标识符是另一个路径标识符的前缀,它不做出确定。在这种情况中,必须调用基于路径标识符的长度的辅排序准则。
每一组四个全局打破平局变型对应于四个局部打破平局变型。全局打破平局变型1-4对应于其中考虑所有相等成本最短路径而不考虑其跳计数的情况。变型5-8对应于其中仅将具有最小跳数的相等成本最短路径考虑为最短路径的情况。变型9-12对应于其中仅将具有最大跳数的相等成本最短路径考虑为最短路径的情况。
为了阐述的清楚性,以上描述是基于路径标识符的词典排序和其中从左向右执行串比较的其变型。还可以在其中从右向左执行串比较的反向词典排序方面描述已作必要的修改的相同打破平局变型。事实上,可以在不脱离于本发明的精神的情况下使用提供所有可能的路径标识符的无歧义排序的对路径标识符进行排序的任何方法。
本发明不限于本文所描述的实施例,其可以在不脱离于本发明的范围的情况下被修改或变化。
Claims (20)
1.一种确定用于在分组转发网络的节点处在转发分组中使用的转发信息的方法,网络中的每个节点具有唯一的节点标识符,所述方法包括:
确定网络的第一节点与网络的第二节点之间的最低成本路径;
确定多条最低成本路径具有大体上相等成本;以及
从具有大体上相等成本的多条最低成本路径选择最低成本路径,所选最低成本路径是将通过以下选择的路径:
针对每条最低成本路径,根据第一排序准则对分配到由最低成本路径遍历的节点的相应节点标识符进行定序以得到相应的路径标识符;
根据第二排序准则对路径标识符进行排序;以及
选择在有序路径标识符的一个极端处具有其路径标识符的最低成本路径;
其中第一排序准则和第二排序准则满足选自以下的条件:
(1)第一排序准则是递增排序并且第二排序准则是经修改的词典排序,其在针对第一路径的路径标识符是针对第二路径的路径标识符的前缀时,将第二路径排序在第一路径之前;以及
(2)第一排序准则是递减排序并且第二排序准则是词典排序,其在针对第一路径的路径标识符是针对第二路径的路径标识符的前缀时,将第一路径排序在第二路径之前。
2.权利要求1的方法,其中选择最低成本路径包括:
针对每条最低成本路径,根据递增排序准则对分配到由最低成本路径遍历的节点的相应节点标识符进行定序以得到相应路径标识符;
根据经修改的词典排序准则对路径标识符进行排序,当针对第一路径的路径标识符是针对第二路径的路径标识符的前缀时,所述经修改的词典排序准则将第二路径排序在第一路径之前;以及
选择在有序路径标识符的一个极端处具有其路径标识符的最低成本路径。
3.权利要求2的方法,其中针对每条最低成本路径,根据递增排序准则对分配到由最低成本路径遍历的节点的相应节点标识符进行定序以得到相应路径标识符包括根据递增词典排序准则对相应节点标识符进行定序。
4.权利要求1的方法,其中选择最低成本路径包括:
针对每条最低成本路径,根据递减排序准则对分配到由最低成本路径遍历的节点的相应节点标识符进行定序以得到相应路径标识符;
根据词典排序准则对路径标识符进行排序,当针对第一路径的路径标识符是针对第二路径的路径标识符的前缀时,所述词典排序准则将第一路径排序在第二路径之前;以及
选择在有序路径标识符的一个极端处具有其路径标识符的最低成本路径。
5.权利要求4的方法,其中针对每条最低成本路径,根据递减排序准则对分配到由最低成本路径遍历的节点的相应节点标识符进行定序以得到相应路径标识符包括根据递减词典排序准则对相应节点标识符进行定序。
6.权利要求1的方法,其中:
至少一条最低成本路径遍历最大数目的节点并且至少一条其它最低成本路径遍历少于最大数目的节点;并且
从多条最低成本路径选择最低成本路径包括:
针对每条最低成本路径,根据第一排序准则对分配到由最低成本路径遍历的节点的相应节点标识符进行定序以得到相应路径标识符;
针对遍历比最大数目的节点更少的节点的每条最低成本路径,向对应路径标识符添加至少一个附加标识符,所述添加与第一排序准则一致;
根据第二排序准则对路径标识符进行排序;以及
选择具有在有序路径标识符的一个极端处的路径标识符的最低成本路径。
7.权利要求6的方法,其中添加至少一个附加标识符包括:
当第一排序准则是递增排序时,添加至少一个附加标识符,每个附加标识符被认为高于所有节点标识符;以及
当第一排序准则是递减排序时,添加至少一个附加标识符,每个附加标识符被认为低于所有节点标识符。
8.权利要求7的方法,其中添加至少一个附加标识符包括向针对遍历比最大数目的节点更少的节点的每条最低成本路径的每个路径标识符添加附加标识符直到每个路径标识符具有等于节点的最大数目的标识符的数目。
9.权利要求7的方法,其中:
第一排序准则是递增排序准则;以及
添加至少一个标识符包括向针对遍历比最大数目的节点更少的节点的每条最低成本路径的相应路径标识符的尾端添加具有被认为大于任何节点标识符的值的至少一个附加标识符。
10.权利要求9的方法,其中第一排序准则是递增词典排序准则。
11.权利要求7的方法,其中:
第一排序准则是递减排序准则;以及
添加至少一个标识符包括向针对遍历比最大数目的节点更少的节点的每条最低成本路径的相应路径标识符的尾端添加具有被认为低于任何节点标识符的值的至少一个附加标识符。
12.权利要求11的方法,其中第一排序准则是递减词典排序准则。
13.权利要求7的方法,其中:
第一排序准则是递增排序准则;以及
添加至少一个标识符包括向针对遍历比最大数目的节点更少的节点的每条最低成本路径的相应路径标识符的前端添加具有被认为低于任何节点标识符的值的附加标识符直到所有路径标识符具有共同数目的标识符。
14.权利要求13的方法,其中第一排序准则是递增词典排序准则。
15.权利要求7的方法,其中:
第一排序准则是递减排序准则;以及
添加至少一个标识符包括向针对遍历比最大数目的节点更少的节点的每条最低成本路径的相应路径标识符的前端添加具有被认为大于任何节点标识符的值的附加标识符直到所有路径标识符具有共同数目的标识符。
16.权利要求15的方法,其中第一排序准则是递减词典排序准则。
17.一种确定用于在分组转发网络的转发节点处在转发分组中使用的转发信息的方法,网络的每个节点具有唯一的节点标识符,所述方法包括:
确定网络的第一节点与第二节点之间的最低成本路径;
确定多条最低成本路径具有大体上相等成本,至少一条最低成本路径遍历最大数目的节点并且至少一条其它最低成本路径遍历少于最大数目的节点;
针对每条最低成本路径,根据第一排序准则对分配到由最低成本路径遍历的节点的相应节点标识符进行定序以得到相应路径标识符;
针对遍历比最大数目的节点更少的节点的每条最低成本路径,向对应路径标识符添加至少一个附加标识符,所述添加与第一排序准则一致;
根据第二排序准则对路径标识符进行排序;以及
选择具有在有序路径标识符的一个极端处的路径标识符的最低成本路径。
18.权利要求17的方法,其中添加至少一个附加标识符包括:
当第一排序准则是递增排序时,添加至少一个附加标识符,每个附加标识符被认为高于所有节点标识符;以及
当第一排序准则是递减排序时,添加至少一个附加标识符,每个附加标识符被认为低于所有节点标识符。
19.权利要求18的方法,其中添加至少一个附加标识符包括向针对遍历比最大数目的节点更少的节点的每条最低成本路径的每个路径标识符添加附加标识符直到每个路径标识符具有不小于节点的最大数目的标识符的数目。
20.权利要求18的方法,其中其中添加至少一个附加标识符包括向针对遍历比最大数目的节点更少的节点的每条最低成本路径的每个路径标识符添加附加标识符直到每个路径标识符具有共同数目的标识符。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CA2012/050337 WO2013173900A1 (en) | 2012-05-22 | 2012-05-22 | Tie-breaking in shortest path determination |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104396198A true CN104396198A (zh) | 2015-03-04 |
Family
ID=49622954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280073362.2A Pending CN104396198A (zh) | 2012-05-22 | 2012-05-22 | 在最短路径确定中打破平局 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP2853068A1 (zh) |
JP (1) | JP2015520997A (zh) |
KR (1) | KR20150030644A (zh) |
CN (1) | CN104396198A (zh) |
BR (1) | BR112014028934A2 (zh) |
WO (1) | WO2013173900A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115460126A (zh) * | 2019-09-27 | 2022-12-09 | 瞻博网络公司 | 自治系统间跟踪路由消息 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016049853A1 (zh) | 2014-09-30 | 2016-04-07 | 华为技术有限公司 | 一种生成业务路径的方法和装置 |
CN112039772B (zh) * | 2017-06-29 | 2024-04-09 | 华为技术有限公司 | 一种传输路径的确定方法及节点 |
US11451475B2 (en) | 2019-12-19 | 2022-09-20 | Huawei Technologies Co., Ltd. | Packet forwarding based on geometric location |
US11329717B2 (en) * | 2020-05-26 | 2022-05-10 | Huawei Technologies Co., Ltd. | Packet forwarding incorporating partial sorting of path costs or utilities |
US11438823B2 (en) | 2020-05-29 | 2022-09-06 | Huawei Technologies Co., Ltd. | Orthodromic routing |
US11374852B2 (en) | 2020-05-29 | 2022-06-28 | Huawei Technologies Co., Ltd. | Piecewise shortest path first routing |
US11374652B1 (en) | 2020-12-10 | 2022-06-28 | Huawei Technologies Co., Ltd. | Method and apparatus for limited flooding and network routing region membership management |
US11909627B2 (en) | 2021-01-04 | 2024-02-20 | Huawei Technologies Co., Ltd. | Method and apparatus for managing network status information using multiple degree of precision graph |
US11601780B2 (en) | 2021-01-05 | 2023-03-07 | Huawei Technologies Co., Ltd. | Method and apparatus for propagating network status updates using directional tracking |
US11476925B2 (en) | 2021-02-04 | 2022-10-18 | Huawei Technologies Co., Ltd. | Method and apparatus for limited flooding in networks using transit nodes |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7911944B2 (en) * | 2007-12-26 | 2011-03-22 | Nortel Networks Limited | Tie-breaking in shortest path determination |
US8553562B2 (en) * | 2010-09-08 | 2013-10-08 | Telefonaktiebolaget L M Ericsson (Publ) | Automated traffic engineering for multi-protocol label switching (MPLS) with link utilization as feedback into the tie-breaking mechanism |
-
2012
- 2012-05-22 JP JP2015512973A patent/JP2015520997A/ja active Pending
- 2012-05-22 WO PCT/CA2012/050337 patent/WO2013173900A1/en active Application Filing
- 2012-05-22 KR KR20147032799A patent/KR20150030644A/ko not_active Application Discontinuation
- 2012-05-22 BR BR112014028934A patent/BR112014028934A2/pt not_active IP Right Cessation
- 2012-05-22 CN CN201280073362.2A patent/CN104396198A/zh active Pending
- 2012-05-22 EP EP12877146.6A patent/EP2853068A1/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115460126A (zh) * | 2019-09-27 | 2022-12-09 | 瞻博网络公司 | 自治系统间跟踪路由消息 |
CN115460126B (zh) * | 2019-09-27 | 2024-05-17 | 瞻博网络公司 | 自治系统间跟踪路由消息 |
Also Published As
Publication number | Publication date |
---|---|
EP2853068A1 (en) | 2015-04-01 |
JP2015520997A (ja) | 2015-07-23 |
WO2013173900A1 (en) | 2013-11-28 |
BR112014028934A2 (pt) | 2017-06-27 |
KR20150030644A (ko) | 2015-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101965715B (zh) | 最短路径确定中的打破平局 | |
CN104396198A (zh) | 在最短路径确定中打破平局 | |
JP5551253B2 (ja) | 複数の等コストパスから選択するための方法および装置 | |
US8761022B2 (en) | Tie-breaking in shortest path determination | |
US10574567B2 (en) | Modeling a border gateway protocol network | |
KR101809779B1 (ko) | 타이-브레이킹 메커니즘에의 피드백으로서의 링크 사용률의 이용에 기초한 802.1aq에 대한 자동화된 트래픽 엔지니어링 | |
CN107294852B (zh) | 一种使用拓扑分散短路径集的网络路由方法 | |
KR20150013612A (ko) | 802.1aq에 대한 3 스테이지 폴딩된 clos 최적화 | |
CN103609080A (zh) | 用于支持经由as间路径的路由的方法和节点 | |
US20060268691A1 (en) | Divide and conquer route generation technique for distributed selection of routes within a multi-path network | |
US9413639B2 (en) | Use of alternate paths in forwarding of network packets | |
US20030095509A1 (en) | Fanning route generation technique for multi-path networks | |
US7616632B2 (en) | System and method of implementing contacts of small worlds in packet communication networks | |
Maniscalco et al. | Binary and m-ary encoding in applications of tree-based genetic algorithms for QoS routing | |
Emrani et al. | A technique for NoC routing based on extended compact genetic optimization algorithm | |
Abdullah et al. | Genetic routing Algorithm based on adjacency-constraint matrix | |
Tang et al. | Computing alternate multicast trees with maximum latency guarantee | |
Constantinou et al. | Resilient recursive routing in communication networks | |
Mubeen et al. | On source routing for mesh topology network on chip | |
Mahendran et al. | Look-Ahead Approach to Minimize Congestion in Data Networks | |
Nienaber | On Lid Allocation and Assignment in Infiniband Networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150304 |