用于备份泛洪拓扑分离的系统和方法与流程

文档序号:26012636发布日期:2021-07-23 21:33阅读:199来源:国知局
用于备份泛洪拓扑分离的系统和方法与流程

相关申请案交叉申请

本专利申请要求在2018年9月12日由huaimochen递交的发明名称为“备份泛洪拓扑分离(backupfloodingtopologysplit)”的第62/730,103号美国临时专利申请案的在先申请优先权,该美国临时专利申请以引入的方式并入本文。

本发明大体上涉及一种网络通信,更具体地,涉及当泛洪拓扑由于链路故障和/或节点故障而分离时,向每个节点快速泛洪链路状态(linkstate,ls)。



背景技术:

拓扑是一种网络通信设备的布置,其中,将通信设备建模为节点,将设备之间的连接建模为节点之间的链路或线路。泛洪拓扑是给定(物理)网络拓扑的子图或子网,所述子图或子网对每个节点的可达性与给定网络拓扑相同。泛洪是将数据包从任一节点转发到与该节点连接的每个其它节点,数据包来自的节点除外。网络中接收数据包的所有节点都是网络泛洪拓扑的一部分。



技术实现要素:

本发明涉及泛洪拓扑故障,所述泛洪拓扑故障可能使泛洪拓扑分离,即使所强调的(物理)拓扑未分离。利用本发明中提出的实施例,可以计算关键链路和/或关键节点的备份路径,并在其余泛洪拓扑上使用,以将链路状态(linkstate,ls)快速泛洪到所述网络中的每个节点。此外,也可以计算所述泛洪拓扑上每个非关键链路和非关键节点的备份路径。当所述泛洪拓扑上多个链路和节点发生故障时,通过其余泛洪拓扑以及这些链路和节点的备份路径,可以将ls快速泛洪到所述网络中的每个活跃节点。

第一方面涉及一种用于对泛洪拓扑的消息和所述泛洪拓扑的备份路径编码的方法。所述方法包括监控网络的状态,以及检测至少一个网络故障。所述网络故障为链路故障和节点故障中的一种或两种。计算泛洪拓扑以及所述泛洪拓扑上的多个链路和节点中的每一个链路和节点的备份路径。在链路备份路径(linkbackuppath,lbp)数据结构中对链路的所述备份路径编码。在lbp类型长度值(type-length-value,tlv)中对所述链路的所述lbp数据结构编码。在备份路径不透明链路状态通告(linkstateadvertisement,lsa)中对所述编码后的lbp-tlv编码,所述编码后的lbp-tlv包括所述链路的所述编码后的lbp数据结构。使用所述备份路径不透明lsa泛洪所述泛洪拓扑。

第二方面涉及一种用于对泛洪拓扑的消息和所述泛洪拓扑的备份路径编码的网络设备。所述网络设备包括:网络接口,用于通过网络发送和接收真实数据;存储器,用于存储指令;以及处理器。所述处理器用于执行所述指令,以实现:监控网络的状态;检测至少一个网络故障,其中,所述网络故障为链路故障和节点故障中的一种或两种;计算泛洪拓扑上的多个链路和节点中的每一个链路和节点的备份路径;在链路备份路径(linkbackuppath,lbp)数据结构中对链路的备份路径编码;在lbp类型长度值(type-length-value,tlv)中对所述链路的所述编码后的lbp数据结构编码;在备份路径不透明链路状态通告(linkstateadvertisement,lsa)中对所述编码后的lbp-tlv编码,所述编码后的lbp-tlv包括所述链路的所述编码后的lbp数据结构;以及使用所述备份路径不透明lsa泛洪所述泛洪拓扑。

根据前述方面中的任一方面,在第一种实现形式中,在节点备份路径(nodebackuppath,nbp)数据结构中对所述节点的所述备份路径编码。在nbp-tlv中对所述节点的所述编码后的nbp数据结构编码。在备份路径不透明lsa中对所述编码后的nbp-tlv编码,所述编码后的nbp-tlv包括所述节点的所述编码后的nbp数据结构。使用所述备份路径不透明lsa泛洪所述泛洪拓扑。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第二种实现形式中,在所述修改后的开放式最短路径优先(openshortestpathfirst,ospf)消息中对所述lbp-tlv和所述nbp-tlv两者编码。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第三种实现形式中,所述链路是关键链路。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第四种实现形式中,所述链路是非关键链路。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第六种实现形式中,所述节点是关键节点。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第七种实现形式中,所述节点是非关键节点。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第八种实现形式中,对泛洪拓扑链路(floodingtopologylink,ftlk)-tlv编码,包括所述泛洪拓扑上所有链路的多个链路编码,其中,所述多个链路编码中的每个链路编码对本地节点与多个远端节点之间的链路编码。在泛洪拓扑不透明lsa中对所述ftlk-tlv编码。使用所述泛洪拓扑不透明lsa泛洪所述泛洪拓扑。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第九种实现形式中,泛洪所述泛洪拓扑由区域的领导者向所述区域中的所有其它节点发起。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第十种实现形式中,所述备份路径不透明lsa和泛洪拓扑不透明lsa支持ospf版本2(ospfversion2,ospfv2)。

根据前述方面中的任一方面或前述方面中的任一方面的前述实现形式中的任一实现形式,在第十一种实现形式中,所述备份路径不透明lsa和泛洪拓扑不透明lsa支持ospfv3。

第三方面涉及一种由节点执行用于计算泛洪拓扑和所述泛洪拓扑的备份路径的方法。所述方法包括监控网络的状态,以检测至少一个网络故障。所述网络故障为链路故障和节点故障中的一种或两种。计算泛洪拓扑上的多个链路和节点中的每一个链路和节点的备份路径。将所述备份路径上的所述链路临时添加到所述泛洪拓扑,直到领导者计算出新的泛洪拓扑并且计算所述备份路径的所述节点接收到所述新的泛洪拓扑为止。

第四方面涉及一种用于计算泛洪拓扑和所述泛洪拓扑的备份路径的网络节点。所述网络节点包括:网络接口,用于通过网络发送和接收真实数据;存储器,用于存储指令;以及处理器。所述处理器用于执行所述指令,以实现:监控网络的状态;检测至少一个网络故障,其中,所述网络故障为链路故障和节点故障中的一种或两种;计算泛洪拓扑上的多个链路和节点中的每一个链路和节点的备份路径;以及将所述备份路径上的所述链路临时添加到所述泛洪拓扑,直到领导者计算出新的泛洪拓扑并且计算所述备份路径的所述节点接收到所述新的泛洪拓扑为止。

根据第三方面或第四方面,在第一实现形式中,如果所述链路不在所述泛洪拓扑上,并且如果所述泛洪拓扑上不存在从所述节点到所述链路的远端节点的路径,则所述节点计算所述备份路径,并且将所述备份路径上与所述节点连接的所述链路中的每一个链路临时添加到所述泛洪拓扑。

为了清楚起见,上述实现方式中的任一实现方式可以与上述其它实现方式中的任意一个或多个实现方式结合,以在本发明的范围内创建一个新的实施例。

根据以下详细说明结合附图和权利要求将能更清楚地理解这些和其它特征。

附图说明

图1是本发明的实施例提供的泛洪网络拓扑的示意图。

图2是本发明的实施例提供的分离的泛洪网络拓扑的示意图。

图3是本发明的实施例提供的用于对泛洪拓扑的消息和泛洪拓扑的备份路径编码的过程的流程图。

图4a是本发明的实施例提供的节点备份路径编码的示意图。

图4b是本发明的另一实施例提供的节点备份路径编码的示意图。

图5是本发明的实施例提供的节点备份路径类型长度值(type-length-value,tlv)编码的示意图。

图6a是本发明的实施例提供的链路备份路径编码的示意图。

图6b是本发明的另一实施例提供的链路备份路径编码的示意图。

图7是本发明的实施例提供的链路备份路径(linkbackuppath,lbp)tlv编码的示意图。

图8a是本发明的实施例提供的针对ospfv2的备份路径不透明链路状态通告(linkstateadvertisement,lsa)编码的示意图。

图8b是本发明的另一实施例提供的针对ospfv3的备份路径不透明lsa编码的示意图。

图9是本发明的实施例提供的链路编码的示意图。

图10是本发明的实施例提供的ftlktlv编码的示意图。

图11a是本发明的实施例提供的针对ospfv2的泛洪拓扑不透明lsa编码的示意图。

图11b是本发明的实施例提供的针对ospfv3的泛洪拓扑不透明lsa编码的示意图。

图12a是本发明的实施例提供的具有备份路径的本地节点编码的示意图。

图12b是本发明的实施例提供的具有备份路径的远端节点编码的示意图。

图13是本发明的实施例提供的来自具有备份路径的节点的链路编码的示意图。

图14是本发明的实施例提供的来自具有节点备份路径的节点的链路编码的示意图。

图15是本发明的实施例提供的来自具有链路和节点备份路径的节点的链路编码的示意图。

图16是本发明的实施例提供的具有备份路径的链路(linkswithbackuppath,lnsbp)tlv编码的示意图。

图17a是本发明的实施例提供的针对ospfv2的具有备份路径的泛洪拓扑(floodingtopologywithbackuppath,ftbp)不透明lsa编码的示意图。

图17b是本发明的实施例提供的针对ospfv3的ftbp不透明lsa编码的示意图。

图18是本发明的实施例提供的以分布式方式计算备份路径的过程的流程图。

图19是本发明的实施例提供的以分布式方式计算备份路径的过程的流程图。

图20是本发明的实施例提供的装置的示意性架构图。

为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。

具体实施方式

首先应理解,尽管下文提供一个或多个实施例的说明性实现方式,但所公开的系统和/或方法可使用任何数目的技术来实现,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。

如在书面公开和权利要求书中所使用的,术语“包含”和“包括”以开放式的方式使用,因此应解释为“包括,但不限于”。

除非另有说明,否则本文通篇使用的“或”不要求相互排斥,单数形式“一”、“一个”和“所述”也意在包括复数形式,除非上下文明确表示另有说明。

本文所引用的模块可以包括软件组件,诸如但不限于数据访问对象、数据结构、功能、服务组件、用户接口组件、应用程序编程接口(applicationprogramminginterface,api)组件;硬件组件,诸如电路、处理器和存储器;和/或其组合。存储器可以是易失性存储器,也可以是存储数据和计算机可执行指令的非易失性存储器。计算机可执行指令可以是任何形式,包括但不限于机器代码、汇编代码和以任何编程语言编写的高级编程代码。所述模块可用于使用数据执行一个或多个指令以执行一个或多个任务。

除非另有说明,否则本文所述的各种方法或过程可以在任何类型的系统或设备上执行,所述系统或设备具有能够执行实现所述过程的指令的处理器。指令可以存储在系统的数据存储组件或存储单元中。指令可以用任何类型的编程语言编写,并且可以打包在软件应用程序中或者集成为系统功能。

本发明涉及网络通信,更具体地,涉及当泛洪拓扑由于链路故障和/或节点故障而分离时,向每个节点快速泛洪ls。节点是系统或设备,诸如但不限于网络路由器。链路是两个节点之间的网络接线或接口。当泛洪拓扑中的一个关键链路发生故障时,没有关键链路的泛洪拓扑(即其余泛洪拓扑)分离为两个部分。泛洪拓扑上的关键链路或接口是一种链路,即泛洪拓扑上某些节点之间的唯一链路或接口。当该链路或接口瘫痪时,泛洪拓扑会分离。根据所公开的实施例,为关键链路创建备份路径,以将上述两个部分连接成一个部分。通过备份路径和其余泛洪拓扑,ls可以快速泛洪到网络中的每个节点。备份路径是当关键链路或关键节点发生故障时,提供连接以连接分离的泛洪拓扑的两个部分的路径或一系列链路。其余泛洪拓扑是通过将故障链路和故障节点从泛洪拓扑中移除而从泛洪拓扑得到的拓扑。备份路径和泛洪拓扑的结合使得对关键链路的故障具有一定的容忍度。

泛洪拓扑上的关键节点是一种节点,即泛洪拓扑上连接一些节点的唯一节点。与当关键链路瘫痪时只分离成两个部分相对,当泛洪拓扑上的关键节点瘫痪时,其余泛洪拓扑分离成两个或更多个部分。在这种情况下,为关键节点创建一个或多个备份路径,以将其余泛洪拓扑的分离部分连接成一个部分。通过备份路径和其余泛洪拓扑,ls可以快速泛洪到网络中的每个活跃节点。备份路径和泛洪拓扑的结合使得对关键节点的故障具有一定的容忍度。

除了关键链路和关键节点的备份路径外,可以计算泛洪拓扑上每个非关键链路和非关键节点的备份路径。例如,当所述泛洪拓扑上多个链路和节点发生故障时,通过其余泛洪拓扑以及这些链路和节点的备份路径,可以将ls快速泛洪到所述网络中的每个活跃节点。备份路径和泛洪拓扑的结合使得对这些链路和节点的故障具有一定的容忍度。如果存在使备份路径断裂的其它故障,则ls可以通过传统的泛洪程序快速泛洪到每个活跃节点。

因此,使用本发明中提出的实施例,可以有效地计算和构建新的泛洪拓扑,以响应于由于关键节点、关键链路或多个非关键链路和/或非关键链路节点发生故障而分离的泛洪拓扑,实现新的泛洪拓扑的泛洪。所公开的实施例大大减少了ls泛洪量,并且对多个故障具有一定的容忍度。

为了更完整地理解本发明,现在参考图1,图1是本发明的实施例提供的泛洪网络拓扑100的示意图。泛洪网络拓扑100是物理网络拓扑的子网。泛洪网络拓扑100通过将路由信息从任一节点(节点n1-n16)泛洪到与该节点连接的每个其它节点(数据包来自的节点除外)使得该路由信息(诸如链路状态通告(linkstateadvertisement,lsa))的更新能够快速分发。lsa包含描述开放式最短路径优先(openshortestpathfirst,ospf)网络的各个部分的路由和拓扑信息。运行ospf的路由器使用lsa交换拓扑信息。ospf是因特网协议(internetprotocol,ip)网络的路由协议。ospf版本2(ospfversion2,ospfv2)是针对ipv4而定义的,而ospfv3是针对ipv6而定义的。在各种实施例中,扩展ospf以支持本文所述的链路和节点备份路径tlv。

图2是本发明的实施例提供的分离的泛洪网络拓扑200的示意图。分离的泛洪网络拓扑200是由泛洪网络拓扑100中节点n8发生故障而导致。节点n8是关键节点,因为它是泛洪网络拓扑100中将节点n1-n7连接到节点n9-n16的唯一节点。因此,当节点n8瘫痪时,其余泛洪拓扑分离成两个或更多个部分。例如,在图示的示例中,分离的泛洪网络拓扑200包括两个部分:包括节点n1-n7的第一部分和包括节点n9-n16的第二部分。在这种情况下,为关键节点创建一个或多个备份路径,以将其余泛洪拓扑的分离部分连接成一个部分。例如,可以创建备份路径202以连接节点n7和n14。可以创建另一备份路径204以连接节点n5和n9。通过备份路径(202和204)和其余泛洪拓扑,ls可以快速泛洪到其余泛洪拓扑中的每个活跃节点。

应注意,所公开的实施例不限于图1和图2所示的所构造的泛洪拓扑。可以为给定网络拓扑构造许多不同的泛洪拓扑。连接给定网络拓扑中所有节点的链是一种泛洪拓扑。连接所有节点的圆是另一种泛洪拓扑。连接所有节点的树是一种泛洪拓扑。此外,树加上树的某些叶节点与树的分支节点之间的连接是一种泛洪拓扑。另外,应注意,尽管备份路径202和备份路径204分别通过仅将两个节点连接在一起而创建,但是备份路径可以由连接在一起或链接在一起的若干节点组成。

所公开的实施例可以以集中式模式和/或分布式模式执行。在分布式模式中,泛洪拓扑的每个节点会计算备份路径。在集中式模式中,领导者节点或领导者计算备份路径,并将备份路径泛洪到所有其它节点。领导者可以是优先级最高的节点和/或是计算资源比其余泛洪拓扑上的其它节点更高的节点。区域的领导者在计算泛洪拓扑时,可以计算泛洪拓扑上的关键链路的一个备份路径或多个备份路径。当关键链路发生故障时,可以通过一个备份链路和泛洪拓扑上的其它链路将链路状态分发到区域中的每个节点。此外,它可以计算节点的一个备份路径或多个备份路径。当节点发生故障时,可以通过备份路径和泛洪拓扑上的链路将链路状态分发到区域中的其它节点。

图3是本发明的实施例提供的用于对泛洪拓扑的消息和泛洪拓扑的备份路径编码的过程300的流程图。在一个实施例中,过程300由计算泛洪拓扑和泛洪拓扑上每个链路/节点的备份路径的区域的领导者执行。过程300从步骤302开始,在该步骤中,领导者执行监控功能,以确定网络/拓扑的区域中的链路和/或节点的状态或健康状况,并检测网络故障。网络故障是指网络中的一个或多个链路、节点或两者发生故障。在一个实施例中,领导者在接收到新的链路状态(诸如节点发起的新的ospf路由器lsa)并且检测到链路并非处于新的链路状态,而是处于节点发起的旧/当前链路状态之后,确定网络中的链路发生故障。领导者在接收到多个新的链路状态(诸如该节点周围的节点发起的多个新的ospf路由器lsa)并且检测到该节点的所有链路发生故障之后,确定网络中的节点发生故障。在步骤304中,过程300确定网络/拓扑的区域中是否发生链路或节点故障。如果不存在链路或节点故障,则过程300返回步骤302并继续监控网络/拓扑的区域中的链路和/或节点的状态。

如果过程300确定网络/拓扑的区域中发生链路和/或节点故障,则过程300在步骤308处计算泛洪拓扑上的多个链路/节点中的每一个链路/节点的备份路径。在一个实施例中,如果必要,流程300还可以计算泛洪拓扑。在一个实施例中,对于泛洪拓扑上的节点a与节点b之间的链路,如果节点a的id小于节点b的id,则链路的备份路径是从作为源的节点a到作为目的地的节点b的唯一最小跳数路径。如果从源到目的地存在多个路径,则通过选择从目的地到源的方向上具有较小或最小的远端节点id的链路的路径,从这些多个路径中选择唯一的路径。对于泛洪拓扑上的节点,计算经由泛洪拓扑上的链路连接到该节点的每对节点之间的备份路径。备用路径是从该对节点的具有较小节点id的一个端节点到该对节点的具有较大节点id的另一节点的唯一最小跳数路径。在步骤310处,过程300在ospf消息中对一个或多个备份路径编码。此处描述了用于对ospf消息中的数据编码的结构。备份路径可以编码为单独编码或集成编码。在单独编码中,在单独的新消息中对备份路径编码,其中需要泛洪拓扑的消息。在集成编码中,备份路径集成到泛洪拓扑链路编码中,其中一条消息包含泛洪拓扑和备份路径。在步骤312,过程300使用包含一个或多个备份路径的ospf消息泛洪该泛洪拓扑,过程300随后终止。

关于备份路径编码,图4a至图8b描述了备份路径的消息编码数据结构,在集中式模式中基于泛洪拓扑链路编码在单独的新消息中对所述备份路径编码,在集中式模式中,领导者计算备份路径并将它们泛洪到所有其它节点。具体地,图4a、图4b和图5示出了用于对节点的备份路径编码的数据结构。图6a、图6b和图7示出了用于对链路的备份路径编码的数据结构。图8a和图8b示出了用于发送编码后的节点和链路备份路径的修改后的ospf数据结构。

图4a是本发明提供的示例性节点备份路径数据结构400a的示意图。节点备份路径数据结构400a是用于对节点的一个或多个备份路径编码的数据结构。节点备份路径数据结构400a包括k标志(重要/关键节点标志)字段402、节点备份路径数量(numberofnodebackuppath,nnbp)字段404、路径长度(plen)字段406、节点一(pn1)的备份路径编码字段408、节点n(pnn)的备份路径编码字段410。

在一个实施例中,k标志字段402为1位,并且用于指示节点是否是重要节点或关键节点。泛洪拓扑上的重要节点或关键节点是一种节点,即泛洪拓扑上连接一些节点的唯一节点。在一个实施例中,如果k标志字段402设置为一(k=1),则节点是关键节点,并且如果k标志字段402设置为零(k=0),则节点是正常/非关键节点。

在所描述的实施例中,nnbp字段404为3位,并且用于指示节点备份路径的数量。例如,可以为节点创建一个或多个备份路径。例如,通常为故障链路创建一个备份路径,但可以为故障节点创建多个备份路径。备份路径编码中的每一个备份路径编码包括plen字段406以及pn1编码字段408至pnn编码字段410。plen字段406为4位,并且用于指示备份路径的长度(即备份路径中的节点数(n))。沿着备份路径的所述一系列节点(即,路径节点一(pn1)至路径节点n(pnn))的编码通过pnn编码字段410插入到pn1编码字段408中。在一个实施例中,备份路径中的每个节点(pn1,……,pnn)的编码使用本地节点的编码,所述本地节点的编码包括编码的节点索引大小指示(encodednodeindexsizeindication,ensi)和紧凑节点索引(compactnodeindex,cni)。ensi指示节点索引的位数大小(例如,9位)。cni表示节点索引。节点索引标识泛洪拓扑中的节点。

如本文所使用,附图中所示数据结构的“////”部分表示节点或链路的每个附加备份路径的附加编码。例如,节点备份路径数据结构400a的数据编码的“////”部分表示节点的每个附加备份路径的附加编码,其中,每个附加备份路径包括其对plen字段406以及pn1编码字段408至pnn编码字段410的编码。因此,由括号412包围的编码提供节点的一个备份路径,而由括号414包围的编码提供节点的所有备份路径。

图4b是本发明的另一实施例提供的节点备份路径数据结构400b的示意图。在一个实施例中,节点备份路径数据结构400b可用于对沿着备份路径的一系列节点编码,所述一系列节点对备份路径中的所有节点使用一个ensi。节点备份路径数据结构400b包括k标志字段402、nnbp字段404和plen字段406,如图4a的节点备份路径数据结构400a中所描述。然而,与节点备份路径数据结构400a相比,其中每个节点的ensi在pn1编码字段408至pnn编码字段410的个别节点编码中单独指定,可以在节点备份路径数据结构400b的ensi字段416中仅指定一次ensi,因为备份路径中的所有节点都使用相同的ensi。在一个实施例中,ensi字段416为3位。因此,只需要在pn1索引字段418至pnn索引字段420中分别指定沿备份路径的每个节点(pn1,……,pnn)的cni。因此,由括号422包围的编码提供节点的一个备份路径,而由括号424包围的编码提供节点的所有备份路径。

图5是本发明的实施例提供的节点备份路径(nodebackuppath,nbp)类型长度值(type-length-value,tlv)数据结构500的示意图。nbptlv数据结构500用于对一个或多个节点及其各自的一个或多个备份路径编码。nbptlv数据结构500包括nbp-tlv-类型字段502,该nbp-tlv-类型字段502包含用于标识正在处理的数据的类型(即,nbp-tlv数据结构)的类型值。nbp-tlv数据结构500的类型值待确定。nbptlv数据结构500还包括tlv-长度字段504,该tlv-长度字段504指定nbptlv数据结构500的长度或大小,nbp-tlv-类型字段502和tlv-长度字段504除外。长度或大小将取决于nbptlv数据结构500中包含的节点和备份路径的数量。

每个节点都用其索引编码表示,所述索引编码之后是节点备份路径编码。例如,节点1索引编码字段506包含第一节点的索引编码。节点1备份路径编码字段510包含第一节点的备份路径编码。例如,可以使用图4a的节点备份路径数据结构400a或图4b的节点备份路径数据结构400b指定第一节点的备份路径编码。类似地,节点2索引编码字段512包含第二节点的索引编码。节点2备份路径编码字段516包含第二节点的备份路径编码。nbptlv数据结构500可以包括附加节点及其相应的一个或多个备份路径。

图6a是本发明的实施例提供的链路备份路径数据结构600a的示意图。链路备份路径数据结构600a是用于对泛洪拓扑上的链路的一个或多个备份路径编码的数据结构。链路备份路径数据结构600a包括c标志(重要/关键链路标志)字段602、链路备份路径数量(numberoflinkbackuppath,nlb)字段604、plen字段606、pn1编码字段608和pnm编码字段610。

在一个实施例中,c标志字段602为1位,并且用于指示链路是否是重要链路或关键链路。泛洪拓扑上的关键链路或接口是一种链路,即泛洪拓扑上某些节点之间的唯一链路或接口。当关键链路瘫痪时,泛洪拓扑会分离。在一个实施例中,如果c标志字段602设置为一(c=1),则链路是关键链路,如果c标志字段602设置为零(c=0),则链路是非关键链路。

在一个实施例中,nlb字段604为2位,并且用于指示链路备份路径的数量。plen字段606指示备份路径的长度(即备份路径中的节点数)。在一个实施例中,plen字段606为3位。pn1编码字段608和pnm编码字段610具有可变位。然后,在pn1编码字段608至pnm编码字段610中对沿着备份路径的所述一系列节点编码。因此,对于该备份路径,plen字段606将指示备份路径长度m,以指示备份路径中存在m个节点。在一个实施例中,每个节点(pn1,……,pnm)的编码使用本地节点的编码,所述本地节点的编码包括ensi和cni。因此,由括号612包围的编码提供链路的一个备份路径,而由括号614包围的编码提供链路的所有备份路径。

图6b是本发明的另一实施例提供的链路备份路径数据结构600b的示意图。链路备份路径数据结构600b是当沿备份路径的所有节点使用一个ensi时对泛洪拓扑上的链路的一个或多个备份路径编码的数据结构。节点备份路径数据结构600b包括c标志字段602、nlb字段604和plen字段606,如图6a的链路备份路径数据结构600a中所描述。与链路备份路径数据结构600a相比,其中每个节点的ensi在pn1编码字段608至pnm编码字段610的个别节点编码中单独指定,可以在链路备份路径数据结构600b的ensi字段618中仅指定一次ensi,因为备份路径中的所有节点都使用相同的ensi。在一个实施例中,ensi字段618为3位。因此,只需要在pn1索引字段620至pnm索引字段622中分别指定沿备份路径的每个节点(pn1,……,pnm)的cni。因此,由括号624包围的编码提供链路的一个备份路径,而由括号626包围的编码提供链路的所有备份路径。

图7是本发明的实施例提供的lbptlv数据结构700的示意图。lbptlv数据结构700用于对一个或多个链路及其各自的一个或多个备份路径编码。lbptlv数据结构700包括lbp-tlv-类型字段702,该lbp-tlv-类型字段702包含用于标识正在处理的数据的类型(即,lbp-tlv数据结构)的类型值。lbp-tlv数据结构700的类型值待确定。lbptlv数据结构700还包括tlv-长度字段704,该tlv-长度字段704指定lbptlv数据结构700的长度或大小,lbp-tlv-类型字段702和tlv-长度字段704除外。长度或大小将取决于lbptlv数据结构700中包含的节点和备份路径的数量。

每个链路都用其索引编码表示,所述索引编码之后是链路备份路径编码。例如,链路1索引编码字段706包含第一链路的索引编码。链路1备份路径编码字段710包含链路1的备份路径编码。在一个实施例中,可以使用图6a的链路备份路径数据结构600a或图6b的链路备份路径数据结构600b来指定链路1的备份路径编码。类似地,链路2索引编码字段712包含第二链路的索引编码。链路2备份路径编码字段716包含链路2的备份路径编码。lbptlv数据结构700可以包括附加链路及其相应的一个或多个备份路径。

图8a是本发明的实施例提供的开放式最短路径优先版本2(openshortestpathfirstversion2,ospfv2)的备份路径不透明lsa数据结构800a的示意图。在一个实施例中,备份路径不透明lsa数据结构800a用于将备份路径从区域的领导者泛洪到区域中的所有其它节点。标准的链路状态数据库泛洪机制用于分发备份路径不透明lsa数据结构800a。

备份路径不透明lsa数据结构800a以标准lsa报头开始,该标准lsa报头包括ls老化时间字段802、选项字段804、ls类型字段806、备份路径(backuppath,bp)类型字段808、实例标识符(identifier,id)字段810,通告路由器字段812、ls序列号字段814、ls校验和字段816和长度字段818。根据一个实施例,将新的链路和节点备份路径tlv字段820附加到标准lsa报头。

ls老化时间字段802是lsa的老化时间,以秒为单位。在发起lsa时,ls老化时间字段802设置为o。在泛洪程序的每一跳上增加ls老化时间字段802。当路由器接收到lsa的两个实例,并且两个实例都具有相同的ls序列号和ls校验和时,可以检查ls老化时间字段802。

选项字段804指示哪些可选能力与lsa相关联。ospf的可选能力包括但不限于外部路由能力和服务类型(typeofservice,tos)路由能力。

ls类型字段806规定了lsa(例如,路由器-lsa或网络-lsa)的格式和功能。例如,备份路径不透明lsa数据结构800a的拓扑分布范围(即,泛洪范围)由其在ls类型字段806中的链路状态类型标识。在一个实施例中,ls类型字段806设置为链路状态类型10(如图8a所示),该链路状态类型10表示区域本地范围,这意味着类型10不透明lsa不泛洪到其相关联区域的边界之外。ls类型字段806可以设置为其它不透明的lsa类型,包括表示链路本地范围的类型链路状态类型9和表示贯穿整个自治系统(autonomoussystem,as)泛洪lsa的链路状态类型11。

bp类型字段808为ospfv2指定了新的不透明lsa类型(待确定(tobedetermined,tbd))。这种新类型将指示不透明lsa包含如本文所述节点备份路径tlv和链路备份路径tlv。

实例id字段810使得路由器能够发起多个不透明lsa实例。不同的实例id可以用于标识不同的不透明lsa。

通告路由器字段812指定lsa的发起者的ospf路由器id。例如,网络lsa由网络的指定路由器发起,汇总lsa由区域边界路由器发起,as外部lsa由as边界路由器发起。

ls序列号字段814是有符号的32位整数,并且用于检测旧的和重复的lsa。序列号的空间是线性排列的。序列号越大(与有符号的32位整数比较),lsa越新。路由器在首次发起任何lsa时,使用最小的序列号。此后,每当路由器发起一个新的lsa实例时,lsa的序列号就会递增。

ls校验和字段816包含lsa的完整内容的校验和,ls老化时间字段802除外。排除ls老化时间字段802,使得lsa老化时间可以在不更新校验和的情况下递增。校验和用于检测lsa的数据损坏情况。

长度字段818包含lsa的长度,以字节为单位;减去ls老化时间字段的大小(2字节),得出要校验和的数据量。有关适用于泛洪范围的标准lsa报头字段和规则的附加信息,可以在请求注解(requestforcomment,rfc)2370、rfc2328、rfc2740、rfc3630和draft-cc-ospf-flooding-reduction-04中找到,这些内容以全文引入的方式并入本文。

如上所述,备份路径不透明lsa数据结构800a包括附加到标准lsa报头的新链路和节点备份路径tlv字段820。链路和节点备份路径tlv字段820用于存储节点备份路径tlv和链路备份路径tlv。节点备份路径tlv的编码的示例是图5的nbptlv数据结构500。链路备份路径tlv的编码的示例是图7的lbptlv数据结构700。

图8b是本发明的另一实施例提供的针对ospfv3的备份路径不透明lsa数据结构800b的示意图。备份路径不透明lsa数据结构800b包括针对ospfv3定义的标准lsa报头。针对ospfv3定义的标准lsa报头包括与在图8a中所述的针对ospfv2定义的标准lsa报头中包含的相同的ls老化时间字段802、通告路由器字段812、ls序列号字段814、ls校验和字段816,以及长度字段818。对于ospfv3,不同步位(u位)字段822设置为1,而范围字段823设置为o1,以进行区域范围界定。bp-lsa字段824指定了定义该lsa类型的新的lsa类型(tbd)。链路状态id字段826标识了lsa正在描述的那部分路由域。例如,链路状态id字段826可包含发起路由器的路由器id、代表网络发起网络lsa的指定路由器的ip接口地址、目的地网络的ip地址、as边界路由器的路由器id,或者目的地网络的ip地址。

除了针对ospfv3定义的标准lsa报头之外,备份路径不透明lsa数据结构800b还包括用于存储节点备份路径tlv和链路备份路径tlv的新链路和节点备份路径tlv字段820。区域的领导者使用备份路径不透明lsa数据结构800b将备份路径泛洪到区域中的所有其它节点。

图9是本发明的实施例提供的备份路径的链路编码数据结构900的示意图。链路编码数据结构900指定本地节点(例如,ln1)以及本地节点与多个远端节点之间的链路。例如,在所描述的实施例中,使用链路编码数据结构900对本地节点ln1与三个远端节点rn10、rn20和r30之间的三个链路编码。链路编码数据结构900包括本地节点ensi字段902、本地节点cni字段904、远端节点数(numberofnode,nn)字段906、远端节点ensi字段908、第一远端节点cni字段910、第二远端节点cni字段912和第三远端节点cni字段914。

在一个实施例中,本地节点ensi字段902为3位,本地节点cni字段904为9位,远端节点nn字段906为3位,远端节点ensi字段908为3位,第一远端节点cni字段910为9位,第二远端节点cni字段912为9位,并且第三远端节点cni字段914为9位。因此,在该实施例中,链路编码数据结构900包括45位(即5.625字节)。

本地节点ensi字段902用于对本地节点ln1的ensi编码。在该示例中,本地节点ensi指示本地节点ln1索引的大小为ensi的值(0)加9位,即9位。本地节点cni字段904指定本地节点ln1的节点索引值。nn字段906指定链接到本地节点ln1的远端节点的数量。在该示例中,nn字段906具有二进制值011,其等同于十进制值3,以指示存在3个远端节点(rn10、rn20和rn30)。远端节点ensi字段908指示远端节点索引的大小。在该示例中,远端节点ensi指示远端节点rn10、rn20、rn30索引的大小为ensi的值(0)加9位,即9位。在所描述的实施例中,第一远端节点cni字段910指定远端节点10(rn10)的节点索引(cni),第二远端节点cni字段912指定远端节点20(rn20)的节点索引,并且第三远端节点cni字段914指定远端节点30(rn30)的节点索引。因此,链路编码数据结构900表示本地节点(ln1)与3个远端节点(rn10、rn20和rn30)之间的三个链路。

图10是本发明的实施例提供的ftlktlv数据结构1000的示意图。ftlktlv数据结构1000可用于表示由区域的领导者计算出的泛洪拓扑上的所有链路。ftlktlv数据结构1000包括ftlk-tlv-类型字段1002,该ftlk-tlv-类型字段1002指定将数据结构标识为ftlktlv的类型代码或值(tbd)。tlv-长度字段1004指定ftlktlv数据结构1000的长度或大小,ftlk-tlv-类型字段1002和tlv-长度字段1004除外。ftlktlv数据结构1000包括多个链路编码字段,诸如但不限于链路编码字段1006、链路编码字段1008和链路编码字段1010。每个链路编码字段包含从本地节点到一个或多个远端节点的链路编码。例如,链路编码字段1006可以存储从节点1到其远端节点的链路编码,链路编码字段1008可以存储从节点2到其远端节点的链路编码,并且链路编码字段1010可以存储从节点n到其远端节点的链路编码。图9中描述的链路编码数据结构900是可用于对从本地节点到其远端节点的链路编码进行编码的示例性数据结构。

图11a是本发明的实施例提供的针对ospfv2的泛洪拓扑不透明lsa数据结构1100a的示意图。泛洪拓扑不透明lsa数据结构1100a包括一个或多个泛洪拓扑链路tlv,如图9中所述。对于ospfv2,区域的领导者可以创建包含泛洪拓扑不透明lsa数据结构1100a的消息,以将泛洪拓扑泛洪到区域中的所有节点。

泛洪拓扑不透明lsa数据结构1100a包括ls老化时间字段1102、选项字段1104、ls类型字段1106、泛洪拓扑(floodingtopology,ft)类型字段1108、实例id字段1110、通告路由器字段1112、ls序列号字段1114、ls校验和字段1116、长度字段1118以及泛洪拓扑链路tlv字段1120。ls老化时间字段1102、选项字段1104、ls类型字段1106、实例id字段1110、通告路由器字段1112、ls序列号字段1114、ls校验和字段1116以及长度字段1118是ospfv2的标准lsa报头的一部分,如图8a所示。ft类型字段1108指定新的不透明lsa类型(tbd),该新的不透明lsa类型指示数据结构是不透明lsa,该不透明lsa包含存储在泛洪拓扑链路tlv字段1120中的泛洪拓扑链路tlv。泛洪拓扑链路tlv的编码的示例是图10的ftlktlv数据结构1000。

图11b是本发明的实施例提供的针对ospfv3的泛洪拓扑不透明lsa编码1100b的示意图。泛洪拓扑不透明lsa编码1100b包括针对ospfv3定义的标准lsa报头,该标准lsa报头包括如在图11a所述的针对ospfv2定义的标准lsa报头中包含的ls老化时间字段1102、通告路由器字段1112、ls序列号字段1114、ls校验和字段1116,以及长度字段1118。对于ospfv3,不同步位(u位)字段1122设置为1,而范围字段1123设置为01,以进行区域范围界定。ft-lsa字段1124指定了定义该lsa类型的新的lsa类型(tbd)。链路状态id字段1126标识了lsa正在描述的那部分路由域,如图8b中所述。除了针对ospfv3定义的标准lsa报头之外,泛洪拓扑不透明lsa编码1100b还包括用于存储泛洪拓扑链路tlv的新泛洪拓扑链路tlv字段1120(例如,图10的ftlktlv数据结构1000)。区域的领导者使用泛洪拓扑不透明lsa编码1100b,以将泛洪拓扑泛洪到区域中的所有节点。

上述实施例描述了用于编码备份路径消息(图4a至图8b)和用于编码泛洪拓扑链路消息(图9至图1b)的单独消息编码。在某些实施例中,可以将备份路径集成到泛洪拓扑链路编码中,以生成包含泛洪拓扑和备份路径的单个集成消息。

作为示例,图12a是本发明的实施例提供的具有备份路径的本地节点数据结构1200a的示意图。具有备份路径的本地节点数据结构1200a可用于对本地节点及其备份路径编码。例如,可以通过在ensi字段1202中对其ensi编码并且在ln1索引值字段1204中对其节点索引值编码来对本地节点ln1编码。在一个实施例中,ensi字段1202为3位,并且ln1索引值字段1204的位数由节点的ensi指示。本地节点ln1的备份路径编码在本地节点ln1备份路径编码字段1206中编码。作为示例,本地节点ln1的备份路径编码可以使用图4a所示的节点备份路径数据结构400a或图4b所示的节点备份路径数据结构400b编码。

图12b是本发明的实施例提供的具有备份路径的远端节点数据结构1200b的示意图。例如,具有备份路径的远端节点rn10数据结构1200b可用于对远端节点rn10及其备份路径编码。具有备份路径的远端节点数据结构1200b在rn10索引值字段1208中对rn10的节点索引值编码(位数由ensi指示)。远端节点rn10的备份路径编码在远端节点rn10备份路径编码字段1210中编码(例如,使用图4a或图4b中的数据结构)。

图13是本发明的实施例提供的来自具有备份路径的节点的链路数据结构1300的示意图。来自具有备份路径的节点的链路数据结构1300指定了本地节点与多个远端节点之间的链路、每个节点的备份路径以及每个链路的备份路径可以按以下格式编码。来自具有备份路径的节点的链路数据结构1300包括:具有备份路径的本地节点编码字段1302、nn字段1304、ensi字段1306、具有备份路径的远端节点rn1编码字段1308、链路1备份路径编码字段1310、具有备份路径的远端节点rn2编码字段1312以及链路2备份路径编码字段1314。

本地节点及其备份路径在具有备份路径的本地节点编码字段1302中编码(例如,使用图12a中的具有备份路径的本地节点数据结构1200a)。远端节点数在nn字段1304中编码。远端节点数指示链路数。远端节点索引大小指示在ensi字段1306中指定。具有备份路径的第一远端节点rn1编码在具有备份路径的远端节点rn1编码字段1308中编码(例如,使用图12b中的具有备份路径的远端节点数据结构1200b)。本地节点与远端节点rn1之间的链路以及链路的备份路径在链路1备份路径编码字段1310中编码(例如,使用图6a中的链路备份路径数据结构600a或图6b中的链路备份路径数据结构600b)。类似地,具有备份路径的第二远端节点rn2编码在具有备份路径的远端节点rn2编码字段1312中编码。本地节点与远端节点rn2之间的链路以及链路的备份路径在链路2备份路径编码字段1314中编码。来自具有备份路径的节点的链路数据结构1300可包括每个附加的远端节点/链路的附加字段。

作为示例,图14是本发明的实施例提供的来自具有节点备份路径的节点的链路数据结构1400的示意图。来自具有节点备份路径的节点的链路数据结构1400表示本地节点ln1与三个远端节点rn10、rn20和rn30之间的三个链路;节点ln1的备份路径;节点rn10的备份路径;节点rn20的备份路径;节点rn30的备份路径。具体地,括号1424表示具有备份路径的本地节点ln1编码,括号1426表示具有备份路径的远端节点rn10编码,括号1428表示具有备份路径的远端节点rn20编码,括号1430表示具有备份路径的远端节点rn30编码。

具有备份路径的本地节点ln1在ensi字段1402、cni字段1404、关键节点(k)标志字段1406以及ln1的备份路径字段1407中编码。在一个实施例中,ensi字段1402为3位,这指示cni字段1404为9位,并且关键节点(k)标志字段1406为1位。cni字段1404包含本地节点ln1的cni。关键节点(k)标志字段1406用于指示本地节点ln1是否为关键节点。ln1的备份路径字段1407包含ln1的备份路径(例如,使用图4a或图4b中的数据结构)。

nn字段1408用于指定来自具有节点备份路径的节点的链路数据结构1400中的远端节点数。在一个实施例中,nn字段1408为3位。例如,nn字段1408中的值011指示来自具有节点备份路径的节点的链路数据结构1400包含3个远端节点。在一个实施例中,ensi字段1410为3位,并且用于指定远端节点的索引的大小。在该示例中,ensi字段1410中的值0指定远端节点索引的大小为9位,即o加常量,诸如该示例中的9。

在一个实施例中,cni字段1412为9位,并且包含rn10的节点索引值。关键节点(k)标志字段1414为1位,并且指示rn10是否为关键节点。rn10的备份路径字段1415包含rn10的备份路径(例如,使用图4a或图4b中的数据结构)。类似地,具有备份路径的rn20编码在cni字段1416、关键节点(k)标志字段1418以及rn20的备份路径字段1419中编码。具有备份路径的rn30编码在cni字段1420、关键节点(k)标志字段1422以及rn30的备份路径字段1423中编码。

在另一实施例中,也可以增加链路备份路径。例如,图15是本发明的实施例提供的来自具有链路和节点备份路径的节点的链路数据结构1500的示意图。在所描述的实施例中,来自具有链路和节点备份路径的节点的链路数据结构1500表示本地节点ln1与三个远端节点rn10、rn20和rn30之间的三个链路;本地节点ln1的备份路径;节点rn10的备份路径;节点rn20的备份路径;节点rn30的备份路径;本地节点ln1与节点rn10之间的链路的备份路径;本地节点ln1与节点rn20之间的链路的备份路径;本地节点ln1与节点rn30之间的链路的备份路径。

括号1540表示对具有备份路径的本地节点ln1的编码。在一个实施例中,本地节点ln1在3位ensi字段1502、9位cni字段1504和1位关键节点(k)标志字段1506中编码。本地节点ln1的备份路径在ln1的备份路径字段1507中编码,如上所述。3位nn字段1508用于指定远端节点数,而3位ensi字段1510用于指定远端节点的索引大小。

括号1542表示具对有备份路径的远端节点rn10的编码。在一个实施例中,使用9位cni字段1512和1位关键节点(k)标志字段1514对rn10编码。rn10的备份路径在rn10的备份路径字段1515中编码,如上所述。

括号1548表示从本地节点ln1到具有备份路径的远端节点rn10的链路的编码。例如,括号1546表示从本地节点ln1到远端节点rn10的链路的所有备份路径的编码,而括号1544表示从本地节点ln1到远端节点rn10的链路仅一个备份路径的编码。从本地节点ln1到具有备份路径的远端节点rn10的链路的编码包括1位关键链路(c)标志字段1516,以指示该链路是否为关键链路。2位nlb字段1518指示链路备份路径的数量。使用3位plen字段1520对链路的备份路径编码,以指示备份路径长度,3位ensi字段1522表示节点索引的位数指示。链路备份路径中节点pn1至节点pnm的节点索引在pn1索引字段1524至pnm索引字段1526中指定。pn1索引字段1524至pnm索引字段1526中的每一个索引字段的位数在3位ensi字段1522中指定。链路的附加备份路径包括在来自具有链路和节点备份路径的节点的链路数据结构1500的“////”部分1527中。

对rn20和rn30重复上述编码。例如,括号1550表示具有备份路径的rn20编码的编码,而括号1552表示具有备份路径的rn30编码的编码。具有备份路径的rn20编码使用9位cni字段1528、1位关键节点(k)标志字段1530以及rn20的备份路径字段1531在rn20的备份路径中编码。从本地节点ln1到具有备份路径的远端节点rn20的链路在字段1532中使用上面描述并用括号1548表示的相同数据字段编码。

类似地,具有备份路径的rn30编码使用9位cni字段1534、1位关键节点(k)标志字段1536以及rn30的备份路径在rn30的备份路径字段1537中编码。从本地节点ln1到具有备份路径的远端节点rn30的链路在字段1538中使用上面描述并用括号1548表示的相同数据字段编码。

图16是本发明的实施例提供的lnsbptlv数据结构1600的示意图。lnsbptlv数据结构1600包含泛洪拓扑和泛洪拓扑上的链路和节点的备份路径两者。lnsbptlv数据结构1600包括lnsbp-tlv-类型字段1602,该lnsbp-tlv-类型字段1602指定称为具有备份路径的链路tlv的新tlv类型。指定此类型的类型值是tbd。tlv-长度字段1604指定lnsbptlv数据结构1600的长度,lnsbp-tlv-类型字段1602和tlv-长度字段1604除外。来自具有备份路径的节点1的链路字段1606包含来自具有备份路径的节点1的链路编码(例如,使用来自具有图14中描述的节点备份路径的节点的链路数据结构1400),来自具有备份路径的节点2的链路字段1608包含来自具有备份路径的节点2的链路编码,以及来自具有备份路径的节点n的链路字段1612包含来自具有备份路径的节点n的链路编码。lnsbptlv数据结构1600的部分1610表示来自具有备份路径的节点3的链路到来自具有备份路径的节点n-1的链路正在编码。

图17a是本发明的实施例提供的针对ospfv2的ftbp不透明lsa数据结构1700a的示意图。ftbp不透明lsa数据结构1700a包括ls老化时间字段1702、选项字段1704、ls类型字段1706、ftbp类型字段1708、实例id字段1710、通告路由器字段1712、ls序列号字段1714、ls校验和字段1716、长度字段1718以及具有备份路径的链路tlv字段1720。ls老化时间字段1702、选项字段1704、ls类型字段1706、实例id字段1710、通告路由器字段1712、ls序列号字段1714、ls校验和字段1716以及长度字段1718是ospfv2的标准lsa报头的一部分,如图8a所示。ftbp类型字段1708指定新的不透明lsa类型(tbd),以将数据结构标识为ftbp不透明lsa,该ftbp不透明lsa包含在具有备份路径的链路tlv字段1720中的具有备份路径的链路tlv。对具有备份路径的链路tlv的编码示例是图16的lnsbptlv数据结构1600。对于ospfv2,ftbp不透明lsa数据结构1700a可用于将具有备份路径的泛洪拓扑从区域的领导者泛洪到区域中的所有其它节点。

图17b是本发明的实施例提供的针对ospfv3的ftbp数据结构lsa编码1700b的示意图。ftbp数据结构lsa编码1700b包括针对ospfv3定义的标准lsa报头,该标准lsa报头包括如在图17a所述的针对ospfv2定义的标准lsa报头中包含的ls老化时间字段1702、通告路由器字段1712、ls序列号字段1714、ls校验和字段1716,以及长度字段1718。对于ospfv3,不同步位(u位)字段1722设置为1,而范围字段1723设置为o1,以进行区域范围界定。ftbp-lsa字段1724指定了定义该lsa类型的新的lsa类型(tbd)。链路状态id字段1726标识了lsa正在描述的那部分路由域,如图8b中所述。除了针对ospfv3定义的标准lsa报头之外,ftbp数据结构lsa编码1700b包括新的具有备份路径的链路tlv字段1720,用于存储具有备份路径的链路tlv(例如,图16的lnsbptlv数据结构1600)。在一个实施例中,区域的领导者使用ftbp数据结构lsa编码1700b将泛洪拓扑泛洪到区域中的所有其它节点。

如上文在图3中所述,泛洪拓扑的区域的领导者可用于计算备份路径。在替代实施例中,与单个领导节点相反,泛洪拓扑中的部分或全部节点可以以分布式方式计算备份路径。作为示例,图18是本发明的实施例提供的以分布式方式计算备份路径的过程1800的流程图。过程1800可以由泛洪拓扑中的节点x中的部分或全部节点执行。节点x表示为泛洪拓扑的一部分的节点。当节点x检测到当前泛洪拓扑上的一个或多个链路发生故障时,流程1800从步骤1802开始。在一个实施例中,在步骤1806处,对于当前泛洪拓扑上的每个故障链路,过程1800计算故障链路的备份路径。例如,如果节点x检测到节点a与节点b之间的当前泛洪拓扑上的链路发生故障,则节点x计算节点a与节点b之间的备份路径,其中,就跳数而言,备用路径是节点a与节点b之间的最短路径。在一个实施例中,当节点x上的过程1800计算节点a与节点b之间的备份路径时,如果节点a的id小于节点b的id,则它可以计算从节点a到节点b的路径。如果每个节点计算从节点a到节点b的备份路径,则每个节点会计算唯一的备份路径。如果第一节点计算从节点a到节点b的备份路径,第二节点计算从节点b到节点a的备份路径,则这两个备份路径可以是不同的。例如,当节点a与节点b之间存在多个路径时,第一节点与第二节点会首先获得多个路径,然后从这些多个路径中选择一个路径作为备份路径。在一个实施例中,节点通过选择从目的地到源的方向上具有较小或最小的远端节点id的链路的路径,从多个路径中选择一个路径。在一个实施例中,为了确保每个节点计算节点a与节点b之间从同一源节点到同一目的地节点的备份路径,将具有较小节点id的节点指定为源节点,而将具有较大节点id的节点指定为目的地节点。

