掌桥专利:专业的专利平台
掌桥专利
首页

优先权要求

本申请要求2018年8月31日提交的美国临时申请62/725,767和2018年9月19日提交的美国临时申请的62/733,491的优先权的权益,所述两个美国临时申请的全部内容以引用方式并入本文。

技术领域

本发明涉及一种网络通信,更具体地,涉及泛洪网络拓扑的分布。

背景技术

多种设备连接到服务提供商网络以访问由基于分组的数据网络提供的资源和服务,所述基于分组的数据网络诸如因特网、企业内部网、内容提供商、虚拟专用网(virtualprivate network,VPN)。例如,许多固定计算机利用服务提供商网络的固定通信链路,诸如光纤、数字订户线或基于电缆的连接来访问基于分组的服务。此外,大量的移动设备,诸如蜂窝或移动智能手机和功能手机、平板计算机和笔记本电脑,利用移动连接,诸如服务提供商网络的蜂窝无线接入网络,来访问基于分组的服务。当采用集中模式以减少内部网关协议(interior gateway protocol,IGP)泛洪时,泛洪拓扑的大小非常大。向网络中的每个节点泛洪该拓扑,这会导致泛洪拓扑的当前表示效率不高。此外,泛洪拓扑上的关键故障和链路不被表示。

发明内容

根据本发明的一个方面,提供了一种具有一个或多个节点的网络,包括:第一节点,包括处理器、接收器和发送器,以实现:接收所述网络中的包括所述第一节点在内的一个或多个节点的连通性信息;基于所述接收到的连通性信息计算泛洪拓扑,所述泛洪拓扑由所述网络中的包括所述第一节点在内的所述一个或多个节点之间的链路表示;对所述泛洪拓扑上的包括所述第一节点在内的所述一个或多个节点之间的所述链路进行编码;以及向所述网络中的所述一个或多个节点泛洪链路状态消息,所述链路状态通告消息包括所述泛洪拓扑中的所述编码后的链路中的每一个链路;以及第二节点,包括处理器、接收器和发送器,以实现:接收所述链路状态消息,包括所述泛洪拓扑中的所述编码后的链路;以及对所述链路状态消息中的所述编码后的链路进行解码,以获得所述泛洪拓扑。

根据本发明的另一方面,提供了一种用于对网络中的一个或多个节点进行路径计算和设置的计算机实现的方法,包括:在第一节点的接收器处接收所述网络中的包括所述第一节点在内的一个或多个节点的连通性信息;所述第一节点的处理器基于所述接收到的连通性信息计算泛洪拓扑,所述泛洪拓扑由所述网络中的包括所述第一节点在内的所述一个或多个节点之间的链路表示;所述第一节点处的所述处理器对所述泛洪拓扑上的包括所述第一节点在内的所述一个或多个节点之间的所述链路进行编码;以及所述第一节点的发送器向所述网络中的所述一个或多个节点泛洪链路状态消息,所述链路状态通告消息包括所述泛洪拓扑中的所述编码后的链路中的每一个链路。

可选地,在前述方面中的任一项中,所述网络中的所述一个或多个节点由路由器信息链路状态通告消息表示,所述路由器信息链路状态通告消息包括类型长度值,所述类型长度值具有一系列路由器标识符,所述一系列路由器标识符表示所述一个或多个节点中的每一个节点的索引。

可选地,在前述方面中的任一项中,所述第一节点通过编码的节点索引大小(encoded node index size,ENS)索引和紧凑节点索引(compact node index,CNI)编码,其中,所述ENS包括指示所述CNI的大小的一个或多个值。

可选地,在前述方面中的任一项中,所述网络中的所述一个或多个节点中的第二节点通过节点数(number of nodes,NN)、所述ENS和所述CNI编码,其中,NN指示具有所述CNI的大小的节点数。

可选地,在前述方面中的任一项中,所述网络中的所述第一节点与所述一个或多个节点之间的所述链路编码为一系列节点,所述一系列节点从所述第一节点开始,接着是通过所述链路连接到所述第一节点的所述一个或多个节点中的每一个节点。

可选地,在前述方面中的任一项中,所述计算机实现的方法还包括:计算所述泛洪拓扑中的关键节点,其中,所述关键节点的故障会导致所述泛洪拓扑分离;确定所述关键节点与所述网络中的一个或多个节点之间的所述泛洪拓扑中的一个或多个关键链路,其中,所述一个或多个关键链路的故障会导致所述泛洪拓扑分离;以及将所述关键节点与所述网络中的一个或多个节点之间的所述泛洪拓扑中的一个或多个关键链路编码为一系列节点,所述一系列节点从所述关键节点开始,接着是通过所述一个或多个关键链路连接到所述关键节点的所述一个或多个节点中的每一个节点。

可选地,在前述方面中的任一项中,所述计算机实现的方法还包括:计算所述泛洪拓扑上的所述链路的所述一个或多个节点的两个端节点之间的替代连接,或者计算跨所述泛洪拓扑上的所述一个或多个节点中的一个节点的路径;以及在所述一个或多个关键链路发生故障时,向所述两个端节点分发第二链路状态通告消息,包括所述替代连接,以连接所述分离泛洪拓扑;以及在所述关键节点发生故障时,分发所述第二链路状态通告消息,包括所述跨越所述一个或多个节点中的一个节点的路径,以连接所述分离泛洪拓扑。

根据本发明的另一其它方面,提供了一种用于进行路径计算和设置的存储计算机指令的非瞬时性计算机可读介质,所述计算机指令在由一个或多个处理器执行时,使所述一个或多个处理器执行以下步骤:在第一节点的接收器处接收所述网络中的包括所述第一节点在内的一个或多个节点的连通性信息;所述第一节点的处理器基于所述接收到的连通性信息计算泛洪拓扑,所述泛洪拓扑由所述网络中的包括所述第一节点在内的所述一个或多个节点之间的链路表示;所述第一节点处的所述处理器对所述泛洪拓扑上的包括所述第一节点在内的所述一个或多个节点之间的所述链路进行编码;以及所述第一节点的发送器向所述网络中的所述一个或多个节点泛洪链路状态消息,所述链路状态通告消息包括所述泛洪拓扑中的所述编码后的链路中的每一个链路。

根据本发明的又一其它方面,提供了一种用于在网络中进行路径计算和设置的设备,包括:非瞬时性存储器,包括指令;以及一个或多个处理器,与所述存储器通信,其中,所述一个或多个处理器执行所述指令,以实现:接收所述网络中的包括所述第一节点在内的一个或多个节点的连通性信息;基于所述接收到的连通性信息计算泛洪拓扑,所述泛洪拓扑由所述网络中的包括所述第一节点在内的所述一个或多个节点之间的链路表示;对所述泛洪拓扑上的包括所述第一节点在内的所述一个或多个节点之间的所述链路进行编码;以及向所述网络中的所述一个或多个节点泛洪链路状态消息,所述链路状态通告消息包括所述泛洪拓扑中的所述编码后的链路中的每一个链路。

发明内容简单介绍了一些概念,在具体实施方式中会进一步描述这些概念。本发明内容不旨在识别所要求保护的主题的关键特征或基本特征,也不旨在用于帮助确定所要求保护的主题的范围。所要求保护的主题不限于解决背景技术中提到的任何或所有缺点的实现方式。

附图说明

本发明的方面以示例方式说明,不受附图的限制,其中,相同的附图标记指示相同的元件。

图1示出了泛洪网络拓扑的示例。

图2示出了一种开放式最短路径优先(open shortest path first,OSPF)网络拓扑的示例性实施例。

图3示出了一种示例性节点索引类型长度值(type length value,TLV)报文。

图4A-图4C示出了一种网络中的本地节点编码的示例性实施例。

图5A和图5B示出了一种网络中的远端节点编码的示例性实施例。

图6A-图6C示出了一种网络中的链路编码的示例性实施例。

图7A-图7C示出了一种示例性泛洪拓扑类型长度值(type-length-value,TLV)报文。

图8A-图8B示出了一种示例性关键链路和备份链路TLV报文。

图9A-图9D示出了块链路编码的示例性实施例。

图10A-图10B示出了一种用于块编码的示例性格式。

图11示出了一种泛洪减少指令的示例。

图12示出了用于计算网络中的路径的示例性流程图。

图13示出了一种路由器的实施例。

图14示出了一种通用网络组件或计算机系统的示意图。

具体实施方式

现在将参考附图来描述本发明。

该技术涉及泛洪网络拓扑的分布,以减少与IGP网络中的链路状态通告(消息)相关的信令开销,所述IGP网络诸如开放式最短路径优先(open shortest path first,OSPF)网络或中间系统(intermediate system,IS)到IS(intermediate system tointermediate system,IS-IS)网络。

从一个节点向网络域中所有其它节点传送链路状态消息称为泛洪。所公开的机制通过生成泛洪拓扑降低链路状态通告/消息泛洪的影响,所述泛洪拓扑是真实网络拓扑的子集。通常,每个节点通过在泛洪拓扑上发送链路状态消息来泛洪网络,而不会通过泛洪拓扑中排除的网络链路发送此类消息。这允许消息到达网络中的所有其它节点,同时将每个节点处接收到的消息的冗余副本的数量降至最低。例如,泛洪拓扑可以生成为连接节点的链路树(例如,生成树)。此种链路树允许向所有节点泛洪链路状态消息,同时确保每个节点都接收到单个泛洪消息副本。

为了提高可靠性,在链路或节点失效/发生故障时,在泛洪拓扑上提供一个或多个替代消息路径。此外,当链路或节点发生故障时,与故障节点相邻的节点可以将链路状态消息传送给与故障节点相邻的其它节点。节点还可以保留关键元素的知识。关键元素是在发生故障时将泛洪拓扑分离为两个或更多个部分的泛洪拓扑链路/接口或节点。当通知关键元素发生故障时,这些节点可以恢复为在所有链路上泛洪链路状态消息,以便维持网络功能,直到所述链路/节点被修复或直到可以计算不包括故障元素的新的泛洪拓扑为止。

应理解,本发明的当前实施例可以以许多不同形式实现,并且权利要求的范围不应解释为受限于本文阐述的实施例。实际上,提供这些实施例是为了使本发明透彻和完整,并将本发明实施例的概念充分传达给本领域的技术人员。事实上,本发明旨在覆盖包括在由所附权利要求书限定的本发明的精神和范围内的这些实施例的替代物、修改和等同物。此外,在本发明的当前实施例的以下详细描述中,阐述了许多具体细节,以便提供透彻的理解。然而,本领域的普通技术人员应清楚的是,可以在没有此类具体细节的情况下实践本发明的当前实施例。

随着越来越多的节点(例如,路由器)被添加到传统通信网络中,网络规模增大,并且可能出现诸如可扩展性问题和收敛速度慢等问题。在诸如因特网的通信网络中,自治系统(autonomous system,AS)可以具有由网络管理员(或代表诸如大学、商业企业、或商业部门等单个管理实体的管理员组)控制的公共路由策略(在单个网络中或一组网络中)。在因特网中,AS包括经由公共路由协议交换路由信息的路由器集合。可以为因特网上的每个AS分配一个全局唯一编号,有时也称为AS号(AS number,ASN)。

在包括具有单个区域的单个自治系统(Autonomous System,AS)的网络中,每个节点需要知道所有其它节点的位置关系(即,邻接关系),使得所有节点可以建立AS的拓扑图(拓扑)。节点可以通过在整个根据一个或多个IGP的网络中分发(即,泛洪)链路状态信息来了解彼此的邻接关系,所述网络包括但不限于:开放式最短路径优先(open shortest pathfirst,OSPF)网络或中间系统(intermediate system,IS)到IS(intermediate system tointermediate system,IS-IS)网络。具体地,参与IGP的节点可以将描述其自身邻接关系的其自身链路状态通告(link state advertisement,LSA)分发到其所有邻居节点,所述邻居节点可以将接收到的LSA转发到其所有邻居节点(发出LSA的节点除外)。这可以允许在整个网络中分发LSA,使得所有网络节点都知道彼此的邻接关系,从而允许各个节点建立拓扑图(例如,链路状态数据库(link state database,LSDB))。可以在网络初始化时以及每当网络邻接关系发生变化(例如,节点增加/删除或节点/链路发生故障)时分发LSA。网络变化可能导致网络中的每个节点必须重新计算到每个目的地的最短路径,并且更新其路由信息库(routing information base,RIB)和其转发信息库(forwarding information base,FIB)。因此,随着向网络加入更多的节点,链路状态分发和最短路径计算可能开始消耗越来越多的网络资源,诸如带宽和/或处理时间。

通过将网络分离成多个区域,可以进一步扩展网络。然而,在将网络分离成多个区域时,存在许多问题。例如,将一个AS划分为多个AS,或将一个区域划分为多个区域,可能涉及网络架构的重大变化。又例如,建立跨多个区域的多协议标签交换(multi-protocollabel switching,MPLS)流量工程(traffic engineering,TE)标签交换路径(labelswitching path,LSP)可能比较复杂。一般来说,可以通过PCE通信协议(PCEcommunication protocol,PCEP)使用协作路径计算元素(path computation element,PCE)来计算跨多个区域的TE路径,由于需要手动配置域的序列,因此操作员可能不容易对所述路径进行配置。另外,当前的PCE方法可能无法保证所发现的路径是最优的。再例如,可能需要在ABR上重新配置一些策略,以减少要分发到其它区域中的其它路由器的链路状态的数量,诸如摘要链路状态通告(link-state advertisement,LSA)。因此,当AS变大(例如,包括越来越多的节点)时,可能会出现可扩展性问题,这可能由于例如大型网络无法快速计算到每个节点上的每个目的地的最短路径,以及无法高效地管理或分发网络拓扑信息导致。因此,大型网络可能会受到较慢的收敛速度的影响。例如,大型网络可能需要较长的时间来建立或更新拓扑图,在此期间数据可能会被错误定向或丢失。此外,大型网络中的重新收敛也可能是一个问题,因为节点/链路故障无法及时恢复(或初始化后网络邻接关系发生变化的一些其它情况)可能会干扰网络业务,诸如沿着最短路径从一个节点传输到另一个节点的流量。

在进行集中模式泛洪减少中,存在对泛洪拓扑的一些编码。使用一种路径来表示一条泛洪拓扑。另一路径表示本地节点与其远端节点之间的链路。然而,这些泛洪拓扑的表示并非有效的。本发明提出了一种更有效的泛洪拓扑表示方法,这大大减少了要向每个节点泛洪的泛洪拓扑的大小。

所公开的实施例提供了减少网络中链路状态变化的泛洪的链路状态消息在网络中的发送。图1示出了泛洪网络拓扑的示例。网络可以包括泛洪节点102,所述泛洪节点102向直接连接到泛洪节点102的邻居102A集合中的节点108-112泛洪链路状态消息。通过向一组邻居的邻居102B中的节点114-118(即泛洪节点的两跳邻居)重新泛洪链路状态消息,邻居中的部分或全部邻居可以充当后续泛洪节点。

泛洪节点102和节点108-118可以是分组交换网络中的路由器和/或其它类型的交换节点。因此,从泛洪节点发送到邻居102A以及随后发送到两跳邻居102B的链路状态消息可以由交换节点用于基于网络内连通性的变化更新它们的路由表。例如,泛洪节点102可以检测到网络中的节点、目的地和/或链路的可达性的变化。泛洪节点102可以使用链路状态协议,诸如开放式最短路径优先(Open Shortest Path First,OSPF)和/或中间系统到中间系统(Intermediate System to Intermediate System,IS-IS)向邻居102A泛洪包含可达性变化的链路状态消息。当每个邻居102A接收到链路状态消息时,邻居可以充当泛洪节点并且将链路状态消息泛洪到该邻居的邻居102B(即,泛洪节点的两跳邻居),发出该链路状态消息的节点除外。因此,链路状态消息的泛洪可用于跨网络传播链路状态消息。在节点处接收到链路状态消息之后,节点可以基于链路状态消息中传送的可达性变化重新计算一个或多个路由表中的路径。

下列文件以引用方式并入本文,如同全文复制一样:H.Chen在2018年9月17日发布的标题为“LS泛洪减少”(draft-cc-ospf-flooding-reduction-04)的互联网工程任务组(Internet Engineering Task Force,IETF)文件,该文件以引用方式并入本文。

图2示出了一种OSPF网络拓扑的示例性实施例。在网络拓扑中,节点之间的链路由泛洪网络所形成的线(包括虚线和深线)来表示。可以为一个网络拓扑构造许多不同的泛洪拓扑。连接给定网络拓扑中所有节点的链是一种泛洪拓扑。连接所有节点的圆是另一种泛洪拓扑。连接所有节点的树也是一种泛洪拓扑。此外,树加上树的某些叶节点与树的分支节点之间的连接是一种泛洪拓扑。对于OSPF网络拓扑,泛洪拓扑定义为网络拓扑的子图或子网,所述网络拓扑的子图或子网对每个节点的可达性与网络拓扑相同。

在构造泛洪拓扑时,诸如图2所示,应考虑以下参数:(1)链路数:泛洪拓扑上的链路数是减少LS泛洪量的关键因素。一般来说,链路数越少,LS泛洪量就越少;(2)直径:泛洪拓扑上最远的两个节点之间的最短距离(即泛洪拓扑的直径)是减少网络收敛时间的关键因素。直径越小,收敛时间越短;(3)冗余:泛洪拓扑的冗余意指对泛洪拓扑上部分链路和节点故障的容忍度。如果泛洪拓扑被某些故障分离,则不能容忍这些故障。一般来说,泛洪拓扑上的链路数越多,泛洪拓扑对故障的容忍度就越大。

类似地,对于给定的网络拓扑,构造泛洪拓扑的方式有很多,包括但不限于:(1)集中模式:网络中的一个节点将构建一个泛洪拓扑,并向网络中的所有其它节点泛洪拓扑泛洪(注意:对泛洪拓扑进行泛洪可能会增加泛洪。用于泛洪所述泛洪拓扑的流量应尽可能小);(2)分布模式:网络中的每个节点都使用相同的算法自动计算泛洪拓扑(不对泛洪拓扑进行泛洪);(3)静态模式:泛洪拓扑上的链路是静态配置的。注意,由节点构造的泛洪拓扑本质上是动态的,使得当基本拓扑(整个拓扑图)发生变化时,泛洪拓扑(子图)被重新计算/重新构造,以确保基本拓扑上可达的任何节点在泛洪拓扑上也可达。泛洪减小指令的示例如图12所示。

作为所描绘的实施例中的示例,泛洪拓扑由单个结构中的12个链路表示。具体地,泛洪拓扑上的链路示出在节点L1与R1;L1与R2;L1与R3;R1与R11;R2与R21;R2与R22;R3与R22;R3与R31;R3与R32;R11与R32;R11与R111;以及R11与R21之间,其中,L定义为本地节点,而R定义为远端节点。对于本地节点(L)与多个远端节点(R)之间的链路,例如,本地节点L1与远端节点R1、R2和R3之间的三个链路,对本地节点L1进行编码,并且远端节点R1、R2和R3可以以相同或不同的方式进行编码。一旦对泛洪拓扑中的所有链路进行编码,编码后的链路就可以泛洪到网络中的每个节点。在接收到编码后的链路之后,每个节点对链路进行解码并创建和/或更新泛洪拓扑。

节点表示:节点索引

编码后的每个节点按照其节点ID(例如,OSPF中的路由器1D、IS-IS中的系统1D)按升序对网络中的每个节点进行排序,并且在区域中生成相同节点序列。节点序列分别具有索引0、1、2等,使得编码后的链路中的每个节点由其索引表示。更具体地说,对于网络或区域中的每个节点,使用索引来表示它。例如,对于图2中的节点L1、R1、R2、R3、R21、R22、R31、R32、R11和R111,分别用索引0、1、2、3、4、5、6、7、8和9表示节点。

在一个实施例中,参考示出节点索引类型长度值的图3,OSPF路由器信息(RouterInformation,RI)链路状态通告(Link state Advertisement,LSA)包含具有表示节点索引的一系列路由器标识符(identifier,ID)的类型长度值(Type-Length-Value,TLV)。例如,节点索引TLV定义如下:节点索引TLV按顺序包含N个路由器ID:路由器ID 1、路由器ID2,……,路由器IDN。这表示路由器ID 1、路由器ID 2,……,和路由器ID N的索引分别为0、1,……,和N-1。然后,该RI LSA由区域中的领导者生成,并分发到该区域中的每个其它节点。

在另一实施例中,区域中的每个节点可以基于规则对节点进行排序,该规则在区域中的每个节点上生成相同的节点序列。例如,规则可以是通过分别具有索引0、1、2等的序列来定义节点。例如,每个节点按其路由器ID按升序对节点进行排序。

本地节点表示

图4A-图4C示出了一种网络中的本地节点编码的示例性实施例。对于本地节点(L)与多个远端节点(R)之间的链路,例如,本地节点L1与远端节点R1、R2和R3(图2)之间的三个链路,本地节点L1可以使用两部分进行编码:编码的节点索引大小(encoded node indexsize,ENS)和紧凑节点索引(compact node index,CNI)。ENS可以具有许多值(例如,值0、1、2和3),每个值指示紧凑节点索引的大小。参考图4A,且在一个实施例(实施例1)中,值0指示CNI的大小为8位,值1指示CNI的大小为10位,值2指示CNI的大小为12位,值3指示CNI的大小为16位。因此,在本示例中,本地节点L1编码为使用2位的ENS=0和使用8位的CNI=0。节点L1总共以10位编码。

转向图4B,并且在第二实施例(实施例2)中,ENS的值加上一个常数(诸如7)是CNI的大小。例如,ENS的值0指示CNI的大小为7位(即,0+7=7),ENS的值1指示CNI的大小为8位(即1+7=8),ENS的值2指示CNI的大小为9位(即,2+7=9),ENS的值3指示CNI的大小为10位(即,3+7=10),依此类推。因此,在本示例中,本地节点L1编码为使用3位的ENS=0和使用7位的CNI=0。节点L1总共以10位编码。

在第三个实施例(实施例3)中,如图4C所示,ENS的值直接指示CNI的大小,以位为单位。也就是说,ENS的值为CNI的大小,以位为单位。例如,ENS以4位表示。ENS的值的范围为0至15。如果ENS的值为15,则它指示CNI的大小为15位。如果ENS的值为10,则它指示CNI的大小为10位。

远端节点表示

图5A和图5B示出了一种网络中的远端节点编码的示例性实施例。对于本地节点(L)与多个远端节点(R)之间的链路,例如,本地节点L1与远端节点R1、R2和R3(图2)之间的三个链路,可以使用以下三个部分对远端节点进行编码(例如,对节点R1、R2和R3进行编码):节点数(number of nodes,NN)、编码的节点索引大小(encoded node index size,ENS)和紧凑节点索引(compact node index,CNI)。对于远端节点编码,NN指示具有CNI大小的节点数。对应的CNI遵循这些NN。ENS可以与上述本地节点相同。也就是说,ENS可以具有许多值(例如,值0、1、2和3),每个值指示紧凑节点索引的大小。

在第一实施例中,如图5A所示,NN的值是远端节点的数量。在另一实施例中,NN的值加一是远端节点的数量。例如,使用4位来表示NN的最大数量为16CNI。NN=0表示1个CNI。NN=15表示16个CNI。

在又一个实施例中,使用以下两部分对远端节点进行编码:节点数(number ofnodes,NN)和紧凑节点索引。远端节点的CNI大小使用链路的本地节点的ENS。假设ENS指示CNI的大小为8位。三个远端节点R1、R2和R3在下文中以3个半字节编码。

转向图5B,在第二实施例中,使用以下三个部分对远端节点进行编码:节点数(number of nodes,NN)、ENS和紧凑节点索引。ENS的值加7为远端节点CNI的大小。在下文的示例中,ENS为0,其之后的每个远端节点的CNI大小为7位(即,0+7=7)。

链路表示

图6A-图6C示出了一种网络中的链路编码的示例性实施例。对于本地节点(L)与多个远端节点(R)之间的链路,例如,本地节点L1与远端节点R1、R2和R3(图2)之间的三个链路,在对本地节点(例如,节点L1)进行编码之后,对远端节点(例如,节点R1、R2和R3)进行编码。参考图6A,并在一个实施例(实施例1)中,本地节点L1编码为使用3位的ENS=1和使用8位的CNI=0,所述使用3位的ENS=1指示CNI的大小为ENS的值加7。节点L1总共以11位编码。三个远端节点R1、R2和R3被编码为两部分:远端节点数(number of nodes,NN)和用3字节表示的以下三个远端节点的CNI。参考下图。三个链路以4字节和7位编码。

在另一实施例(实施例2)中,本地节点L1通过L1的ENS和CNI进行编码,其中,ENS的值加6是本地节点L1的CNI的大小。例如,参考图6B,ENS=2使用3位,CNI=0使用8位。本地节点L1以总共11位(即,行1的前3位(位0、1、2)和行2的前8位(位0-7))编码。远端节点(R)以三个部分编码:远端节点数(number of nodes,NN)、编码的节点索引大小(encoded nodeindex size,ENS)指示符和紧凑节点索引(Compact Node Index,CNI)。当远端节点的ENS的值设置为0时,指示远端节点的CNI大小为6位。三个链路以36位(即,4字节和4位,即,4.5字节)编码。

转向图6C,公开了另一实施例(实施例3),其中,本地节点L1通过L1的ENS和CNI进行编码,其中,ENS的值为本地节点L1的CNI的大小。例如,使用4位(即,行1中的位0-3)的ENS=2和使用2位(即,行2中的位0和1)的CNI=0。节点L1总共以6位编码。远端节点(R)以两个部分编码:远端节点数(number of nodes,NN)和远端节点的紧凑节点索引。本端节点的ENS值为远端节点的CNI的大小,即2位。因此,在这种情况下,三个链路以2字节(即,16位)编码。

泛洪拓扑

图7A-图7C示出了一种示例性泛洪拓扑类型长度值(type-length-value,TLV)。对于由区域的领导者计算出的泛洪拓扑,泛洪拓扑上的链路表示整个拓扑。图7A示出了一种包括在LSA中以表示泛洪拓扑(flooding topology,FT)的用于链路编码的TLV的格式。格式包括泛洪拓扑(flooding topology,FT)类型和TLV长度,以及从每个节点到其远端节点的链路编码,如图所示。

在一个实施例中,参考图7B,包含类型长度值(Type-Length-Value,TLV)以及针对区域中的每个节点的链路编码的OSPF路由器信息(Router Information,RI)链路状态通告(Link state Advertisement,LSA)用于表示泛洪拓扑(flooding topology,FT),并向区域内的每个节点泛洪FT。例如,泛洪拓扑TLV定义如下:TLV包括N个链路编码:作为本地节点的节点1与其远端节点之间的链路的链路编码、作为本地节点的节点2与其远端节点之间的链路的链路编码,……,作为本地节点的节点N与其远端节点之间的链路的链路编码。

在另一实施例中,参考图7B,对于OSPFv2,新的不透明类型(待定)的不透明LSA包含泛洪拓扑链路TLV,用于将泛洪拓扑从区域的领导者泛洪到区域中的所有其它节点。不透明LSA包括例如LS老化时间、选项和LS类型,并定义FT类型、实例ID、通告路由器、LS序列号、LS校验和和长度以及FT链路TLV。

在又一个实施例中,参考图7C,对于OSPFv3,新的LSA功能码(待定)的区域范围LSA包含FT链路TLV,用于将泛洪拓扑从区域的领导者泛洪到区域中的所有其它节点。否则,FTLSA类似于图7B的LSA。

链路状态泛洪

如上所述,当前的泛洪拓扑效率低,不会针对关键链路故障进行调整,并且没有在当前标准中表示。本发明解决了这些问题,并且提供了泛洪拓扑的有效表示,所述有效表示减小了要泛洪到每个节点的泛洪拓扑的大小。在一个实施例中,网络能够指示关键故障,并且确保在发生故障的情况下仍将泛洪拓扑分布到每个节点。

如本发明所定义:泛洪拓扑上的关键链路(或接口)是泛洪拓扑上的一个或多个节点之间的唯一链路或接口。当此链路或接口瘫痪时,泛洪拓扑将分离;泛洪拓扑上的关键节点是连接泛洪拓扑上的节点中的一个或多个节点的唯一节点。当该节点瘫痪时,泛洪拓扑会分离。链路(接口)可以在计算泛洪拓扑期间和/或之后确定。例如,参考图2,将R3与R31之间以及R11与R111之间的链路定义为关键链路,并且节点R3、R31、R11和R111为关键节点。如果这些节点中的任一个节点或链路中的任一个链路发生故障,则备份链路变得必要。

对于由区域的领导者计算得到的泛洪拓扑(flooding topology,FT),FT上的关键链路可以通过使用本文中称为关键链路TLV的TLV格式对链路进行编码来表示。如图8A所示,该关键链路TLV定义为包括多个关键链路编码,所述关键链路编码中的每一个关键链路编码类似于针对FT的链路的链路编码。然而,由于链路是关键的,因此它是泛洪拓扑上的一个或多个节点之间的唯一链路或接口,如上所述。

在一个实施例中,当关键接口或节点瘫痪时,可以在使用所公开的实施例构造泛洪拓扑之前使用传统的泛洪技术。

在另一实施例中,当关键接口或节点瘫痪时,在构造新的泛洪拓扑之前,使用备份链路泛洪链路状态。

为了避免关键链路发生故障,可以生成备份链路或路径。备份路径是在泛洪拓扑上的链路的两个端节点之间或泛洪拓扑上跨节点的路径的两个端节点之间提供替代连接的路径或一系列链路。当关键链路发生故障时,链路的备份路径将用于连接分离的泛洪拓扑的两个部分。当关键节点发生故障时,跨节点的路径的备份路径将泛洪拓扑的分离部分连接在一起。

图8B示出了一种泛洪拓扑的示例性备份链路。对于由区域的领导者计算得到的泛洪拓扑,泛洪拓扑上的关键链路的备份链路可以由领导者计算。当关键链路发生故障时,可以使用泛洪拓扑上的链路以及备份链路将泛洪拓扑的链路状态分发或泛洪到区域中的每个节点。这些备份链路通过使用本文中称为备份链路TLV的TLV格式对链路进行编码来表示,如图所示。备份TLV定义为包括许多备份链路编码,所述备份链路编码中的每一个备份链路编码类似于针对泛洪拓扑的链路的链路编码。

在一个实施例中,对于由区域的每个节点计算得到的泛洪拓扑,泛洪拓扑上的关键链路的备份链路可以由该节点计算。当关键链路发生故障时,可以使用备份链路和泛洪拓扑上的链路将链路状态分发或泛洪到区域中的每个节点。

块链路表示

图9A-图9D示出了块链路编码的示例性实施例。块编码使用单一结构对拓扑的块(或部分)进行编码,该块可以是泛洪拓扑中的链路块。在一个实施例中,链路块可以是泛洪拓扑中的所有链路。编码从本地节点L和其相邻(或远端)节点RNi(i=1、2,……,n)开始,并且可以视为链路编码的扩展。远端节点的编码被扩展为包括节点数(number of nodes,NN)字段与远端节点的紧凑节点索引(Compact Node Index,CNI)之间的扩展标志(E标志)。E标志字段的长度是NN位,其中,E标志字段中的第一位(即,最高有效位)用于第一远端节点(例如,RN1),第二位用于第二远端节点(例如,RN2),以此类推。远端节点RNi的E标志设置为1指示下面包括连接到远端节点RNi的链路。远端节点RNi的E标志设置为0意指下面不包括连接到远端节点RNi的链路。连接到远端节点RNi的链路由作为本地节点的RNi和RNi的远端节点表示。RNi的远端节点的编码与本地节点的远端节点的编码相同。也就是说,RNi的编码由4位的NN字段、NN位的E标志字段和RNi的远端节点的CNI组成。

例如,参考图9A,链路块从本地节点L和其远端(或相邻)节点Ri(i=1、2,……,n)开始,这可以视为对链路编码的扩展。连接到本地节点L以及连接在本地节点L与其远端节点Ri之间的链路分别用L和Ri表示。对于Ri(i=1、2,……,n)中的每一个,连接到Ri以及连接在Ri与其远端节点Rij(j=1、2,……,m)之间的链路由作为本地节点的Ri和Rij(j=1、2,……,m)表示。对于Rij(j=1、2,……,m)中的每一个,连接到Rij以及连接在Rij与其远端节点Rijk(k=1、2,……,s)之间的链路由作为本地节点的Rij和Rijk(k=1、2,……,s)等表示。在一个示例中,泛洪拓扑中的六(6)个链路以单一结构编码,其中,链路(L1至R1、L1至R2、L1至R3、R2至R22和L1至R11)在泛洪拓扑904A中用暗线表示,并且单一结构表示为902A。

在一个实施例中,并且如上所述,编码从本地节点L1与本地节点L1的3个远端节点R1、R2和R3之间的链路开始。3个远端节点R1、R2和R3的编码包括值为3的3位的NN字段、NN=3位的E标志字段,以及远端节点R1、R2和R3的索引。

在描绘的示例中,R1、R2和R3的编码中的第一E标志(在这种情况下,3位)设置为1,指示包括在第一远端节点R1(作为本地节点)与其远端节点之间的链路。在此示例中,R1与其远端节点R11之间的1个链路由作为本地节点的R1的远端节点R11的编码表示。单个远端节点R11的编码由值为1的3位的NN字段和NN=1位的E标志字段以及远端节点R11的索引组成。R11的索引大小与本地节点L1的索引大小相同,所述本地节点L1的索引大小由L1的编码中的ENS指示。

R1、R2和R3的编码中的第二E标志设置为1,指示包括在作为本地节点的R2与其远端节点之间的链路。在此示例中,R2与其2个远端节点R21和R22之间的2个链路由作为本地节点的R2的远端节点R21和R22的编码表示。2个远端节点R21和R22的编码由值为2的3位的NN字段和NN=2位的E标志字段以及R21和R22的索引组成。R21和R22的索引大小与本地节点L1的索引大小相同,所述本地节点L1的索引大小由L1的编码中的ENS指示。

远端节点R1、R2和R3的编码中的第三E标志设置为0,这指示不包括在作为本地节点的第三远端节点R3与其远端节点之间的链路。

远端节点R11的编码中的E标志设置为0,这指示不包括在作为本地节点的远端节点R11与其远端节点之间的链路。

远端节点R21和R22的编码中的第一个E标志设置为0,这指示不包括在作为本地节点的第一远端节点R21与其远端节点之间的链路,并且远端节点R21和R22的编码中的第二E标志链路,这指示不包括在作为本地节点的第二远端节点R22与其远端节点之间的链路。

实际上,前两个E标志(即,远端节点R1、R2和R3的编码中的第三E标志,以及远端节点R11的编码中的E标志)可以设置为1,并且对应的链路可以包括在同一单个结构中。

