CN104521191A - 使用环形拓扑的多层次级别的路由弧的无环路由拓扑中的层次标签分发和路由安装 - Google Patents
使用环形拓扑的多层次级别的路由弧的无环路由拓扑中的层次标签分发和路由安装 Download PDFInfo
- Publication number
- CN104521191A CN104521191A CN201380042341.9A CN201380042341A CN104521191A CN 104521191 A CN104521191 A CN 104521191A CN 201380042341 A CN201380042341 A CN 201380042341A CN 104521191 A CN104521191 A CN 104521191A
- Authority
- CN
- China
- Prior art keywords
- arc
- network node
- route
- node
- router
- 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
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/18—Loop-free operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4637—Interconnected ring systems
-
- 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/22—Alternate routing
-
- 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/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- 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/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
-
- 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/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
- H04L45/507—Label distribution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/42—Loop networks
- H04L2012/421—Interconnected ring systems
-
- 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/64—Routing or path finding of packets in data switching networks using an overlay routing layer
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
在一个实施例中,一种方法包括:在计算网络中创建无环路由拓扑,该无环路由拓扑包括用于到达目的地网络节点的多个路由弧,每个路由弧包括作为路由弧的第一端的第一网络节点、作为路由弧的第二端的第二网络节点、以及至少第三网络节点,该第三网络节点被配置为经由路由弧的第一端或第二端中的任意一个沿路由弧向目的地节点路由任意网络流量,第一、第二、或第三网络节点中的至少一个被实现为具有规定的环形拓扑的基于环的网络;以及经由无环路由拓扑的路由弧建立用于到达目的地网络节点的无环标签交换路径,该标签交换路径独立于且不同于规定的环形拓扑的任意属性。
Description
技术领域
本公开一般地涉及在诸如互联网协议(IP)网络之类的计算网络中生成无环路由拓扑。
背景技术
本节描述了能够被采用但不一定是先前已经被构想或采用的方法。因此,除非明确指出,否则本节中所描述的任何方法对本申请中的权利要求来说都不是现有技术,并且本节中所描述的任何方法不因为被包含在本节中而被承认为是现有技术。
现有的路由协议假定能够响应于所检测到的故障(例如,链路或连接网络节点的丢失)来执行路由的重新计算;然而,路由的重新计算需要可能导致数据流量的丢失的计算时间。加速对所检测到的故障作出响应的一种尝试包括“无环备用”(LFA),其中路由器可以通过标识用于到达目的地节点的可行后继对在去往目的地节点的路径中丢失下一跳路由器作出响应(只要该可行后继不通过将分组发送回路由器创建环路即可)。阿特拉斯(Atlas)的题为“U-turn Alternates for IP/LDP Local Protection(draft-atlas-ip-local-protect-uturn-00.txt)”的IETF草案在图3中示出了这样的网络拓扑,其中LFA方案可以被提供给网络节点N2、N4、和R3以在链路故障发生时向目的地节点D转发数据分组,然而,LFA不能向网络节点N3、S、P、R1、或R2中的任何节点提供任何解决方案。阿特拉斯的IETF草案提出“U形转弯(U-turn)协议”来反转链路;然而,在链路故障发生时,该U形转弯协议不能为图3的节点P、R1、或R2提供任何解决方案。
所提议的另一个被称为“用于处理暂态链路故障的快速本地重新路由”(Fast Local Rerouting for Handling Transient Link Failure,FIR)的路由协议需要响应于链路故障完整地重新计算路由,因此路由的重新计算需要可能导致数据流量丢失的计算时间。
附图说明
参考附图,其中贯穿说明书和附图具有相同的参考数字标号的元件代表相同的元件,其中:
图1示出了根据示例实施例的包括用于到达目的地网络节点的多个路由弧的示例无环路由拓扑。
图2示出了根据示例实施例的用于在通过数据链路耦接的网络节点的链路层网络中创建无环路由拓扑的示例装置。
图3A、3B、3C、和3D示出了根据示例实施例的用于创建无环路由拓扑的示例方法。
图4(包括图4A、4B、4C、和4D)示出了根据示例实施例的图2的用于创建无环路由拓扑的装置的存储器电路中的示例数据结构。
图5示出了根据示例实施例的图2的用于创建无环路由拓扑的装置的存储器电路中的另一示例数据结构。
图6A-6I示出了根据示例实施例的从图2的链路层网络构建具有多个路径(例如,路由弧)的无环路由拓扑的示例序列。
图7示出了根据示例实施例的用于在路由拓扑中传播一组序列化表示的路径的依次级联的路由弧的示例层次的图6I的无环路由拓扑。
图8示出了根据示例实施例的示例方法,该方法对生成并传播描述无环路由拓扑的一组序列化表示的方法进行概述,该方法使得网络节点能够建立用于到达目的地网络节点的无环标签交换路径。
图9示出了根据示例实施例的在无环路由拓扑中生成路径的序列化表示的示例方法。
图10示出了根据示例实施例的描述无环路由拓扑的一组序列化表示。
图11示出了根据示例实施例的基于从目的地网络节点向计算网络中的网络节点传播一组序列化表示来实现无环路由拓扑。
图12示出了根据示例实施例的通过无环路由拓扑中的网络节点对从目的地网络节点传播的一组序列化表示中的所选择的路径进行选择性的修剪。
图13示出了根据示例实施例的通过接收来自目的地网络节点的一组序列化表示的网络节点来建立无环路标签交换路径的示例方法。
图14示出了根据示例实施例的支持弧的示例序列化表示。
图15示出了根据示例实施例的构建在图6I的网络节点之一中的用于主层次级别的路由的示例标签交换转发表。
图16示出了根据示例实施例的图2的无环路由拓扑内的路由弧的示例层次结构,该层次结构包括无环路由拓扑的主层次级别的主路由弧、图2中被实现为基于环的网络的网络节点之一的第二层次级别的二级路由弧、以及二级路由弧之一的三级层次级别的三级路由弧。
图17A和图17B示出了根据示例实施例的在规定的环形拓扑内实现的三级路由弧,这些三级路由弧具有路由器的第一和第二同心环且构成规定的环形拓扑的二级路由弧的基础。
图18进一步详细示出了根据示例实施例的网络节点之一中的二级路由弧。
图19示出了根据示例实施例的图18的二级路由弧的序列化弧表示。
图20示出了根据示例实施例的在图18的网络节点中具有基于环的网络的一个网络节点的入口路由器中实现的示例多级层次结构标签交换转发表,其中基于环的网络具有规定的环形拓扑。
图21示出了根据示例实施例的在图18的网络节点中具有基于环的网络的一个网络节点的出口路由器中实现的多级层次结构标签交换转发表。
图22示出了根据示例实施例的图16的主路由弧的主层次级别标签交换路径。
图23示出了根据示例实施例的被实现为具有多个下游网络节点和相应的主层次级别标签交换路径、以及相应的第二层次级别标签交换路径的边缘接合点的示例网络节点。
图24示出了根据示例实施例的在图22的边缘接合点中实现的示例多级层次结构标签交换转发表。
图25示出了根据示例实施例的利用目的地网络节点的主层次级别交换标签、具有规定的环形拓扑的网络节点之一内的二级路由弧的第二层次标签交换标签、和用于沿二级路由弧的可达性的三级层次级别交换标签对数据分组进行的示例封装。
图26示出了根据示例实施例的根据多级层次结构对分组进行路由,包括用图24的主层次级别交换标签、二级层次级别交换标签、和三级层次级别交换标签对分组进行封装。
图27示出了根据示例实施例的在无环路由拓扑的主层次级别中创建主路由弧、在主层次级别之下的第二层次级别中创建二级路由弧、以及在第二层次级别之下的三级层次级别中创建三级路由弧。
图28示出了根据示例实施例的在具有环形拓扑的网络节点的连续交叉点之间创建第二层次级别的二级路由弧。
具体实施方式
概览
在一个实施例中,一种方法包括:在计算网络中创建包括用于到达目的地网络节点的多个路由弧的无环路由拓扑,其中每个路由弧包括作为该路由弧的第一端的第一网络节点、作为该路由弧的第二端的第二网络节点、以及至少第三网络节点,该第三网络节点被配置为经由路由弧的第一或第二端中的任意一个沿路由弧向目的地节点路由任意网络流量,第一、第二、或第三网络节点中的至少一个被实现为具有规定的环形拓扑的基于环的网络;以及经由无环路由拓扑的路由弧建立用于到达目的地网络节点的无环标签交换路径,该标签交换路径独立于且不同于规定的环形拓扑的任意属性。
在另一实施例中,一种方法包括:通过路由器接收去往计算网络中的无环路由拓扑中的目的地网络节点的数据分组,该无环路由拓扑包括用于到达目的地网络节点的多个路由弧,每个路由弧包括作为路由弧的第一端的第一网络节点、作为路由弧的第二端的第二网络节点、以及至少一个第三网络节点,该第三网络节点被配置为经由路由弧的第一或第二端中的任意一个沿路由弧将任意网络流量路由到目的地节点,第一、第二、或第三网络节点中的至少一个被实现为具有规定的环形拓扑的、包含路由器的基于环的网络;路由器向数据分组添加主层次级别交换标签,该主层次级别交换标签提供用于经由无环路拓扑的路由弧到达目的地网络节点的无环标签交换路径,无环路由拓扑中的每个标签交换路径独立于且不同于规定的环形拓扑的任意属性。
详细描述
特定实施例能够实现针对具有不同路径(比如,路由弧)的无环路由拓扑中的目的地网络节点的有效的网络流量管理,从而能够使网络流量沿任意路径的两端中的任意一端被路由。特定实施例将路由弧的使用应用在多级层次结构中,其中每个层次级别的路由弧独立于且不同于任意其它层次级别。给定层次级别的每个路由弧是通过使用用于经由多个可用路径到达路由弧的端部的多个无环标签交换路径实现的。每个层次级别代表抽象(或实现方式)的相应附加级别,其中主层次级别代表被布置到用于到达目的地网络节点的主路由弧中的网络节点的主层次结构,这些网络节点中的至少一个被实现为具有规定的环形拓扑的基于环的网络;第二层次级别可以代表主层次级别中的网络节点之一的基于环的网络中的第二层次的二级路由弧,每个二级路由弧提供从相应的基于环的网络到主层次级别中的相邻网络节点的可达性;第三层次级别的三级路由弧可以在二级路由弧之一内提供到相邻网络节点的可达性。第三层次级别的三级路由弧独立于且不同于覆盖在三级路由弧上的第二层次级别的二级路由弧,并且第二层次级别的二级路由弧独立于且不同于用于到达目的地网络节点的主层次级别的路由弧。
此外,数据分组基于在主层次级别、第二层次级别、第三层次级别中的每一级别中实现标签交换路径(主层次级别中的标签交换路径称为omega交换路径,第二层次级别中的标签交换路径称为lambda交换路径,第三层次级别中的标签交换路径称为iota交换路径)穿过无环路由拓扑,其中路由器可以推送第二层次标签交换标签(1ambda标签)用于到达主层次级别中的相邻网络节点,并且选择性地推送三级层次标签交换标签(iota标签)用于经由三级路由弧之一到达沿二级路由弧的路由器。当数据分组被传递到另一三级路由弧时,iota标签可以被另一iota标签替代,或者iota标签可以基于数据分组到达二级路由弧的端部被弹出;lambda标签可以在数据分组在主层次级别中的相邻网络节点处到达lambda交换路径的端部时被弹出,从而使得连接当前(基于环的)网络节点和相邻网络节点的路由器能够调换沿omega路由弧中的omega交换路径的下一跳的omega标签。
因此,多级层次结构的路由弧的使用加上在多级层次结构中对标签交换路径(比如,omega交换路径,lambda交换路径、和iota交换路径)的使用使得能够在基于环的网络内以及在基于环的网络之间进行弹性路由计算,其中针对不同的层次级别的路径计算是独立的且不同的。因此,示例实施例提供了对于以下路径计算的分形分析,该路径计算用最小的复杂性提供了贯穿多个异构网络的多个无环弹性路径。
由于针对不同的层次级别的路径计算是独立的且不同的,所以以下的描述将从描述创建无环路由拓扑的主层次级别的多个主路由弧(omega弧)开始,随后描述建立用于到达目的地网络节点的omega标签交换路径。对omega弧和omega标签交换路径的描述是参考图1到图15被描述的。对lambda弧和相关联的lambda交换路径以及iota弧和相关联的iota交换路径的描述将参考图16到图27被描述。
使用主路由弧生成无环拓扑的主层次级别
图1到图6I描述了根据示例实施例的使用路由弧在无环拓扑中生成主路由弧的主层次级别。路由弧可以在可以保证任意网络节点具有至少两个可以经由至少一个路由弧到达目的地网络节点的数据链路的无环路由拓扑中被生成:响应于所检测到的数据链路故障(或网络节点故障),基于反转路由弧内的所标识的可逆链路,网络流量可以被立即重新路由到路由弧的另一端。对路由弧内的所标识的可逆链路的反转还保证不会在无环路由拓扑中引入任何环路。
在一个实施例中,无环路由拓扑是通过生成一组描述无环路由拓扑的序列化表示来表示的。具体地,在无环路由拓扑中,每个序列化表示描述多个路径(比如,路由弧)中的一个;例如,给定路径或路由弧的序列化表示可以类似于从该路径的一端(比如,路由弧的第一接合节点)到路径的另一端(比如,路由弧的第二接合节点)的源路由路径。因此,该组序列化表示提供对无环路由拓扑中的所有的路径的完整表示。
此外,接收该组序列化表示的任何网络节点可以建立用于到达目的地网络节点的多个路径,例如以用于到达目的地网络节点的无环标签交换路径的形式。因此,序列化表示传遍计算网络的各个网络节点使得这些网络节点能够自动部署标签交换路径。
具体地,以下关于图1到图6I的描述描述了在计算网络中创建包括多个用于到达目的地网络节点的路由弧的无环路由拓扑的装置:每个路由弧包括作为路由弧的第一端的第一网络节点、作为路由弧的第二端的第二网络节点、以及至少第三网络节点,该至少第三网络节点被配置为经由该路由弧的第一或第二端中的任意一个沿该路由弧向目的地网络节点路由任意网络流量。
接合节点被定义为基于其在网络拓扑内的相对位置被标识的、具有提供用于到达目的地网络节点的相应的非一致的路径的至少两个数据链路的网络节点(比如,具有规定的网络拓扑(例如规定的环状拓扑)的计算网络):本所明书中以及所附权利要求中的术语“非一致”要求来自接合节点的路径不共享用于到达目的地网络节点的任意公共数据链路,而是属于(从接合节点到目的地网路节点的)一条路径的每个链路不同于且独立于属于(从接合节点到目的地网络节点的)第二非一致路径的任意链路。
如果接合节点的数据链路使得该数据链路的端点(即,经由该数据链路直接耦接到接合节点的网络节点)能够变为具有该端点自己的用于到达目的地网络节点的非一致路径的接合节点,则该数据链路还可以被认为是“可逆链路”。
在一个实施例中,通过可逆链路耦接起来的一个或多个接合节点可以在逻辑上依次连接以创建作为第一基础设施弧的、其两个相应的端终止于目的地网络节点处的路由弧。可以创建具有至少一端终止于先前创建的基础设施弧(比如,第一基础设施弧)、另一端终止于先前创建的基础设施弧或者目的地网络节点的附加的路由弧,其中每个新的路由弧包括不同于先前生成的路由弧中的任意网络节点的网络节点。换言之,被分配给一个现有路由弧的网络节点之后不可以被分配给另一路由弧(除非该网络节点是现有路由弧和较新的路由弧的端之间的接合点)。
在另一实施例中,可以基于在用于到达目的地网络节点的第一有向非循环图内标识具有用于经由非一致路径到达目的地网络节点的可反转链路的一个或多个接合节点创建作为基础设施弧的路由弧;可以基于在第一有向非循环图内标识用于到达第一有向非循环图的接合节点之一(作为二级路由弧的一端)的第二有向非循环图并在第二有向非循环图内标识具有用于到达目的地网络节点的新的非一致路径的、不同于该接合节点的新的接合节点(该新的接合节点经由终止于目的地网络节点处或者先前创建的基础设施路由弧的二级路由弧的第二端提供新的非一致路径)创建二级路由弧。
因此,基于对所标识的可逆链路进行反转,示例实施例使得无环路由拓扑中具有两个数据链路的任意网络节点即使在无环路由拓扑中的任意一个数据链路遇到故障时也能够保证到目的地网络节点的可达性。
图1示出了根据示例实施例的包括用于到达目的地网络节点14的多个路由弧12的示例无环路由拓扑10。每个路由弧12包括多个网络节点16,每个网络节点16具有至少两个用于到达邻近网络节点的数据链路。如图1中可明显看出的,无环路由拓扑10保证(在图1中由“X”示出的)任意网络节点16沿任意弧12的任意点具有至少两个用于到达目的地网络节点14的非一致路径,从而即使在无环路由拓扑10中遇到链路故障时也能保证到目的地网络节点的可达性。说明书和权利要求中的术语“节点”可以指具有规定的拓扑的网络设备或网络,例如具有规定的环形拓扑的基于环的网络。
如参照图6A-6I所进一步详细描述的,每个路由弧(比如,图6I的“ARCl”)12包括至少3个网络节点16,即被指定为该路由弧的第一端的第一网络节点(比如,图6I的网络节点“K”)16、被指定为该路由弧的第二端的第二网络节点(比如,图6I的网络节点“J”)16以及至少第三网络节点(比如,图6I的网络节点“M”)16,该至少第三网络节点被标识为接合节点并被配置为经由该路由弧的第一或第二端所提供的两个可用的非一致路径中的任意一个沿该路由弧向目的地节点14路由任意网络流量的。因此,网络流量可以沿路由弧12中的至少一个被转发到目的地网络节点14。
如图6I中所示出的,每个路由弧12的第一和第二端各自终止于“安全网络节点”处,例如要么是目的地网络节点14、直接耦接到目的地网络节点的另一网络节点(比如,网络节点“A”或者网络节点“B”),要么是另一路由弧的接合节点。直接耦接到目的地网络节点“R”14的网络节点(比如,图6I的“A”)被称为“继承者网络节点”。因此,“安全网络节点”可以是目的地网络节点14、继承者网络节点(比如,图6I的“A”或“B”)或具有两个用于到达目的地网络节点的非一致路径的接合节点中的任意一个。例如,路由弧“ARC2”12的两端终止于目的地网络节点“R”14处,目的地网络节点“R”14也被称为“根网络节点”或“根节点”;路由弧“ARC3”12的第一端终止于继承者网络节点“A”16处,路由弧“ARC3”12的第二端终止于路由弧“ARC2”12的接合节点“C”处。路由弧“ARC2”12也可以被称为“根弧”,因为路由弧“ARC2”12的两端终止于目的地网络节点“R”14处。
在图5和图6I所示出的示例实施例中,每个路由弧包括一个且仅包括一个弧指针(图6I的18),该弧指针提供对沿路由弧引导网络流量的独占控制。在任意给定时间,路由弧的一个且仅一个接合节点(即,有且仅有一个节点被指定在路由弧内作为接合节点的位置)拥有弧指针18:拥有弧指针18的接合节点可以基于对弧指针18的拥有权控制沿相应的路由弧12的网络流量。具体地,拥有弧指针18的接合节点(比如,图6I的“J”)可以沿其朝向路由弧(比如,“ARC2”)12的端的外向型链路中的任一链路引导网络流量离开其本身。因此,基于接合节点沿其外向型链路中的一个链路路由网络流量离开其本身,拥有弧指针18的接合节点(也称为“弧指针节点”)对于沿相应的路由弧对网络流量进行路由具有独占控制。
基于在相应的路由弧中检测到故障,第二接合节点(即,在路由弧内被指定作为接合节点的位置的另一网络节点)可以(比如,从路由弧的第一接合节点)获得对弧指针的拥有权,以继续在相应的路由弧中路由网络流量而不管所检测到的故障。例如,基于在网络节点“F”和网络节点“C”之间的链路“F-C”中检测到故障,路由弧“ARC2”12的接合节点“F”可以获得对先前归接合节点“J”所有的相应的弧指针18的拥有权,使得网络节点“F”能够将朝向节点“J”的链路“F-J”反转以具有朝向目的地网络节点“R”14(见图6H和6I)的持续的可达性。因此,第二接合节点(比如,图6H和6I的“F”)在获得对弧指针18(其提供对沿路由弧(比如,“ARC2”)12引导网络流量的独占控制)的拥有权后,可以反转所连接的可逆链路之一而无需在无环路由拓扑10中创建环路。因此,基于路由弧中的接合节点(比如,“F”)获得对先前归同一路由弧12中的另一接合节点(比如,“J”)所有的路由弧18的拥有权,响应于路由弧中检测到故障(比如,链路“F-C”中的故障),沿路由弧(比如,“ARC2”)12的数据流量可以被立即重新路由,以继续在路由弧12中向目的地网络节点14进行路由。
图2和图6A示出了根据示例实施例的用于创建图1、图6I、和图16-图25的无环路由拓扑10的示例装置20。实施所公开的用于创建无环路由拓扑10、向每个网络节点分发相关路由弧参数以将无环路由拓扑10实现为拓扑10内的网络节点16的操作的装置(即,设备、机器)可以被实现为路由器、中央服务器、网络管理实体等。装置20是被配置为经由建立链路层网状拓扑网络44(见图2)的数据链路实现与其它物理机器(即,硬件设备)14、16的网络通信的物理机器。
如图2中所示出的,装置20包括处理器电路22、设备接口电路24和存储器电路26。处理器电路22被配置为为计算网络创建包括用于到达目的地网络节点14的路由弧12的无环路由拓扑10。存储器电路26被配置为将与路由弧12相关联的参数存储在状态表54和/或拓扑表56中,下面参照图4和图5进行更详细的描述。设备接口电路24被配置为至少将所选择的与路由弧12相关联的参数输出到第二装置,以对无环路由拓扑10进行部署:第二装置可以是用于对网络节点16进行配置的网络管理实体,或者至少是可以直接由装置20进行配置的网络节点16中的一个。因此,设备接口电路24输出所选择的参数以对无环路由拓扑10进行部署,使得计算网络中的网络流量将沿路由弧中的至少一个被转发到目的地网络节点。
所公开的装置20的任意电路(包括处理器电路22、设备接口电路24、存储器电路26以及它们的相关联的组件)可以以多种形式被实现。所公开的电路的示例实现方式包括在逻辑阵列(比如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA))中实现的硬件逻辑或通过集成电路(比如专用集成电路)掩膜编程实现的硬件逻辑。这些电路中的任意电路还可以使用基于软件的可执行资源来实现,基于软件的可执行资源是由相应的内部处理器电路(比如微处理器电路(未示出))执行的并使用一个或多个集成电路来实现,其中对存储在内部存储器电路中(比如,在存储器电路26内)的可实施代码的执行使得(一个或多个)集成电路实现处理器电路22以将应用状态变量存储在处理器存储器中,创建执行如本文所描述的电路的操作的可执行应用资源(比如,应用实例)。因此,本说明书中使用术语“电路”指的是使用一个或多个集成电路实现的并包括用于执行所描述的操作的逻辑的基于硬件的电路,或者指的是包括(使用一个或多个集成电路实现的)处理器电路的基于软件的电路,该处理器电路包括用于存储由处理器电路执行可执行代码而被修改的应用变量和应用状态数据的处理器存储器的预留部分。存储器电路26可以(例如)通过使用非易失性存储器(比如可编程只读存储器(PROM)或EPROM)和/或易失性存储器(比如DRAM等)被实现。
此外,可以基于以数据结构的形式创建消息/分组并将该数据结构存储在所公开的装置中的有形存储器介质(比如,发送缓冲器)中实现对“输出消息”或“输出分组”(或类似的)的任意引用。对“输出消息”或“输出分组”(或类似的)的任意引用还可以包括经由通信介质(比如,视情况而定,有线或无线链路)(在适当的情况下还可以使用光传输)将存储在有形存储器介质中的消息/分组(比如,视情况而定,经由有线电流或无线电场)电传输到另一网络节点。类似地,可以基于所公开的装置在通信介质上检测消息/分组的电(或光)传输并将所检测到的传输作为数据结构存储在所公开的装置的有形存储器介质(比如,接收缓冲器)中实现对“接收消息”或“接收分组”(或类似的)的任意引用。还要注意的是,存储器电路23可以被处理器电路22动态地实现,例如由基于处理器电路22执行的存储器地址分配和分区。
在描述创建路由弧的方法之前提供下面的定义。
路由弧被定义为双端可逆路径。可逆弧被定义为包含一个或多个可逆链路的路由弧,可逆弧可以在弧的每端处包含一个或多个不可逆链路。图6B到图6H中被标注“Rev”的数据链路是可逆链路,图6B到图6H中未被标注“Rev”的链路不是可逆的;因此,可以基于一个或多个连续不可逆链路识别路由弧的端部,其中不可逆链路的内部是一个或多个可逆链路。折迭弧(比如,图6I的“ARC1”、“ARC3”、“ARC6”、“ARC7”、“ARC8”)被定义为不具有可逆链路并由固定地(即,不可转让地)拥有弧指针18的一个网络节点和作为折迭弧的相应端部的两个其它网络节点16组成的路由弧12。例如,图5和图6I中的折迭弧“ARC1”12被示出为由网络节点“J”、“M”和“K”组成,其中网络节点“M”固定地拥有在折迭弧“ARC1”12的相应的端部处的网络节点“J”和“K”之间的弧指针18。
在一端处使用箭头标明,并具有名称“SPF”的链路代表在根据传统路由协议(比如开放式最短路径优先(OSPF))所生成的树中所发现的链路,使得在箭头的端部处的网络节点代表在箭头的尾端处的网络节点的最短路径优先(SPF)继承者(比如,图6A中的网络节点“A”是网络节点“C”和“D”的SPF继承者)。将使用在一端处的箭头来标明弧的边缘处(即,终止该弧并将该弧连接到第二弧或者目的地)的任意链路。使用“TOP”(代表“然后其他链路(then other path)”)标明的链路代表因为不是最短路径继承者而未被OSPF选取,但是可以被用作替代下一跳(即,可行的继承者)的链路,例如用于生成有向非循环图(DAG)(例如,参见美国专利号7,656,857)。
如先前所描述的,拥有弧指针的网络节点可以决定应当沿弧的哪个方向转发流量。因此如果网络节点可以沿弧的任一方向转发网络流量,则该网络节点被判定为是“安全网络节点”(即,即使一个方向出现故障,“安全网络节点”也可以在沿弧的其它方向安全地转发任意分组)。
使用参考标号“?-S”标明的链路代表候选链路,该候选链路对接合节点“S”(其被标识为对于经由具有名称“?-S”的链路的网络节点是最近的安全节点)来说是未解析的:对候选链路的引用表示当路由弧的两端还未被建立时的过渡状态,并且不管候选链路是否在路由弧的形成中被使用,它还没被建立。如下面参照图6B-6F所进一步详细描述的,使用参考标号“?-S”标明的链路还标识用于到达安全节点“S”的子DAG(即,在DAG内的DAG)。
使用参考标号“Rev”标明的链路指示对在路由弧12内的两个网络节点进行连接的可逆链路:如图6H和图6I中所示出的,具有至少一个可逆链路的网络节点(比如,“J”)在弧的中部内,并可以拥有相应的路由弧的弧指针18。如图6H和图6I中所示出的,在路由弧的边缘处的数据链路(比如,终止于第一弧处并进入第二弧,或终止于目的地节点D处的数据链路)被引导离开路由弧(以及拥有相应的弧指针18的接合节点)12的中部,并且在路由弧12的边缘处的数据链路是不可逆的。
在一端处使用方形或菱形块标明的链路(比如,图6C中的“M□→J”)指示不可逆的阻塞链路,其中目的地网络节点(比如,图6C中的网络节点“J”)不能向另一个源网络节点(比如,图6C中的“M”)发送任意数据流量,但是源网络节点(比如,图6C中的“M”)可以经由该链路(“M□→J”)向目的地网络节点(“J”)发送数据流量。在计算期间使用阻塞链路被来防止任意环路的形成。
如下面所进一步详细描述的,数据链路方向为离开拥有弧指针的接合节点朝向路由弧12的边缘,可逆链路的链路方向可以通过移动弧指针18(即,将指针的所有权从一个网络节点传递到另一网络节点)被改变。
在被标识为接合节点的网络节点之间建立路由弧12。接合节点68是通过非一致路径连接到(下面所描述的)两个或多个安全网络节点的网络节点(即,单个点的故障不会停止从接合节点到根节点的可达性)。边缘接合点被定义为终止一个且仅终止一个可逆链路的接合节点68,其中边缘接合点可以具有内向型和/或外向型的多个不可逆链路。中间接合点被定义为终止两个且终止仅两个可逆链路的接合节点68,其中耦接到中间接合点的所有其它链路内向型以避免环路:链路可以被安全地反转为朝向中间接合点。因此,中间接合点由两个可逆链路和来自任意其它网络节点的零个或多个内向型的链路组成。折迭弧不具有任意中间接合点,边缘接合点可以属于一个或多个折迭弧。
根网络节点14被定义为到达资源所必须访问的网络中的单一网络节点(即,“目的地网络节点”),即,永远不可能存在可以绕过根网络节点的到达资源的第二路径。对路由弧12的计算开始于对给定路由拓扑10的根节点(即,目的地节点)14的标识。根节点14的示例可以包括路由弧12内的自主有向非循环图的头端、到另一网络的网关或任意可标识的目的地。所有的根链路总是内向地朝向根节点14并且是被解析的。
“继承者”网络节点是直接连接到根网络节点14的网络节点。如图1和图6A-6I所示出的,作为根网络节点14的目的地网络节点必须具有至少两个直接连接到根网络节点14的继承者网络节点(比如,图6A-6I的网络节点“A”和“B”):如果根网络节点只有一个继承者节点,则该继承者网络节点被指定为新的根节点(基于根网络节点的定义为不具有到达资源的第二路径)。继承者网络节点被用来标识安全网络节点:如果网络节点可以可替代地经由第一继承者节点或第二继承者节点到达根节点,则该网络节点被认为是安全网络节点,因为它可以经由两个非一致路径(即经由第一继承者网络节点或经由第二继承者网络节点)将分组路由到根,确保在朝向根节点的链路中的一个断开的情况下的可达性。
叶网络节点是具有一个且仅具有一个数据链路的节点:叶节点不可能是接合节点,并且不可能属于路由弧12。耦接到叶网络节点的数据链路总是外向型的(即,离开叶网络节点)并且是被解析的。
安全网络节点是用来标识根网络节点14、继承者节点(比如,图6A-6I的“A”或“B”)或接合节点中的任意一个的名称。因此,接合节点是既不是根网络节点14也不是继承者网络节点,而是安全网络节点的网络节点,因为它具有两个或多个到根网络节点的非一致路径,使得单个点的故障不会隔断根网络节点和接合节点。如果可逆链路的方向必须被转换以获得替代路径,则网络节点可以被标识为接合节点。
因此,连接到继承者网络节点和根网络节点的网络节点是接合节点;连接到两个不同的继承者网络节点的网络节点是接合节点;连接到继承者网络节点和接合节点的网络节点也是接合节点;连接到两个不同的接合节点的网络节点也是接合节点。因为根网络节点、继承者网络节点和接合节点各自被定义为安全网络节点,则连接到两个不同的安全网络节点的网络节点是接合节点;具有到至少两个不同的安全网络节点的非一致路径的网络节点是接合节点(接合节点可以被认为“看(see)”向安全网络节点,并只要它们仅可通过该接合节点达到,则随后隐藏它们);仅能看到一个接合节点的网络节点在该接合节点的“子DAG”内,并且照此可以被跟踪。
因此,数据分组必须遵循路由弧12,并且仅可以经由路由弧12的端部之一处的边缘接合点退出路由弧12。因此,数据分组可以基于沿一个或多个路由弧12行进到达根节点(即,目的地节点)14。
图3A是根据示例实施例的示出了由图2的装置20的执行的示例方法的图表,该方法包括创建包括用于到达目的地网络节点14的路由弧12的无环路由拓扑10。图3B、3C和3D根据另一示例实施例的示出了由装置20执行的用于创建无环路由拓扑10的替代方法。参照任意附图(比如,下面所描述的图3A-3D、图8-11、图13以及图26-27)描述的的操作可以被实现为存储在计算机或机器可读非暂态有形存储介质(比如,软盘、硬盘、ROM、EPROM、EEPROM、非易失性RAM、CD-ROM等)上的、基于由处理器电路使用一个或多个集成电路实现的对代码的执行完成的可实施代码;本文所描述的操作还可以被实现为编码在一个或多个非暂态有形介质(比如,可编程逻辑阵列或设备、现场可编程门阵列、可编程阵列逻辑、专用集成电路等)中的用于执行的可执行逻辑。
参考图3A,基于在操作30中创建第一路由弧12来作为基础设施弧(即,不是折迭弧的路由弧),处理器电路22可以创建无环路由拓扑10:在操作30中创建的第一路由弧12(比如,图1的12a或12b)必须具有终止于目的地网络节点(即,根节点)14处的两端。处理器电路22可以在操作32中创建下一路由弧12(在操作30中创建第一路由弧12a或12b之后)来作为基础设施弧(比如,12b之后的12c)或折迭弧(比如,12a之后的12d),以上操作服从以下规则:(1)在构建的下一路由弧必须终止于现有路由弧的接合节点或目的地网络节点14处(比如,路由弧12c一端终止于路由弧12b处且另一端终止于目的地网络节点14处);(2)除了路由弧的端终止于现有路由弧的接合节点之外,在创建的路由弧必须从尚未在现有路由弧中的网络节点得到;换言之,在规则(2)中,下一路由弧12包括不同于现有路由弧的任意网络节点的网络节点。下一路由弧12可以在操作34中由处理器电路22构建,直到针对具有至少两个数据链路的所有网络节点的所有的路由弧都被完成。处理器电路22在操作36中标识仅包含一个数据链路的任意叶网络节点,并在操作38中实现在操作30、32、34、36中所构建的无环路由拓扑10。
如操作30、32和34所示出的,优选的第一路由弧12(比如,12a或12b)先于任意其它路由弧(比如,12c或12d)被创建;然而,只要遵循操作32的规则以保证不形成环路,则图1中的路由弧12就可以以任意顺序被创建,其中“现有路由弧”指的是已经分配给另一路由弧的一组网络节点。因此,可以使用用于创建无环路由拓扑10的可替代的技术,只要满足以下条件:在形成过程中路由弧12不相互交叉;或者相互交叉的任意路由弧12在交叉点(比如,折迭弧)共享相同的指针,使得所有的网络流量被引导离开指针点。
基于使得设备接口电路24至少将所选择的与路由弧12相关联的参数输出到至少一个其他装置(比如,网络路由器、网络管理装置、一个或多个网络节点等),处理器22可以在操作38中部署无环路由拓扑10,以使得路由拓扑10中的网络流量沿路由弧12中的至少一个被转发到目的地网络节点14。如果在操作40中(例如)由装置20或由网络节点14或16中的一个在路由弧之一中检测到链路故障(或网络节点故障),则在操作42中邻近链路故障的接合节点可以获得(比如,由处理器电路22通过转换、再分配等)弧指针18的拥有权,使得接合节点能够基于针对朝向目的地网络节点14的继续路由,对可逆链路中的一个进行反转而无需在无环路由拓扑10中创建环路对网络流量进行控制。
图3B、3C和3D示出了根据示例实施例的由处理器电路22执行的用于创建包括图6I的路由弧12的无环路由拓扑10的示例方法。
根据示例实施例,无环路由拓扑10可以被创建,在其中试图建立除根网络节点和继承者网络节点(如接合节点)外的每个网络节点,以保证每个网络节点具有到目的地网络节点(即,根网络节点)14的最短路径和替代路径。这种保证通过创建终止于安全网络节点处的路由弧12得以建立。由于用于生成有向非循环图(DAG)的传统技术不保证在有向非循环图内的每个节点可以是接合点,所以响应于网络节点或网络链路中所检测到的故障,示例实施例使得链路能够被反转,使得数据流量能够立即重新路由,而无需路由再计算且无需在拓扑中形成任意环路。因此,示例实施例可以建立用于到达根网络节点的路由弧的无环路由拓扑,无环路由拓扑包括根网络节点、耦接到根网络节点的两个或多个继承者网络节点、接合节点以及零个或多个叶网络节点。
如参照图3B、图3C、图4-图5和图6A-图6I所进一步详细描述的,无环路由拓扑10基于以下操作被创建:生成用于到达目的地网络节点14的第一有向非循环图;(在第一有向非循环图内)标识具有用于到达目的地网络节点14的非一致路径的接合节点;标识接合节点之间的、沿非一致路径的、且不在无环路由拓扑10中引入或创建环路的可逆链路;在第一有向非循环图内标识至少一个用于到达接合节点之一的第二有向非循环图(也称为“子DAG”),第二有向非循环图包括所标识的具有用于到达目的地网络节点的新的非一致路径的新的接合节点。
在本公开中,链路可以通过连接网络节点来标识,使得链路“A-R”指的是将网络节点“A”连接到下一跳网络节点“R”的有线或无线链路:链路名称中的箭头可以指所指定的方向(比如,“A→R”和“R←A”等效标识将流量从节点A导向节点R的链路),而链路名称中不存在箭头(比如,“A-R”)则指示还未为链路指定方向。
参考图2和图3B,处理器电路22标识由有线或无线数据链路(比如,有线或无线IEEE 802.11、蓝牙等)46组成的数据链路层拓扑44(图2),并在操作50中创建用于到达目的地网络节点14的有向非循环图(DAG)52,如图6A中所示出的。具体地,图2的数据链路层拓扑44包括具有对网络节点进行互连的一个或多个链路层连接(比如,有线或无线IEEE 802链路、蓝牙等)的网络节点14,例如以互连的网络节点的链路层(即,OSI第2层)网格的形式。在操作50中处理器电路22(例如根据美国专利号7,656,857中所描述的技术)生成有向非循环图52,其中被标注“SPF”的链路标识最短路径优先(SPF)拓扑中的SPF链路,被标注“TOP”的链路标识覆盖SPF拓扑的、使得朝向根节点“R”的有向非循环图的形成的“然后其它路径(then other path)”(TOP)链路。总之,基于标识邻近根节点14的下一跳节点,并使得每个下一跳节点的链路朝向根,处理器电路22在操作50中生成有向非循环图。然后标识(邻近每个下一跳节点的)次级邻近节点,并且从下一跳节点到相关联的次级邻近节点的路径被延伸,同时使在次级邻近节点和下一跳节点之间的每个链路朝向下一跳节点。这些操作被递归地重复,直到路径延伸到网络中最远的节点,并且使链路向后地朝向根,以形成有向非循环图。
在参照图6A-6I的路由弧12的计算期间,SPF链路的SPF状态被保留在存储器电路26中。图4(包括图4A、4B、4C和4D)示出可以被存储在存储器电路26中并被配置为在图3B、3C和3D中的方法的执行过程中存储网络节点和数据链中的状态变化的示例状态表54。
图5示出可以被存储在存储器电路26中并被配置为在用于到达目的地网络节点(即,根网络节点“R”)14的路由弧被构建时存储弧拓扑属性的示例拓扑表56。当状态表54被更新(比如,在标识SPF链路、标识可逆链路、标识接合节点68后,在创建路由弧后等)时,处理器电路22可以更新图5的拓扑表56,其中对弧指针18的拥有权被具有两个外向型可逆链路的接合节点68标识。因此,处理器电路20在操作50中存储拓扑表56中的SPF链路以及非SPF链路(图5中未示出)。
如图6A中所示出的,(除了网络节点“J”之外)DAG拓扑52中没有网络节点具有至少两个用于到达根节点“R”的非一致路径。因此,图3B、3C和3D的方法提供无环路由拓扑10中路由弧12的创建,这些路由弧使得网络流量能够经由路由弧的端部中的任意一个沿着朝向目的地根网络节点的路由弧被路由。
在操作50中形成有向非循环图后,路由弧的生成从图3B中的操作60开始,其中SPF链路被保留,同时选择性地将有向非循环图中的非-SPF链路修改为单向链路或可逆链路。每个网络节点和每个数据链路的状态可以被存储在存储器电路中。
操作60中路由弧的生成从对根网络节点R的标识开始,并使得未定向的链路的方向朝向根(A→R,B→R),如图4A的状态表中事件200的状态变化所示出的,并在操作62中发起对继承者网络节点(比如,节点A)的标识。如下面所进一步详细描述的,在操作62中,SPF节点依次被处理器电路22分析以标识DAG 52内的朝向目的地网络节点14的从属有向非循环图(子DAG)64(比如,图6B的64a和64b)。耦接到根网络节点14的每个继承者网络节点链路(比如,A-R)外向地朝向根网络节点且在状态表54中被标记为已解析的(A→R=已解析的)(图4A的事件202)。在操作66中每个邻居网络节点依次被解析,以标识子DAG 64内的具有用于经由不同于子DAG 64的路径到达目的地网络节点14的替代非一致路径的任意接合节点;换言之,每个邻居网络节点16依次被解析以在子DAG 64内标识任意具有至少两个用于到达目的地网络节点的非一致路径的接合节点。
图3C和3D更详细地示出了处理器电路22在操作66中执行的操作。图3C和3D的操作以名为“resolve_neighbor(N)”的、注释有纲要注释以标识嵌套操作的函数调用的“C代码”的示例形式中被示出。在图6B到6I以及图7中省略了装置20以简化说明,尽管装置20在路由弧12的计算以及无环路由拓扑10的创建(以及如下面参照图7-图9描述的无环路由拓扑10的负载平衡)期间将始终存在将是显然的。
如果所分析的邻居节点“N”是包含一个且仅包含一个数据链路的叶网络节点,则操作70中的第一操作由处理器电路22执行。在这个示例中,执行的当前状态是图4A的状态202,其中继承者网络节点“A”被分析;因此,操作70被跳过,因为继承者网络节点A不是叶节点。如果所分析的邻居节点“N”不是安全节点,则操作72由处理器电路22执行。在对继承者网络节点“A”进行分析的当前状态中,操作72被跳过,因为继承者网络节点A是安全网络节点(因为它是继承者网络节点)。
如先前所描述的,由处理器电路22执行的方法试图标识是安全网络节点的邻近网络节点。因此,所分析的安全网络节点(比如,节点N=节点A)的链路(N-i)中的还未被标注(即,未标注的)(比如,D→A,C→A)的任意链路最初被设置为朝向最近的安全节点的未解析状态(D→A=“?-S”;C→A=“?-S”),以指示尚未判定链路(比如,D→A,C→A)是否将网络节点(比如,节点A)耦接到使得链路能够可逆的另一安全网络节点,或者链路是否将网络节点耦接到不安全网络节点(即,不是先前所定义的安全网络节点的网络节点)。
所分析的安全网络节点(比如,节点N=节点A)的每个链路(N-i)在操作74中根据SPF标识按顺序地被解析,即首先提供最短路径的链路,随后是输出链路,随后是输入链路。如果在操作76中数据链路已经被解析,则处理器电路22的执行在操作74中前进到下一链路:注意链路A→R被解析,且结束于根网络节点14,将链路A→R标识为终止于路由弧12。操作78到86当前被处理器电路22跳过,因为所分析的安全网络节点(比如,节点N=节点A)没有其他未解析的输出链路。处理器电路22在操作74中返回到下一个链路,即输入链路。
如果处理器电路22在操作88判定所分析的未解析的链路(其不是SPF链路或输出链路)没有被指定方向,则链路被指定为输入方向,以引导流量朝向所分析的安全网络节点(比如,节点N=节点A)。如果输入链路(比如,基于初始有向非循环图的D→A)被标记为未解析状态(比如,D→A=“?-S”),则关于所分析的安全网络节点输入链路被标记为未解析状态(即,链路D→A被从“?-S”重置到“?-N”)。因此,链路“D→A”被重置到状态“?-A”(节点N=节点A:D→A=“?-A”);在操作74和88中,针对节点A的下一链路,处理器电路22重复该过程,因此链路“C→A”在操作88中被重置到状态“?-A”(C→A=“?-A”),指示尚未判定链路“D→A”和“C→A”是否是可逆的以到达另一安全网络节点(链路被朝向最近的网络节点)。因此,未解析状态指示尚无法形成路由弧,因为未解析的链路尚未被发现朝向到根网络节点的替代非一致路径是可逆的。在操作88中子DAG中朝向安全网络节点“N”(节点N=节点A)的所有的未解析的输入链路被递归地重新标注,产生经由被标注为“?-A”的链路对图6B的子DAG(A)64a的标识。
在所分析的安全网络节点(比如,节点N=节点A)的所有的链路已经被分析之后,针对具有到尚未被分析的根网络节点“R”的最短路径(在操作50的SPF计算中)的下一节点(比如,继承者网络节点“B”),图3B的操作62和66的处理被处理器电路22重复(图4A的事件204)。在操作62中,网络节点“B”被处理器电路22标识为继承者网络节点,根链路“B→R”被处理器电路22标识为SPF链路并且被定向为朝向根网络节点,并在操作62中在状态表54和拓扑表56中被标记为已解析的SPF链路。如在图3C和3D中通过由处理器电路22对操作66的执行所示出的,由于网络节点“B”被标识为具有附加的输入链路“K-B”的继承者网络节点(因此是安全网络节点),操作70和72被处理器电路22跳过,在操作88中处理器电路22将状态表54中的链路“K→B”的状态从“?-S”改变为“?-B”(K→B=“?-B”)。剩余的输入链路被朝向最近的安全节点“B”递归地解析,产生图6B的子DAG(B)64b。
在图3B的操作62中,处理器电路22继续处理被SPF计算标识为离尚未被分析的根网络节点“R”最近的下一节点,即网络节点“K”(图4A的事件206)。图3C的操作70被跳过,因为网络节点“K”不是叶节点。因为网络节点“K”还不具有到根网络节点“R”的两个非一致路径,更确切地说网络节点“K”当前仅有到安全网络节点“B”的SPF链路“K→B”,因此它不是安全网络节点。因此,所有的非-SPF链路(比如,M-K和J-K)被处理器电路22指定方向为输入到所分析的当前网络节点“K”,且这些链路在操作72中被处理器电路22标注为对于最近的安全网络节点链路是未解析的(比如,M→K=“?-B”;J→K=“?-B”)。
因此,所分析的网络节点的当前组包括网络节点“A”、“R”、“B”和“K”。
在图3B的操作62和104中,对于被标识为非安全网络节点的网络节点“M”下一SPF网络节点,该方法由处理器电路22继续(图4A的事件208)。操作70被处理器电路22跳过,节点“M→K”被标识为SPF链路,在操作72中链路“J-M”在操作72中的状态表54中被指定为具有对最近的安全网络节点“B”的未解析的状态(J→M=“?-B”)的输入链路。
在图3B的操作62中,由处理器电路22从SPF节点中选出的下一网络节点是网络节点“D”(事件210),链路“D→A”被标识为SPF链路,操作70被处理器电路22跳过,且由于网络节点“D”不是安全网络节点,在操作72中,剩余的非SPF链路被处理器电路22指定为输入到网络节点“D”,并在状态表54中被标注为对最近的安全的网络节点“A”是未解析的(C→D=“?-A”;E→D=“?-A”;L→D=“?-A”)。如下面所进一步描述的,每个网络节点的每个非-SPF链路的成本可以被追踪以供以后的分析。处理器电路22针对网络节点“C”重复该方法(事件212),使得链路“C→A”被标识为SPF链路以及在操作72中在状态表54中对链路E→C=“?-A”和F→C=“?-A”进行标注。
在图3B的操作62中,从SPF节点中选出的下一网络节点是网络节点“L”(事件214)。操作70被处理器电路22跳过,且由于网络节点“L”不是安全网络节点,链路L→D被处理器电路22标识为SPF链路,链路“E-L”被指定为输入到网络节点“L”,且在操作72中在状态表54中被标注为对最近的安全网络节点“A”是未解析的(“E→L”=“?-A”)。
在图3B的操作62中,由处理器电路22从SPF节点中选出的下一网络节点是网络节点“E”(事件216)。操作70被跳过,且由于网络节点“E”不是安全网络节点,在操作72中链路E→C被处理器电路22标识为SPF链路,所有的非-SPF链路被定向为输入到网络节点“E”且被标注为对最近的安全节点“A”是未解析的,使得在状态表54中对链路F→E=“?-A”、G→E=“?-A”和H→E=“?-A”进行标注。
在图3B的操作62和104中,由处理器电路22从SPF节点中选出的下一网络节点是网络节点“F”(事件218)。操作70被处理器电路22跳过,且由于网络节点“F”不是安全网络节点,在操作72中链路F→C被处理器电路22标识为SPF链路,所有的非-SPF链路被定向为输入到网络节点“F”且被处理器电路22标注为对最近的安全节点“A”是未解析的,使得在状态表54中对链路H→F=“?-A”、I→F=“?-A”和J→F=“?-A”进行标注。
在图3B的操作62中,由处理器电路22从SPF节点中所选择的下一网络节点是网络节点“N”(事件220)。基于它的一个且仅一个链路N→L,网络节点“N”被处理器电路22标识为叶网络节点;因此,在操作70中,在状态表54中链路“N→L”被标记为未解析的。
在图3B的操作62中,由处理器电路22从SPF节点中选出的下一网络节点是网络节点“G”(事件222)。操作70被跳过,且由于网络节点“G”不是安全网络节点,在操作72中链路G→E被处理器电路22标识为SPF链路,非-SPF链路H→G被定向为输入到网络节点“G”且被标注为对最近的安全节点“A”是未解析的,使得在状态表54中对链路H→G=“?-A”进行标注。
在操作62中,由处理器电路22从SPF节点中选出的下一网络节点是网络节点“H”(事件224)。由于网络节点“H”不是安全网络节点,在操作72中链路H→F被处理器电路22标识为SPF链路,非-SPF链路I-H被定向为输入到网络节点“H”且被标注为对最近的安全节点“A”是未解析的,使得状态表54中处理器电路22对链路I→H=“?-A”进行标注。
处理器电路22所选择的下一网络节点是网络节点“I”(事件226)。由于网络节点“I”不是安全网络节点,在操作72中链路I→F在状态表54中被处理器电路22标识为SPF链路。如先前所描述的,每个SPF链路58还可以被处理器电路22标注在图5的拓扑表56中。
从前面参照图6B的描述中可知,对SPF链路和未解析的链路的标识使得对最短路径树加上可替代的未解析的链路的标识成为可能,对可替代的未解析的链路的标识可以用于标识不同于到根网络节点的最短路径的替代非一致路径。下面的关于节点“J”的描述展示对可替代的未解析的链路的标识如何使得对子DAG 64a和64b内的用于弧路由拓扑的形成的一个或多个接合节点的标识成为可能。
具体地,下面的描述示出对DAG 52内的(两个或多个)接合节点以及在接合节点之间的、可以沿接合节点的非一致路径之一被反转而不会在无环路拓扑中引入环路的可逆链路(被标注为“Rev”)的标识。此外,对在一个子DAG(64a或64b)中的、具有用于到达目的地网络节点14(不同于作为子DAG的根的接合节点)的非一致路径的的接合节点的标识使得覆盖第一基础设施弧的另一基础设施弧的形成成为可能。
如参照图6B和6C所示出的,在图3B的操作62中由处理器电路22从SPF节点中选出的下一网络节点是网络节点“J”(事件228)。节点“J”被处理器电路22标识为安全网络节点,因为它可以被分类为接合节点68,如图3C和3D所示出的。节点“J”可以被处理器电路22标识为接合节点,因为它具有用于经由链路J→F(被标注为对最近的安全网络节点“A”是未解析的,即,“?-A”)和/或链路J→K(被标注为对最近的安全网络节点“B”是未解析的SPF链路,即,“?-B”)到达安全节点(比如,根网络节点“R”)的两个非一致路径。因此,由链路J→F和J→K所提供的非一致路径被相应的且不同的标签“?-A”和“?-B”标识,标签“?-A”和“?-B”标识经由相应的安全网络节点“A”和“B”到根网络节点“R”的可达性。
操作72被处理器电路22跳过,因为网络节点“J”被标识为接合节点。在操作74中网络节点“J”的每个数据链路按照规定的顺序被解析,即SPF链路优先,然后任意(一个或多个)输出链路,然后任意(一个或多个)输入链路。因此,链路J→K是SPF链路,且因此是操作74中被分析的第一链路。由于在操作76中链路J→K是未解析的,在操作78中输出链路J→K不结束于另一接合点,因此操作80被跳过。
参考图3D,如果网络节点还不是中间接合点,则处理器电路22判定是否执行操作82。处理器电路22针对网络节点“J”的链路J→K执行操作82,因为如果链路J→K被反转,该链路反转将使得端点网络节点“K”能够变为接合节点,即,端点网络节点“K”现在可以具有经由安全网络节点“A”到根网络节点“R”的替代路径(比如,链路从“?-B”反转到“?-A”后链路J→K的标注是否被改变);因此,链路J→K使得节点“J”能够变为接合点并且不引起SPF链路J→K的任意裁剪。因此,通过在操作82中由处理器电路22将状态表54中的链路标记为可逆的(“Rev”),链路J→K被解析。图6D中示出了将链路J→K标注为可逆的(“Rev”)。
由于节点“J”是朝向安全网络节点“B”的边缘接合点,处理器电路22执行操作84以防止在链路J→K被永远反转为K→J以到达安全网络节点“A”的事件中经由输出链路“J→M”形成环路;因此,由于“J→M”=“?-B”是满足条件“?-S”(其中S=B)的外向链路,通过阻塞朝向节点“M”的路径(注意图6C中在与网络节点“M”交叉的链路的端处的正方形□,指示从网络节点“J”到网络节点“M”的流量被阻塞),在操作84中,外向链路“J→M”=“?-B”被裁剪;被裁剪(即,被阻塞)的链路J-M的方向被反转且被处理器电路22重新标注为内向于新的安全网络节点(接合节点)是未解析的,即,状态表54中的M□→J=“?-J”。
还要注意的是,如果在操作84中(图6B中未示出的)另一链路(比如,J→B)作为朝向安全网络节点“B”的未解析的链路(J→B=“?-B”)而存在,该链路(J→B)可以在两端被裁剪(即,被移除:J□-□B)以避免在任意链路反转事件中任意环路的可能性。
因此,为了避免环路,路由弧中的接合节点可以具有一个且仅具有一个链路朝向弧的第一端,以及具有一个且仅具有一个其他链路朝向弧的第二端。在操作84中链路J→F不被影响,因为J是(经由J→K)朝向安全网络节点“B”的边缘接合点,而节点J→F朝向另一安全网络节点“A”。
对于接合节点“J”,操作86被处理器电路22跳过,因为它还不是中间接合点,因为它还不具有两个可逆链路。操作88被跳过,因为SPF链路J→K被指定为输出链路。
关于SPF链路J→K(“Rev”),处理器电路22对操作78的执行在操作90中继续,其针对链路J→K的端点(即网络节点“K”)递归地调用操作66的执行(如图3C和3D所示出的),以对沿最短路径的弧进行延伸;换言之,基于链路J→K的状态变化为可逆链路,图3C和3D的操作被执行(图4B的事件230)。因此,针对J→K链路端点节点“K”(其不是叶节点),操作70被跳过。由于J→K链路现在是可逆的,该J→K链路使得端点节点“K”现在能够变为接合节点,因此网络节点“K”作为接合节点(具体地,边缘接合点),且现在作为安全网络节点,因此操作72被处理器电路22跳过。安全网络节点“K”的每个链路在操作74中被解析,这种解析开始于SPF链路K→B:操作76被处理器电路22跳过,因为SPF链路K→B=“?-B”尚未被解析。SPF链路K→B是输出链路,因此操作78被处理器电路22执行:操作80不被处理器电路22执行,因为节点K→B不结束于另一接合节点(即,继承者网络节点“B”不是接合节点)。操作82被处理器电路22执行,因为网络节点“K”还不是中间接合节点,且链路K→B使得端点网络节点B能够变为接合节点,因此链路K→B在操作82中被标注为可逆的(K→B=“Rev”),使得继承者网络节点“B”能够变为被处理器电路22在状态表54中标注为接合节点。
在操作84中节点N=K现在是朝向节点“B”的边缘接合点,并且没有外向的未解析的链路需要被裁剪;然而,在状态表54中,链路M→K被处理器电路22从“?-B”重新标注为“?-K”。在操作86中,网络节点“K”现在被处理器电路22标识为具有两个可逆链路J→K=“Rev”和K→B=“Rev”的中间接合点;然而,除了这两个可逆链路之外没有其他外向的链路,因此不需要对其它的外向的链路的进行裁剪。
因此,对节点J处的链路J→K解析为可逆链路使得对链路端点K的解析在操作90处被处理器电路22递归地解析,产生对节点K处的可逆链路K→B的解析。对节点K处的可逆链路K→B的解析使得在操作90中由处理器电路22对链路端点B进行递归解析(事件232)。
基于可逆链路K→B,继承者网络节点B被定义为边缘接合点,且由于SPF链路B→R是到根的,继承者网络节点“B”被表示为路由弧的一端。对节点B的解析使得在操作90中处理器电路22进行递归执行以返回到网络节点“K”(事件234)来继续解析网络节点K的剩余链路。
因此,在网络节点K中,SPF链路已经被解析,没有输出链路需要被解析,使得在操作74处对链路M→K=“?-K”进行分析。操作76、78各自被处理器电路22跳过,因为链路M→K不是输出的,并且输入链路已经被标记为对K是未解析的(?-K)。因此,在操作90中处理器电路递归地解析链路K→M的端点M(事件236)。
在操作72中网络节点“M”被处理器电路22判定为安全节点,因为它具有到根的两个非一致路径,即经由链路M→K的路径“?-K”和经由链路M→J的路径“?-J”。从最短路径链路M→K开始,在操作78中,该链路在操作80中被标识为结束于另一接合点“K”,使得链路M→K(以及图6D和图6I的折迭弧“ARC1”的第一端)在状态表54中被处理器电路22标记为已解析的。在操作90中,处理器电路22从网络节点M到网络节点K的递归调用(事件238)没有导致改变,因此处理器电路22返回到网络节点M(事件240),并且在操作80中处理器电路22将下一个输出的且未解析的链路M→J=“?-J”(和图6I的折迭弧“ARC1”的第二端)解析为已解析的链路。
参考图4B,网络节点“M”(作为链路M-K的端点)的递归解析被完成,在图4C的事件242处使得处理器电路22返回到网络节点“K”;网络节点“K”的递归解析也被完成,在事件244处使得返回到网络节点“J”。
需要注意的是,网络节点“K”和“M”是无需改变链路可逆性的接合节点。因此,链路M→J终止路由弧,因为它结束于接合节点“J”,链路M→K在路由弧中终止,因为它结束于另一接合节点“K”。因此,网络节点“J”、“K”和“M”形成折迭弧“ARC1”12,如图6D所示出的。
针对接合节点“J”的下一链路(即输出链路J→F=“?-A”),处理器电路22在操作74中重复该链路分析。在跳过操作76之后,处理器电路22跳过操作80,因为网络节点“F”不是图6D中的接合点,因此链路J→F不结束于另一接合点。网络节点“J”还不是中间接合点,因为它不具有两个可逆路径,因此操作82被执行以使得链路J→F可逆(J→F=“Rev”),因为链路J→F的反转使得端点网络节点“F”能够成为具有经由“?-A”到根网络节点“R”的替代路径和经由网络节点“J”的路径的接合点。网络节点“J”已经是边缘接合点,因此操作84被跳过。
然而,在操作78中将链路J→F标记为可逆的现在使得安全节点“J”成为中间接合点,因为操作86被处理器电路22执行:操作86中的“对除了安全节点N的2个可逆链路之外的所有的外向链路进行裁剪”的描述确保除了沿(经由网络节点F、J、K和B形成的)弧的外向链路之外没有其它的外向链路,使得任意其它链路被裁剪并被向内引导(如先前关于链路M□→J所执行的)。操作88被处理器电路22跳过,因为链路J→F不是输入的,并且操作90被执行以递归地解析链路J→F的端点节点的邻居,即网络节点“F”(事件246)。
在对具有多个链路的网络节点“F”的解析过程中,处理器电路22跳过操作70。网络节点“F”被标识为边缘接合点(因此是安全节点),因为它具有到根节点“R”的两个非一致路径,并且网络节点“F”包括一个可逆链路J→F,因此,操作72的执行被跳过。如将在下面进一步详细描述的,接合节点“F”属于图6B的子DAG(A)64a,接合节点“J”、“K”和“B”属于子DAG(B)64b;因此,第一基础设施弧(图6E中所示出的“ARC2”)可以被创建,其包括(至少两个或多个)接合节点和(一个或多个)可逆链路,其中第一基础设施弧的一端终止于目的地网络节点“R”。
在操作74中安全网络节点“F”的每个链路被分析,从SPF链路F→C开始:操作76和80被跳过,操作82被处理器电路22执行,以将链路F→C标记为可逆的(F→C=“Rev”)。操作84被处理器电路22执行,因为网络节点“F”现在是朝向“S”(S=A)的边缘接合点。因此,在操作84中,被标注“?-A”的任意输出的未解析的链路(比如,F→E=“?-A”)被裁剪并被反转为内向地朝向边缘接合点并在状态表54中被处理器电路22标记为朝向边缘接合点是未解析的(比如,从F→E=“?-A”变为E□→F=“?-F”);此外,在操作84中,安全节点“F”的所有的输入链路(即,内向的链路)被处理器电路22从“?-A”变为“?-F”(比如,将H→F=“?-A”和I→F=“?-A”变为H→F=“?-F”和I→F=“?-F”)。在操作84中,在状态表54中对链路E□→F、H→F和I→F的重新标注将网络节点“E”、“H”和“I”暴露于经由边缘接合点“F”到根节点“R”的替代路径,使得网络节点“E”、“H”和“I”随后能够被标识为具有用于到达根节点“R”的、不同于由子DAG(A)64a提供的路径的新的非一致路径的新的接合节点(因此是安全网络节点)。因此,基于不同于子DAG(A)64a的非一致路径,网络节点“E”、“H”和“I”随后可以被用于创建第二基础设施弧。
边缘接合点“F”还不是中间接合点,因此操作86被跳过,并且操作88被跳过,因为输入链路E□→F已经被标记为朝向边缘接合点“F”是未解析的(“?-F”)。
针对SPF链路F→C=“Rev”的端点网络节点“C”,处理器电路22在操作90中执行递归调用(事件248)。
处理器电路22对网络节点“C”的递归解析跳过操作70,因为网络节点“C”具有多个链路。网络节点“C”被标识为边缘接合点(因此是安全节点),因为它具有到根节点“R”的两个路径,并且网络节点“C”包括一个可逆链路F→C,因此,操作72的执行被处理器电路22跳过。操作76和80被跳过,操作82被处理器电路22执行以在状态表54中将链路C→A标记为可逆的(C→A=“Rev”)。操作84被处理器电路22执行,因为网络节点“C”现在是朝向“S”(S=A)的边缘接合点。因此,在操作84中,被标注“?-A”的任意输出的未解析的链路(比如,C→D=“?-A”)被裁剪并被处理器电路22反转为内向地朝向边缘接合点“C”并在状态表54中被标记为朝向边缘接合点是未解析的(比如,从C→D=“?-A”变为D□→C=“?-C”);此外,在操作84中,在状态表54中安全节点“C”的任意输入链路被处理器电路22从“?-A”变为“?-C”(比如,将E→C=“?-A”变为E→C=“?-C”)。在操作84中,对链路D□→C和E→C的重新标注将网络节点“D”暴露于经由边缘接合点“C”到根节点“R”的替代路径,使得网络节点“D”随后能够被标识为具有用于到达根节点“R”的两个非一致路径的接合节点。
边缘接合点“C”还不是中间接合点,因此操作86被处理器电路22跳过,并且链路C→A不是输入的,因此操作88被跳过。针对SPF链路C→A=“Rev”的端点网络节点“A”递归调用在操作90中被执行。
处理器电路22对网络节点“A”的递归解析跳过操作70,因为网络节点“A”具有多个链路。继承者网络节点“A”是安全节点,且因为它具有到根节点“R”的两个非一致路径而被标识为边缘接合点,且网络节点“A”包括一个可逆链路C→A,因此,操作72的执行被跳过。
SPF链路A→R首先在操作74中被选择,并在操作76中被标识为已解析的。已解析的SPF链路A→R也结束于根“R”,并因此终止由延伸回中间接合点“J”并延伸到边缘接合点“B”的、递归调用的邻居A(C,F,J)的序列所标识的弧。
因此,处理器电路22在连续递归期间对来自中间接合点“J”(即具有两个可逆链路的接合节点)的SPF链路A→R是已解析的标识,将接合节点“A”建立为第二边缘接合点,产生用于到达根节点“R”的第一基础设施弧“ARC2”,如图6E和图6I中所示出的。如图6E、6H和6I中所示出的,用于到达根节点“R”的基础设施弧“ARC2”包括由可逆链路A-C、C-F、F-J、J-K和K-B连接的接合节点“A”、“C”、“F”、“J”、“K”和“B”。因此,基于穿过继承者网络节点(比如,“A”)的序列和可逆链路序列直到到达另一继承者网络节点(比如,“B”),用于到达根节点“R”的基础设施弧“ARC2”可以被标识。
在操作74中,接合节点“A”的下一链路被分析,即链路D→A=?-A,使得操作90中对网络节点“D”进行递归解析(事件252)。网络节点“D”现在是接合节点(因此是安全节点),因为它具有用于到达根节点“R”的两个非一致路径(经由节点A和C)。因此,操作70和72被跳过,首先针对SPF链路D→A执行操作74。基于终止于接合节点A,在操作80中链路D→A被标记为已解析的。当关于节点“A”的所有其他链路已经被分析时,从节点“D”到节点“A”的递归调用使得对节点“A”进行递归分析以返回到节点“D”:这种返回被称为“无操作(no-op)递归”,因此为简洁起见在今后的讨论中将被省略。
在操作74中,继续针对链路D□→C进行对节点“D”的分析。链路D□→C结束于接合点“C”,因此在操作80中被标记为已解析的,从而形成图6I中所示出的折迭弧“ARC3”12。在操作74中,关于接合节点D,输入链路L→D被接着分析,且在操作88中被从未解析的状态?-A重新标注为未解析的状态?-D(L→D=“?-D”),指示最近的安全节点是节点“D”。
如图6F中所示出的,安全节点“D”可以在朝向根节点“R”的子DAG(A)64a内形成它自己的从属有向非循环图子DAG(D)64d,使得安全节点“D”成为网络节点“L”、“N”、“E”、“G”、“H”和“I”的最近的安全节点。因此,类似于操作72,在操作88中,安全节点“D”的子DAG中的所有的未解析的输入链路(比如,链路L→D、E→D、E→L、G→E、H→G、I→H和H→E)被递归地重新标注(即,标记)为“?-D”以传播最新的安全节点“D”的标识(状态252)。
在操作90中处理器电路22对节点“L”的递归分析导致无操作递归,因为节点“L”还不是安全节点,因此分析返回到节点“D”。
在操作74中,关于接合节点D,链路E→D接着被分析,且在操作88中,在状态表54中被处理器电路22从未解析的状态?-A重新标注为未解析的状态?-D(E→D=“?-D”)。在操作90中,对节点E的分析被处理器电路22递归地调用(事件254)。
网络节点E是接合节点(因此是安全节点),因为它具有经由接合节点“D”和“E”到根的两个非一致路径,而无需改变任意链路可逆性。在操作74中,接合节点“E”的以下链路需要按以下的示例顺序被分析:E→C、E→D、E→L、E□→F、G→E和H→E。
因此,在操作80中,SPF链路E→C被标记为已解析的,因为它结束于接合节点“C”。在操作74中,关于网络节点“E”,输出链路E→D被分析,并在操作80中被标记为已解析的(成为图6I的折迭弧“ARC8”的第一端),因为它结束于接合节点“D”。在操作74中,输出链路E→L被接着分析,并且由于链路E→L在操作82中使得端点节点“L”能够变为接合点,在操作82中链路E→L被标记为可逆的。在操作90中端点“L”被递归地分析(事件256)。
参考图4D和事件256,网络节点“L”被标识为边缘接合点(因此是安全节点),因为它具有可逆链路E→L。在操作80中,链路L→D被标记为已解析的,因为它结束于接合节点“D”,从而形成图6G和图6I的第二基础设施弧“ARC4”。由于弧“ARC4”结束于安全节点“D”,随后即使来自弧“ARC4”的所有的流量可能经由网络节点C退出(即,网络节点“D”经由链路D□→C将它的流量发送到网络节点C),网络节点“D”仍然具有经由网络节点A的替代路径。对于叶节点N,链路N→L已经被解析,因此分析返回到网络节点“E”。
操作74中,处理器22所分析的关于网络节点“E”的下一链路(事件258)是链路E□→F=?-F。链路E□→F在操作80中被解析为结束于接合节点“F”(从而形成折迭弧“ARC8”的)。尽管链路E□→F被裁剪为单向的,但是,对于LFA分析,如果需要的话,它可以被安全地反转(对于链路E□→F的端点节点F,操作90是无操作的,因此,分析返回到网络节点“E”)。
网络节点“E”的输入链路G→E在操作74中被接着分析。由于网络节点“G”不是接合点,它不是安全节点,因此链路G→E不能被解析,而是在操作88中被重新标注?-E:到安全节点“E”的所有的输入链路还被处理器电路22递归地标记为朝向“E”是未解析的(即,链路G→E、H→E、H→G和I→H都被重置为“?-E”),从而形成朝向E的子DAG(E)。在操作88中,对网络节点“G”的分析被递归地调用作为链路G→E的端点。
网络节点“G”(事件260)被判定为不是接合节点,且所有的链路已经被标注到最近的安全节点“E”,因此操作72可以被跳过并且在事件262中处理器电路22可以返回到节点“E”。
安全节点“E”的下一个输入链路H→E在操作74中被分析,使得在事件264处理器电路在操作90中递归地分析端点节点“H”。
操作72和74中的网络节点“H”被标识为具有经由未解析的路径“?-F”(经由SPF链路H→F)和“?-E”(经由链路H→E和H→G)的非一致路径的接合节点。因此,安全节点“H”的每个链路在操作74中依次被解析,即,链路H→F、H→E、H→G和I→H。
安全网络节点“H”的SPF链路H→F在操作80中被处理器电路解析为结束于接合节点“F”:如随后将示出的,链路H→F将终止图6I的基础设施弧“ARC5”和折迭弧“ARC6”。操作90导致对(作为链路H→F的端点的)节点“F”的无操作递归分析,因此,操作74中对安全节点“H”的下一(输出)链路H→E的分析使得链路H→E(结束于接合节点“E”)在操作80中被解析为折迭弧“ARC6”的第二端。
操作90导致对(作为链路H→E的端点的)节点“E”的无操作递归分析,因此对安全节点“H”的下一(输出链路)H→G的分析在操作74中被执行。在操作82中,链路H→G使得端点节点“G”能够成为接合点;此外,链路H→G被反转时不引起对SPF链路H→F的裁剪;因此,链路H→G在操作82中被处理器电路22重新标注为状态表54中的可逆链路(H→G=“Rev”)。针对链路H→G的端点节点“G”的递归分析,操作90被执行(事件266)。
基于可逆链路H→G,网络节点“G”在操作72中被判定为是边缘接合点(因此是安全节点)。因此,操作74中对SPF链路G→E的分析使得在操作80中链路G→E被标注为被解析为基础设施弧“ARC5”的第二端。操作90导致对(作为链路G→E的端点的)节点“E”的无操作递归分析,并且由于安全网络节点“G”没有其它链路需要解析,因此执行返回到节点“H”,以对下一输入链路I→H进行评估(事件268)。
在操作74中下一个链路,即安全网络节点“H”的输入链路I→H:链路I→H在操作80中被从I→H=“?-A”重新标注为I→H=“?-H”,并且针对链路I→H的端点节点“I”的递归分析,操作90被处理器电路22执行(事件270)。
网络节点“I”在操作72中被处理器电路22判定为是具有经由未解析的路径“?-F”(经由SPF链路I→F)和“?-H”(经由链路I→E和H→G)的非一致路径的接合节点。因此,在操作74中,SPF链路I→F被处理器电路22分析,在操作80中基于结束于接合节点“F”而被标记为已解析的(且终止折迭弧“ARC7”)。操作90导致对(作为链路I→F的端点的)节点“F”的无操作递归分析,使得在操作74中对下一(输出)链路I→H进行分析。由于链路I→H结束于接合节点“H”,链路I→H在操作114中被标记为已解析的,形成图6I的折迭弧“ARC7”的第二端。操作90导致对(作为链路I→H的端点的)节点“H”的无操作递归分析,将执行分析返回到接合节点“I”。
对节点“I”的分析是由处理器电路22完成的,由处理器电路22将执行分析返回到节点“H”;对节点“H”的分析被完成,将执行分析返回到节点“E”;对节点“E”的分析被完成,将执行分析返回到节点“D”;对节点“D”的分析被完成,将执行分析返回到节点“A”;对节点“A”的分析被完成,将执行分析返回到节点“C”;对节点“C”的分析被完成,将执行分析返回到节点“F”;对节点“F”的分析被完成,将执行分析返回到节点“J”。如先前所描述的,当每个路由弧被构造时,处理器电路22可以对图5的拓扑表56进行更新,其中对弧指针的拥有权被具有两个外向型可逆链路的接合节点标识。
所产生的链路拓扑在图6H中被示出,所产生的弧“ARC1”到“ARC8”在图6I中被示出。图6I的路由拓扑示出了路由弧“ARC1”到“ARC8”,其中除了根网络节点“R”和叶节点“N”之外所有的网络节点都是接合节点。如图6H和6I所示出的,折迭弧“ARC1”包括接合节点“J”、“M”和“K”;用于到达根节点“R”的基础设施弧包括由可逆链路C→A、F→C、J→F、J→K和K→B连接的接合节点“A”、“C”、“F”“J”、“K”和“B”;折迭弧“ARC3”包括接合节点“A”、“D”和“C”;基础设施弧“ARC4”包括接合节点“D”、“L”、“E”和“C”;基础设施弧“ARC5”包括接合节点“E”、“G”、“H”和“F”;基础设施弧“ARC6”包括接合节点“E”、“H”和“F”;折迭弧“ARC7”包括接合节点“H”、“I”和“F”;折迭弧“ARC8”具有接合节点“D”、“E”和“F”。
因此,假设链路F→C遇到故障,网络节点“F”可以经由可逆链路J→F将流量重新定向到节点“J”(比如,基于网络节点“F”和“J”的协商(即链路J→F需要被反转到F→J),使得网络流量能够被重新定向而无需路由的重新计算)。
由本公开可知,针对目的地网络节点(“R”)14的无环路由拓扑10可以针对每个网络节点16被重复,使得每个网络节点16能够具有它自己的、保证经由非一致路径到相应的网络节点16的可达性的无环路由拓扑10。
无环路由拓扑的主层次级别中无环路标签交换路径的分布式建立
如先前所描述的,基于对可逆链路进行反转而不将任意环路引入到拓扑中,图6I所示出的无环路由拓扑10使得网络流量能够响应于路由拓扑中所检测到的故障被立即重定向。无环路由拓扑10还可以利用新的标签分发协议,该新的标签分发协议使得网络节点16能够建立用于经由无环路由拓扑10到达目的地网络节点14的无环标签分发路径。装置20可以被配置为不仅计算弧拓扑10,而且还生成一组描述无环路由拓扑10的序列化表示,其中每个序列化表示描述拓扑中相应的路径:如本文所描述的,本文所用的“路径”不一定限于所公开的路由弧。该组序列化表示可以从目的地网络节点14被传播到计算网络中的网络节点16,使得每个网络节点能够建立它们自己的用于到达目的地网络节点14的无环标签转换路径。
该装置可以被实现为(例如)与网络管理系统、目的地网络节点14或针对规定的自治系统内的数个目的地对拓扑10进行计算的任意节点相关联的中心式路径计算引擎。
图7示出由图2的装置20根据示例实施例构建的依次级联的路由弧的示例层次结构10’。具体地,无环路由拓扑10可以被装置20表示为包含用于到达目的地14的相同的路由弧12的层次结构10’,不同之处在于路由弧12被重绘为依次级联的(折迭的)路由弧12或12’的层次结构,在“向下的”方向100中向目的地14供应网络流量。
如图7中所示出的,去往目的地14的所有的网络流量遵循网络流量流100的方向,结束于根14或沿根弧“ARC2”12的网络节点“A”、“C”或“F”。因此,所有的网络流量沿顺着向目的地14供应网络流量的依次级联的路由弧12或12’的层次结构10’往下的路径100流动。
相反地,拓扑控制消息102可以从目的地网络节点14传播到计算网络中的每个网络节点16。拓扑控制消息102包括描述无环路由拓扑10的相关路径(比如,路由弧12)的“一组序列化表示”(下面所描述的)。拓扑控制消息被用于将相关路径的序列化表示覆盖无环路由拓扑102以及沿每个路由弧12的每个网络节点16:换言之,网络节点(比如,“C”)16将(包含该组序列化表示的)拓扑控制消息传递到可以将网络流量发回该网络节点(比如,“C”)的其任意邻居,除此之外网络节点(比如,“C”)将不会把拓扑控制消息发回刚刚向网络节点(“C”)发送拓扑控制消息的传送网络节点(比如,“A”)。因此,响应于对包含在拓扑控制消息102中的那组序列化表示进行剖析,每个网络节点16可以获知无环路由拓扑10的相关路径。
每个拓扑控制消息102还包括由传送该拓扑控制消息102的网络节点16生成的一个或多个局部显著标签(“λ”)。由传送网络节点16生成的每个局部显著标签(“λ”)可以有任意数值。如下面所描述的,每个局部显著标签与由传送网络节点16设置的、用于将数据分组转发到目的地网络节点14的规定的属性相关联:如下面参照图15所描述的,传送网络节点16将局部显著表(以及相关联的属性)存储在标签转发表(也被称为标签交换转发表)中;接收拓扑控制消息102的网络节点还将所接收到的局部显著标签存储在它自己的标签转发表中的新的标签转发表条目中,创建新的局部显著标签作为新的标签转发表条目的索引,并重新传送该组序列化表示,其中新的局部显著标签在所重新传送的拓扑控制消息中。
因此,拓扑控制消息102使得网络节点16能够各自独立地建立用于经由无环路由拓扑10到达目的地网络节点14的无环标签转换路径。此外,可以在单一拓扑控制消息102内指定多个局部显著标签,例如用于到达目的地的默认路径的主标签,以及用于到达目的地的“备份”(或“快速重新路由”)路径。拓扑控制消息102还可以沿双向路由弧12的两端被传播,产生总共4个局部显著标签,这4个局部显著标签标识可由网络节点16用于到达目的地节点14的4个相应的路径。无环标签转换路径可以(例如)通过使用根据RFC 3031或RFC 6178的多协议标签转换(MPLS)标签、根据RFC 3036或5036的标签分发协议(LDP)来实现;可替代地,标签可以使用其它标注技术,例如作为电信级以太网中的标签、IPv6流标签或ATM或帧中继的直接封装的IEEE 802.1q(或Q inQ)。一旦路由弧12被建立,其它拓扑信息可以通过路由弧12被传送,例如如美国专利号7,693,064中所示出的。
因此,标签转换路径使得沿双向路径的任意网络节点16能够响应于该网络节点检测到故障的链路立即将数据分组的传输反转到替代(备份)标签转换路径;此外,通过使用不同的标签转换路径来标识双向路径(比如,路由弧)的一个方向中的默认路径、双向路径的第二方向中的默认路径、响应于在该一个方向的默认路径中检测到故障链路所使用的备份(快速路由)路径以及响应于在该第二方向的默认路径中检测到故障链路所使用的第二备份(快速重新路由)路径,来避免环路。
图8示出了根据示例实施例的用于无环路由拓扑中的标签分发和路由安装的示例方法。参考图2、图6I和图8,在操作110中,装置20中的处理器电路22被配置为用于在计算网络中创建用于到达目的地网络节点“R”的无环路由拓扑10,如图6I中所示出的以及如先前参照图1到图6I所描述的。该计算网络可以是自治系统,或其任意部分,例如局域网、自组网(比如移动自组网)、传感器网络等。如先前所描述的,无环路由拓扑10包括用于到达目的地网络节点14的不同的路径12。
处理器电路22还被配置为在操作12中生成描述无环路由拓扑10的一组序列化表示。如下面参照图10和图14所进一步描述的,每个序列化表示114描述路径12中的相应的一个路径。处理器电路22还将相应的路径(比如,路由弧12)的所有的序列化表示114聚集成一组序列化表示116,如图12中所示出的。因此,该组序列化表示116可以提供整个无环路由拓扑10的表示。
处理器电路22可以在操作118中生成包含一组序列化表示116的拓扑控制消息102,使得目的地节点“R”的网络接口电路24能够在操作118中在该节点的每个输入链路(即,朝向节点“A”和“B”)上输出拓扑控制消息102,使得拓扑控制消息102在整个网络中传播。由于目的地节点“R”14是无环路拓扑10的最终目的地,因此目的地节点14通常还被称为“omega节点”(Ω)。因此,omega节点(Ω=“R”)14定义拓扑控制消息102的转发等价类(FEC):拓扑控制消息102还针对转发等价类“Ω=R”指定与将消息输出到下一跳网络节点16的网络接口相关联的局部显著标签(比如,MPLS标签)(比如,链路“R-A”的“O=R_AR”或链路“R-B”的“R_BR”)。
如本文所使用的,术语“O=X_YZ”指的是标识方向从节点“Z”到节点“Y”的链路以使转发等价类“Ω=X”在到达目的地节点“Ω=X”中被用作默认(即,主要的)路径的局部显著标签“O”:换言之,节点“Z”生成局部显著标签“O=X_YZ”以通知节点“Y”(即,“从Z到Y的”拓扑控制消息),即标签“O=X_YZ”被用于经由节点“Z”、沿到目的地节点“Ω=X”的默认路径的转发数据分组(即,经由默认路径去往“Ω=X”的数据流量被“从Y到Z”地发送)。附加的扩展(比如,“FRR”)可以被用于标识附加的标签属性,即在默认路径上出现链路故障的事件中,该链路被用作快速重新路由(“FRR”)路径(即,备份路径)。局部显著标签可以被实现为数值,该数值为网络节点内的标签转发表提供索引。因此,由网络节点106输出且包含一组序列化表示的拓扑控制消息102还可以包括针对转发等价类“Ω=X”的默认标签“O=X_YZ”和备份(快速重新路由)标签“O=X_YZ_FRR”。由于路由弧12是双向的,节点“Y”还可以接收来自它的弧的“另一端”的另一拓扑控制消息102,且作为响应向节点“Z”发送指定默认标签“O=X_YZ”、备份标签“O=X_YZ_FRR”的拓扑控制消息102和该组序列化表示。
因此,omega节点(Ω=“R”)14在操作118(图12的118a)中输出和该组序列化弧(图12的116)的拓扑控制消息102:omega节点(Ω=“R”)14还将局部显著标签“O=R_AR”添加到被输出到到网络节点“A”的链路“R-A”上的拓扑控制消息102,且将局部显著标签“O=R_BR”添加到被输出到到网络节点“B”的链路“R-B”上的拓扑控制消息102。
响应于网络节点“A”16在所标识的网络接口(比如,“A1”)上随局部显著标签“O=R_AR”接收拓扑控制消息102,网络节点“A”可以在操作120中针对转发等价类Ω=“R”在它的内部标签转发表中创建条目,即经由链路“R-A”去往目的地节点“Ω=R”14的任意数据分组应当被输出到具有局部显著标签“O=R_AR”的网络接口“A1”上(如先前所描述的,局部显著标签可以是标的签源所选择的任意数值)。
网络节点“A”16中的处理器电路22还可以根据拓扑控制消息102中的那组序列化弧116判定路由拓扑10。因此,网络节点“A”16中的处理器电路22可以针对被配置为经由网络节点“A”将网络流量发送到目的地节点“Ω=R”14的网络节点“C”和“D”创建附加的标签转发表条目:网络节点“C”的标签转发表条目可以指定新的局部显著标签“O=R_CA”(被用作到标签转发表的索引)、目的地标签“O=R_AR”和出站网络接口A1。因此,如果网络节点“A”接收到来自网络节点“C”的、指定局部显著标签“O=R_CA”的数据分组,则网络节点“A”可以将指定的局部显著标签用作标签转发表的索引以从转发表条目中恢复目的地标签“O=R_AR”(将被所接收到的数据分组中的现有标签替代),并将该数据分组输出到网络接口“A1”以经由链路“A-R”转换到目的地节点14。
因此,在操作118中,网络节点“A”将拓扑控制消息102随局部显著标签“O=R_CA”发送到网络节点“C”,将拓扑控制消息102随局部显著标签“O=R_DA”发送到网络节点“D”。网络节点“C”可以从那组序列化弧116中标识网络拓扑10,并且作为响应可以在操作120中更新它的标签转发表,其中一个转发表条目指定已经接收到来自网络节点“A”的拓扑控制消息102、局部显著标签“O=R_CA”和新的局部显著标签(比如,“O=R_FC”、“O=R_EC”)的网络接口(比如,“C1”),该新的局部显著标签被用作到所接收到的来自其它网络节点(比如,经由C-F的“F”,经由C-E的“E”)的数据分组的标签转发表的索引。网络节点“C”可以分别使用局部显著标签“O=R_EC”和“O=R_FC”将拓扑控制消息102输出到网络节点“E”和“F”。
因此,在操作118中拓扑控制消息的传播使得网络节点16能够建立用于到达omega节点14的弧拓扑;此外,每个网络节点处的局部显著标签的插入和替代使得每个网络节点16能够独立地建立用于经由无环路由拓扑10到达目的地网络节点14的无环标签转换路径。
图9示出了根据示例实施例的由图8的执行操作112的装置20的处理器电路22执行的示例方法,即弧拓扑10的序列化。基于装置20的处理器电路22在操作112b中由每个路径(比如,路由弧)12的弧指针18对每个路径进行标识,即对拥有给定路由弧12的弧指针18的网络节点16的标识,该方法从操作112a开始。如图10中所示出的,基于拥有弧指针18的相应的网络节点16,图6I中由其弧参考标号(ARC1到ARC8)所标识的每个路由弧12被给定序列化的弧标识符122。例如,网络节点“J”拥有路由弧“ARC2”12的弧指针18;网络节点“E”拥有路由弧“ARC4”12和“ARC8”的弧指针18,因此序列化的弧标识符“E1”和“E2”被用于在同一网络节点(“E”)拥有相应的路由弧12的多个弧指针18的情况下区分路由弧12(也见用于区分路由弧“ARC5”和“ARC6”的序列化的弧标识符“H1”和“H2”122,其中路由弧“ARC5”和“ARC6”拥有由网络节点“H”控制的它们的相应的弧指针18)。
因此,序列化的弧标识符122起到元数据的作用,该元数据将相应的路径(比如路由弧)12中的网络节点16标识为拥有用于控制沿路由弧12的流量相应的弧指针18。
装置20的处理器电路在操作112c中生成列表124(如图10和图14中所示出的),该列表标识沿相应的弧12的弧节点16的连续序列。例如,序列化的弧114a提供沿具有图6I中的路由弧“ARC2”的序列化的弧标识符“J”122的弧的源路由“{B,K,J,F,C,A}”。处理器电路22还在操作112d中至少标识路由弧12的第一边缘接合点和第二边缘接合点(即,多个出口节点),该第一边缘接合点和第二边缘接合点清空从该路由弧到目的地节点14或另一路由弧(比相应的路由弧12离目的地网络节点14更近)的流量。如在本说明书中所使用的,括号“[]”内的任意节点(或多个节点)标识路由弧的端部(即,出口节点),使得节点“C”和“D”是序列化的弧格式114b的路由弧“ARC4”的出口节点;括号“{}”内的弧节点的连续序列指的是不是出口节点的中间接合节点。
如图14中所示出的,对于在路由弧12的一端具有0个(即,空)出口节点的支撑弧,序列化的弧格式114还可以在操作112e中被生成,该序列化的弧格式114包括沿支撑弧的弧节点的连续序列(A、B、C和D)和耦接到最后的网络节点“D”的出口节点(e,f)的列表。
因此,每个路由弧12的序列化的弧格式114包括出口节点126的第一列表,然后是沿弧的节点的源路由124,以该弧的出口节点的另一列表126结束,使得沿相应的弧12的完整的源路由能够形成;如果是图14中的支撑弧,列表126中之一可以具有空条目,然而另一列表必须指定该弧的至少一个出口节点。因此,序列化的弧格式114包括用于(经由序列化的弧标识符122)标识弧指针的元数据、出口节点(126)、和在出口节点之间并沿路由弧12的中间节点124。
因此,在图8和图9的操作112中,装置20的处理器电路22将每个单独的弧12的序列化的弧格式114聚集成序列化弧的单一组116。如先前所描述的,序列化弧的单一组116被目的地(omega)节点14输出到网络节点,用于操作118中拓扑控制消息102的传播,以使得网络节点16能够构建标签转换路径。
图11示出了根据示例实施例的拓扑控制消息102在整个网络节点16中的示例传播118。omega节点14在操作118a中将拓扑控制消息102输出为(例如)标签分发协议(LDP)协议数据单元(PDU)。如先前所描述的,拓扑控制消息102包括所有的序列化弧(114a到114h)的组116;此外,由每个网络节点16输出的每个拓扑控制消息102指定相应的唯一局部显著标签“O”,以将LDP PDU关联到转发等价类“Ω=R”。
响应于网络节点16在操作118b中接收到拓扑控制消息102,网络节点16的相应的处理器电路22可以从拓扑控制消息102中剖析局部显著标签“O”、包含序列化的弧标识符122的序列化表示的组116和描述相应的路径12的序列化的弧格式114。网络节点16的相应的处理器电路22可以在操作118c中解码序列化的弧(如由它们的相应的序列化的弧标识符122和它们的相应的序列化的弧格式114所标识的),并在网络节点16的标签转发表中创建必要的条目。基于被放置在网络节点和目的地节点14之间的相应的路径,网络节点16可以在操作118d中可选地从所接收到的拓扑控制消息102中移除(即,裁剪)序列化表示中的至少一个。下面参考图12对操作118d中的裁剪进行更详细的描述。网络节点16在操作118e中在弧拓扑10的每个内向的弧上输出经修改(即,裁剪)的拓扑控制消息102,以传播到拓扑10中的下一个网络节点。
图12示出根据示例实施例的对从序列化表示的组116中选出的路径12的选择性的裁剪,该序列化表示集合116通过无环路由拓扑10内的网络节点在拓扑控制消息102中进行传播。为简单起见,图12中省略了具体的序列化弧格式114,因此在图12中每条弧仅由其序列化的弧标识符122表示。
操作128a到128m示出图11的由不同的输出网络节点执行的操作118d。如参照操作128a所示出的,当将拓扑控制消息102从目的地节点(Ω=R)14沿根弧“ARC2”传送到节点时(即从目的地节点(Ω=R)14到节点“A”或“B”:从节点“A”到“C”、从节点“C”到节点“F”、从节点“F”到节点“J”等;从节点“B”到节点“K”、从节点“K”到节点“J”等),在输出的序列化弧的组116中被执行裁剪。
因此,从目的地节点(Ω=R)14输出到节点“A”的拓扑控制消息102在弧“ARC2”12的周围被传播,使得沿处于第一方向的路径“ARC2”12的每个网络节点16能够对它的标签转发表和源节点的局部显著标签O进行更新,并用新的局部显著标签O’来替代以供下一跳节点的使用;类似地,从目的地节点(Ω=R)输出到节点“B”的拓扑控制消息在弧“ARC2”12的周围被传播,使得沿处于第二方向的路径“ARC2”12的每个网络节点16对它的标签转发表和源节点的局部显著标签O”进行更新,并用新的局部显著标签O”’来替代以供下一跳节点的使用。
与此相反,在根弧“ARC2”12(由它的序列化弧标识符“J”122标识)之上的路由弧中的网络节点16不需要根弧的拓扑信息;因此,网络节点“A”、“C”和“F”可以选择性地裁剪序列化弧的整个组116a,如操作128b、128c、128d、128e中所示出的。例如,在操作128b中,网络节点“A”和“C”可以裁剪来自序列化弧的组116a的序列化弧“J”和“M”(如图10中所呈现的),以将经裁剪的组116b发送到网络节点“D”;类似地,网络节点“C”和“E”可以在操作128c中裁剪来自序列化弧的组116a的序列化弧“J”、“M”和“D”,以将经裁剪的集合116c发送到网络节点“E”;网络节点“F”可以在操作128d中裁剪来自序列化弧的组116a的序列化弧“J”、“M”、“D”、“E1”和“E2”,以将经裁剪的组116d发送到网络节点“H”;网络节点“F”也可以在操作128e中裁剪来自序列化弧的组116a的序列化弧“J”、“M”、“D”“E1”、“E2”、“H1”和“H2”,以将经裁剪的组116e发送到网络节点“I”。
操作128f到1281进一步示出可以由在根弧ARC2之上的弧中的其它节点执行的裁剪。因此,基于被放置在至少一个网络节点和目的地网络节点14之间的相应的路径12,每个网络节点可以选择性地裁剪来自所接收的拓扑控制消息102的序列化表示114中的至少一个,并将修改后的(即,裁剪后的)拓扑控制消息输出到远离目的地和被选择性地裁剪的路径的网络节点中的另一个。
图13示出了根据示例实施例的由接收来自目的地网络节点14的序列化表示的组116的网络节点建立无环路标签转换路径的示例方法。
如先前所描述的,源网络节点(比如,目的地节点(Ω=R)14或较低的路由弧12的出口节点)输出指定目的地节点(Ω=R)14的转发等价类(FEC)的拓扑控制消息102;基于路径方向(不论路径是主(默认)路径还是快速重新路由(备份)路径)、弧标识符、和转发等价类,该拓扑控制消息102还指定对源节点唯一的局部显著标签O。
假设在操作130中接收拓扑控制消息102的接收网络节点是接收来自节点“C”的拓扑控制消息的节点“F”:该拓扑控制消息指定由节点“C”生成的标签“O=R_FC”(即,对于FEC=R,在在链路C-F上按从节点“F”到节点“C”的“LEFT”方向进行输出)。作为响应,节点“F”在操作132中解码转发等价类的序列化弧的组,并在与拓扑控制消息102中所指定的局部显著标签“O=R_FC”相关联的标签转发表中安装条目。
图15示出了根据示例实施例的存储在网络节点“F”16的存储器电路26中的示例标签转发表148。具体地,通过使用由节点“F”创建的新标签“O=R_JF”作为索引,节点“F”的处理器电路22在图13和图15的操作134中创建条目:因此,由节点“F”接收的包含标签“O=R_JF”的任意数据分组(比如,来自节点“J”)被左主调换标签(LP)“O=R_FC”替代,并在被标识为“InterfaceLP_ID”的网络接口上被输出到链路F-C以转换到节点“C”;如果节点“F”在链路C-F上检测到故障,则可以通过用右方向快速重新路由(RFF)标签“O=R_FJ_FRR”替代标签“O=R_JF”并在接口“InterfaceRFF_ID”上输出该分组立即实现快速重新路由,以经由回到节点“J”的链路F-J传输数据分组。
网络节点(比如,“F”)可以在操作136中为不发送拓扑控制消息102的每个其它的下一跳节点选取新的局部显著标签,并在内向链路(比如,F-J、F-I、F-K或F-E)上转发拓扑控制消息。在图15的操作150中还可以创建相关的表条目。例如,网络节点“F”将向网络节点“J”发送指定序列化表示的组的拓扑控制消息102、默认路径的标签“O=R_JF”和快速新重新路由(FRR)路径的标签“O=R_FJ_FRR”。
假设在操作138中来自弧的另一侧的另一拓扑控制消息102被接收(比如,“F”随标签“O=R_FJ”接收来自节点“J”的消息102),节点“F”可以在操作140中在标签转发表中添加相应的条目,包括右主调换标签(RP)和左快速重新路由(LFF),使得如先前所描述的局部显著标签(比如,“O=R_CF”)的关联成为可能,但在相反的方向。
每个网络节点16中的处理器电路22还在操作142中实现转换规则,在图15中基于输入标签进行示出。具体地,对于弧间交换152,取决于网络节点相对于弧指针的方位,可以使用左主标签或右主标签。对于弧内(即,在弧的内部的)交换154,响应于所检测到的本地链路故障,无环快速重新路由被使用:(1)左主(LP)标签被右快速重新路由(RFF)标签替代;(2)右主(RP)标签被左快速重新路由(LFF)标签替代;(3)任意接收到的具有RFF标签或LFF标签的分组被丢弃,以防止环路的形成(图15的156)。
因此,响应于所检测到的链路故障,快速重新路由被立即实现:每个网络节点维持4个标签转换路径,即:左主(在左方)、右快速重新路由(响应于所检测到的左主的链路故障,在右方)、右主(在右方)和左快速重新路由(响应于所检测到的右主的链路故障,在左方)。此外,快速重新路由标签状态在被重新路由的方向上传播;因此,在同一弧中的第二链路故障将引起数据分组被丢弃,以避免环路的形成。
操作144中接收到的拓扑控制消息也在新的局部显著标签被选取之后被转发。
因此,可以在路由拓扑内建立标签,使得两个相连接的图中能够有充分的冗余:包含新的非线性源路由信息以描述路由弧拓扑的新的标签分发协议格式被引入。每个路由弧允许一次链路故障,因此弧拓扑可以支持可能发生在不同的路由弧中的多个并发链路故障。此外,标签分发协议可以自动地且独立地被计算网络中的网络节点采用。
在多级层次结构中创建路由弧和标签转换路径
图16示出了根据示例实施例的根据多级层次结构300的无环路由拓扑10的至少一部分(比如,主路由弧“ARC2”12)的创建。多级层次结构300包括主路由弧12(也称为omega路由弧)的主层次级别302,和连接邻近的网络节点16的二级路由弧306(也称为lambda路由弧)的第二层次级别304。多级层次结构300还可以包括在至少一个lambda路由弧306内提供到邻近的网络节点16的可达性的三级路由弧310的第三层次级别308。如下面所描述的,三级路由弧310可以在具有复杂的环形拓扑(例如,利用路由器的多个同心环的基于环形的网络,这些路由器的多个同心环通过同心环之间的一个或多个数据链路连接起来)的网络节点16中被使用。
图17A和17B示出了根据示例实施例的在规定的环形拓扑内实现的三级路由弧310,该三级路由弧310具有路由器的第一和第二同心环320,且是规定的环形拓扑的二级路由弧的基础。每个网络节点16(或网络节点16中的至少一个)可以被实现为具有规定环形拓扑的基于环形的网络。
如图17A中所示出的,每个网络节点16(比如,“J”)可以包括多个路由器312。每个路由器312可以包括处理器电路22、被配置为经由数据链路314(比如,光纤链路、千兆以太网链路等)连接路由器312的网络接口电路24、和被配置为存储标签转发表(比如,如图15、图20、图21和图23所示出的)和本文所描述的其它数据结构的存储器电路26。
网络节点16中的至少一个还可以包括被配置为根据多级层次结构创建无环路由拓扑(包括创建主路由弧12、二级路由弧306和三级路由弧310)的装置20。可替代地,被实现为基于环形的网络的每个网络节点还可以具有它自己的相应的装置20,该装置20用于在相关联的路由器312和数据链路314的部署期间创建三级路由弧(iota弧)310、并在与邻近的网络节点16建立连接期间创建二级路由弧(lambda弧)306。Lambda弧306和iota弧310(以及它们的相关联的标签转换路径)可以通过使用本文先前所描述的关于建立omega弧12和它们的相关联的标签转换路径的技术被建立。由于lambda弧306是独立的且不同于iota弧310和omega弧12,每个层次结构可以独立于任意其它层次结构级别被建立。
图27示出了根据示例实施例的根据多级层次结构310在无环路由拓扑10中创建路由弧(包括创建三级路由弧310、二级路由弧306和主路由弧12)的示例方法。所公开的关于图27的每个操作可以被装置20的处理器电路22或编码在有形计算机可读存储介质上的任意逻辑实施,正如先前所描述的。
处理器电路22可以在操作322中创建三级路由弧310的第三层次级别,其中第三层次级别具有独立于且不同于任意第二层次级别标签转换路径的三级层次级别标签转换路径。例如,网络节点“J”16在图17A和17B中被示出为具有路由器312的第一(外部的)和第二(内部的)同心环320以及互连内部的环和外部的环320的一个或多个数据链路314。
如先前所描述的,路由弧被创建以到达规定的目的地(图1和图2中示出为目的地节点14);此外,基于正在针对与路由弧一样的目的地建立的转发等价类(FEC),路由弧的标签转换路径可以被建立。因此,使用上面所描述的用于创建无环路由拓扑的技术,如图16中所示出的网络节点“J”16的相对复杂的多环网络拓扑可以被容易地建模为一系列用于到达规定的目的地的三级(iota)路由弧310。
例如,图17A在操作322中示出创建用于到达目的地路由器“JK1”和“KJ1”312的一系列三级路由弧310。此外,三级标签转换路径可以被分配在本地路由器312之间作为电缆连接,比如在网络“J”16的安装期间被部署在本地路由器312之间的光纤线缆连接。因此,一系列三级路由弧(比如,“iota1”、“iota2”、“iota3”)310可以被创建以到达每个路由器(比如,“KJ1”)312,其中相应的一组三级层次级别标签转换路径被建立以到达相应的路由器(比如,FEC=“KJ1”)312。图17B在操作322中示出创建用于到达另一路由器(比如,“Jn1”或“Jn3”)的另一系列三级路由弧(比如,“iota4”、“iota5”、“iota6”)310,其中相应的三级层次级别标签转换路径可以被分配在每个网络节点之间,以沿iota弧310交换数据分组。
因此,网络(比如,“J”)的初始部署可以包括针对网络(比如,“J”)内的每个目的地路由器312建立iota弧310和相关联的三级层次级别标签转换路径,提供到每个目的地的强健的(robust)和容错的路径。如先前所描述的,每个标签转换路径可以提供沿路由弧的路径,包括第一方向(比如,离开指针18的“左方”)、第二方向(比如,朝向指针18的“右方”)、第三方向(比如,“左快速重新路由”)和第四方向(比如,“右快速重新路由”)。因此,三级层次级别标签转换路径可以提供沿每个三级路由弧310的路径,该路径用于根据相关的转发等价类到达基于环的网络内的规定的目的地。因此,三级路由弧的第三层次级别308定义用于根据网络节点的规定的网络拓扑到达给定网络节点16内的目的地路由器312的三级层次级别标签转换路径。
如图17A和17B中所示出的,路由器310中的任意一个可以在操作324中被建模为由下面的iota弧310(图17A和17B中示出为“虚拟链路”326)连接起来的“超级节点”(比如,图17A中的“Jn5”、“JK2”和“JK1”;图17B中的“KJ1”、“JF1”和“JF2”)。
因此,基于装置20在本地路由器312之间分配三级标签转换路径,三级路由弧310的第三层次级别308被建立,例如作为被部署在本地路由器之间的线缆连接:基于被安装在每个本地路由器312中的三级标签转换路径,用于到本地路由器312的本地可达性的三级路由弧310被建立。
装置20在操作328中将网络(比如,“J”)标识为在代表互连的网络的网络节点的主层次级别302中的网络节点,并标识主层次级别302中的邻近网络节点16。如图18中所示出的,基于判定网络节点“J”16在每个邻近的网络节点“K”和“F”之间具有至少一个连接,装置20可以在操作328中标识邻近于网络节点“J”的网络节点“K”和“F”16。
装置20还在操作328中标识网络节点“J”16中的至少一个本地路由器312,该本地路由器312提供到邻近的网络节点“F”和“K”16的连接。如参照图18所示出的,(例如,在网络节点“J”16内实现的)装置20可以判定:路由器“JF1”和“JF2”312各自提供从网络节点“J”16到网络节点“F”的连接;路由器“JK1”和“JK2”312各自提供从网络节点“J”16到网络节点“K”16的连接。假设在网络节点“F”和“K”内没有相应的装置20被实现,则网络节点“J”16内的装置20还可以被配置为判定路由器“KJ1”和“KJ2”312各自提供从网络节点“K”16到网络节点“J”16的连接;路由器“FJ1”和“FJ2”各自提供从网络节点“F”16到网络节点“J”16的连接。
因此,在操作330中,装置20可以创建二级路由弧(也称为lambda弧)306的第二层次级别304。图19示出由装置20使用上面描述的序列化的弧表示创建的lambda弧306。例如,装置20可以通过使用先前所描述的弧形成技术在操作330中创建lambda弧“J1”和“J2”306,该lambda弧“J1”和“J2”306各自具有用于到达主层次级别300中的邻近的网络节点“F”的边缘接合点路由器“JK1”和“JK2”312。装置20还可以在操作330中创建lambda弧“J3”和“J4”306,lambda弧“J3”和“J4”306各自具有用于到达主层次级别300中的邻近网络节点“F”的边缘接合点路由器“JF1”和“JF2”312。装置20还可以提供二级层次级别标签转换路径,该二级层次级别标签转换路径用于经由本地边缘路由器(比如,“JF1”、“JF2”、“JK1”、“JK2”)到达邻近的网络节点“F”和“K”;如先前所描述的,关于方向和主快速重新路由(frr),每个路由弧可以包括4个标签转换路径。因此,每个二级路由弧306包括4个二级层次级别标签转换路径。如图18中所示出的,网络节点“F”和“K”利用单一环形拓扑,因此(网络节点“K”16)对lambda标签“K1”、“K2”306的使用以及(网络节点“F”)对lambda标签“F1”、“F2”306的使用足以提供到邻近网络节点“J”的可达性。
与此相反,网络节点“J”的相对复杂的同心环形拓扑可以依赖于图17A和17B的作为在lambda弧“J1”、“J2”、“J3”和“J4”的基础的iota弧310来提供从网络节点“J”到邻近网络节点“K”和“F”的可达性。
因此,对lambda弧306的使用使得邻近的网络节点“K”、“J”和“F”能够通过使用具有4个二级层次级别标签转换路径的二级路由弧(lamda弧)306将数据分组从一个网络节点16转发到另一邻近网络节点16,其中网络节点“K”16可以经由lambda弧“K1”或“K2”306将数据分组转发到网络节点“J”16,网络节点“J”16可以经由lambda弧“J3”或“J4”306将数据分组转发到网络节点“F”16。类似地,网络节点“F”16可以经由lambda弧“F1”或“F2”306将数据分组转发到网络节点“J”16,网络节点“J”16可以经由lambda弧“J1”或“J2”306将数据分组转发到网络节点“K”16。此外,网络节点“J”16中的路由器312可以利用作为lambda弧“J1”、“J2”、“J3”和“J4”306的基础的iota弧310来在每个lambda弧306中的逻辑“跳”之间提供可达性。
图28示出了根据示例实施例的装置20在操作330中在第二层次级别中、在具有环形拓扑的网络节点的连续的交叉点之间创建二级路由弧。图28示出了操作330的替代实现方式,其中网络节点“D”和“E”16各自具有环形拓扑。网络节点“D”和“E”16在相交的路由器“DE1”、“DE2”、“DE3”和“DE4”312处相交。尽管图28中未示出,但是其它路由器312可以沿在相交的路由器“DE1”、“DE2”、“DE3”和“DE4”312之间的网络节点“D”和“E“16的环被部署。响应于装置20检测到路由器“DE1”、“DE2”、“DE3”和/或“DE4”312创建与邻近的网络节点16的交叉(或连接),装置20可以创建lambda弧(比如,D1、D2、D3、D4、E1、E2、E3和/或E4)。例如,图28的lambda弧306中的任意一个可以在网络节点16的初始部署(路由器312之间的光纤连接被安装时)之前、期间或之后被创建。如图28中所示出的,每条弧306可以在连续的交叉点之间被形成,使得lambda弧“D1”在连续的相交路由器“DE1”和“DE4”312之间由装置20形成,lambda弧“D2”在连续的相交路由器“DE1”和“DE2”312之间被形成,lambda弧“D3”在连续的相交路由器“DE2”和“DE3”312之间被形成,lambda弧“D4”在连续的相交路由器“DE3”和“DE4”312之间被形成。
类似地,在操作330中,装置20可以在连续的相交路由器“DE3”和“DE4”312之间形成lambda弧“E1”,在连续的相交路由器“DE1”和“DE4”312之间形成lambda弧“E2”,在连续的相交路由器“DE1”和“DE2”312之间形成lambda弧“E3”,在连续的相交路由器“DE2”和“DE3”312之间形成lambda弧“E4”。
因此,二级路由弧(比如,D1、D2、D3、D4、E1、E2、E3和/或E4)306的第二层次级别的创建可以包括在连续的交叉点(比如,相交路由器“DE1”、“DE2”、“DE3”和“DE4”312)之间、在至少一个网络节点(比如,“D”)16和邻近网络节点(比如,“E”)之间创建二级路由弧。
图27还示出了装置20在操作332中创建主路由弧12(也称为omega弧12)的用于到达规定的目的地节点14的主层次级别302以及相关联的主层次级别标签转换路径(如先前参照图1-15所描述的)。
一旦创建三级路由弧310和相关联的三级层次级别标签转换路径、二级路由弧306和相关联的二级层次级别标签转换路径以及主路由弧12和相关联的主层次级别标签转换路径,路由器312被装载上适当的多级层次结构标签交换转发表,以使得针对规定的目的地节点14使用由网络节点16内的三级路由弧310、在邻近网络节点16之间的二级路由弧306和跨网络节点16的主路由弧12组成的多级层次结构的路由成为可能。
图20示出了根据示例实施例的在网络节点“J”12的出口路由器中实现的示例多级层次结构标签交换转发表334。图21示出了根据示例实施例的在网络节点“J”12的出口路由器中实现的示例多级层次结构标签交换转发表336。转发表334和336利用图22中示出的层次级别标签转换路径338a、338b、338c和338d。
图22示出了主层次级别标签转换路径(比如,338a、338b、338c、338d)的简化视图,其中(如图18中的)网络节点16之间的多个连接可以被表示为代表主层次级别标签转换路径的单一线路。如图22中所示出的,omega弧“ARC2”12包括4个标签转换路径,即第一方向(右方向)路径338a(基于主层次级别交换标签O_JR、O_FR、O_CR和O_AR340)、第二方向(左方向)路径338b(基于主层次级别交换标签O_C、O_F、O_J和O_K 340)、第一方向快速重新路由(frr)路径338c(基于主层次级别交换标签O_CRfrr、O_FRfrr、O_JRfrr和O_KRfrr 340)和第二方向快速重新路由(frr)路径338d(基于主层次级别交换标签O_Jfrr、O_Ffrr、O_Cfrr和O_Afrr 340)。如图22中所示出的,网络节点“F”16拥有omega弧“ARC2”12的弧指针18。
如图20中所示出的,网络节点“J”中的入口路由器“FJ1”和“FJ2”312的相应的存储器电路26随多级层次结构标签交换转发表334的前两列(输入标签=“O_J”或“O_JRfrr”)由装置20装载。网络节点“J”中的入口路由器“KJ1”和“KJ2”312的相应的存储器电路26随多级层次结构标签交换转发表334的最后两列(输入标签=“O_JR”或“O_Jfrr”)由装置20装载。
因此,响应于任一入口路由器“FJ1”和“FJ2”312接收到来自网络节点“F”16并指定主标签“O_J”340的数据分组,入口路由器可以用封装lambda弧“J1”306的lambda标签对所接收到的数据分组进行封装:如先前所描述的,每个lambda弧306具有用于转发数据分组的4个二级层次级别标签转换路径;然而,如果lambda弧“J1”的4个标签转发路径中没有一个能够将数据分组转发到任一边缘路由器“JK1”或“JK2”(图18中所示的),则入口路由器“FJ1”或“FJ2”可以用可替代快速重新路由标签“O_Jfrr”340替代omega标签“O_J”,用于针对试图经由可替代标签转换路径338d进行的递送传回网络节点“F”16。类似地,响应于入口路由器“KJ1”或“KJ2”312接收到来自网络节点“K”16的、指定omega标签“O_JR”340的数据分组,入口路由器“KJ1”或“KJ2”312可以通过使用4个可用的二级层次级别标签转换路径,用封装lambda弧“J3”306的lambda标签对所接收到的数据分组进行封装:封装lambda弧“J3”中的故障可能引起入口路由器“KJ1”或“KJ2”312用快速重新路由标签“O_JRfrr”340替代omega标签“O_JR”340,以经由可替代主标签转换路径338c进行路由。
因此,入口路由器有用于在网络节点16内转发所接收到的数据分组的多个路径。如先前所描述的,针对沿lambda弧的数据分组的传播,入口路由器312(或网络16内的任意其它路由器)还可以利用作为lambda弧306的基础的iota弧310。
图21示出了在网络节点“J”12的入口路由器中实现的示例多级层次结构标签交换转发表336。前两列(输入标签=“O_J”或“O_JRfrr”)被安装在出口路由器“JK1”和“JK2”312中,最后两列(输入标签=“O_JR”或“O_Jfrr”)被安装在出口路由器“JF1”和“JF2”312中。如图21中所示出的,每个表条目包括优选的omega交换标签346、封装lambda弧348和替代omega标签350。因此,响应于在其lambda弧306的端部处接收到数据分组,每个出口路由器弹出该lambda弧306并使用优选的交换标签(比如,“O_J”到“O_K”)346来转换omega标签340,以将数据分组传播到邻近网络节点16:出口路由器312还可以通过使用可用的二级标签转换路径中的任意4个,用邻近网络节点中的lambda弧(比如,“K1”)348对数据分组进行封装;如果第一lambda弧不可用,则可替代lambda弧可以被用于沿另一lambda弧306发送数据分组。如果邻近网络节点16中没有可用的lambda弧306,则出口路由器可以利用可替代快速重新路由标签350来通过现有网络节点“J”16发送数据分组,以经由可替代的路径进行递送。
图23示出了根据示例实施例的另一示例主层次级别路由拓扑302’,该主层次级别路由拓扑302’具有一个路由弧12的边缘接合节点“X”16,该边缘接合节点“X”16具有到属于至少一个其它路由弧16的三个其它的网络节点16的连接性。如关于示例多级层次结构标签交换转发表360所示出的,通过连续地使用另一下游网络节点(比如,“y”或“Z”)的另一主层次级别交换标签替代主层次级别交换标签340,边缘接合节点“X”中的出口路由器可以对经由优选的交换标签(“O_x”)340转发数据分组中出现的故障做出响应,以试图将数据分组重新发送到另一下游网络节点16(注意可替代的标签362被用作“标记”以跳转到可替代的交换标签的下一列)。如果耦接到网络节点“X”中的出口路由器的下游网络节点(x、y或z)中没有可用的,则使用主层次级别快速重新路由交换标签“O_Yfrr”340替代主层次级别交换标签,以经由可替代方向338h中的相应的路由弧向向目的地传输数据分组重新路由。
图26示出了根据示例实施例的传送数据分组(图25的400)到目的地节点14的示例方法。网络节点“K”16(具有环形拓扑)中的主节点(未示出)在操作402中将数据分组400发送到路由器“Kn1”312以传输到目的地节点“R”14。路由器“Kn1”可以在操作404中将无环标签转换路径338a的主层次级别交换标签(图25的340)添加到数据分组400。路由器“Kn1”还可以推送提供到具有同心环形拓扑的邻近网络节点“J”的可达性的lambda弧“K1”306的lambda标签。如图26中所示出的,路由器“Kn1”312可以推送lambda弧“K1”306(Lambda FEC=KJ1)的任意可用的二级层次级别交换标签(比如,K1_L、K1_R、K1_Lfrr、K1_Rfrr)406。路由器“Kn1”将用omega标签340和lambda标签406封装的数据分组400输出到出口路由器“KJ1”312。
作为lambda弧“K1”的边缘接合点的出口路由器“KJ1”312在操作408中检测并弹出lambda弧“K1”306的lambda标签406,检测并将omega标签340从“O_KR”转换到“O_JR”。具有经转换切换的omega标签“O_JR”的数据分组被传递到耦接到网络节点“J”16的接口,以沿主层次级别标签转换路径338a进行传播。如图20中所示出的,入口路由器(比如,“KJ1”)对omega标签“O_JRfrr”340推送封装lambda弧“J3”306的新的lambda标签406做出响应。如操作414中所示出的,入口路由器“KJ1”可以使用可替代的二级层次标签替代二级层次级别交换标签406,以在lambda弧306的可替代的方向上进行传输;如果可替代的方向出现故障,入口路由器“KJ1”可以用lambda弧306(或可替代1的ambda弧306,如果可用)中的快速重新路由标签406替代二级层次级别交换标签406。
操作416示出入口路由器(比如,“KJ1”)推送用于沿lambda弧到达下一逻辑跳的iota标签410。如参照图17B所示出的,用于到达路由器“JF1”的路径可以利用iota弧310,因此入口路由器“KJ1”还可以推送10的iota标签以使得12的数据分组能够经由使用底层iota弧310的lambda弧“J3”被转发。如果iota弧310中存在故障,则可以通过替代iota标签410来尝试可替代的方向中的相同iota弧;如果iota弧310的两个方向都对分组进行过滤,则iota标签可以被路由器弹出,并且可以尝试在替代的方向上沿lambda弧“J3”306进行传输,如上面所描述的。假设沿iota弧的成功的传输,则下一个iota弧接合节点在操作418中使用下一个iota弧替代iota弧410。在操作420中,目的地路由器“JF1”可以弹出iota标签410、弹出lambda标签406并使用omega标签“O_FR”替代omega标签340“O_JR”,以沿标签转换路径338传输到邻近网络节点“F”16。如先前所描述的,传输中的任意故障可以首先在iota级层次结构308处、然后在lambda级层次结构304处、并最后在omega级层次结构302处被重新尝试。
根据示例实施例,通过使用具有强健的重新路由能力和最小的复杂性的多级层次结构,复杂的网络拓扑可以被有效地管理并实现。多级层次结构的使用使得分形计算成为可能,其中在任意给定的层次级别处的计算独立于且不同于任意其它层次级别。
尽管在本公开中已经结合目前被认为是用于实行所附权利要求中指定的主题的最佳模式对示例实施例进行了描述,但是应当理解示例实施例仅仅是说明性的,而不用于限制所附权利要求书中指定的主题。
Claims (21)
1.一种方法,包括:
在计算网络中创建无环路由拓扑,所述无环路由拓扑包括用于到达目的地网络节点的多个路由弧,每个路由弧包括作为该路由弧的第一端的第一网络节点、作为该路由弧的第二端的第二网络节点、以及至少第三网络节点,所述第三网络节点被配置为经由该路由弧的所述第一端或所述第二端中的任意一个沿该路由弧向所述目的地节点路由任意网络流量,所述第一、第二、或第三网络节点中的至少一个被实现为具有规定的环形拓扑的基于环的网络;以及
经由所述无环路由拓扑的所述路由弧建立用于到达所述目的地网络节点的无环标签转换路径,所述标签转换路径独立于且不同于所述规定的环形拓扑的任意属性。
2.如权利要求1所述的方法,其中,用于到达所述目的地网络节点的所述路由弧被标识为所述无环路由拓扑的主层次级别中的主路由弧,相应的标签转换路径被标识为主层次级别标签转换路径,所述方法还包括:
在至少一个网络节点的所述基于环的网络内创建具有二级层次级别标签转换路径的第二层次级别的二级路由弧,所述至少一个网络节点的所述基于环的网络内的每个二级路由弧提供从所述基于环的网络到所述主层次级别中的邻近的网络节点的可达性。
3.如权利要求2所述的方法,还包括:在所述二级路由弧中的至少一个内创建具有三级层次级别标签转换路径的第三层次级别的三级路由弧,所述三级层次级别标签转换路径独立于且不同于所述二级层次级别标签转换路径中的任意一个,所述三级路由弧在所述至少一个二级路由弧内提供到所述邻近的网络节点的可达性。
4.如权利要求3所述的方法,其中,所述规定的环形拓扑包括路由器的第一环、与所述第一环同心的路由器的第二环、以及在所述第一环和所述第二环之间的至少一个链路,所述第三层次级别的所述三级路由弧提供用于到达至少一个目的地网络节点的连续的弧的路径。
5.如权利要求3所述的方法,还包括:
响应于检测到去往所述目的地网络节点的数据分组,通过所述至少一个网络节点中的第一路由器添加主层次级别交换标签,以经由所述主层次级别到达所述目的地网络节点;
通过所述第一路由器向所述数据分组添加二级层次级别交换标签,以经由第一方向的所述二级路由弧中的相应的一个到达所述主层次级别中的所述邻近的网络节点;
通过所述第一路由器向所述数据分组添加三级层次级别交换标签,以经由所述三级路由弧中的相应的一个沿所述一个二级路由弧到达第二路由器。
6.如权利要求2所述的方法,其中,所述第二层次级别的二级路由弧的创建包括在所述至少一个网络节点和所述邻近的网络节点之间的连续的交叉点之间创建所述二级路由弧。
7.如权利要求2所述的方法,还包括:基于所判定的所述邻近的网络节点沿所述第一方向的所述一个二级路由弧的不可达性,沿所述二级路由弧中的一个二级路由弧的路由器用所述一个二级路由弧的替代方向、或所述基于环的网络中的另一二级路由弧中的一个的替代二级层次标签来替代穿过所述第一方向的所述一个二级路由弧的所接收到的数据分组中的二级层次级别交换标签。
8.如权利要求1所述的方法,还包括:
通过所述第一网络节点中的第一路由器接收来自相应的路由弧的数据分组,所述数据分组指定用于到达所述目的地网络节点的所述无环路由拓扑中的所述第一路由器的主层次级别交换标签;
通过所述第一路由器用耦接到所述第一路由器且具有不同的环形拓扑的下游网络节点的第二主层次级别交换标签来替代所述数据分组中的所述主层次级别交换标签;
响应于所述第一路由器判定所述第二网络节点是不可达的,随后用耦接到所述第一路由器且具有不同的环形拓扑的另一下游网络节点的另一主层次级别交换标签来替代所述第二主层次级别交换标签;
如果耦接到所述第一路由器的所述下游网络节点中没有一个是可达的,则用主层次级别快速重新路由交换标签来替代所述主层次级别交换标签,以经由替代方向的相应路由弧向所述目的地传送所述数据分组。
9.一种方法,包括:
通过路由器接收去往计算网络中的无环路由拓扑中的目的地网络节点的数据分组,所述无环路由拓扑包括用于到达所述目的地网络节点的多个路由弧,每个路由弧包括作为该路由弧的第一端的第一网络节点、作为该路由弧的第二端的第二网络节点、以及至少第三网络节点,所述第三网络节点被配置为经由所述路由弧的所述第一端或所述第二端中的任意一个沿所述路由弧向所述目的地节点路由任意网络流量,所述第一、第二、或第三网络节点中的至少一个被实现为包含所述路由器的、具有规定的环形拓扑的基于环的网络;以及
所述路由器将主层次级别交换标签添加到所述数据分组,所述主层次级别交换标签提供用于经由所述无环路由拓扑的所述路由弧到达所述目的地网络节点的无环标签转换路径,所述无环路由拓扑中的每个标签转换路径独立于且不同于所述规定的环形拓扑的任意属性。
10.如权利要求9所述的方法,其中,用于到达所述目的地网络节点的所述路由弧被标识为所述无环路由拓扑中的主层次级别的主路由弧,相应的标签转换路径被标识为主层次级别标签转换路径,所述方法还包括:
所述路由器将第二层次级别的二级路由弧的、具有所述基于环的网络内的二级层次级别标签转换路径的二级层次级别交换标签添加到所述数据分组,所述二级路由弧提供从所述基于环的网络中的所述路由器到所述主层次级别中的邻近的网络节点的可达性。
11.如权利要求10所述的方法,还包括:
所述路由器将第三层次级别的三级路由弧的、具有所述二级路由弧内的三级层次级别标签转换路径的三级层次级别交换标签添加到所述数据分组,所述三级层次级别标签转换路径独立于且不同于所述二级路由弧或所述主路由弧,所述三级路由弧提供从所述路由器到沿所述二级路由弧的第二路由器的可达性。
12.如权利要求11所述的方法,其中,所述规定的环形拓扑包括路由器的第一环、与所述第一环同心的路由器的第二环、以及在所述第一环和所述第二环之间的至少一个链路,所述第三层次级别的三级路由弧提供用于到达至少一个目的地网络节点的连续的弧的路径。
13.如权利要求10所述的方法,其中,所述第二层次级别的二级路由弧的创建包括在至少一个网络节点和所述邻近的网络节点之间的连续的交叉点之间创建所述二级路由弧。
14.如权利要求10所述的方法,还包括:
所述路由器响应于所判定的所述邻近的网络节点的经由所述环形拓扑中的任意二级路由弧的不可达性,移除任意二级层次级别交换标签并且用替代主层次级别交换标签来替代所述主层次级别交换标签。
15.一种编码在一个或多个非暂态有形介质中供执行的逻辑,所述逻辑在被执行时能操作以:
在计算网络中创建无环路由拓扑,所述无环路由拓扑包括用于到达目的地网络节点的多个路由弧,每个路由弧包括作为该路由弧的第一端的第一网络节点、作为该路由弧的第二端的第二网络节点、以及至少第三网络节点,所述第三网络节点被配置为经由所述路由弧的所述第一端或所述第二端中的任意一个沿所述路由弧向所述目的地节点路由任意网络流量,所述第一、第二、或第三网络节点中的至少一个被实现为具有规定的环形拓扑的基于环的网络;以及
经由所述无环路由拓扑的所述路由弧建立用于到达所述目的地网络节点的无环标签转换路径,所述标签转换路径独立于且不同于所述规定的环形拓扑的任意属性。
16.如权利要求15所述的逻辑,其中,用于到达所述目的地网络节点的所述路由弧被标识为所述无环路由拓扑的主层次级别的主路由弧,相应的标签转换路径被标识为主层次级别标签转换路径,所述逻辑还包括用于执行以下操作的指令:
在至少一个网络节点的所述基于环的网络内创建具有二级层次级别标签转换路径的第二层次级别的二级路由弧,所述至少一个网络节点的所述基于环的网络内的每个二级路由弧提供从所述基于环的网络到所述主层次级别中的邻近的网络节点的可达性。
17.如权利要求16所述的逻辑,还包括用于执行以下操作的指令:
在所述二级路由弧中的至少一个内创建具有三级层次级别标签转换路径的第三层次级别的三级路由弧,所述三级层次级别标签转换路径独立于且不同于所述二级层次级别标签转换路径中的任意一个,所述三级路由弧在所述至少一个二级路由弧内提供到所述邻近的网络节点的可达性。
18.如权利要求17所述的方法,其中,所述规定的环形拓扑包括路由器的第一环、与所述第一环同心的路由器的第二环、以及在所述第一环和所述第二环之间的至少一个链路,所述第三层次级别的所述三级路由弧提供用于到达至少一个目的地网络节点的连续的弧的路径。
19.一种编码在一个或多个非暂态有形介质上供执行的逻辑,所述逻辑在被执行时能操作以:
通过路由器接收去往计算网络中的无环路由拓扑中的目的地网络节点的数据分组,所述无环路由拓扑包括用于到达所述目的地网络节点的多个路由弧,每个路由弧包括作为该路由弧的第一端的第一网络节点、作为该路由弧的第二端的第二网络节点、以及至少第三网络节点,所述第三网络节点被配置为经由所述路由弧的所述第一端或所述第二端中的任意一个沿所述路由弧向所述目的地节点路由任意网络流量,所述第一、第二、或第三网络节点中的至少一个被实现为包含所述路由器的、具有规定的环形拓扑的基于环的网络;以及
所述路由器将主层次级别交换标签添加到所述数据分组,所述主层次级别交换标签提供用于经由所述无环路由拓扑的所述路由弧到达所述目的地网络节点的无环标签转换路径,所述无环路由拓扑中的每个标签转换路径独立于且不同于所述规定的环形拓扑的任意属性。
20.如权利要求19所述的逻辑,其中,用于到达所述目的地网络节点的所述路由弧被标识为所述无环路由拓扑中的主层次级别的主路由弧,相应的标签转换路径被标识为主层次级别标签转换路径,所述逻辑还包括用于执行以下操作的指令:
所述路由器将第二层次级别的二级路由弧的、具有所述基于环的网络内的二级层次级别标签转换路径的二级层次级别交换标签添加到所述数据分组,所述二级路由弧提供从所述基于环的网络中的所述路由器到所述主层次级别中的邻近的网络节点的可达性。
21.如权利要求20所述的逻辑,还包括用于执行以下操作的指令:
所述路由器将第三层次级别的三级路由弧的、具有所述二级路由弧内的三级层次级别标签转换路径的三级层次级别交换标签添加到所述数据分组,所述三级层次级别标签转换路径独立于且不同于所述二级路由弧或所述主路由弧,所述三级路由弧提供从所述路由器到沿所述二级路由弧的第二路由器的可达性。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/620,677 US9338086B2 (en) | 2012-09-14 | 2012-09-14 | Hierarchal label distribution and route installation in a loop-free routing topology using routing arcs at multiple hierarchal levels for ring topologies |
US13/620,677 | 2012-09-14 | ||
PCT/US2013/059777 WO2014043549A1 (en) | 2012-09-14 | 2013-09-13 | Hierarchal label distribution and route installation in a loop-free routing topology using routing arcs at multiple hierarchal levels for ring topologies |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104521191A true CN104521191A (zh) | 2015-04-15 |
CN104521191B CN104521191B (zh) | 2018-03-27 |
Family
ID=49263456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380042341.9A Active CN104521191B (zh) | 2012-09-14 | 2013-09-13 | 使用环形拓扑的多层次级别的路由弧的无环路由拓扑中的层次标签分发和路由安装 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9338086B2 (zh) |
EP (1) | EP2896165B1 (zh) |
CN (1) | CN104521191B (zh) |
WO (1) | WO2014043549A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330749A (zh) * | 2015-06-30 | 2017-01-11 | 思科技术公司 | 无回路多端部网络拓扑中的类别感知的负载平衡 |
WO2020244299A1 (zh) * | 2019-06-03 | 2020-12-10 | 中兴通讯股份有限公司 | 一种实现重路由的方法及装置 |
CN115002034A (zh) * | 2022-06-16 | 2022-09-02 | 北京经纬恒润科技股份有限公司 | 一种报文通信网络构建、报文传输方法及装置 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9088502B2 (en) | 2011-05-23 | 2015-07-21 | Cisco Technology, Inc. | Generating a loop-free routing topology using routing arcs |
US8837476B2 (en) * | 2012-09-07 | 2014-09-16 | International Business Machines Corporation | Overlay network capable of supporting storage area network (SAN) traffic |
US9338086B2 (en) * | 2012-09-14 | 2016-05-10 | Cisco Technology, Inc. | Hierarchal label distribution and route installation in a loop-free routing topology using routing arcs at multiple hierarchal levels for ring topologies |
WO2014054281A1 (en) * | 2012-10-03 | 2014-04-10 | Nec Corporation | Control apparatus, control method thereof, and program |
US9112788B2 (en) | 2012-10-10 | 2015-08-18 | Cisco Technology, Inc. | Bicasting using non-congruent paths in a loop-free routing topology having routing arcs |
US9036463B2 (en) * | 2013-07-05 | 2015-05-19 | Cisco Technology, Inc. | Scalable BGP protection from edge node failure using dynamically assigned labels in data packets |
US9320036B2 (en) | 2013-07-17 | 2016-04-19 | Cisco Technology, Inc. | Installation of time slots for sending a packet through an ARC chain topology network |
US9529775B2 (en) | 2013-10-30 | 2016-12-27 | Futurewei Technologies, Inc. | Network topology of hierarchical ring with gray code and binary code |
US9529774B2 (en) | 2013-10-30 | 2016-12-27 | Futurewei Technologies, Inc. | Network topology of hierarchical ring with gray coding shortcuts |
US9600440B2 (en) | 2013-10-30 | 2017-03-21 | Futurewei Technologies, Inc. | Network topology of hierarchical ring with recursive shortcuts |
CN103970653A (zh) * | 2014-04-29 | 2014-08-06 | 南京邮电大学 | 一种传感器网软件可达性验证方法 |
US10291516B2 (en) * | 2015-02-27 | 2019-05-14 | Cisco Technology, Inc. | Synonymous labels |
US10091103B2 (en) * | 2016-04-22 | 2018-10-02 | Juniper Networks, Inc. | Efficient synchronization of stored information using a parallel ring network topology |
US10650621B1 (en) | 2016-09-13 | 2020-05-12 | Iocurrents, Inc. | Interfacing with a vehicular controller area network |
CN106231631B (zh) * | 2016-09-26 | 2019-08-09 | 陕西尚品信息科技有限公司 | 一种基于树型Ad-hoc无线网络的信息收集方法 |
US10320652B2 (en) * | 2017-01-09 | 2019-06-11 | Cisco Technology, Inc. | Dynamic installation of bypass path by intercepting node in storing mode tree-based network |
US10476811B2 (en) * | 2017-03-10 | 2019-11-12 | Juniper Networks, Inc | Apparatus, system, and method for providing node protection across label-switched paths that share labels |
US10326688B2 (en) * | 2017-05-25 | 2019-06-18 | Nokia Of America Corporation | Method and apparatus for instantiating a path with the minimum number of segments |
US10798012B2 (en) | 2017-10-30 | 2020-10-06 | Cisco Technology, Inc. | Jitter elimination and latency compensation at DetNet transport egress |
CN108449350B (zh) * | 2018-03-23 | 2020-11-13 | 全球能源互联网研究院有限公司 | 一种多协议编排方法及装置 |
US11082338B1 (en) * | 2018-04-17 | 2021-08-03 | Amazon Technologies, Inc. | Distributed connection state tracking for large-volume network flows |
US10673734B2 (en) | 2018-09-10 | 2020-06-02 | Cisco Technology, Inc. | Packet replication over chains of cascaded resilient link layer segments |
US11438258B2 (en) * | 2018-11-13 | 2022-09-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient method for computing backup routes |
US20220070084A1 (en) * | 2019-01-24 | 2022-03-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system to prevent micro-loops during a network topology change |
CN110831104B (zh) * | 2019-12-04 | 2022-09-23 | 深圳市纽瑞芯科技有限公司 | 一种线型拓扑无线自组网网络路由方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020176371A1 (en) * | 2001-05-24 | 2002-11-28 | Behnam Behzadi | Method and system for preventing transmission loops in a label switching domain |
US7545735B1 (en) * | 2003-03-11 | 2009-06-09 | Atrica Israel Ltd. | Scalable protection mechanism for hierarchical multicast service in ring based networks |
US7633940B1 (en) * | 2005-06-27 | 2009-12-15 | The Board Of Trustees Of The Leland Stanford Junior University | Load-balanced routing |
CN102308519A (zh) * | 2009-02-19 | 2012-01-04 | 华为技术有限公司 | 适用于点至多点域间多协议标签交换流量工程路径计算的系统和方法 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728205B1 (en) * | 1997-02-19 | 2004-04-27 | Massachusetts Institute Of Technology | Method and apparatus for automatic protection switching |
US6996065B2 (en) * | 2000-07-06 | 2006-02-07 | Lucent Technologies Inc. | Dynamic backup routing of network tunnel paths for local restoration in a packet network |
AU2001296524A1 (en) | 2000-10-02 | 2002-04-15 | Luc Nguyen | Real time traffic engineering of data networks |
JP4647835B2 (ja) * | 2001-05-17 | 2011-03-09 | 富士通株式会社 | 伝送装置及び障害回避方法 |
US7145878B2 (en) * | 2001-07-27 | 2006-12-05 | Corrigent Systems Ltd. | Avoiding overlapping segments in transparent LAN services on ring-based networks |
WO2005036839A2 (en) * | 2003-10-03 | 2005-04-21 | Avici Systems, Inc. | Rapid alternate paths for network destinations |
US20090190494A1 (en) * | 2004-06-30 | 2009-07-30 | Luigi De Giovanni | Method and system for network topology updating using topology perturbation |
US8446815B2 (en) * | 2004-12-22 | 2013-05-21 | Telecommunications Research Laboratories | Failure independent path protection with p-cycles |
US7656857B2 (en) | 2005-10-18 | 2010-02-02 | Cisco Technology, Inc. | Directed acyclic graph computation by orienting shortest path links and alternate path links obtained from shortest path computation |
US7693064B2 (en) | 2005-10-24 | 2010-04-06 | Cisco Technology, Inc. | Forwarding packets to a directed acyclic graph destination using link selection based on received link metrics |
US20070153707A1 (en) | 2006-01-04 | 2007-07-05 | Pascal Thubert | Ad hoc network formation and management based on aggregation of ad hoc nodes according to an aggregation hierarchy |
US7801031B2 (en) | 2006-11-02 | 2010-09-21 | Polytechnic Institute Of New York University | Rerouting for double-link failure recovery in an internet protocol network |
US8385345B2 (en) * | 2007-09-19 | 2013-02-26 | At&T Intellectual Property Ii, L.P. | Data forwarding in hybrid mesh networks |
US8264955B2 (en) * | 2009-06-12 | 2012-09-11 | Polytechnic Institute Of New York University | Internet protocol fast reroute for shared risk link group failure recovery |
IL200503A0 (en) * | 2009-08-20 | 2011-08-01 | Eci Telecom Ltd | Technique for dual homing interconnection between communication networks |
WO2012120527A1 (en) | 2011-03-07 | 2012-09-13 | Tejas Networks Limited | A protection method and system on preplanning duality of paths for a unicast and/or a multicast traffic |
US9088502B2 (en) | 2011-05-23 | 2015-07-21 | Cisco Technology, Inc. | Generating a loop-free routing topology using routing arcs |
US8897135B2 (en) | 2012-02-10 | 2014-11-25 | Cisco Technology, Inc. | Recursive load balancing in a loop-free routing topology using routing arcs |
US9413638B2 (en) | 2012-05-09 | 2016-08-09 | Cisco Technology, Inc. | Generating a loop-free routing topology based on merging buttressing arcs into routing arcs |
US9246794B2 (en) | 2012-08-03 | 2016-01-26 | Cisco Technology, Inc. | Label distribution and route installation in a loop-free routing topology using routing arcs |
US9338086B2 (en) * | 2012-09-14 | 2016-05-10 | Cisco Technology, Inc. | Hierarchal label distribution and route installation in a loop-free routing topology using routing arcs at multiple hierarchal levels for ring topologies |
-
2012
- 2012-09-14 US US13/620,677 patent/US9338086B2/en active Active
-
2013
- 2013-09-13 WO PCT/US2013/059777 patent/WO2014043549A1/en unknown
- 2013-09-13 CN CN201380042341.9A patent/CN104521191B/zh active Active
- 2013-09-13 EP EP13770756.8A patent/EP2896165B1/en active Active
-
2016
- 2016-03-31 US US15/087,919 patent/US9929938B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020176371A1 (en) * | 2001-05-24 | 2002-11-28 | Behnam Behzadi | Method and system for preventing transmission loops in a label switching domain |
US7545735B1 (en) * | 2003-03-11 | 2009-06-09 | Atrica Israel Ltd. | Scalable protection mechanism for hierarchical multicast service in ring based networks |
US7633940B1 (en) * | 2005-06-27 | 2009-12-15 | The Board Of Trustees Of The Leland Stanford Junior University | Load-balanced routing |
CN102308519A (zh) * | 2009-02-19 | 2012-01-04 | 华为技术有限公司 | 适用于点至多点域间多协议标签交换流量工程路径计算的系统和方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106330749A (zh) * | 2015-06-30 | 2017-01-11 | 思科技术公司 | 无回路多端部网络拓扑中的类别感知的负载平衡 |
CN106330749B (zh) * | 2015-06-30 | 2019-11-19 | 思科技术公司 | 无回路多端部网络拓扑中的类别感知的负载平衡 |
WO2020244299A1 (zh) * | 2019-06-03 | 2020-12-10 | 中兴通讯股份有限公司 | 一种实现重路由的方法及装置 |
CN115002034A (zh) * | 2022-06-16 | 2022-09-02 | 北京经纬恒润科技股份有限公司 | 一种报文通信网络构建、报文传输方法及装置 |
CN115002034B (zh) * | 2022-06-16 | 2023-06-16 | 北京经纬恒润科技股份有限公司 | 一种报文通信网络构建、报文传输方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104521191B (zh) | 2018-03-27 |
WO2014043549A1 (en) | 2014-03-20 |
US20140078927A1 (en) | 2014-03-20 |
EP2896165A1 (en) | 2015-07-22 |
US9338086B2 (en) | 2016-05-10 |
US9929938B2 (en) | 2018-03-27 |
EP2896165B1 (en) | 2020-03-18 |
US20160218965A1 (en) | 2016-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104521191A (zh) | 使用环形拓扑的多层次级别的路由弧的无环路由拓扑中的层次标签分发和路由安装 | |
US9794167B2 (en) | Bicasting using non-congruent paths in a loop-free routing topology having routing arcs | |
EP2880826B1 (en) | Label distribution and route installation in a loop-free routing topology using routing arcs | |
US10348611B2 (en) | Generating a loop-free routing topology using routing arcs | |
US10164867B2 (en) | Generating non-congruent paths having minimal latency difference in a loop-free routing topology having routing arcs | |
US9264243B2 (en) | Flooding and multicasting in a loop-free routing topology using routing arcs | |
US9628391B2 (en) | Recursive load balancing in a loop-free routing topology using routing arcs | |
KR101430544B1 (ko) | 멀티레이어 네트워크 중 포워딩 인접의 속성 상속 방법 및 상응한 멀티레이어 네트워크 | |
EP2915294B1 (en) | Multiple path availability between walkable clusters | |
EP2713556A1 (en) | Mapping a network topology request to a physical network | |
CN113242179B (zh) | 一种基于sdn的sr路径计算和标签栈生成的方法及sdn控制器 | |
Luss et al. | Survivable telecommunications network design under different types of failures | |
JP2005217754A (ja) | ネットワーク管理システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |