一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

软件定义联网分布式系统中的活性检测和路由收敛的制作方法

2021-12-07 21:38:00 来源:中国专利 TAG:
1.本公开涉及计算机网络,更具体地涉及在虚拟网络内转发分组。
背景技术
::2.在典型的云数据中心环境中,存在大量互连的服务器,这些服务器提供计算(例如,计算节点)和/或存储容量以运行各种应用。例如,数据中心包括为数据中心的客户托管应用和服务的设施。例如,数据中心托管所有基础设施设备,诸如联网和存储系统、冗余电源和环境控件。在典型的数据中心中,存储系统和应用服务器的集群经由一层或多层物理网络交换机和路由器所提供的高速交换结构互连。更复杂的数据中心为遍布全球的基础设施提供位于各种物理托管设施中的订户支持设备。3.由于敏感应用(例如实时)的部署不断增加,因此网络收敛和快速故障转移已成为高性能服务提供方联网中的重要工具。可以在数据中心中使用软件定义联网(sdn)平台,并且在一些情况下,可以使用逻辑上集中且物理上分布的sdn控制器以及虚拟路由器中的分布式转发平面,该虚拟路由器将网络从数据中心中的物理路由器和交换机扩展到虚拟化服务器(称为计算节点)中托管的虚拟覆盖网络中。sdn控制器提供虚拟化网络的管理、控制和分析功能,并通过与虚拟路由器进行通信来协调虚拟路由器。4.sdn控制器与计算节点的虚拟路由器之间的通信丢失可能会导致数据中心环境内基于云的服务降级或无法正常运行。类似地,sdn控制器与sdn网关之间的通信丢失也可能会中断基于云的服务的交付。sdn控制器可能需要花费一些时间来检测计算节点或sdn网关何时发生故障,并且一旦sdn控制器检测到故障,sdn控制器就需要花费一些时间来将反映故障的路由更新传送给其他计算节点和sdn网关。同时,覆盖网络中的其他设备将继续向故障计算节点或sdn网关发送业务,并且该业务将会被丢弃,这一问题称为“路径监测(blackholing)”。技术实现要素:5.大体上,本公开描述用于在sdn控制器与底层网络的设备之间的通信丢失时减少对软件定义联网(sdn)平台内的业务流的中断的技术。底层网络由物理设备和连接组成,覆盖网络通过这些物理设备和连接提供网络虚拟化。底层网络可以由物理节点组成,包括一个或多个网关路由器(在本文中也称为sdn网关)、计算节点以及以通信方式耦合计算节点和sdn控制器的基于交换机的互联网协议(ip)结构(在本文中也称为数据中心交换结构)的叶交换机(leafswitch)和脊交换机(spineswitch)。计算节点可以是执行针对一个或多个虚拟网络实现分布式转发平面的虚拟路由器的服务器。计算节点的sdn控制器和虚拟路由器进行通信以共享信息,以控制虚拟网络内的租户业务的转发以到达网络目的地。6.根据本公开的技术,ip结构的节点被配置为将计算节点路由传播到sdn控制器。sdn控制器维护覆盖路由表,该覆盖路由表存储由计算节点的虚拟路由器和/或数据中心的网关路由器直接向sdn控制器通告的覆盖网络路由(例如vpn路由)。sdn控制器还维护底层路由表,该底层路由表存储由sdn控制器在它通过与ip结构的节点交换路由协议消息来与ip结构同步底层网络路由状态时所获得的底层网络路由。sdn控制器在使用直接从计算节点接收到的覆盖网络路由转发网络业务之前,基于同步的底层网络路由状态执行下一跳可达性检查。以这种方式,底层网络路由的存在或缺失是用于控制覆盖网络中的覆盖网络路由的分发或撤消的触发。7.本公开描述了用于利用路由协议来传播静态底层网络路由以从交换结构的叶节点(例如,架顶式交换机)到达计算节点(例如,计算节点的节点定位器前缀,诸如计算节点的ipv4或ipv6前缀)的技术。ip结构的节点使用网络协议将计算节点的静态底层网络路由分发给sdn控制器。然后,sdn控制器将到计算节点的静态底层路由的存在与计算节点的“可达性”或“活性(liveness)”相关联,并且被配置为在将网络业务转发到与计算节点相关联的覆盖路由之前通过首先检查所存储的路由信息中是否存在路由来执行下一跳可达性检查。以这种方式,sdn控制器处底层网络路由的存在是sdn控制器将覆盖网络路由分发给覆盖网络中的对等体的触发。8.如本公开中所描述的,ip结构中的叶节点被配置为在每个叶节点的转发平面与相应计算节点的虚拟路由器之间运行故障检测协议会话,诸如双向转发检测(bfd)。以这种方式,ip结构中的叶节点可以快速检测到经由底层网络的叶节点与计算节点的通信何时故障。在一些示例中,bfd会话与叶节点与计算节点的虚拟路由器之间的边界网关协议会话相关联。如果叶节点的故障检测协议会话检测到与计算节点的虚拟路由器的通信故障,则叶节点通过将路由协议消息发送到ip结构中的脊节点来传送底层网络的故障,从而撤消与计算节点相关联的底层网络路由。脊节点又将底层网络路由撤消传送给sdn控制器,并且sdn控制器更新其底层网络路由表以撤消针对不可达的虚拟路由器或计算节点的底层网络路由。然后,sdn控制器将消息发送到其他计算节点、sdn网关或其他设备,以撤消与计算节点发生故障的底层通信相关联的静态底层路由。9.以这种方式,sdn控制器被配置为将覆盖网络路由(vpn路由)的通告(advertisement)与静态底层网络路由的存在或缺失联系起来。如果存在静态底层网络路由,则sdn控制器仅将针对给定虚拟路由器的覆盖网络路由通告给该覆盖的其他虚拟路由器。通过经由bfd触发和控制底层网络路由的撤消,sdn控制器控制覆盖路由的通告,否则该通告就无法与bfd的活性检测联系在一起。10.以这种方式,本公开的技术可以改进基于sdn的服务的可用性。本公开的技术可以提供一种或多种优点。例如,本公开的技术可以提供计算节点与ip结构的更好集成。此方法考虑了虚拟化基础设施的各种元素:网络虚拟化解决方案(包括计算节点上的sdn控制器和虚拟路由器/虚拟代理(agent))、底层交换层(例如,基于交换机的ip结构)以及sdn网关(例如路由器)。在一些方面中,本公开提供了一种用于覆盖网络和ip结构之间的集成的方法,并且解决了该方法引起的一些复杂性。11.例如,这些技术可以通过更快地将转发状态与网络拓扑的实际状态收敛来避免业务路径监测并提供更好的路由一致性。在一些方面中,在链路聚合组的所有成员链路上使用微bfd可以帮助提供更快的故障检测。该技术可以提供sdn控制器控制平面的良好稳定性,因为仅以下一跳可达性检查的形式检查数据平面,以确认隧道端点的活性。该技术还可以避免由于底层故障而导致的假阳性情况,这种情况可能潜在地导致覆盖网络中的双重故障(例如,同时发生主故障和备份故障)。12.在一个示例方面中,一种方法包括:由软件定义联网(sdn)控制器存储底层路由表和覆盖路由表,底层路由表具有针对数据中心的底层网络的一组路由,覆盖路由表具有针对用于数据中心的覆盖网络的至少一个虚拟网络的一组路由,其中底层网络包括多个物理网络交换机、网关路由器和在数据中心的相应计算节点上执行的一组虚拟路由器;在sdn控制器的底层路由表内,安装到被指派给虚拟路由器中的特定虚拟路由器的目的地地址的路由,作为对底层网络中的特定虚拟路由器的可达性状态的指示符;以及利用sdn控制器并且基于在底层路由表内到虚拟路由器中的特定虚拟路由器的路由的存在或缺失,控制针对覆盖网络的至少一个虚拟网络的多个路由中的一个或多个路由的通告。13.在另一示例方面中,sdn控制器包括与存储器通信的处理电路装置,该处理电路装置被配置为:存储底层路由表和覆盖路由表,底层路由表具有针对数据中心的底层网络的一组路由,覆盖路由表具有针对用于数据中心的覆盖网络的至少一个虚拟网络的一组路由,其中底层网络包括多个物理网络交换机、网关路由器和在数据中心的相应计算节点上执行的一组虚拟路由器;在sdn控制器的底层路由表内,安装到被指派给虚拟路由器中的特定虚拟路由器的目的地地址的路由,作为对底层网络中的特定虚拟路由器的可达性状态的指示符;以及基于在底层路由表内到虚拟路由器中的特定虚拟路由器的路由的存在或缺失,控制针对覆盖网络的至少一个虚拟网络的多个路由中的一个或多个路由的通告。14.在另一示例中,方法包括:在数据中心的底层网络的互联网协议(ip)结构的叶交换机的路由表内,安装到被指派给在计算节点上执行的虚拟路由器的目的地地址的底层网络路由,其中底层路由提供对特定虚拟路由器的可达性状态的指示符;并且由叶交换机经由在叶交换机与虚拟路由器之间建立的故障检测协议会话而确定虚拟路由器未响应故障检测协议会话;以及响应于确定虚拟路由器未响应故障检测协议会话,由叶交换机向与管理覆盖网络的sdn控制器对等的脊节点发送撤消与虚拟路由器相关联的底层网络路由的路由撤消消息,以指示与虚拟路由器的通信故障。15.在下面的附图和说明书中陈述一个或多个示例的细节。其它特征、目标和优点将通过说明书、附图和权利要求书而变得明显。附图说明16.图1是图示了具有数据中心的示例网络系统的框图,在该数据中心中可以实现本文描述的技术的示例。17.图2是进一步详细地图示了图1的数据中心的示例实现的框图。18.图3是进一步详细地图示了图2的数据中心的示例实现的框图。19.图4是根据本公开技术的更详细地图示了sdn控制器的控制节点的示例的框图。20.图5a-图5b是根据本公开技术的进一步详细地图示了计算节点的示例的框图。21.图6是图示了具有专用子网的一对叶交换机的概念图。22.图7是图示了使用内部网关协议将虚拟路由器主机路由重新分配到ip结构的概念图。23.图8是图示了根据本公开技术的各个方面的网络设备的示例操作的流程图。24.图9是图示了在包括sdn网关的自主系统与包括ip结构和sdn控制器的自主系统之间的外部bgp对等的概念图。25.图10是图示了ip结构的节点向sdn网关通知计算节点故障的系统的概念图。26.图11是图示了在sdn网关和脊交换机之间使用多跳ebgp的网络拓扑的概念图。27.图12是图示了在sdn网关故障的情况下用于收敛的示例过程的概念图。28.图13是图示了bgp即服务(bgpaas)布置的概念图,其中单个控制节点提供单点故障。29.图14是图示了使用bgpaas控制节点区域的冗余bgpaas设计的概念图。30.图15是图示了使用主和次控制节点区域来改进vnf路由稳定性的冗余bgpaas设计的概念图。31.图16是图示了裸金属服务器被连接在专用叶交换机上的系统的概念图。32.图17是图示了根据本公开的各个方面的使用集成式路由和桥接(irb)集成的示例虚拟路由器到叶交换机ecmp附接的逻辑表示的概念图。33.图18是图示了sdn网关功能与ip结构的脊功能折叠在一起的网络设计的概念图。34.图19是图示了折叠的sdn网关/ip结构设计网络设计的示例信令概述的概念图,其中sdn网关功能与ip结构的脊功能折叠在一起。35.图20a-图20b是图示了虚拟路由器的转发信息库(fib)结构的概念图,该结构具有对前缀数量的线性收敛时间依赖性。36.图21a-图21b是图示了根据本公开技术的各个方面的针对转发信息库中的复合下一跳的示例转发结构的概念图。37.图22是图示了根据本公开技术的网络设备的示例操作的流程图。具体实施方式38.图1是图示了具有数据中心10的示例网络系统5的框图,在该数据中心10中可以实现本文描述的技术的示例。在网络系统5中,sdn控制器32、计算节点26a-26x(“计算节点26”)、sdn网关8a-8b(“sdn网关8”)和互联网协议(ip)结构20的节点根据本文描述的技术进行操作,以确保客户业务流和在云数据中心内执行的客户应用能够继续进行而不会中断。39.通常,数据中心10为通过服务提供方网络6被耦合到数据中心10的客户4提供应用和服务的操作环境。客户4通过提供方边缘(pe)设备12被耦合到服务提供方网络6。数据中心10托管基础设施设备,诸如联网和存储系统、冗余电源和环境控件。服务提供方网络6可以被耦合到由其他提供方管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,互联网)的一部分。40.在一些示例中,数据中心10可以表示许多地理上分布的网络数据中心之一。如图1的示例中所示,数据中心10是为客户4提供网络服务的设施。客户4可以是诸如企业和政府等集体实体,或个人。例如,网络数据中心可以为多个企业和最终用户托管web服务。其他示例服务可以包括数据存储、虚拟专用网络、业务工程、文件服务、数据挖掘、科学或超级计算等。在一些示例中,数据中心10是单独的网络服务器、网络对等体或其他。41.在本示例中,数据中心10包括一组存储系统和应用服务器,它们经由一层或多层物理网络交换机和路由器所提供的ip结构20互连。计算节点26是充当数据中心的计算节点的服务器。在一些示例中,术语“计算节点”和“服务器”在本文中可互换使用,以指代计算节点26。例如,每个计算节点26可以提供用于执行一个或多个客户特定虚拟机(图1中的“vm”)的操作环境。ip结构20由一组互连的叶交换机24a-24n(统称为“叶交换机24”)提供,这些叶交换机24a-24n被耦合至脊交换机22a-22m(统称为“脊交换机22”)的分布层。叶交换机24也可以被称为架顶式(tor)交换机。脊交换机22也可以被称为脊交换机。尽管未示出,但是数据中心10还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、安全设备(诸如防火墙、入侵检测和/或入侵防御设备)、服务器、计算机终端、膝上型电脑、打印机、数据库、无线移动设备(诸如蜂窝电话或个人数字助理)、无线接入点、桥接器、电缆调制解调器、应用加速器或其他网络设备。42.在本示例中,叶交换机24和脊交换机22向计算节点26提供到ip结构20的冗余(多宿主)连接性。脊交换机22聚合业务流并提供叶交换机24之间的高速连接性。叶交换机24是提供层2(例如,mac)和/或层3(例如,ip)路由和/或交换功能性的网络设备。叶交换机24和脊交换机22各自包括一个或多个处理器和存储器,并且能够执行一个或多个软件过程。sdn网关8(也被称为网关路由器)是执行层3路由以通过服务提供方网络6在数据中心10和客户4之间路由网络业务的路由设备。sdn网关8提供冗余网关以在ip结构20和服务提供方网络6之间转发和接收分组。43.根据本公开的一个或多个示例,sdn控制器32提供逻辑上的并且在一些情况下物理上的集中式控制器,用于促进数据中心10内的一个或多个虚拟网络的操作。贯穿本公开,术语sdn控制器和虚拟网络控制器(“vnc”)可以互换使用。在一些示例中,sdn控制器32响应于经由北向应用编程接口(api)31从编排引擎30接收到的配置输入而操作,该api又响应于从管理员28接收到的配置输入而操作。关于sdn控制器32结合数据中心10的其他设备或其他软件定义网络进行操作的附加信息在2013年6月5日提交的国际申请号pct/us2013/044378中找到,该申请的标题为“physicalpathdeterminationforvirtualnetworkpacketflows”,该案件通过引用并入本文就如同在本文进行了充分阐述一样。44.在一些示例中,编排引擎30管理数据中心10的功能,诸如计算、存储、联网和应用资源。例如,编排引擎30可以为数据中心10内或跨数据中心的租户创建虚拟网络。编排引擎30可以将虚拟机(vm)连接到租户的虚拟网络。编排引擎30可以将租户的虚拟网络连接到某个外部网络,例如互联网或vpn。编排引擎30可以跨一组vm实现安全策略或将安全策略实现到租户网络的边界。编排引擎30可以在租户的虚拟网络中部署网络服务(例如负载平衡器)。45.在一些示例中,sdn控制器32管理网络和联网服务,诸如负载平衡、安全性,并经由南向api33将来自计算节点26的资源分配给各种应用。即,南向api33表示sdn控制器32用来使网络的实际状态等于编排引擎30指定的期望状态的一组通信协议。例如,一种这样的通信协议可以包括诸如xmpp等消息传递协议。例如,sdn控制器32通过配置物理交换机来实现来自编排引擎30的高级请求,物理交换机例如叶交换机24、脊交换机22;物理路由器;物理服务节点,诸如防火墙和负载平衡器;以及虚拟服务,诸如vm中的虚拟防火墙。sdn控制器32维护状态数据库内的路由、联网和配置信息。sdn控制器32将路由信息和配置信息的适当子集从状态数据库传送到每个计算节点26a-26x上的虚拟路由器(vr)代理36a-36x(图1中的“va”)。46.通常,任何两个网络设备之间的业务,诸如ip结构20内的网络设备之间,或计算节点26与客户4之间,或计算节点26之间,例如都可以使用许多不同的路径遍历物理网络。例如,两个网络设备之间可能存在多个等成本的不同路径。在一些情况下,可以在每个网络交换节点处使用被称为多路径路由的路由策略,将属于从一个网络设备到另一网络设备的网络业务的分组分发到各种可能的路径中。例如,互联网工程任务组(ietf)rfc2992“analysisofanequal-costmulti-pathalgorithm”描述了一种用于沿等成本的多个路径路由分组的路由技术。rfc2992的技术分析了一种特定的多路径路由策略,该策略涉及通过对分组报头字段进行哈希处理来将流指派到仓(bin),该分组报头字段通过单个确定性路径从特定网络流发送所有分组。47.例如,“流”可以由分组的报头中使用的五个值定义,或用于通过物理网络路由分组的“五元组”,即协议、源ip地址、目的地ip地址、源端口和目的地端口。例如,协议指定通信协议(诸如tcp或udp),并且“源端口”和“目的地端口”是指连接的源端口和目的地端口。与特定流条目匹配的一组一个或多个分组数据单元(pdu)表示流。可以使用pdu的任何参数(诸如源和目的地数据链路(例如mac)和网络(例如ip)地址、虚拟局域网(vlan)标签、传输层信息、多协议标签交换(mpls)或通用mpls(gmpls)标签)、以及接收该流的网络设备的入口端口对流进行大致分类。例如,流可以是在传输控制协议(tcp)连接中传输的所有pdu、由特定mac地址或ip地址来源的所有pdu、具有相同vlan标签的所有pdu或在同一交换端口处接收的所有pdu。48.如本文所描述的,每个计算节点26包括相应的虚拟路由器(图1中的“vr”),其为数据中心10内的对应虚拟网络执行多个路由实例,并将分组路由到在服务器所提供的操作环境内执行的适当虚拟机。由计算节点26a的虚拟路由器例如从底层物理网络结构接收的分组可以包括外部报头,以允许物理网络结构将有效负载或“内部分组”隧道传输到执行虚拟路由器的计算节点26的网络接口的物理网络地址。外部报头不仅可以包括服务器的网络接口的物理网络地址,还可以包括虚拟网络标识符,诸如标识虚拟网络之一以及由虚拟路由器或接口执行的对应路由实例的虚拟扩展局域网(vxlan)标签或多协议标签交换(mpls)标签。即,mpls标签可以映射到路由实例或接口。内部分组包括内部报头,该内部报头的目的地网络地址符合由虚拟网络标识符标识的虚拟网络的虚拟网络寻址空间。在一些方面中,虚拟路由器在将从底层物理网络结构接收到的多个隧道传输的分组缓冲并聚合之后,再传递到该分组的适当路由实例。49.在图1的示例中,sdn控制器32学习并将路由和其他信息(诸如配置信息)分发给数据中心10中的所有计算节点。在从sdn控制器32接收到路由信息后,在计算节点内部运行的vr代理36通常对带有转发信息的数据转发元素(虚拟路由器)进行编程。sdn控制器32使用诸如xmpp协议等消息传递协议将路由和配置信息发送到vr代理36。在xmpp中,sdn控制器32和代理在同一信道上传送路由和配置。当从vr代理36接收覆盖网络路由(虚拟路由)时,sdn控制器32充当消息传递协议客户端,并且在这种情况下,vr代理36充当消息传递协议服务器。相反,当sdn控制器向vr代理36发送路由(包括从sdn网关或其他计算节点学到的覆盖网络路由以及针对从ip结构中学到的其他计算节点的底层网络路由)时,sdn控制器32充当作为消息传递协议客户端的vr代理36的消息传递协议服务器。50.图1所示的软件定义联网方法借助于覆盖联网提供计算节点级别的网络虚拟化。然而,sdn性能需要满足服务提供方的高要求的wan服务级别协议(sla)。例如,对于任何故障用例,一些sla要求可能要求网络在sdn控制器、ip结构和sdn控制器之间的sdn集成中达到亚秒级收敛(停机时间为0.5秒)。在网络中,网络设备必须基于当前的网络拓扑维护路由信息和转发信息,该信息准确反映如何将业务发送到目的地。收敛是网络中的设备在改变网络拓扑后准确更新其路由信息和转发信息的过程。例如,由于缺少特征、其他计算os/oss/内核依赖项的设计限制或产品限制(诸如控制平面缓慢、低端交换机上的fib写入速度),一些场景下满足收敛时间要求可能更具挑战性。51.收敛可能涉及三个阶段:检测、局部修复和全局修复。在检测中,节点检测到已发生故障。在图1的示例中,作为一些示例,虚拟机、物理网络功能(pnf)或ip结构中可能会发生故障。只有在检测之后,才能强制执行纠正措施,诸如通过对新的转发路径路由更新进行编程。在虚拟环境中进行检测需要时间。与在链接断开事件可以与检测相关联的物理环境不同,虚拟环境可能依赖于保持活跃机制来检测故障。处理快速收敛时,必须限制“检测时间”。52.局部修复也可以被称为快速重路由(frr)或快速收敛。在检测到故障之后,局部系统可以立即将业务转移到备份路径(如果有)(即,先前已发出信号的备份)。在这一点上,其他系统尚未采取任何纠正措施,并且可能根本不了解拓扑变化。53.全局修复(也可以被称为网络收敛)发生在对网络中的所有系统都通知了拓扑并已强制执行纠正措施(如果适用)后,理想的是通过路由协议传播拓扑变化的信令。全局修复后,网络处于稳定状态,控制平面中的路由信息与编程到数据转发路径中的转发信息一致。服务的可用性受计时器、网络能力和设计的约束。从服务可用性的角度来看,只要网络已经提供了备选转发路径,局部收敛就足够了。这是数据中心架构中的典型情况,在该架构中,等成本多路径(ecmp)或绑定提供本机冗余路径。54.软件定义网络的物理节点和物理连接被称为底层网络,而将软件定义网络的虚拟节点逻辑连接以形成的虚拟节点和元素被称为覆盖网络。在诸如图1的网络系统5等虚拟化环境中,在底层网络中可能发生不同类型的故障。底层网络可以由物理节点组成,包括sdn网关8、ip结构20的叶交换机24和脊交换机22、计算节点26、以及这些元素之间的物理连接(例如,链接)。在图1的示例中,底层网络中可能存在几处故障点:网关故障、网关到脊链路故障、脊故障、脊到叶链路故障、叶故障、叶到计算节点链路故障、计算链路故障、计算节点故障和裸金属服务器(bms)故障。覆盖网络中也可能存在故障(例如,诸如虚拟机故障或pod故障等工作负载故障),但是通常可以在亚秒时间帧内检测到并解决这些故障,因此与一些底层网络故障类型相比,这可能不是一个大问题。55.网关故障描述如下。每个sdn网关8都经由多协议边界网关协议(mp-bgp)与sdn控制器32的控制节点对等。网络系统5包括两个sdn网关,以实现高可用性。当实现选项b自主系统(as)间框架时,每个sdn网关8都充当:从虚拟路由器的角度来看,对于源自网关以外的或源自网关的所有前缀,隧道端点(mplsoverudp、mplsovergre或vxlan)。从远程pe设备12的角度来看,每个sdn网关8也都充当出口pe(下一跳)。尽管是根据mplsoverudp进行描述的,但在一些示例中,分段路由mpls(sr-mpls)、mplsovermpls或srv6都可以点检测到(例如,使用bfd)并经由ip结构节点被传送给sdn控制器,然后sdn控制器向其他计算节点、sdn网关或其他设备发送消息以撤消与发生故障的计算节点相关联的覆盖路由。以这种方式,将覆盖网络中的路由与底层中的bfd联系在一起,有效地使用“静态”底层路由作为用于控制是否向覆盖网络设备通告或撤消vpn路由的标志。62.根据本公开的技术,ip结构20的节点被配置为分发计算节点路由,包括将路由传送到sdn控制器32。此外,ip结构20的节点将针对sdn网关8的路由分发给sdn控制器32。例如,ip结构20经由bgp将虚拟路由器计算节点的ip地址和sdn网关环回(loopback)地址传播到控制节点。本地叶交换机针对虚拟路由器vhostip地址(即隧道端点)生成前缀路由条目。计算节点的活性可以首先基于网络接口卡(nic)链路状态,然后在第二步中利用面向虚拟路由器的微bfd会话进行进一步优化,以进行更好的运行状况追踪。63.sdn控制器32维护路由表,并使路由状态与ip结构的igp(这里可以是例如ebgp)同步,并且sdn控制器32执行下一跳可达性检查。基于计算ip地址前缀(例如,对于ipv4为/32)的存在,在sdn控制器32和sdn网关8的控制节点处强制执行下一跳可达性检查。例如,sdn控制器32可以被配置有控制适当的下一跳是什么的策略。在一些示例中,下一跳可达性检查可以仅在/32路由(即到唯一设备的主机路由)上被强制执行。如果针对隧道端点不存在/32下一跳路由,则针对/32下一跳的所有相关前缀都标记为发生故障,并从虚拟路由器转发平面撤消。在bms集成的情况下,该原理也可以适用于任何vxlan隧道端点(vtep)。以这种方式,sdn控制器处底层网络路由的存在是针对将覆盖网络路由分发给覆盖网络中的对等体的sdn控制器的触发。64.例如,sdn控制器32存储具有针对数据中心10的底层网络的一组路由的底层路由表和具有针对数据中心的覆盖网络的至少一个虚拟网络的一组路由的覆盖路由表,其中底层网络包括ip结构20的多个物理网络交换机、网关路由器(诸如sdn网关8)和在数据中心10的相应计算节点26上执行的一组虚拟路由器。该技术包括:在sdn控制器32的底层路由表内,安装到被指派给虚拟路由器中的特定虚拟路由器的目的地地址的路由,作为到底层网络中的特定虚拟路由器的可达性状态的指示符;以及利用sdn控制器32并且基于在底层路由表内到虚拟路由器中的特定虚拟路由器的路由的存在或缺失,控制针对覆盖网络的至少一个虚拟网络的路由中的一个或多个路由的通告。65.本公开的技术可以提供底层网络中的虚拟路由器与ip结构20的更好集成。出于上述原因,快速收敛是虚拟化环境中的关键问题,可以使用分阶段的方法来满足短期目的。66.以这种方式,以使云联网能够继续操作的方式来配置sdn控制器32、计算节点26、sdn网关8和ip结构20的节点,即使sdn网关8或计算节点26发生故障。因此,当计算节点26或sdn网关8中的一者发生故障时,数据中心10确保客户业务流和在云数据中心内执行的客户应用继续进行而不会中断。67.图2是进一步详细地图示了图1的数据中心10的示例实现的框图。在图2的示例中,数据中心10包括计算节点26a-26x,这些计算节点包括虚拟路由器42a-42x(统称为“虚拟路由器42”,有时也被称为ꢀ“vrouter”)。响应从sdn控制器32接收到的指令,虚拟路由器42动态地创建和管理可用于应用实例之间通信的一个或多个虚拟网络(“vn1、vn0”)46。68.在一个示例中,虚拟路由器42将虚拟网络作为覆盖网络执行,该网络提供了将应用的虚拟地址与应用在其上执行的计算节点26a-26x(“计算节点26”)之一的物理地址(例如ip地址)分离的能力。每个虚拟网络可以使用其自己的寻址和安全方案,并且可以被视为与物理网络及其寻址方案正交。可以使用各种技术来通过物理网络在虚拟网络46之内和之间传输分组。69.每个虚拟路由器42在管理程序、主机操作系统或每个计算节点26的其他组件内执行。每个计算节点26表示能够执行虚拟机48的x86或其他通用或专用服务器。在图2的示例中,虚拟路由器42a在管理程序40(通常也称为虚拟机管理器(vmm))内执行,管理程序40提供虚拟化平台,该虚拟化平台允许多个操作系统同时在计算节点26之一上运行。在图2的示例中,虚拟路由器42a管理虚拟网络46,每个虚拟网络提供用于在由管理程序40提供的虚拟化平台之上执行一个或多个虚拟机(vm)48的网络环境。每个vm48与虚拟网络vn0-vn1之一相关联,并且表示运行客户应用(诸如web服务器、数据库服务器、企业应用)或托管用于创建服务链的虚拟化服务的租户vm。在一些情况下,计算节点26中的任何一个或多个计算节点或另一计算设备直接托管客户应用,即不作为虚拟机。本文中所引用的虚拟机,例如,vm48、计算节点26或托管客户应用的单独的计算设备都可以替代地称为“主机”。70.通常,每个vm48可以是任何类型的软件应用,并且被指派有在对应虚拟网络46内使用的虚拟地址,其中每个虚拟网络可以是由虚拟路由器42a提供的不同的虚拟子网。vm48可以被指派有其自己的虚拟层3(l3)ip地址,例如,用于发送和接收通信,但是不知道虚拟机在其上执行的物理计算节点26a的ip地址。以这种方式,“虚拟地址”是针对应用的地址,其不同于针对底层物理计算机系统的逻辑地址,例如图2的示例中的计算节点26a。虚拟地址在本文中也可以被称为“虚拟接口”。71.在一种实现中,每个计算节点26包括vr代理36a-36x中的一个对应的vr代理,该vr代理与sdn控制器32通信,并响应于此而指导虚拟路由器42,以便控制虚拟网络46的覆盖并协调计算节点26内的数据分组的路由。通常,每个vr代理36与sdn控制器32通信,这生成控制分组通过数据中心10的路由传送的命令。72.vr代理36在用户空间中执行,并充当vm48和sdn控制器32之间的控制平面消息的委托(proxy)。例如,vm48可以请求经由vr代理36a使用其虚拟地址发送消息,并且vr代理36a又可以发送该消息,并请求针对发起第一消息的vm48的虚拟地址接收对该消息的响应。在一些情况下,vm48调用由vr代理36a的应用编程接口呈现的过程或功能,并且vr代理36a也处理消息的封装,包括寻址。73.在一些示例实现中,每个计算节点26a还包括与编排引擎30直接通信的编排代理(图2中未示出)。例如,响应于来自编排引擎30的指令,编排代理传送在相应的计算节点26上执行的特定vm48的属性,并且可以创建或终止单独的vm。74.在一个示例中,可以将由虚拟网络域内的虚拟机48执行的应用实例生成或消费的网络分组(例如,层3(l3)ip分组或层2(l2)以太网分组)封装在物理网络所传输的另一分组(例如,另一ip或以太网分组)中。在虚拟网络中传输的分组在本文中可以被称为“内部分组”,而物理网络分组在本文中可以被称为“外部分组”或“隧道分组”。物理网络分组内的虚拟网络分组的封装和/或解封装可以在虚拟路由器42内被执行,例如,在每个计算节点26上运行的管理程序或主机操作系统内。作为另一示例,在第一跳架顶式(tor)交换机24处的ip结构20的边缘处执行封装和解封装功能,其是从发起分组的应用实例中移除的一跳。该功能性在本文中被称为隧道,并且可以在数据中心10内被使用以创建一个或多个覆盖网络。除了ip-in-ip之外,其他可以使用的示例隧道协议包括ipovergre、vxlan、mplsovergre、mplsoverudp等。75.如上所提到的,sdn控制器32提供逻辑上集中的控制器,用于促进数据中心10内一个或多个虚拟网络的操作。例如,sdn控制器32维护路由信息库,例如,存储数据中心10的物理网络以及一个或多个覆盖网络的路由信息的一个或多个路由表。路由信息库可以包括覆盖网络路由信息和底层网络路由信息,如本文所描述的。类似地,脊交换机22、叶交换机24和虚拟路由器42维护路由信息,诸如一个或多个路由和/或转发表。在一个示例实现中,管理程序40的虚拟路由器42a为每个虚拟网络46实现网络转发表(nft)44。通常,每个nft44存储针对对应虚拟网络46的转发信息,并标识数据分组将在何处转发以及是否将分组封装在隧道协议中,诸如利用隧道报头来封装,该隧道报头可以包括针对虚拟网络协议栈的不同层的一个或多个报头。另外,虚拟路由器42a维护底层路由信息,该底层路由信息存储从sdn控制器32学到的与计算节点26或sdn网关8中的其他一些相关联的底层路由。根据本公开的技术,网络转发表44还可以存储与底层路由相关联的转发信息。76.例如,虚拟机vm1-48可以通过内部链路将“内部分组”发送到虚拟路由器42a。虚拟路由器42a使用nft1来查找该分组的虚拟网络目的地网络地址。nft1为虚拟路由器42a指定出站接口并为分组指定封装。虚拟路由器30a应用封装以添加隧道报头以生成外部分组,并在出站接口上输出该外部分组,在这种情况下,向叶交换机24a输出该外部分组。77.例如,路由信息将分组密钥信息(例如,来自分组报头的目的地ip信息和其他选择信息)映射到虚拟路由器42和ip结构20所提供的网络内的一个或多个特定的下一跳。在这种情况下,下一跳是链接在一起的下一跳,其指定在转发分组时将在每个分组上被执行的一组操作,诸如可以用于泛洪下一跳和多播复制的操作。如图2所示,每个虚拟网络46为通过ip结构20建立的覆盖网络提供用于封装分组通信的通信框架。以这种方式,与任何虚拟机48相关联的网络分组可以经由封装网络作为封装的分组通信进行传输。78.每个vr代理36可以通过xmpp会话将消息发送到sdn控制器32,该消息将虚拟路由传递到计算节点26的vm的虚拟接口(虚拟地址)。虚拟路由在本文中被称为覆盖网络路由。例如,vr代理36a发送包含针对计算节点26a的覆盖网络路由的xmpp消息37a。sdn网关8还可以例如经由bgp会话向sdn控制器32发送消息,该消息包含针对sdn网关的覆盖网络路由。这可以包括来自“非sdn”周界的覆盖路由,诸如sdn网关8向sdn控制器32发送经由sp网络6接收的客户4路由。例如,sdn网关8a将覆盖网络路由37b发送到sdn控制器32。sdn控制器32接收消息并将虚拟路由存储到覆盖路由信息,并可以依次将从第一vr代理36接收到的一个或多个覆盖路由通告给其他vr代理36(经由xmpp)和sdn网关8(例如,经由bgp),诸如分别经由消息38a、38b。在一些示例中,任何覆盖路由都可以包括前缀、与计算节点26的服务器相关联的下一跳地址、以及标签或其他数据,以标识在下一跳服务器处配置的虚拟路由和转发实例。虚拟路由可以包括路由区分符(distinguisher)(rd)。bgp信令ip/vpn的更多详细信息在s.mackie于2016年12月15日发布在网络工作组互联网草案上的bgp信令终端系统ip/vpn中进行了描述,其全部内容通过引用并入本文。79.然而,当计算节点26之一发生故障或变得不可达时,sdn控制器32需要时间来学习此信息,然后又将撤消故障计算节点的覆盖网络路由通告给其他计算节点26和sdn网关8。本公开的技术提供了一种机制,用于使sdn控制器32基于底层网络路由通过从ip结构20中的设备学习此信息来更快地知晓该故障。本公开还提供了在被告知底层网络路由已撤消之后用于转发信息的局部修复的技术。这些方面可以在一些示例中一起使用或独立使用。80.根据本公开的技术,叶交换机24中的每一个可以被配置为生成bgp消息并将其发送到脊交换机22,脊交换机22将底层网络路由通告给计算节点。例如,叶交换机24a向脊交换机22a发送路由协议消息45,以将底层网络路由通告给计算节点26a。叶交换机24a可以在检测到计算节点26a的arp活动时生成路由协议消息45。到计算节点26a的底层网络路由可以包括与计算节点26a的服务器相关联的前缀。81.在一些示例中,计算节点26a本身可以执行路由协议过程并运行到作为bgp对等体的叶交换机24a的bgp会话,并且计算节点26a可以将bgp消息发送到叶交换机24a,以通告计算节点26a的环回地址,这又触发叶交换机生成到脊交换机22a的路由协议消息45。用于在ip结构20内以及在计算节点与ip结构之间传递消息的路由协议可以是bgp、具有扩展的bgp、胖树路由(routinginfattrees)(rift)协议、isis、ospf或其他路由协议(包括:例如,专有的路由协议)。在图17中讨论了关于该方法的更多细节。82.到计算节点26a的底层网络路由通过ip结构20向上传播(可以包括图2中未示出的附加级别),直到脊交换机22a发送路由协议消息47,通过在脊交换机22a与控制节点54a之间的bgp会话51将底层网络路由通告给sdn控制器32的控制节点54a。尽管出于示例目的仅示出了到控制节点54a的单个bgp会话51,但是在一些示例中,脊交换机22a还可以具有与控制节点54a的bgp会话,并且类似地,其他脊交换机22可以具有与一个或多个控制节点的对应bgp会话。83.sdn控制器32将xmpp消息发送到计算节点26b-26x,以将学习到的底层路由通告给计算节点26a。sdn控制器32将bgp消息发送到sdn网关8,以通告学习到的底层路由。类似地,sdn控制器32可以将消息发送到计算节点和其他sdn网关,以向经由ip结构20学习到的底层路由通告给sdn网关8。sdn控制器32和sdn网关8针对/32路由(或/128ipv6地址或超网)执行下一跳可达性检查,如本文所述,使得它们仅通告具有经由ip结构20学习到的对应底层网络路由的覆盖网络路由。84.响应于例如经由bfd会话检测到诸如计算节点26a等计算节点的故障,叶交换机24a将底层网络路由沿ip结构20向上的撤消传播至sdn控制器32,并从sdn控制器32传播至计算节点26b-26x和sdn网关8。例如,叶交换机经由在叶交换机和在计算节点上执行的虚拟路由器之间建立的故障检测协议会话来确定计算节点未响应故障检测协议会话,并且响应于确定计算节点未响应故障检测协议会话,叶交换机向脊节点发送撤消与计算节点相关联的底层网络路由的路由撤消消息。85.继而,计算节点26b-26x和sdn网关8更新其转发平面以移除计算节点26a的下一跳。在一些示例中,更新转发平面可以包括使用正交活性向量和与前缀无关的收敛的局部修复技术,如下面进一步详细描述的。86.以这种方式,根据本公开的技术,sdn控制器32被配置为基于ip结构20是否已经通告或撤消了对应底层路由来确定覆盖网络路由是否可达,因此潜在地通过仅将业务转发到可达的下一跳来减少服务停机时间和对其客户的干扰。87.图2中所示的数据中心10的架构仅出于示例目的而被示出。可以在图2的示例数据中心10以及本文没有具体描述的其他类型的数据中心中实现本公开中阐述的技术。本公开中的任何内容都不应被解释为将本公开的技术局限于图2所示的示例架构。88.图3是进一步详细地图示了图2的数据中心的示例实现的框图。在图3的示例中,sdn控制器32包括一个或多个分析节点50a-50x(统称为“分析节点50”)、一个或多个配置节点52a-52x(统称为ꢀ“配置节点52”)和控制节点54a-54x(统称为“控制节点54”)。通常,节点50、52和52中的每一个可以被实现为单独的软件过程,并且节点可以被分布在提供用于执行软件的环境的多个硬件计算平台上。此外,每个节点维护状态数据库56,该状态数据库56可以被存储在集中式或分布式数据库内。在一些示例中,状态数据库56是nosql数据库。在一些示例中,状态数据库56是数据库集群。89.通常,分析节点50的任务是收集、存储、关联和分析来自数据中心10内的虚拟和物理网络元素的信息。该信息可以包括用于管理数据中心10的路由和网络配置的统计、日志、事件和错误。分析节点50将该信息存储在状态数据库56中。90.配置节点52将编排引擎30的高级数据模型转换为适合与诸如物理交换机22、24和vr代理36等网络元素进行交互的低级模型。配置节点52将sdn控制器32的配置状态的持久副本保持在状态数据库56(“statedata56”)内。91.控制节点54实现负责维护临时网络状态的逻辑上集中的控制平面。控制节点54彼此交互,并与网络元素(诸如vr代理36和计算节点26的虚拟路由器42)进行交互,以确保网络状态最终与编排引擎30所指定的期望状态一致。通常,控制节点54从配置节点52接收sdn控制器32的配置状态信息,并经由ibgp相互交换路由,以确保所有控制节点54都具有相同的网络状态。此外,控制节点54经由xmpp与计算节点26上的vr代理36交换路由。控制节点54还例如经由xmpp将诸如路由实例和转发策略等配置状态信息传送给vr代理36,以安装在相应虚拟路由器42内。在一些示例中,控制节点54可以代表计算节点26来委托业务。可以通过xmpp接收这些委托请求。此外,控制节点54经由bgp与sdn网关8交换路由,并且经由netconf与服务节点21交换sdn控制器32的配置状态。92.配置节点52提供发现服务,客户4可以使用该发现服务来定位网络内可用的各种服务。例如,如果vr代理36a尝试与控制节点54a连接,则其使用配置节点52提供的发现服务来发现控制节点54a的ip地址。在vm48上执行的客户端可以使用本地配置、dhcp或dns在配置节点52内定位服务发现服务器。93.在一些示例中,配置节点52呈现与编排引擎30接口连接的北向api。编排引擎30使用该接口来使用高级数据模型安装配置状态。配置节点52还包括消息总线,以促进内部组件之间的通信。配置节点52还包括变换器,该变换器发现编排引擎30的高级模型中的改变,并将这些改变转换为由sdn控制器32管理的低级数据模型中的对应改变。配置节点52还包括if-map服务器,该if-map服务器提供南向api以将计算的低级配置向下推送到控制节点54。此外,配置节点52包括分布式应用管理器,其用于分配唯一的对象标识符并实现跨数据中心10的事务。94.根据本公开的技术,在sdn网关故障或计算节点故障的情况下,发生以下事件序列:叶交换机检测隧道端点故障(即,网关和vrouter)。对于作为隧道端点的sdn网关8,将经由bfd/链路断开来监测这些环回的可达性,以实现在网关和ip结构(在此情况下为脊设备)之间的单跳ebgp对等连接。对于vrouter,bfd链路断开检测允许检测计算节点叶级别的故障。使用微bfd进行增强是可能的。将隧道端点ip地址经由mp-bgp传播到控制节点。95.因此,如果任何隧道端点发生故障,则bgp撤消信息被向上传播到控制节点,这触发vrouter级别的转发条目的移除。有两种选择可实现vrouter级别的转发条目的移除。(1)第一种选择是通过快速检测进行全局修复(仅在控制节点上进行代码改变):在控制节点中实现下一跳(nh)可达性检查。在隧道端点发生故障的情况下,控制节点将向所有vrouter代理发送所有前缀的更新。该选择相对于将被更新(vrouterfib更新)的前缀数量引入了线性依赖性。在大规模场景下,将无法满足亚秒级目的,这就是下面建议进行增强(局部修复)的原因。96.(2)第二种选择是局部修复,以便在大规模场景下获得最佳收敛时间。在这种情况下,所有隧道终结点前缀的可达性信息都会被向上传播到vrouter代理。如果发生故障,控制节点会通知代理端点丢失(撤消)。vrouter代理处的新代码允许通过使指向断开的ip隧道的条目无效(局部修复)来立即更新局部fib。必须在vrouter数据平面级别下实现fib中的适当间接性,以消除由于前缀数量而引起的任何线性依赖性。这种选择将在下面详细讨论。97.图3中所示的数据中心10的架构是仅出于示例目的而被示出。可以在图3的示例数据中心10以及本文没有具体描述的其他类型的数据中心中实现本公开中阐述的技术。本公开中的任何内容都不应被解释为将本公开的技术局限于图3所示的示例架构。98.图4是根据本公开技术的更详细地图示了sdn控制器的控制节点的示例的框图。控制节点54被配置为与多个其他类型的节点通信,包括配置节点52a-52x(“配置节点52”)、其他控制节点54b-54x、计算节点62a-62x(“计算节点62”)和网关节点72a-72n(“网关节点”)。控制节点54还与ip结构20通信,如本文所描述的,ip结构20可以由例如包括脊交换机和叶交换机的设备组成。控制节点54a为协议70提供执行的操作环境。协议70可以包括:例如,xmpp过程70a、netconf过程70b、bgp过程70c和if-map过程70d。99.控制节点使用if-map从配置节点接收配置状态。控制节点使用ibgp与其他控制节点交换覆盖网络路由,以确保所有控制节点都具有相同的覆盖网络状态。控制节点使用xmpp与计算节点上的vrouter代理交换覆盖网络路由(例如vpn路由)。控制节点还使用xmpp发送配置状态,诸如路由实例和转发策略。控制节点代表计算节点委托某些类型的业务。这些委托请求也通过xmpp被接收。控制节点使用bgp与网关节点(路由器和交换机)交换覆盖网络路由。控制节点还使用netconf发送配置状态。100.控制节点54a使用到元数据接入点的接口(if-map)过程70d从一个或多个配置节点52接收配置信息。if-map过程70d可以包括用于执行软件指令的电路装置,该软件指令用于根据if-map协议从配置节点52发送和接收通信。if-map过程70d将从配置节点52接收的配置信息存储到配置状态66(“config.state66”)。101.控制节点54a使用bgp过程70c与bgp对等体交换bgp消息,包括控制节点54b-54x和网关节点72。网关节点72可以包括一个或多个sdn网关,诸如sdn网关8。bgp过程70c可以包括用于执行软件指令的电路装置,该软件指令用于根据bgp协议与控制节点54b-54x发送和接收bgp消息。bgp过程70c将从来自网关节点72和控制节点54b-54x的bgp路由通告中接收到的覆盖网络路由存储到覆盖路由信息65。bgp过程70c将从来自ip结构20的bgp路由通告中接收到的底层网络路由存储到底层路由信息67。102.控制节点54a根据xmpp使用xmpp过程70a与计算节点交换消息。控制节点54a经由xmpp会话交换消息。计算节点62可以对应于图1-图3的计算节点26。xmpp过程70a可以包括用于执行软件指令的电路装置,该软件指令用于根据xmpp协议与计算节点62交换xmpp消息。xmpp在p.saint-andre于2011年3月发表在ietfrfc6120上的“extensiblemessagingandpresenceprotocol(xmpp):core”ꢀ中有更详细的描述,该文献的全部内容通过引用并入本文。根据上下文,控制节点54a(更具体地说,控制节点54a的xmpp过程70a)可以用作相对于计算节点62之一的xmpp客户端或xmpp服务器。例如,控制节点54a可以充当xmpp服务器,而计算节点62可以是xmpp客户端,xmpp客户端订阅由控制节点54a公布的信息,诸如来自各个计算节点62的配置状态66的配置信息、以及来自属于各个计算节点62的覆盖路由信息65或底层路由信息67的路由信息。103.作为另一示例,控制节点54a可以充当到一个或多个计算节点62的作为xmpp服务器的xmpp客户端,其中控制节点54a订阅由计算节点62公布的信息,诸如由计算节点62从其他源学习到的路由信息。xmpp过程70a经由xmpp会话从计算节点62a接收覆盖网络路由,并且将覆盖网络路由存储到覆盖路由信息65。由xmpp过程70a学习到的覆盖网络路由可能被泄漏到bgp过程70c,并且bgp过程70c又可能向其bgp对等体(例如,其他计算节点或sdn网关)发送bgp路由通告,该bgp路由通告经由xmpp在从计算节点62学习到的覆盖路由信息65中通告覆盖网络路由。在一些示例中,控制节点54a的netconf过程70b使控制节点54a能够经由netconf协议与网关节点72通信。104.根据本公开的技术,下一跳可达性检查过程68对覆盖路由信息65执行附加的下一跳可达性检查,以确认在底层路由信息67中存在针对主机地址的对应路由。在一些示例中,下一跳可达性检查过程68仅对覆盖路由信息65中的主机地址强制执行下一跳可达性检查。下一跳可达性检查过程68可以将覆盖路由信息65中在底层路由信息67中存在对应主机地址路由条目的所有条目都标记为“可达的”。备选地或附加地,下一跳可达性检查过程68可以将覆盖路由信息65中在底层路由信息67中不存在对应主机地址路由条目的所有条目都标记为“不可达的”。例如,这可以由覆盖路由信息的条目中的单独标志指示。105.图4图示了计算节点26x已发生故障的情况。计算节点故障这种情况可能很麻烦,因为在标准设计中没有本机备份路径。实际上,要实现收敛,必须事先在服务级别(即,覆盖/vnf级别)强制执行冗余,通常使用虚拟ip地址(即,经由托管在不同物理计算节点上的两个单独的虚拟机接口可达同一vip)。这可以通过两种不同的方式完成:(1)活跃/活跃(active-active,又译为双活):ecmp负载平衡,其中从具有相同bgp属性的不同vrouter通告相同的前缀,以便强制执行负载平衡;或(2)单活(singleactive):经由路由偏好管理的主/备份路由,其可以经由bgp以多种方式完成。可以使用多出口鉴别器(med)方法;也可以使用其他选择,诸如局部偏好或自主系统(as)路径长度。106.并行地,故障转移可能以不同的方式发生,例如:(1)具有标准标签分配策略的网关(每个下一跳标签):在这种情况下,由于可经由选项b获得的不同mpls数据路径,ecmp(或加权多路径)发生在远程pe设备12的级别。(2)具有每个虚拟路由和转发(vrf)标签分配策略(vrf-table-label)的网关:在这种情况下,因为向针对vrf的所有前缀(实际上是路由区分符:vip)的骨干通告唯一标签,所以ecmp(或加权多路径)发生在网关级别。107.下一节描述了几种不同的用例。针对不同用例的解决方案可能会有所不同,并且需要物理路由器或sdn控制器32中的特定特征才能运行。双活(ecmp)用例可以包括:(1)在网关处具有标准选项b强制执行的ecmp;(2)在网关处具有标准选项a b强制执行的ecmp;(3)在vrouter处的ecmp。从转发角度来看,此用例类似于网关故障描述(从vrouter到网关的ecmp)。单活(主/备份)用例可以包括:(1)在网关处具有选项b强制执行的活跃/待机;(2)具有选项a b的活跃/待机;(3)在网关处处于vrouter强制执行的活跃/待机。对于以上任何一种用例,计算节点故障都会导致类似的停机时间,这主要是由较慢的检测时间造成的。注意,在一些情况下,vnf可能会内置其自身的故障检测和缓解框架。108.如上面提到的,bgp过程70c经由bgp会话从ip结构20接收底层网络路由,bgp过程70c将底层网络路由存储到底层路由信息67,并且下一跳可达性检查过程可以更新覆盖路由信息65中的对应覆盖网络路由,以便向现在在底层路由信息67中具有对应路由的任何覆盖网络路由添加“可达”标志。xmpp过程70a和bgp过程70c(和/或netconf过程70b)然后可以将覆盖网络路由发送至其他对等体。109.在一些示例中,响应于经由控制节点54a与ip结构20之间的bgp会话学习到计算节点62x已经发生故障,下一跳可达性检查过程68(或者在一些示例中为bgp过程70c或xmpp过程70a)可以将xmpp过程70a从计算节点62x学习到的覆盖路由信息65中的任何覆盖网络路由都可以标记为不可达。在其他示例中,下一跳可达性检查过程68将从覆盖路由信息65中删除覆盖网络路由,这可能会触发xmpp过程70a和bgp过程70c将路由撤消消息发送到计算节点62a和网关节点72。以这种方式,控制节点54a可以更快速地检测底层网络中的故障并将故障通知其他网络设备。110.图5a-图5b是根据本公开技术的进一步详细地图示了计算节点的示例的框图。在图5a-图5b的示例中,计算节点是图4中的计算节点62a。计算节点62a可以是图1-图3中的计算节点26之一。计算节点62a托管vm82a-82n(“vm82”),并且可以是例如通用x86服务器。vm82是租户vm,其运行诸如web服务器、数据库服务器、企业应用等客户应用或托管用于创建服务链的虚拟化服务。在一个示例配置中,linux是主机操作系统(os)。111.计算节点中的两个组件实现虚拟路由器;即,vrouter代理84和vrouter转发平面90。vrouter转发平面90位于内核(例如,linux)中,并且vrouter代理84是本地控制平面。112.vrouter代理84是在内核内部运行的用户空间过程。vrouter代理84充当本地轻量级控制平面,并负责以下功能。vrouter代理84使用xmpp会话与控制节点54交换诸如路由等控制状态。vrouter代理84使用xmpp从控制节点54接收低级配置状态,诸如路由实例和转发策略。vrouter代理84将分析状态,诸如日志、统计和事件,报告给分析节点50(图3)。vrouter代理84将转发状态安装到vrouter转发平面90中。vrouter代理84可以与计算节点62a的nova代理(未示出)合作发现vm的存在和属性。vrouter代理84对每个新流的第一分组应用转发策略,并将该流的流条目安装在转发平面的流表(flowtable)中。例如,vrouter代理84可以委托dhcp、arp、dns和mdns中的一个或多个。在一些实现中可以包括附加的委托。每个vrouter代理84被连接到至少两个叶交换机24,以实现双活冗余模型中的冗余。113.图5b更详细地图示了计算节点62a的vrouter转发平面90。vrouter转发平面90作为可加载内核过程(例如,在linux中)运行。vrouter转发平面90负责以下功能:vrouter转发平面90使封装的分组能够被发送到覆盖网络并且使解封装的分组能够从覆盖网络被接收。vrouter转发平面90将分组指派给路由实例。从覆盖网络收到的分组基于mpls标签或虚拟网络标识符(vni)被指派给路由实例。本地虚拟机的虚拟接口绑定到路由实例。vrouter转发平面90在转发信息库(fib)(也称为转发表)中进行目的地地址的查找,并将分组转发到正确的目的地。例如,路由可以是层3ip前缀或层2mac地址。114.可以使用流表96来应用转发策略:vrouter转发平面90将分组与流表进行匹配并且应用流动作。vrouter转发平面90将没有找到流规则的分组(即,每个流的第一个分组)发送给vrouter代理84,vrouter代理84然后将规则安装在流表96中。vrouter转发平面90将某些分组,诸如dhcp、arp、mdns,发送到vrouter代理进行委托。115.vrouter代理84使用xmpp过程98来建立与sdn控制器的控制节点的xmpp会话。vrouter代理84的xmpp过程98从vm82学习到虚拟接口(虚拟地址)的覆盖网络路由,并将这些覆盖网络路由作为针对虚拟接口的虚拟路由存储到fib94。xmpp过程98经由xmpp会话将xmpp消息发送到控制节点54以通告覆盖网络路由。另外,vrouter代理84xmpp过程98接收由sdn控制器的控制节点54a通告的覆盖网络路由,并且将覆盖网络路由存储到覆盖路由信息104和一个或多个fib94。在一些示例中,vrouter代理84还经由xmpp消息从sdn控制器学习底层网络路由,并将这些底层网络路由存储到底层路由信息106。116.如下面关于图21a-图22更详细描述的,在一些示例中,fib94可以包括正交活性向量,以表示从sdn控制器接收到的活性状态。在一些示例中,sdn控制器从ip结构学习活性状态,如本文所描述的。117.vrouter代理84可以使用可选的bgp过程102来直接与ip结构20的叶节点通信,如本文所描述的。在本示例中,计算节点与ip结构更加紧密地集成在一起,并且直接交换计算节点存储在底层路由信息106中的底层网络路由。在其他示例中,计算节点可以不包括bgp过程102,并且可以仅经由xmpp消息从sdn控制器学习底层网络路由。118.bfd108与ip结构的叶节点建立bfd会话/邻接关系,叶节点可以通过该bfd会话/邻接关系来检测计算节点62a的可达性/活性,如本文所描述的。在一些示例中,可以通过bgp会话来建立bfd会话,其中存在bgp过程102。119.图6是图示了具有专用子网100a和100b(“子网100”)的一对叶交换机的概念图。图6图示了每个叶交换机对具有唯一子网100的边缘路由桥接(erb)模型。在一些示例中,图6中示出的“脊”可以表示图1-图2中的脊交换机22,并且图6中示出的“叶”可以表示图1-图2中的叶交换机24。类似地,vrouter可以表示如图1所示的虚拟路由器和/或图2-图3中的虚拟路由器42。120.如本文所描述的经由ip结构将计算节点状态传播到sdn控制器可以在缩放、高水平的鲁棒性和收敛速度之间提供良好的折衷。一方面,ip结构和vrouter以基于事件的方式集成。本文所描述的vrouter-ip结构集成技术符合通过链路聚合组(lag)接口进行计算节点的部署。之所以可以使用lag接口,是因为在一些示例中,vrouter可能不支持到叶交换机的ecmp连接性。另外,lag依赖性也可能是由于存在无法使用ecmp的非sdn组件(例如,编排、部署器、智能网络接口卡(“smart-nics”)。在一些示例中,该设计可以为短期部署提供实用的选择。121.以下示例基于具有虚拟机业务优化(vmto)概念的边缘路由桥接(erb)。如图6所示,计算节点经由lag被连接到ip结构的叶交换机。每对叶交换机都有自己的子网/vlan,以便按照以太网交换机标识符(esi)冗余方式连接其本地计算节点。集成路由和桥接(irb)接口在默认路由表中终止,该路由表授予附接到不同叶交换机对的vrouter之间的ip连接性。对于irb,不同的子网将具有不同的vlan标识符(vlan-id)。vrouters将发送免费的arp应答,其指示子网的ip地址。例如,如果子网用192.168.101/24表示,则特定虚拟路由器的ip地址可以是192.168.101.1。122.图7是图示了使用内部网关协议(igp)将虚拟路由器主机路由重新分发到ip结构的概念图。在一些示例中,用于该目的的igp可以是外部边界网关协议(ebgp)。本公开中描述的技术允许经由bgp传播主机地址vrouter路由。图7表示以下三个步骤:123.(1)vrouter计算地址生成主机/32(evpn)路由或前缀,诸如/32ipv4地址、/128ipv6地址或超网。然后,在叶交换机级别,为子网上检测到的每个活跃主机创建协议evpn/32路由(基于arp活动)。通过evpn类型2使该条目在叶交换机之间同步,这导致两个叶交换机都具有该条目。(2)将主机/32(evpn)路由条目重新分发给底层路由(bgp路由),以便通告给脊交换机,以进一步传播到sdn控制器的控制节点。(3)脊交换机从两个叶交换机接收vrouter主机ip地址。脊交换机因此存储每个计算节点的两个条目:每个叶交换机一个条目。将最佳路径发送到控制节点,以进行后续活性评估。如果计算节点发生故障,则在叶交换机处移除evpn主机条目,这会触发向脊交换机(和sdn控制器控制节点)的bgp路由撤消。124.在一些示例中,叶交换机可以被配置为将bgp共同体添加到bgp路由撤消消息以唯一地标识计算节点/vrouter。这允许控制节点基于bgp共同体过滤掉相关的vrouter路由,以进行下一跳验证。125.在一些示例中,叶交换机基于链路/lacp的状态来确定vrouter活性/可达性。即,叶交换机基于计算节点的nic的链路状态的链路状态来确定计算节点未响应bfd会话。在一些情况下,计算节点可能具有绑定的nic,其中多个nic显示为单个nic。在计算节点关闭事件的情况下,基于链路/lacp的状态对vrouter活性进行偏置叶交换机确定可能会有用;然而,如果发生更复杂的故障(示例vrouter核心),其中nic/bond处于运行状态,而vrouter代理发生故障,则此方法可能不会有用。在这种情况下,可以通过在vrouter和这对叶交换机之间使用微bfd会话来改进收敛时间。在这种情况下,微bfd作为vrouter服务进行管理。在vrouter发生故障的情况下,bfd邻接关系将降低,即使nic链路处于up状态,这也会使针对计算节点的主机/32路由条目无效。此改进涉及以下特征:vrouter代理处的微bfd邻接关系,用于检查成员链路(esi-lag成员链路上的单跳bfd);以及叶交换机处esi-lag上的微bfd。126.在一些示例中,可以使用可配置的xmpp计时器。为了在vrouter发生故障的情况下(诸如,在没有上述micro-bfd选项的情况下)提供一种具有优于15秒的计时器的选项,可配置的xmpp计时器可以提供一种折衷,以最大程度地缩短短期时间线中的停机时间,从而使保持时间低至3*1秒。这没有达到亚秒级的目的,但是在没有实现更复杂的微bfd解决方案的情况下可以提供帮助。127.图8是图示了根据本公开技术的网络设备的示例操作的流程图。出于示例目的,将参照图1-图2来描述图8。计算节点(例如,计算节点26a)例如经由虚拟路由器代理与sdn控制器(例如,sdn控制器32)的计算节点之间的xmpp会话来通告覆盖网络路由。sdn控制器维护覆盖路由信息,该覆盖路由信息存储由计算节点或sdn网关直接向sdn控制器通告的覆盖网络路由(例如,vpn路由)。响应于接收到覆盖网络路由,sdn控制器32可以执行下一跳可达性检查,以确定覆盖网络路由的下一跳是否“可达”,即,是否存在到通告覆盖网络路由的虚拟路由器或sdn网关的对应底层网络路由。如果确定覆盖网络路由是可达的,则sdn控制器32可以如在覆盖路由信息中那样标记覆盖网络路由(和/或,对于不可达的路由,则相反),并且将该覆盖网络路由通告给对等体,包括sdn网关8或计算节点26。如果确定覆盖网络不可达,则sdn控制器32避免向对等体通告覆盖网络路由(例如,直到接收到对应的底层网络路由并且更新可达性状态时才通告)。128.如本公开中所描述的,ip结构20中的叶节点被配置为在每个叶节点的转发平面与相应计算节点的虚拟路由器的之间运行故障检测协议会话,诸如双向转发检测(bfd)。作为其一部分,计算节点与叶交换机建立bfd会话(306)。叶交换机生成底层路由并将其通告给计算节点(308)。例如,响应于计算节点检测到arp活动,叶交换机可以生成底层路由并将其通告给虚拟路由器。在一些示例中,bfd会话与在叶交换机和计算节点之间建立的bgp会话相关联,使得bgp会话的状态与bfd会话的状态联系在一起。在一些示例中,计算节点执行路由协议过程并作为bgp对等体运行到叶交换机的bgp会话,并且计算节点可以将bgp消息发送到叶交换机,以通告计算节点的环回地址,这又触发叶交换机生成到脊交换机的路由协议消息。129.ip结构的节点将虚拟路由器的底层网络路由传送到sdn控制器(310)。例如,脊交换机22a经由bgp会话52发送bgp消息。sdn控制器然后将底层网络路由存储到底层路由信息(312),并且基于到计算节点的底层网络路由的存在,更新覆盖路由信息中的虚拟路由器的“可达性”或“活性”,并将与虚拟路由器相关联的覆盖路由通告给对等体(313)。130.当计算节点的虚拟路由器发生故障或变得不可达时(314),基于bfd会话,ip结构中的叶节点可以快速检测虚拟路由器发生故障的时间(316)。如果叶节点检测到虚拟路由器发生故障或不可达,则叶节点通过向ip结构中的脊节点发送路由协议消息并撤消与虚拟路由器相关联的底层网络路由来传送该故障(318)。脊节点又经由bgp会话51将底层网络路由撤消传送给sdn控制器(320),以及响应于接收到底层路由撤消(322),sdn控制器更新其底层网络路由表,以从底层路由信息移除针对不可达虚拟路由器的底层网络路由(324)。由于已将底层网络路由从底层路由信息中移除,因此现在任何依赖于该底层网络路由的覆盖网络路由都无法通过下一跳可达性检查,所以sdn控制器更新其覆盖路由信息以从覆盖路由信息移除任何相关的前缀。131.sdn控制器然后将消息发送到其他计算节点、sdn网关或其他设备,以撤消与不可达虚拟路由器相关联的覆盖和底层网络路由(326)。例如,sdn控制器可以经由xmpp将消息发送到其他计算节点,并且可以经由bgp将消息发送到sdn网关。132.以这种方式,sdn控制器被配置为将覆盖网络路由(vpn路由)的通告与静态底层网络路由的存在或缺失联系起来。如果存在静态底层网络路由,则sdn控制器仅将针对给定虚拟路由器的覆盖网络路由通告给该覆盖的其他虚拟路由器。通过经由bfd触发和控制底层网络路由的撤消,sdn控制器控制覆盖路由的通告,否则该通告就无法与bfd的活性检测联系在一起。例如,sdn控制器基于是否针对目的地存储了底层网络路由,来确定sdn控制器是否可到达该目的地的对应覆盖网络路由的下一跳,底层网络路由包括由底层网络的ip结构中的节点通告的路由,并响应于确定覆盖网络路由的下一跳不可达,通过sdn控制器,避免通告覆盖网络路由,并从先前向其通告覆盖网络路由的任何网络对等体撤消覆盖网络路由。133.虽然未在图8上描绘,但接收到消息的其他计算节点、sdn网关和其他设备又会更新其存储的路由信息和/或转发平面,以便停止转发业务到不可达的虚拟路由器。在一些示例中,计算节点和/或sdn网关将被配置为使用本文所描述的通过前缀无关的收敛的正交活性向量进行局部修复的技术来更新其转发平面。134.图9是图示了在包括sdn网关的自主系统与包括ip结构和sdn控制器的自主系统之间的外部bgp对等的概念图。底层路由使用bgp跨具有ip结构和sdn控制器的自主系统所提供的扩展结构提供/32隧道端点可达性。如本文所使用的,/32隧道端点可以是该前缀,或者例如是诸如/32ipv4地址、/128ipv6地址或超网等前缀。然而,与控制节点进行/32环回对等的结构设备不能是隧道端点自身(或连接到vrouter)。实际上,如果都合并了转发和路由功能,则在发生故障的情况下路由收敛会很慢,因为发生故障的设备无法发送其自身故障的指示(仅仅是因为它已经发生了故障)。因此,由于网关是隧道端点,因此无法在网关和控制节点之间设置用于底层路由的对等操作。为此,建议与脊设备建立这些对等操作(假设没有vrouter连接到脊)。一种设计备选方案是本地叶交换机,控制节点附接至叶交换机;然而,与依赖于脊级别的永久定义的终止相比,这种方法的编排和维护可能更为复杂。135.针对服务的覆盖路由依赖于以下方法。针对服务(evpn、vpnv4/v6、路由目标...),使用mp-ebgp多跳会话。没有为结构定义对等体以保留结构控制平面,其可以专用于隧道端点的路由。注意,裸金属服务器集成将需要服务前缀路由,这可以利用系列路由目标来最小化。在本示例中,在控制节点和sdn网关环回之间使用mp-ebgp多跳会话。136.以下描述了sdn网关(例如sdn网关8)的操作。基于/32隧道端点(计算节点)的存在,sdn网关8可以采用基于路由的检查来关闭mplsoudp隧道。一旦关闭该隧道,由于路由表(rib)中没有条目,所以覆盖前缀无效。允许将计算主机路由动态通告到sdn网关的架构使得使用此技术将计算节点的状态严格绑定到mplsoudp隧道的状态成为可能。可以经由在动态隧道配置节(stanza)中配置策略来实现此控制。137.以下提供了通用配置示例。注意,可以通过在叶交换机重新分发时将共同体附加到vrouter主机路由并在策略中进行匹配以实现更精细的方式来增强此原理。138.基于主机路由接收来强制执行严格的下一跳验证检查的配置示例:[0139][0140]图10是图示了ip结构的节点向sdn网关通知计算节点故障的系统的概念图。图10图示了sdn网关和vrouter之间的mplsoverudp隧道。在一些示例中,图10中图示的“脊”可以表示图1-图2中的脊交换机22,并且图10中图示的“叶”可以表示图1-图2中的叶交换机24。sdn网关可以表示sdn网关8,而vrouter可以表示如图1所示的虚拟路由器和/或图2-图3中的虚拟路由器42。[0141]在图10的示例中,虚拟计算节点前缀“虚拟ip”123.123.123.123/32经由虚拟网络“service-ha”中的两个高可用性工作负载可到达。这些工作负载位于两个不同的计算节点上。在正常操作下,由于不同的路由区分符,sdn网关从两个计算节点接收覆盖前缀。默认情况下,ecmp发生在这些目的地。换言之,业务经由ip隧道负载均衡到两个vrouter。在这种情况下,通过多出口鉴别器(med)实例强制执行主/备份设计:最低med优先于最高med。两种场景都将类似地工作。[0142]图10图示了编号为1-4的步骤。如果发生计算节点故障(“步骤1”),则结构会将针对vrouter主机ip地址的bgp撤消向上传播到sdn网关。具体地说,叶交换机检测到计算节点故障(经由bfd检测到链路断开),并将vrouter主机路由bgp撤消通告给脊(“步骤2”)。脊节点将bgp撤消信息向上传播到sdn网关(“步骤3”)。在sdn网关级别,基于要求精准匹配的动态隧道策略,网关可以使隧道下一跳无效并更新转发信息(“步骤4”)。所有业务都会转移到虚拟ip123.123.123.123(本地或更多pe,具体取决于标签策略)的剩余目的地。此操作依赖于以下网关配置和设计。对于基于纯mpls的转发:此选项依赖于默认的每个前缀标签分配策略(选项b)。撤消信息会被一直向上传播到发生路径选择的入口pe(远程pe)。远程pe本身将业务转移到与备份隧道相对应的mpls标签。[0143]如果是基于ip的转发,则使用“vrf-table-label”配置(根据vrf标签分配策略)为虚拟网络配置vrf,或者实现在网关和骨干网络之间建立选项a连接性。在这种情况下,网关会将业务向虚拟ip转移到备份隧道。[0144]在一些示例中,备选地或附加地,除了上述方法之外或作为上述方法的备选,可以针对特定用例在战术上部署其他用于快速收敛的方法,诸如可以在多个位置部署计算节点的公共云。一种用于快速收敛的示例方法使用端点到端点bfd,可以将其作为上述方法的补充或备选并入网络。利用该端点到端点bfd方法,在所有隧道端点之间建立bfd邻接关系。即,在sdn网关和vrouter之间以及在成对的vrouter之间建立bfd邻接关系。隧道可以是mplsoverudp隧道。可以在覆盖内或在底层级别(多跳bfd)发送bfd打招呼消息。[0145]此方法的一个特征是它可以提供独立于底层的纯覆盖解决方案,因为除了sdn网关之外,在底层级别上不需要任何特定的供应(provisioning),并且可以仅在vrouter和网关之间管理事情。ip结构级别不需要特定的自动化,因为这种方法不需要在结构中进行任何特定的配置。[0146]端点到端点bfd方法涉及网关和vrouter级别的配置。在vrouter处,将vrouter代理配置为在失去邻接关系的情况下更新其vrouter的转发信息。这是局部决策。端点处要管理的bfd邻接关系的数量与集群(或在远程计算的情况下为子集群)中的端点的数量成正比。例如,假设一个由50个vrouter组成的集群,则每个vrouter必须维护五十个bfd会话以检测任何远程故障。假设bfd间隔为100毫秒,使用bfd的端口为50个,则cpu必须每秒处理10*50=500个分组。为了管理该方法的可伸缩性,在一些示例中,该方法可以包括选择性地将bfd应用于关键计算(即,其托管关键vm或关键虚拟网络)而不将bfd应用于非关键计算的选项。在一些示例中,可以根据业务的关键性来实现更高的bfd计时器。[0147]端点到端点bfd方法是一种多跳bfd策略。因此,应将bfd计时器设置为高于ip结构的收敛时间,并具有合理的余量以应对意外场景。实际上,利用ecmp负载平衡设计,除非ip结构基于分段路由,否则无法假设主路径和备份路径到达两个端点之间的路径非命运共享。因此,任何结构问题都可能同时影响主路径和备份路径的bfd会话。因此,必须定义bfd计时器,以使它不会在任何单个结构故障时到期。注意,当在覆盖层中传输时,实际上可以将bfd配置为单跳bfd(甚至是bfd精简版);然而,由于存在基础结构设备,因此这是一个多跳场景。[0148]除上述方法之外或作为上述方法的备选,可以在网络中合并的另一种用于快速收敛的示例方法是在sdn控制器与sdn网关(mp-bgp)或计算节点(xmpp)之间的信令协议会话上运行bfd。这意味着将在sdn控制器控制节点与隧道端点之间运行bfd,以便检测隧道端点的任何故障,即sdn控制器控制节点与sdn网关之间的bfd、以及控制节点与计算节点的vrouter之间的bfd。这将需要在控制节点和vroutervhost0接口(即vrouter结构接口)上配置bfd。[0149]此方法还提供了与底层无关的纯覆盖解决方案:除了在sdn网关处,没有在底层级别进行任何特定的供应,并且必须仅在vrouter和网关之间管理事情。ip结构级别不需要特定的自动化,因为这种方法不需要在结构中进行任何特定的配置。在sdn网关处,可能已经配置了带有bfd的bgp,但是在一些示例中,此方法可能需要在vrouter和控制节点处进行开发。[0150]多跳与集群稳定性:此方法的一个潜在缺点是由于结构收敛事件导致的假阳性。这可以一次影响所有bfd会话(例如,一次影响网关和数十个vrouter),这会导致服务中断以及大量的信令撤消事件。因此,为了保持集群稳定性,必须以保守的方式选择bfd计时器,以确保任何瞬态结构问题不会导致任何信令会话中断。换言之,在这种场景下避免使用主动的bfd计时器(亚秒),以免引起更多的问题。这种方法的另一个潜在缺点是,收敛是在覆盖/服务级别(撤消)进行管理的,并且在sdn网关级别存在收敛的线性相关性(前缀越多,收敛将越慢)。[0151]图11是图示了在sdn网关和脊交换机之间使用多跳ebgp的网络拓扑的概念图。如本文所描述的,可以通过使控制节点的mp-bgp会话与结构节点(例如,脊交换机或专用叶交换机,具体取决于上下文)对等来减少停机时间。实际上,通过区分信令节点(脊交换机)和隧道端点(网关),可以快速检测网关故障并触发向控制节点的路由撤消。[0152]有多种设计变型可以实现此目的。例如,自主系统(as)指派可以是内部的,也可以是外部的。作为另一示例,可以使用下一跳解析或bfd。在一些示例中,网络设计可以包括两个bgp自主系统(覆盖):sdn网关as和由“sdn控制器加ip结构”组成的自主系统。[0153]一个示例可以在网关和脊之间使用单跳ebgp对等操作来动态交换隧道端点ip地址(例如,用于环回的safi1/1路由——ip隧道可能不支持ipv6)。另一示例可以在网关环回和脊环回之间使用具有亚秒级bfd计时器(3*100毫秒计时器)的多跳ebgp,其中ttl设置为2,以确保多跳对等“黏附”在直接链路上(例如,检测到路由错误)。[0154]图11图示了与同控制节点对等的脊交换机相关的bgp特定的实现。以下是与sdn网关和sdn控制器对等的脊交换机的示例脊交换机配置模板:[0155][0156][0157][0158][0159]以下是针对与脊交换机对等的sdn网关的示例sdn网关bgp配置。[0160][0161][0162][0163]图12是图示了在sdn网关(例如,sdn网关8)发生故障的情况下用于收敛的示例过程的概念图。如果sdn网关发生故障,则会发生以下事件序列:1.脊交换机和默认sdn网关之间的bfd会话被拆除。2.这导致脊交换机向所有控制节点发送mp-unreach更新消息,以获取经由有缺陷的sdn网关可达的所有前缀。3.控制节点随后生成对vrouter的xmpp更新,其中从下一跳列表中移除了有缺陷的sdn网关(即,单个下一跳=gw2)。4.vrouter代理更新本地数据平面,移除默认的sdn网关。[0164]以这种方式,sdn控制器控制节点检测到sdn网关故障所花费的时间不再受bgp保持时间到期的限制,因为现在本地脊交换机是由于sdn网关和脊交换机之间的bfd会话(300毫秒)才检测到此故障。因此,收敛时间大大提高了(对于少量前缀,bgp/xmpp传播实际上非常快)。然而,关于将被更新的前缀数量仍然存在线性依赖性。在高路由缩放(实际上是标签)的情况下,要满足亚秒级收敛可能存在挑战。在一些示例中,需要响应于从sdn控制器学习故障而更新其转发平面的节点可以使用以下描述的pic技术进行局部修复。[0165]图13是图示了bgp即服务(bgpaas)布置的概念图,其中单个控制节点提供单点故障。在图13的示例中,vrouters将bgpaas会话委托到“服务器3”上的控制节点。在一些实现中,诸如在缺乏本公开的技术的情况下,xmpp保持时间计时器是将计算故障通知给控制节点的唯一方法。因此,sdn控制器的故障检测为15秒。尽管如此,在bgpaas实现的情况下,可以将保持时间修改为较低的值(2*3秒,甚或1*3秒),因此,如果控制节点发生故障,则可以更快地拆除bgpaas会话。[0166]图13图示了vnf基于两个bgpaas会话实现冗余控制平面的默认行为。vrouter处的局部哈希可以将两个bgpaas平衡到同一控制节点(服务器1),这将成为单点故障(“spof”)。因此,在图13中,vrouter执行bgpaas会话到控制节点的非确定性委托。下面介绍在bgpaas上下文中用于避免单点故障的技术。[0167]图14是图示了使用bgpaas控制节点区域的冗余bgpaas设计的概念图。控制节点区域的使用允许确定性地将bgpaas锚定到控制节点。与图12所示的非确定性绑定相反,通过将bgpaas对等体绑定到确定性控制节点,使用bgpaas控制节点区域允许高可用性选项。图14所示的方法保证当vnf设置两个冗余bgp对等体时,单个控制节点故障不会发生。[0168]bgpaas控制节点区域定义bgpaas对等体与控制节点之间的亲和性。区域可以包含:一个或多个bgpaas对等体;以及一个或多个控制节点,因此可以在区域内将负载平衡到一组控制节点,以扩展区域。通常,在具有三个控制节点的部署中,定义了两个区域,每个区域都映射到唯一的控制节点。随后,将区域附加到vnfbgpaas会话,以便定义非命运共享架构。[0169]图15是图示了使用主和次控制节点区域来改进vnf路由稳定性的冗余bgpaas设计的概念图。在一些场景下,每个vnf控制平面vm可能需要冗余对等,以最大化路由的稳定性。换言之,vnf设计需要2*2个bgp会话。通过使用主bgpaas区域和次bgpaas区域来支持这种场景,如图15所示,其中主和次bgpaas控制节点区域分别映射到vrouter网关(例如x.y.z.1/24)和vrouterdnsip地址(例如x.y.z.2/24)。[0170]一些网络实现可能需要将裸金属服务器(bms)与计算节点虚拟机集成在一起。以下设计建议是此集成的当前最佳实践。一种方法是防止bms和vrouter连接到同一对叶交换机。换言之,裸金属服务器和vrouter必须连接到不同的叶交换机/服务器,以实现bms到vm/pod的正确连接性。[0171]以下描述了ip结构上bms附接的示例方面。裸金属服务器不应连接在脊交换机上。这是由于控制节点与脊交换机对等,如本文所描述的,用于将底层网络路由从ip结构通告到sdn控制器的控制节点。[0172]如果将bms连接到脊,则这可能导致与网关故障情况类似的收敛状况,但有以下区别:bms是远程pe;脊是gw;使用vxlan代替mpls。换言之,在脊故障的情况下,朝向bms的业务的收敛会受到影响,并会受bgp保持时间到期的限制:vrouter从两个脊交换机接收bmsmac/ipevpn路由(类型2和类型1ad)。如果脊交换机发生故障,来自发生故障的脊的路由将被保留在rib中,直到mp-ibgp会话到期(bgp保持时间)为止。在此时段期间,由于朝向bms的业务被封装在到发生故障的脊vtep的vxlan中,因此朝向bms的业务被路径监测。以这种方式,将bms耦合到脊会影响针对朝向bms的业务的收敛时间。[0173]图16是图示了裸金属服务器被连接在专用叶交换机上的系统的概念图。即,裸金属服务器连接到被指定仅用于bms连接且不用于vrouter连接的叶交换机。脊的故障是无害的,因为bgp路由是冗余的,并且不影响隧道端点。[0174]连接bms的叶交换机的故障导致以下动作,在图16中用数字框表示。1.由于叶脊mp-ibgp/bfd会话(覆盖),脊检测到叶故障。2.脊通告发生故障的叶evpn路由。3.控制节点通过经由发生故障的叶交换机移除路径来更新vrouter。[0175]在脊交换机上实现高吞吐量bms的方法如下:在一些情况下,capex优化可能需要在脊交换机上放置高吞吐量pnf。此设计的原理如下:控制节点与针对l3地址族(vpnv6/vpnv4/路由目标)的脊交换机对等。控制节点与针对族evpn的专用叶交换机(例如,连接托管控制节点的服务器的叶交换机)对等。这要求在叶交换机级别仔细定义额外级别的路由反射。没有其他bms必须被连接到这些叶交换机。可以在这对叶交换机处连接双宿主vrouter。[0176]图17是图示了根据本公开的各个方面的使用集成式路由和桥接(irb)集成的示例虚拟路由器到叶交换机ecmp附接的逻辑表示的概念图。该图图示了针对vrouter快速收敛与更紧密的ip结构集成联系在一起的示例方法,该更紧密的ip结构集成特别是通过ecmp(动态)计算层3结构集成,其具有以下功能:通过消除lag连接性来进行l3集成,而在vrouter处使用ecmp;以及在叶与vrouter之间的动态路由协议。一种方法是在vrouter代理顶部的计算节点内的路由协议过程(例如rpd)集成,以便vrouter代理可以直接与结构交互。路由守护程序集成的引入在链路子网供应中产生了复杂性:在桥域/irb模式下,必须用不同的供应以奇/偶方式标识叶交换机:左子网和irb接口,与右子网和irb。可以定义点到点链接模式(通常为/30)而不是桥域,但是此选项在供应方面也会产生复杂性。这一点的一些可能性包括ipv6链路本地或未编号的ip接口。[0177]根据irb模型,vlanscontrail-comp-left(192.168.1.0/24)和contrail-comp-right(192.168.2.0/24)连接针对每个ecmp成员链路的叶交换机处的计算节点。每个计算节点上的irb接口都用于简化。[0178]动态路由发生在叶交换机和vrouter之间,以使底层路由同步。即,叶交换机和vrouter交换路由协议消息,包括计算节点通过路由协议会话将其环回地址的底层网络路由通告给叶交换机。用于动态路由的路由协议必须与结构协议匹配。即,如果bgp是在ip结构的节点之间的ip结构中使用的路由协议,则bgp也必须是在叶交换机和vrouter之间使用的路由协议。然而,也可以备选地将bgp以外的不同路由协议用于两者,诸如rift或isis。在一些示例中,与提取控制节点bgp代码相反,叶交换机和vrouter之间的动态路由可以采用容器化路由协议过程(crpd)。[0179]图18是图示了sdn网关功能与ip结构的脊功能一起折叠的网络设计的概念图。即,单个网络设备提供sdn网关功能和脊交换机功能二者。图18图示了折叠的网关/结构设计的转发概述。尽管此设计不是前面各节中定义的参考设计,但以下内容考虑了折叠设计中出现的某些问题。在这种情况下,引入支持mplsoudp的脊。[0180]图19是图示了折叠的sdn网关/ip结构设计网络设计的示例信令概述的概念图,其中sdn网关功能与ip结构的脊功能折叠在一起。在本示例中,mp-bgp会话在sdn网关/脊交换机与sdn控制器的每个控制节点vm之间运行。如本文所描述的,mp-bgp会话可以用于传送通过ip结构传播的底层网络路由。[0181]本公开的某些方面解决在底层节点故障的情况下改进检测时间。实际上,快速收敛的基石是快速检测节点故障的能力。然而,在检测之后,在数据平面级别更新转发信息可能很耗时,尤其是在路由数量增加时。因此,有可能的情况是,尽管有快速的检测框架,也可能无法满足亚秒级的快速收敛的目的。为了提供在检测到故障之后在数据平面处更新转发信息的可扩展方式,本公开提供了在虚拟路由器处进行前缀独立收敛的技术,用于局部修复。在一些示例中,这可以结合上述技术来实现,使得虚拟路由器响应于如上所讨论的检测到底层节点故障而执行利用前缀独立收敛的局部修复。在其他示例中,下一节中描述的利用前缀独立收敛进行局部修复技术可以独立于上述技术(诸如在其他情况、上下文或用例中的技术)来实现。[0182]图20a-图20b是图示了虚拟路由器的转发信息库(fib)结构的概念图,该结构具有对前缀数量的线性收敛时间依赖性。图20a示出了网关之一发生故障之前的fib结构600,而图20b示出了在隧道#24上的“gw1”发生故障之后的fib602,其中只有gw2可通过隧道#26到达。这是可以在不具有利用前缀独立收敛的局部修复技术的情况下构造fib的一个示例。一些虚拟路由器fib结构可能就是这种情况,这些结构会生成关于前缀(更准确地说是标签和下一跳元组)数量的线性收敛时间依赖性。在大规模场景下,sdn网关故障和计算节点故障会受到线性收敛时间依赖性的影响。[0183]在一些示例中,这种虚拟路由器的fib更新速度约为每秒10k个前缀。例如,如果从sdn网关接收到带有唯一标签的50k个vpnv4前缀,则fib更新处理将持续5秒钟,这将错过亚秒级的目的。为了说明该问题,在图20a中描绘了一个示例,在vrouter处从一组网关(gw1和gw2)接收到两个路由。第一个路由:vrf2中的100.0.0.4/32。第二条路由:vrf3中的123.0.0.6/32。[0184]以下情况适用于虚拟路由器必须处理ecmp成员的故障的情况,诸如ecmp3的sdn网关故障案例和vrouter故障子案例(vrouter将业务负载平衡到两个vrouter)。必须利用从网关(mpls标签和udp/ip隧道)接收到的相应mpls标签在虚拟路由器处将这些路由朝两个网关进行负载平衡。此要求的高级视图用从隧道上的虚拟路由器到sdn网关设备的多路径/ecmp路径来表示。[0185]在虚拟路由器的fib的一些实现中,复合下一跳及其组件nh(子代)的结构可能使得标签被托管在复合(ecmp)下一跳中,如图20a所示。因此,必须为每个mpls服务路径(来自两个网关的一组标签)定义一个ecmp。针对被转发到同一隧道端点的所有前缀,重新使用隧道下一跳(这里是sdn网关)。[0186]在sdn网关发生故障的情况下(或相反,在vrouter发生故障的情况下),这最终是从ecmpnh到单播nh的fib重写操作。如果网关发生故障(与上一节相同的示例),则会发生以下动作的序列:1.控制节点检测到网关发生故障。在一些示例中,网关故障的检测可以如上面关于图1-图12所描述的那样被检测。2.控制节点更新其底层路由信息和覆盖路由信息,并用新的下一跳信息公布xmpp更新。将发生故障的隧道端点从“下一跳”列表中移除。3.vrouter代理接收xmpp更新,并依次通过重写每个前缀的下一跳信息来更新其转发信息:用隧道下一跳或用由所有活跃的下一跳组成的另一个复合来替代初始ecmp复合下一跳(如果只剩下一个nh)。完成此操作所需的时间是前缀数量的线性函数,因为这些前缀中的每一个都需要下一跳重写,如图20b所示。利用单个下一跳进行从控制节点到vrouter代理的xmpp更新(发生故障之前,发送了具有两个网关下一跳的nh列表)。收敛后的fib状态如图20b所示:重写每个条目的下一跳,以指向针对隧道#26的隧道下一跳、隧道gw2。下一跳重写动作的序列在vrouter代理级别引入了附加的收敛时间。针对10k个前缀,这大约需要1秒。[0187]上一节中描述的技术提供了将所有隧道端点的状态传播到虚拟路由器以检测作为底层网络节点的隧道端点的故障的框架。例如,上述示例中的隧道端点可以是sdn控制器或虚拟路由器。在网关故障的示例中,控制节点检测到网关发生故障。在一些示例中,控制节点可以通过从ip结构接收通知来检测到这一点,如上面关于图1-图8所描述的。本节建议在虚拟路由器级别利用远程隧道端点的状态,以进一步改进收敛时间。本节提供了在虚拟路由器内强制执行“局部修复”功能性,因此可以从转发信息的转发路径中移除损坏的路径的技术。[0188]图21a-图21b是图示了根据本公开技术的各个方面的针对转发信息库中的复合下一跳的示例转发结构的概念图。图21a示出了在网关之一发生故障之前的fib620,而图21b示出了在隧道#24上的“gw1”ꢀ发生故障之后的fib621,其中只有gw2可通过隧道#26到达。在一些示例中,转发结构600可以是图5b中的fib94a-94c中的一个或多个fib的一部分。此结构包括共享的ecmp成员活性向量622,该向量以正交方式指示ecmp成员的活性状态。在图21a-图21b的示例中,ecmp成员活性向量622与转发路径正交。针对共享覆盖网络隧道端点下一跳的公共列表的所有复合ecmp下一跳一次创建共享ecmp成员活性向量622。在本示例中,针对本示例中的复合ecmp下一跳624a-624b,针对100.0.0.4/32和123.0.0.6/32前缀定义公共向量。如图21b所示,在隧道下一跳之一发生故障时,仅需要更新共享活性向量622以反映隧道#22具有活性状态“0”(不是活的),而隧道#24保持活性状态“1”(活的)。与图20a-图20b的fib结构相反,在故障检测之后不需要重写复合下一跳624a和624b。[0189]在转发级别,在图5b的vrouter代理84处实现额外的逻辑,使得哈希在故障的情况下将排除这些分量下一跳(即,活性[成员]=假)。在向vrouter代理84通知了sdn网关的故障后,将这个非活跃的子代从隧道端点下一跳的哈希桶中排除。这个新的转发逻辑是在下一跳重写操作期间采取的中间步骤(线性时间依赖性)。在快速收敛语义中,与默认的“全局修复”框架相比,这是一个“局部修复”框架(即更新的vrouter转发状态),后者是与控制节点fib更新一致的重写动作。[0190]如图21a-图21b所示,与将mpls标签与ecmp子代nh一起嵌入到复合下一跳内相反,如图21a-图21b的fib结构使用正交活性向量。在一些示例中,不是使用正交向量,可以与转发路径一致地实现活性向量,而不是正交地实现活性向量,只要在将转发分解成另一级别的间接性来考虑活性时不会失去在标签与对应隧道之间的关联性即可。[0191]当存在许多通告的路由时,诸如在sdn网关(该sdn网关向计算节点通告许多路由)的上下文中,此活性向量特征可能特别有用。在虚拟路由器检测到不同计算节点处的另一虚拟路由器发生故障的情况下,端到端工作流程可能与上面关于网关故障所描述的类似。在一些示例中,可以在控制节点处实现某种级别的族前优先化(pre-familyprioritization)。[0192]到目前为止,所描述的这个框架假设ecmp案例。然而,在许多情况下,网络设计依赖于主/备份路由:对于虚拟路由器到虚拟路由器,可以使用主/备份路由。对于到网关的虚拟路由器,主/备份路由不太可能发生,因为通常该架构依赖于ecmp。尽管如此,可以针对主/备份场景(非ecmp)实现类似的逻辑。控制节点向虚拟路由器代理发送加权的下一跳(最佳/次佳路由)。与上述ecmp情况类似,vrouter代理会制作加权的复合ecmp下一跳,而不是与活性向量一起制作复合ecmp下一跳,以便在转发平面中预加载备份路径。仅选择最低权重进行转发。在一些示例中,加权信息也可以被合并到活性向量中。[0193]以这种方式,该方法包括:由sdn控制器所管理的计算节点的虚拟路由器代理存储转发信息数据结构,该转发信息数据结构的共享活性向量与转发路径正交,以指示多个覆盖网络隧道端点下一跳的活性状态,其中共享活性向量由共享多个覆盖网络隧道端点下一跳的公共列表的多个复合下一跳的多个成员中的每一个成员共享,并且响应于由虚拟路由器代理确定正交活性向量指示多个覆盖网络隧道端点下一跳中的每一个是可达的,将网络业务分发给多个覆盖网络隧道端点下一跳中的一个或多个。[0194]下面是用两个下一跳通告/32地址的示例,其中加权的下一跳用于活跃/待机。在本示例中,在故障之前,用两个下一跳来通告100.0.0.4/32。[0195][0196][0197]图22是图示了根据本公开技术的网络设备的示例操作的流程图。出于示例目的,将参照图1-图5来描述图22。由诸如sdn控制器32等sdn控制器管理的虚拟路由器代理(例如,vr代理36、84)经由诸如xmpp会话等消息传递协议会话(700)从sdn控制器接收覆盖网络路由。虚拟路由器代理将覆盖网络路由存储到数据结构,诸如在虚拟路由器代理执行于其上的计算节点的转发平面中维护的转发信息库(702)。转发信息库是具有与转发路径正交的共享活性向量的转发信息数据结构,以指示多个覆盖网络隧道端点下一跳的活性状态,其中共享活性向量由共享覆盖网络隧道端点下一跳的公共列表的多个复合下一跳的多个成员中的每一个成员共享,诸如图21a所示的示例。[0198]计算节点接收去往覆盖网络隧道端点可达的目的地的网络业务(704)。例如,覆盖网络隧道端点可以是sdn网关8或不同计算节点的另一个虚拟路由器。当根据转发信息转发网络业务时,虚拟代理检查活性向量(706)。响应于由虚拟路由器代理确定正交活性向量指示多个覆盖网络隧道端点下一跳中的每一个都是可达的,计算节点包括针对转发考虑被正交活性向量指示为“活的”或可达的那些隧道端点下一跳,并将网络业务分发给多个覆盖网络隧道端点下一跳中的一个或多个(708)。在ecmp场景中,可以通过负载平衡(例如,哈希)来选择网络隧道端点,或者可以通过在主/备份场景中,基于加权发送到主(primary)来选择网络隧道端点。[0199]响应于由虚拟路由器从软件定义联网(sdn)控制器接收到多个覆盖网络隧道端点下一跳之一是不可达的隧道端点下一跳的指示,例如通过接收覆盖路由撤消(710),虚拟路由器代理更新正交活性向量以反映不可达的隧道端点下一跳的不可达状态(712),这导致虚拟路由代理之后从分发网络业务的这组隧道端点下一跳排除不可达的隧道端点下一跳。[0200]以这种方式,转发信息包括以正交方式指示下一跳的活性状态的共享活性向量。共享活性向量与转发信息的转发路径正交。针对共享下一跳的公共列表的所有复合下一跳,一次创建共享活性向量。在转发级别,在虚拟路由器代理处实现逻辑,使得在发生故障的情况下,哈希会排除这些组件下一跳。共享活性向量可以用于ecmp复合下一跳,或用于主/备份场景。[0201]示例1.一种方法,包括:由管理覆盖网络的软件定义联网(sdn)控制器基于底层网络路由是否针对底层网络中的目的地被存储,确定针对该目的地的对应覆盖网络路由的下一跳是否由sdn控制器可达,底层网络路由包括底层网络的互联网协议(ip)结构中的节点所通告的路由;以及响应于确定针对覆盖网络路由的下一跳是不可达的,避免由sdn控制器通告覆盖网络路由,并从先前向其通告覆盖网络路由的任何网络对等体撤消覆盖网络路由。[0202]示例2.根据示例1的方法,其中确定针对该对应覆盖路由的下一跳是否由sdn控制器可达包括:确定底层路由是否被存储在sdn控制器所维护的底层路由信息中,其中底层路由信息存储由底层网络的ip结构通告给sdn控制器的路由。[0203]示例3.根据示例1的方法,其中ip结构中的节点包括脊交换机,该方法还包括:由sdn控制器经由在sdn控制器与脊交换机之间的边界网关协议会话,接收到底层网络的活跃隧道端点的多个底层网络路由,其中底层网络路由包括多个底层网络路由中的一个底层网络路由,其中活跃隧道端点包括基于在活跃隧道端点和ip结构的叶节点之间的故障检测协议会话而被指示为可达的隧道端点。[0204]示例4.根据示例3的方法,其中所述故障检测协议会话包括双向转发检测(bfd)协议会话。[0205]示例5.根据示例1的方法,还包括:由sdn控制器在确定针对覆盖网络的下一跳是不可达的之前:接收从底层网络的ip结构中的节点通告的底层网络路由;响应于接收到底层网络路由:确定针对该对应覆盖网络路由的下一跳可达;将对应覆盖网络路由标记为可达;向一个或多个计算节点和sdn网关设备通告覆盖网络路由;以及向该一个或多个计算节点和sdn网关设备通告底层网络路由。[0206]示例6.根据示例1的方法,还包括:由sdn控制器从ip结构中的节点接收指示因ip结构无法到达目的地而撤消底层网络路由的消息;由sdn控制器更新所存储的底层路由信息,以移除已撤消的底层网络路由;由sdn控制器更新所存储的覆盖路由信息,以移除覆盖网络路由和依赖于底层网络路由的任何其他覆盖网络路由,其中确定针对对应覆盖网络路由的下一跳是否由sdn控制器可到达包括:因为底层网络路由已被移除,所以确定下一跳是不可达的,并且其中撤消覆盖网络路由包括:经由消息传递协议向一个或多个计算节点发送撤消覆盖网络路由和依赖于底层网络路由的任何其他覆盖网络路由的消息;以及经由路由协议向一个或多个sdn网关设备发送撤消覆盖网络路由和依赖于底层网络路由的任何其他覆盖网络路由的消息。[0207]示例7.根据示例6的方法,还包括:由sdn控制器响应于更新所存储的底层路由表以移除已撤消的底层网络路由:经由消息传递协议向一个或多个计算节点发送撤消底层网络路由的消息;以及经由路由协议向一个或多个sdn网关设备发送撤消底层网络路由的消息。[0208]示例8.根据示例1的方法,还包括:由ip结构的叶交换机经由在叶交换机与底层网络的计算节点之间建立的故障检测协议会话,确定计算节点未响应故障检测协议会话;以及由叶交换机响应于该确定,通过ip结构传播撤消针对计算节点的底层网络路由的路由撤消消息,其中从ip结构中的节点接收指示底层网络路由被撤消的消息包括从脊交换机接收消息,其中脊交换机基于该传播接收到对应的消息。[0209]示例9.根据示例1的方法,其中针对底层网络路由的目的地包括由sdn控制器管理的针对虚拟路由器的主机地址,并且其中针对目的地的对应覆盖网络路由包括由虚拟路由器通告的虚拟专用网络(vpn)覆盖网络路由。[0210]示例10.一种方法,包括:由软件定义联网(sdn)控制器所管理的计算节点,将计算节点的虚拟路由器通告为针对覆盖网络虚拟专用网络(vpn)路由的下一跳;由计算节点在虚拟路由器与底层网络的互联网协议(ip)结构的叶交换机之间建立故障检测协议会话,以将虚拟路由器的可达性状态传送给叶交换机;以及仅当故障检测协议会话向ip结构的叶交换机指示虚拟路由器是可达的时候,才由计算节点接收去往覆盖网络vpn路由的业务。[0211]示例11.根据示例10的方法,还包括:由计算节点经由在计算节点与叶交换机之间的边界网关协议(bgp)会话向叶交换机通告到虚拟路由器的底层网络路由。[0212]示例12.根据示例11的方法,其中建立故障检测协议会话包括:建立与在计算节点和叶交换机之间的bgp会话相关联的双向转发检测会话。[0213]示例13.根据示例12的方法,还包括:由在sdn控制器和计算节点之间的消息传递协议会话上作为消息传递协议客户端操作的计算节点,接收到由sdn控制器管理的其他计算节点上的其他虚拟路由器的多个覆盖网络vpn路由;以及响应于sdn控制器从ip结构中的脊交换机接收到撤消到其他虚拟路由器中的一个虚拟路由器的对应底层网络路由的消息,由作为消息传递协议客户端操作的计算节点,接收撤消多个覆盖网络vpn路由中的一个覆盖网络vpn路由的消息。[0214]示例14.根据示例13的方法,还包括:响应于接收到撤消到其他虚拟路由器的多个覆盖网络vpn路由中的一个覆盖网络vpn路由的消息,更新独立于该撤消影响到的多个前缀的正交活性向量。[0215]示例15.根据示例10的方法,其中将虚拟路由器通告为针对覆盖网络vpn路由的下一跳包括:在计算节点的消息传递协议客户端作为消息传递协议服务器操作时,向sdn控制器通告覆盖vpn路由,其中覆盖网络vpn路由包括到虚拟接口的虚拟路由。[0216]本公开中描述的技术可以至少部分地以硬件、软件、固件或其任何组合来实现。例如,所描述的技术的各个方面可在一个或多个处理器内实现,包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其他等效的集成或离散逻辑电路装置、以及此类组件的任何组合。术语“处理器”ꢀ或“处理电路装置”通常可以指单独或与其他逻辑电路装置或任何其他等效电路装置组合的任何前述逻辑电路装置。包括硬件的控制单元还可以执行本公开的一种或多种技术。[0217]这样的硬件、软件和固件可以在同一设备内或在单独的设备内实现以支持本公开中描述的各种操作和功能。另外,所描述的任何单元、过程或组件可以一起或单独地实现为分立的但可互操作的逻辑设备。将不同的特征描述为过程或单元旨在突出不同的功能方面中,并且不一定暗示这种过程或单元必须由单独的硬件或软件组件来实现。而是,可以通过单独的硬件或软件组件来执行与一个或多个过程或单元相关联的功能性,或者可以将其集成在公共的或单独的硬件或软件组件内。[0218]本公开中描述的技术还可以在包含指令的计算机可读介质(诸如计算机可读存储介质)中实施或编码。嵌入或编码在计算机可读介质中的指令可以使可编程处理器或其他处理器例如在执行指令时执行该方法。计算机可读介质可以包括非瞬态计算机可读存储介质和瞬态通信介质。有形且非瞬态的计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电子可擦除可编程只读存储器(eeprom)、闪存、硬盘、cd-rom、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读存储介质。术语“计算机可读存储介质”ꢀ是指物理存储介质,而不是信号、载波或其他瞬态介质。[0219]已经描述了本公开的各个方面。这些和其他方面在所附权利要求的范围内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献