在步骤1808处,过程1800确定备份路径是否经过节点x。如果备份路径经过节点x,则过程1800在步骤1810处检索备份路径上的节点x的本地链路(例如,链路l1和l2),并且将备份路径上的本地链路临时添加到当前泛洪拓扑,直到构建新的泛洪拓扑,然后终止。如果在步骤1808处,过程1800确定备份路径不经过节点x,则过程1800不对节点x执行任何动作,并且终止。

在替代实施例中,对于当前泛洪拓扑上的故障链路中的每一个故障链路,过程1800在步骤1804处确定当前泛洪拓扑是否被故障链路分离,如果是,则过程1800进行到步骤1806;否则,过程1800不对节点x执行任何动作,并且终止。由于需要遍历泛洪拓扑以确定当前泛洪拓扑是否被故障链路分离,因此该实施例比上述实施例慢(即,直接进行到步骤1806)。在一个实施例中,当节点x距离故障点太远(例如,距离故障点5跳)时,过程1800可以用于不采取任何动作。

图19是本发明的实施例提供的以分布式方式计算备份路径的过程1900的流程图。过程1900可以由泛洪拓扑中的一些或全部节点x执行。当节点x检测到当前泛洪拓扑上的一个或多个节点发生故障时,流程1900从步骤1902开始。在一个实施例中,在步骤1906处,对于当前泛洪拓扑上的故障节点中的每一个故障节点,流程1900计算通过当前泛洪拓扑上的链路连接到故障节点的每对节点之间的备份路径。在步骤1908处,过程1900确定备份路径是否经过节点x。如果备份路径经过节点x,则过程1900在步骤1910处检索备份路径上的节点x的本地链路(例如,链路l1和l2),并且将备份路径上的本地链路临时添加到当前泛洪拓扑,直到构建新的泛洪拓扑(例如,新的泛洪拓扑由领导者计算,由节点x接收并构建)。在一个实施例中,节点x当添加与其连接且在备份路径上的链路中的每一个链路时,检查该链路是否已经在泛洪拓扑上,或者在泛洪拓扑上是否存在从节点x到链路远端的路径。如果是,则节点x不将该链路添加到泛洪拓扑中;否则,节点x将该链路添加到泛洪拓扑中,直到构建新的泛洪拓扑。

在替代实施例中,对于当前泛洪拓扑上的故障节点中的每一个故障节点,过程1900在步骤1904处确定当前泛洪拓扑是否被故障节点分离,如果是,则过程1900进行到步骤1906;否则,过程1900不对节点x执行任何动作,并且终止。由于需要遍历泛洪拓扑以确定当前泛洪拓扑是否被故障节点分离,因此该实施例比上述实施例慢。在一个实施例中,当节点x距离故障点太远(例如,距离故障点预定跳数)时,过程1900可以用于不采取任何动作。

图20是本发明的实施例提供的装置2000的示意性架构图。装置2000适合于实现如本文所述公开的实施例。例如,在一个实施例中,可以使用装置2000实现泛洪拓扑上的领导者节点或节点x。在各个实施例中,装置2000可以部署为网络中的路由器、交换机和/或控制器。

装置2000包括接收器单元(rx)2020或用于经由入端口2010接收数据的接收装置;处理器2030、逻辑单元、中央处理器(centralprocessingunit,cpu)或用于处理指令的其它处理装置;发送器单元(tx)2040或用于经由数据出口端2050进行发送的发送装置;以及存储器2060或用于存储指令和各种数据的数据存储装置。处理器2030可以实现为一个或多个cpu芯片、核心(例如像多核处理器)、现场可编程门阵列(field-programmablegatearray,fpga)、专用集成电路(applicationspecificintegratedcircuit,asic)和数字信号处理器(digitalsignalprocessor,dsp)。处理器2030与入端口2010、rx2020、tx2040、出端口2050和存储器2060通信。处理器2030可用于执行存储在存储器2060中的指令。存储器2060可以是能够存储数据和/或指令的任何类型的存储器或组件。例如,存储器2060可以是易失性存储器和/或非易失性存储器,诸如只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、三态内容寻址存储器(ternarycontent-addressablememory,tcam)和/或静态随机存取存储器(staticrandom-accessmemory,sram)。存储器2060可以包括一个或多个磁盘、磁带机和固态硬盘,并且可用作溢出数据存储设备,以在选择执行程序时存储这类程序,并存储在程序执行期间读取的指令和数据。在一些实施例中,存储器2060可以是与处理器2030集成的存储器。

在一个实施例中,存储器2060存储泛洪拓扑备份路径模块2070,该泛洪拓扑备份路径模块2070包括用于实现所公开的实施例的指令。例如,泛洪拓扑备份路径模块2070可以包括用于如本文所述实现过程并且编码备份路径的指令。包括泛洪拓扑备份路径模块2070能够向客户提供连续不间断的网络服务,从而大大改进了装置2000的功能。

因此,所公开的实施例提供了用于编码泛洪拓扑的消息和泛洪拓扑的备份路径的各种系统和方法。本发明所述的实施例所提供的一些益处包括:提供用于编码泛洪拓扑的消息和泛洪拓扑的备份路径的标准化协议,从而减少ls泛洪量,以及提高对多个网络故障的容忍度。所公开的实施例可以部署在由服务提供商全球使用的任何路由器、交换机和控制器中。在集中式模式中,领导者计算备份路径,并将备份路径泛洪到所有其它节点。在分布式模式时,每个节点计算备份路径。所公开的实施例计算关键链路和关键节点的备份路径。此外,还计算泛洪拓扑上每个非关键链路和非关键节点的备份路径。当所述泛洪拓扑上多个链路和节点发生故障时,通过其余泛洪拓扑以及这些链路和节点的备份路径,可以将ls快速泛洪到所述网络中的每个活跃节点。所公开的实施例能够向客户提供连续的服务。

所公开的实施例可以是任何可能的集成技术细节水平的系统、装置、方法和/或计算机程序产品。所述计算机程序产品可包括具有计算机可读程序指令的一个或多个计算机可读存储介质,所述计算机可读程序指令使得处理器执行本发明的各方面。所述计算机可读存储介质可以是能够保留和存储指令以供指令执行设备使用的有形设备。

虽然本发明多个具体实施例,但应理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。当前的示例应视为说明性而非限制性的,且意图不限于本文所给出的细节。例如,可以在另一系统中结合或集成各种元件或组件,或者可以省略或不实施某些特征。

此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、组件、技术或方法进行组合或合并。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离此处公开的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1