转向图9B,泛洪拓扑904B中的所有12个链路的另一示例以单个结构902B表示。如图所示,单个结构902B包括单个结构902A(图9A)和包括单个结构902B的其余部分的非关键链路,如下所述。然而,在此示例中,远端节点R1、R2和R3的编码中的第三E标志设置为1,这指示包括在作为本地节点的R3与其远端节点(R22、R31和R32)之间的链路。因此,在示例中,R3与其3个远端节点R22、R31和R32之间的3个链路由作为本地节点的R3的远端节点R22、R31和R32的编码表示。3个远端节点R22、R31和R32的编码由值为3的3位的NN字段和NN=3位的E标志字段以及R22、R31和R32的索引组成。R22、R31和R32的索引大小与本地节点L1的索引大小相同,所述本地节点L1的索引大小由L1的编码中的ENS指示。

远端节点R11的编码中的E标志设置为1,这指示包括在作为本地节点的远端节点R11与其远端节点(R32、R111和R21)之间的链路。

在此示例中,R11与其3个远端节点R32、R111和R21之间的3个链路由作为本地节点的R11的远端节点R32、R111和R21的编码表示。3个远端节点R32、R111和R21的编码由值为3的3位的NN字段和NN=3位的E标志字段以及R32、R111和R21的索引组成。R32、R111和R21的索引大小与本地节点L1的索引大小相同,所述本地节点L1的索引大小由L1的编码中的ENS指示。

在另一实施例中,可以根据不同的表示对远端节点的编码进行排序。在第一种表示中,如图9C所示,远端节点可以按从本地节点到远端节点的跳数排序。以此方式,通过广度优先搜索,遍历节点并沿着泛洪拓扑对对应的链路进行编码。

另一种表示包括使用深度优先编码,如图9D所示,其中,通过深度优先搜索遍历节点并沿着泛洪拓扑对对应的链路进行编码。例如,编码从对本地节点L1进行编码并且对L1的远端节点R1、R2和R3进行编码开始。随后,对R1的远端节点R11进行编码(注意,R1是作为R11的本地节点)。沿着作为本地节点的节点R11,对其远端节点R32、R111和R21进行编码,对R32的远端节点R3进行编码,对R3的远端节点R22和R31进行编码,对R22的远端节点R2进行编码,并且对R2的远端节点R21进行编码。

图10A和图10B示出了一种用于块编码的示例性格式。对于由区域的领导者计算得到的泛洪拓扑,可以用泛洪拓扑上的所有链路来表示。在一个实施例中,对于OSPFv2,新的不透明类型(T8D2)的不透明LSA包含泛洪拓扑链路TLV,用于将泛洪拓扑从区域的领导者泛洪到区域中的所有其它节点。类型长度值(Type-Length-Value,TLV)包含泛洪拓扑(flooding topology,FT)中的所有链路,这称为泛洪拓扑TLV,如图10A所示。在一个实施例中,FT TLV包含一个或多个(诸如n个)块链路编码。

对于OSPFv2,新的不透明类型(T8D2)的不透明LSA包含泛洪拓扑链路TLV,用于将泛洪拓扑从区域的领导者泛洪到区域中的所有其它节点。泛洪拓扑不透明LSA在图10B中予以描述,并且是图7B中所示的泛洪拓扑不透明LSA的字段中的一种。

本发明提出了一种用于以更加有效的方式对泛洪拓扑进行编码的解决方案,该解决方案显著减小了要泛洪到区域中的每个节点的泛洪拓扑的大小。因此,本发明确保了对客户的连续服务。本发明可以部署在由世界各地的服务提供商使用的任何路由器和交换机中。

图11示出了一种泛洪减少指令的示例。RI LSA中的泛洪减少指示TLV在OSPF RILSA[RFC770]中定义,并且以全文引用方式并入本文。TLV包括有关泛洪减少的指令,并且源于一个节点,其格式如图所示。

除了上文参考图2的描述之外,还定义了三位的OP字段,并且其值可以为:Ox001(R),表示执行泛洪减少,这指示节点区域执行泛洪减少;Ox010(N),表示回退到正常泛洪,这指示区域内节点回退,以执行正常泛洪。忽略任何其它值。

TLV中定义了三位的MOD字段,并且其值可以为:Ox001(C):表示集中模式,这指示:1)区域中的节点选择领导者(主要/指定领导者、次要/备份领导者等),2)主要领导者计算泛洪拓扑并将其泛洪到区域中所有其它节点,3)区域中的每个节点接收并使用由主要领导者发起的泛洪拓扑;Ox010(D):表示分布模式,这指示区域中的每个节点计算并使用自己的泛洪拓扑;以及Ox011(S):表示静态模式,这指示区域内的每个节点使用在节点上静态配置的泛洪拓扑。当接收到其它值中的任一个时,将它忽略。

TLV中定义了8位的算法字段,以指示集中模式中的领导者节点或分布模式中的每个节点使用该字段指示的算法,以计算泛洪拓扑。

格式还可以包括可选的子TLV。

图12示出了一种用于计算网络中的路径的示例性流程图。在实施例中,流程图可以是计算机实现的方法,所述方法至少部分地由各个附图中示出并且如本文所述的硬件和/或软件组件执行。在一个实施例中,所公开的过程可以由图1和图12中所公开的节点执行。在一个实施例中,由一个或多个处理器(诸如处理器1320或1402)执行的软件组件执行该过程的至少一部分。

该过程从步骤1202开始,其中,网络中的节点(诸如领导者或本地节点)接收网络中的节点的连通性信息。在步骤1204处,节点处的处理器基于接收到的连通性信息计算泛洪拓扑,其中,泛洪拓扑由网络中的节点之间的链路表示。在步骤1206处,在泛洪拓扑上的节点之间对链路进行编码,并且在网络步骤1208中向节点泛洪链路状态通告/消息,其中,链路状态通告/消息包括泛洪拓扑中的编码后的链路中的每一个。

图13示出了一种路由器的实施例。节点(例如,路由器)1300可以是例如在图1和图2中描述的任何节点或路由器。节点1300可以包括多个输入/输出端口1310/1330;和/或接收器(Rx)1312和发送器(Tx)1332,用于从其它节点接收和发送数据;处理器1320,用于处理数据并确定将数据发送到哪个节点和存储器。节点1300还可以生成和分发LSA以描述和泛洪网络的各个拓扑和/或区域。尽管图示为单个处理器,但处理器1320不限于此,并且可以包括多个处理器。处理器1320可以实现为一个或多个中央处理单元(central processingunit,CPU)芯片、核心(例如,多核处理器)、现场可编程门阵列(field-programmable gatearray,FPGA)、专用集成电路(application specific integrated circuit,ASIC),和/或数字信号处理器(digital signal processor,DSP),和/或可以是一个或多个ASIC的一部分。此外,处理器1320可以使用硬件、软件或两者实现。处理器1320包括实现所公开的实施例的OSPF模块1321。因此,包括OSPF模块1321使得节点1300功能得到了显著改进,并且实现了节点1300不同状态的转换。替代地,存储器1322将OSPF模块1321存储为指令,并且处理器1320执行这些指令。

存储器1322可以用于存储参考结构,诸如单个结构902A和902B,以及网络拓扑,诸如904A和904B。尽管图示为单个存储器,但存储器1322可以实现为只读存储器(read onlymemory,ROM)、随机存取存储器(random access memory,RAM)或辅助存储器(例如,用于数据的非易失性存储的一个或多个磁盘驱动器或磁带驱动器)的组合。

上述方案可以在任何通用网络组件上实现,所述通用网络组件诸如具有足够的处理能力、内存资源和网络吞吐量能力以处理施加在其上的必要工作负载的计算机或网络组件。

图14示出了一种通用网络组件或计算机系统的示意图。通用网络组件或计算机系统1400包括:处理器1402(可称为中央处理器单元或CPU),所述处理器1402与包括辅助存储器1404的存储器设备以及诸如ROM 1406和RAM 1408、输入/输出(I/O)设备1410等存储器通信;以及网络1412,诸如因特网或任何其它已知类型的网络,所述网络可以包括网络连接设备,诸如网络接口。尽管图示为单个处理器,但处理器1402不限于此,并且可以包括多个处理器。处理器1402可以实现为一个或多个CPU芯片、核心(例如,多核处理器)、FPGA、ASIC,和/或DSP,和/或可以是一个或多个ASIC的一部分。处理器1402可以用于实现本文所描述的方案中的任一种。处理器1402可以使用硬件、软件或两者实现。

辅助存储器1404通常包括一个或多个磁盘驱动器或磁带驱动器,用于数据的非易失性存储,而且如果RAM 1408的容量不足以存储所有工作数据,辅助存储器则用作溢流数据存储设备。辅助存储器1404可以用于存储程序,当选择执行这些程序时,所述程序将加载到RAM1408中。ROM 1406可用于存储在程序执行期间读取的指令以及可能读取的数据。ROM1406是一种非易失性存储器设备,相对于辅助存储器1404的较大存储器容量,所述非易失性存储器设备通常具有较小的存储器容量。RAM 1408用于存储易失性数据,并且可能用于存储指令。对ROM 1406和RAM 1408两者的存取通常比对辅助存储器1404的存取更快。辅助存储器1404或RAM 1408中的至少一个可以用于存储路由表、转发表或者本文公开的其它表或信息。

应该理解的是,通过将可执行指令编程和/或加载到节点1300上,改变了处理器1420或存储器1422中的至少一个,从而将节点1300部分地转换为具有本公开所教示的新颖功能的特定机器或装置,例如,路由器。类似地,应该理解的是,通过将可执行指令编程和/或加载到节点1300上,改变了处理器1402、ROM 1406和RAM 1408中的至少一个,从而将节点1300部分地变换为特定机器或装置,例如具有本发明所教示的新颖功能的路由器。对于电气工程和软件工程技术来说基本的是,可以通过将可执行软件加载到计算机中而实现的功能性可以通过熟知设计规则而转换为硬件实现方式。在软件还是硬件中实施概念之间的决策通常取决于与设计的稳定性及待产生的单元的数目的考虑,而与从软件域转译到硬件域所涉及的任何问题无关。通常,仍需频繁改变的设计可以优选以软件实现,因为重改硬件的实现方式比重改软件设计更为昂贵。通常,稳定的及大规模生产的设计更适于以硬件(例如ASIC)实现,因为运行所述硬件实现方式的大规模生产比软件实现方式更为便宜。通常,一个设计可以以软件形式进行开发及测试,并且随后通过熟知设计规则变换为对软件的指令进行硬连线的专用集成电路中的等效硬件实现。特定机器或装置采用与新ASIC控制的机器相同的方式,同样,已经编程和/或加载有可执行指令的计算机可以视为特定机器或装置。

出于说明和描述的目的呈现对本发明的描述,但不旨在按照所公开形式对本发明穷举或限于本发明。在不偏离本发明的范围和精神的前提下,多种修改和改变对本领域技术人员而言是显而易见的。选择和描述的本发明各个方面以便更好地解释本发明的原理和实际应用,并且使本领域技术人员能够理解本发明适合预期特定用途的各种修改。

出于本文档的目的,与所公开的技术相关联的每个过程可以由一个或多个计算设备连续地执行。过程中的每个步骤可以由与其它步骤中使用的计算设备相同或不同的计算设备执行,并且每个步骤不一定由单个计算设备执行。

尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应该理解的是,权利要求书定义的主题未必限于上述具体特征或动作。而是,公开上述具体特征和动作作为实现权利要求的示例形式。

相关技术
  • 减小泛洪拓扑大小的系统和方法
  • 用于备份泛洪拓扑分离的系统和方法
技术分类

06120113265683