首页> 中国专利> 支持分布式网关服务体系架构的路由公告

支持分布式网关服务体系架构的路由公告

摘要

本发明的一些实施例提供了一种新颖的网络体系架构,用于在可用区(例如,提供硬件资源的集合的数据中心)中公告路由。在一些实施例中,该新颖的网络体系架构还在AZ中主机计算机的集合处的可用区(例如,使用数据中心的硬件资源)中实现的虚拟私有云(VPC)的边缘处提供分布式服务的集合。该新颖的网络体系架构包括路由服务器的集合,用于从AZ中的不同路由器接收可用区(AZ)中可用的网络地址(例如,互联网协议(IP)地址)的公告。路由服务器还将接收到的网络地址公告给AZ中的其它路由器。在一些实施例中,其它路由器包括在AZ中的主机计算机上执行的路由器和可用区的网关设备。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-05-02

    公开

    国际专利申请公布

说明书

背景技术

许多网络依赖于使用在可用区(例如,数据中心)的边缘处提供的有状态边缘服务。针对一些网络的有状态服务由数量有限的状态维持设备(例如,位于可用区(AZ)的边缘处的特定网关设备)提供。但是,在有限数量的设备上提供有状态服务会导致瓶颈,因为使用有状态服务的所有流量都必须由有限数量的设备处理。为了解决这个瓶颈问题,一些网络使用分布式有状态服务体系架构。但是,分布式有状态服务体系架构有其自身的挑战。例如,由于分布式有状态服务的每个实例执行的有状态服务操作都要求状态信息,因此在一些情况下遍历提供者网关设备的流量将被转发到随机选择的有状态服务实例,对于具有“N”个分布式有状态服务实例的系统,这将导致数据消息被定向到N次中(N-1)次不存储数据消息的状态信息的分布式有状态服务实例。

因而,要求一种同时解决瓶颈和误导问题以提供诸如SNAT和有状态负载平衡之类的有状态边缘服务的解决方案。

发明内容

本发明的一些实施例提供了一种新颖的网络体系架构,用于在可用区(例如,提供硬件资源的集合的数据中心)中公告路由。在一些实施例中,新颖的网络体系架构还在可用区中实现的虚拟私有云(VPC)的边缘处提供分布式服务的集合(例如,使用数据中心的硬件资源)。新颖的网络体系架构包括路由服务器的集合,用于从可用区(AZ)中的不同路由器接收AZ中可用的网络地址(例如,互联网协议(IP)地址)的公告。路由服务器还向AZ中的其它路由器公告接收到的网络地址。在一些实施例中,其它路由器包括在AZ中的主机计算机上执行的路由器、网关设备(例如,AZ中的可用区路由器的路由器,以及组成在主机计算机上执行的路由器、路由服务器和AZ中的网关设备之间的中间架构的路由器)。

新颖的网络体系架构还包括多个主机计算机,每个主机计算机执行路由器(例如,路由实例),该路由器(i)识别在主机计算机上可用的网络地址,(ii)将识别出的网络地址的公告发送到路由服务器的集合,以及(iii)从路由服务器的集合接收关于其它主机计算机上可用的网络地址的公告。在一些实施例中,识别出的网络地址包括与数据计算节点(DCN)(例如,虚拟机(VM)、容器(container)、舱(pod)等)关联的网络地址和与在主机计算机处可用的服务关联的网络地址。在一些实施例中,服务是为进入或离开在AZ中实现的VPC的数据消息提供的分布式边缘服务。在一些实施例中,使用边界网关协议(BGP)或其它路由公告协议来制作公告。

新颖的体系架构还包括控制器计算机的集合,其配置主机计算机以执行服务实例,以便为包括在主机计算机上执行的DCN的虚拟私有云提供服务。在一些实施例中,服务实例用于提供分布式服务,包括为进入或离开在AZ中实现的VPC的数据消息提供的分布式边缘服务。在一些实施例中,作为逻辑路由器处理的一部分,分布式边缘服务在位于VPC的逻辑边缘处的分布式逻辑路由器(即,处理进入或离开VPC的数据消息的逻辑路由器)处提供。

在一些实施例中,呈现了一种用于识别主机计算机处可用的网络地址的新方法。执行路由实例的主机(例如,路由机器)检测网络地址在主机计算机上变得可用。在一些实施例中,检测网络地址已变得可用包括检测DCN或服务中的至少一个已被添加到主机计算机。然后,路由实例识别与检测到的DCN或已添加到主机计算机的服务关联的网络地址。在一些实施例中,识别出的网络地址是AZ中的其它路由器使用的地址。在其它实施例中,识别出的网络地址是AZ外部的网络中的路由器和机器使用的地址。然后路由实例将识别出的网络地址公告给至少一个路由服务器,以公告给AZ中的其它路由器。

新颖的体系架构中的主机计算机在接收到进入VPC并以VPC中的一个或多个DCN的集合为目的地的数据消息时,在将数据消息递送到目的地DCN之前执行处理步骤的集合。在一些实施例中,主机计算机在受管理的转发元件(MFE)(例如,在主机计算机上执行的软件交换机)处接收数据消息。在一些实施例中,MFE将接收到的数据消息提供给路由实例以确定下一跳。在一些实施例中,进入VPC的数据消息的下一跳是解封装数据消息并将解封装的数据消息提供给分布式逻辑路由器处理操作的隧道端点(例如,虚拟可扩展局域网VXLAN隧道端点(VTEP))。在一些实施例中,分布式逻辑路由器被定义在VPC的逻辑边缘处,使得进入和离开VPC的所有流量都通过分布式逻辑路由器进行处理。

在一些实施例中,分布式逻辑路由器处理操作识别处理进入VPC的数据消息所需的服务的集合(例如,有状态或无状态边缘服务)。在一些实施例中,服务的集合包括防火墙服务、网络地址翻译(NAT)服务、负载平衡服务、分布式入侵检测系统(IDS)服务和分布式入侵保护系统(IPS)服务中的任何一个或全部。不同的服务使用包含在数据消息中的不同信息,并且在一些实施例中,基于所使用的信息的类型以不同的方式实现。例如,使用包含在开放系统互连(OSI)模型第4层的报头中的信息的服务(有时称为“L4服务”)在内核空间中执行,因为它们不会消耗大量资源并且将它们移动到用户空间中会使它们慢得令人无法接受。但是,在一些实施例中,使用OSI模型第7层数据的服务(有时称为“L7服务”)在用户空间中执行,因为它们的资源密集型处理会为了快速处理数据消息而占用内核空间中的线程并且因为与首先执行该操作的成本相比移入用户空间的成本并不显著。

在一些实施例中,服务的集合是为同一主机计算机上的分离VPC中的多个租户实现的。在一些实施例中,不同的服务由多租户服务机器(或舱)中的不同模块(容器、应用等)提供。在使用多租户服务机器的一些实施例中,服务机器执行分离的VTEP以区分针对每个租户的流量。在其它实施例中,为每个租户提供分离的服务机器(例如,虚拟机、容器、舱等)以实现针对租户的L7服务集。

在一些多租户实施例中,路由实例是为每个租户维护分离的虚拟路由和转发(VRF)上下文的多租户路由实例。在一些实施例中,路由实例是BGP实例。在一些实施例中,路由实例是支持多种寻址协议(例如,多协议标签交换(MPLS)、BGP标记单播(BGP-LU)、分段路由(SR)等)的多协议BGP实例(MP-BGP)。在一些实施例中,不同的VRF上下文由路由区分符来区分,并且路由目标被用于识别与每个VRF上下文相关的公告。在一些实施例中,路由实例包括自由范围路由守护进程,其实现路由实例的MP-BGP公告和路由学习操作。

前面的发明内容旨在用作本发明的一些实施例的简要介绍。它并不意味着是本文档中公开的所有发明性主题的介绍或概述。以下的具体实施方式和在具体实施方式中引用的附图说明将进一步描述在发明内容中描述的实施例以及其它实施例。因而,为了理解本文档描述的所有实施例,需要对发明内容、具体实施方式、附图说明和权利要求书的全面回顾。而且,要求保护的主题不受发明内容、具体实施方式和附图说明中的说明性细节的限制。

附图说明

在所附权利要求书中阐述了本发明的新颖特征。但是,出于解释的目的,在以下附图中阐述本发明的若干实施例。

图1图示了在其中实现新颖体系架构的示例性网络。

图2图示了网络内执行用于两个不同VPC的组件的主机计算机的实施例。

图3图示了网络内执行多个VPC的组件的主机计算机的第二实施例。

图4概念性地图示了用于配置主机计算机的组件以在可用区内实现虚拟私有云的过程。

图5概念性地图示了用于检测数据计算节点已被添加到主机并且将与数据计算节点关联的网络地址公告给可用区中的其它路由器的过程。

图6概念性地图示了用于检测DCN已从主机计算机移除的过程。

图7概念性地图示了用于检测已添加到主机计算机的服务并向AZ中的其它路由器公告网络地址的过程。

图8概念性地图示了用于检测服务已从主机计算机移除并且从可用区中的其它路由器撤回与被移除的服务关联的网络地址的类似过程。

图9概念性地图示了用于路由服务器的过程,该路由服务器接收路由公告并基于接收到的公告生成到其它路由器的路由公告。

图10概念性地图示了用于监视个体服务实例的健康状况并将服务实例的故障公告给AZ中的路由器的过程。

图11概念性地图示了用于在多租户路由实例处更新路由信息的过程。

图12图示了多租户MP-BGP路由实例在自由范围路由(FRR)守护进程处从路由服务器接收路由公告并更新虚拟路由和转发上下文的路由表。

图13概念性地图示了用于处理寻址到在主机计算机上执行的服务或DCN的数据消息的过程。

图14概念性地图示了用于为不同网络元素生成配置数据并用于在VPC的边缘处提供分布式服务的集合的过程,其中网络元素提供用于在可用区中公告路由的新颖网络体系架构。

图15图示了数据中心中的计算机控制器集群向不同的网络元素发送不同类型的配置数据。

图16概念性地图示了利用其实现本发明的一些实施例的计算机系统。

具体实施方式

在本发明的以下详细描述中,阐述并描述了本发明的许多细节、示例和实施例。但是,对于本领域技术人员而言将显而易见的是,本发明不限于所阐述的实施例,并且可以在不讨论其中一些具体细节和示例的情况下实践本发明。

本发明的一些实施例提供了一种新颖的网络体系架构,用于在可用区(例如,提供硬件资源的集合的数据中心)中公告路由。在一些实施例中,新颖的网络体系架构还在可用区中实现的虚拟私有云(VPC)的边缘处提供分布式服务的集合(例如,使用数据中心的硬件资源)。新颖的网络体系架构包括路由服务器的集合(有时称为路由反射器),用于从可用区(AZ)中的不同路由器接收AZ中可用的网络地址。路由服务器还向AZ中的其它路由器公告接收到的网络地址。在一些实施例中,其它路由器包括在AZ中的主机计算机上执行的路由器、网关设备(例如,AZ中的可用区路由器的路由器,以及组成在主机计算机上执行的路由器、路由服务器和AZ中的网关设备之间的中间架构的路由器)。

新颖的网络体系架构还包括多个主机计算机,每个主机计算机执行路由器(例如,路由实例),该路由器(i)识别在主机计算机上可用的网络地址,(ii)将识别出的网络地址的公告发送到路由服务器的集合,以及(iii)从路由服务器的集合接收关于其它主机计算机上可用的网络地址的公告。在一些实施例中,识别出的网络地址包括与数据计算节点(DCN)(例如,虚拟机(VM)、容器、舱等)关联的网络地址和与在主机计算机处可用的服务关联的网络地址。在一些实施例中,服务是为进入或离开在AZ中实现的VPC的数据消息提供的分布式边缘服务。在一些实施例中,使用边界网关协议(BGP)或其它路由公告协议来制作公告。

如在本文档中所使用的,分组是指以特定格式跨网络发送的位的集合。在一些实施例中,分组被称为数据消息。本领域的普通技术人员将认识到,在本文档中使用术语分组和数据消息来指代跨网络发送的位的各种格式化的集合。这些位的格式化可以由标准化的协议或非标准化的协议指定。遵循标准化的协议的分组的示例包括以太网帧、IP分组、TCP片段、UDP数据报等。而且,如本文档中所使用的,对L2、L3、L4和L7层(或第2层、第3层、第4层和第7层)的引用分别参考OSI(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层。

而且,在这个示例中,术语受管理的转发元件(MFE)是指由控制器计算机集群(即,向网络元素提供配置数据的一个或多个控制器计算机的集合)配置为实现虚拟私有云(VPC)(例如,包括逻辑转发元件(LFE)的集合的逻辑网络)的软件转发元件或硬件转发元件。在一些实施例中,VPC被实现为逻辑覆盖网络,其使用隧道化的分组来遍历物理底层网络。在一些实施例中,每个LFE是跨越多个主机计算机的分布式转发元件,并且通过在多个主机计算机上配置多个MFE来实现。为此,在一些实施例中,每个MFE或与MFE关联的模块(例如,VXLAN隧道端点(VTEP))被配置为用包含虚拟与覆盖网络关联的网络标识符(VNI)的覆盖网络报头封装LFE的数据消息。照此,在下面的讨论中,LFE被称为跨越多个主机的覆盖网络结构。

在一些实施例中,LFE还跨越配置的硬件转发元件(例如,架顶式交换机)。在一些实施例中,LFE的集合包括通过在多个主机计算机上配置多个软件交换机或相关模块来实现的逻辑交换机。在其它实施例中,LFE可以是其它类型的转发元件(例如,逻辑路由器),或形成VPC(例如,逻辑网络)或者其一部分的转发元件(例如,逻辑交换机和/或逻辑路由器)的任何组合。目前存在许多LFE、逻辑交换机、逻辑路由器和逻辑网络的示例,包括由VMware的NSX网络和服务虚拟化平台提供的示例。

新颖的体系架构还包括控制器计算机的集合,其配置主机计算机以执行服务实例,以便为包括在主机计算机上执行的DCN的虚拟私有云提供服务。在一些实施例中,服务实例用于提供分布式服务,包括为进入或离开在AZ中实现的VPC的数据消息提供的分布式边缘服务。在一些实施例中,作为逻辑路由器处理的一部分,分布式边缘服务在位于VPC的逻辑边缘处的分布式逻辑路由器(即,处理进入或离开VPC的数据消息的逻辑路由器)处提供。

图1图示了在其中实现新颖体系架构的示例性网络100。图1图示了包括外部网络101的网络100,该外部网络101将可用区105(例如,数据中心)之外的机器的集合102与在可用区105(例如,公共云数据中心或数据中心的集合)中的多个主机120上执行的访客机器(GM)125连接起来。可用区105包括网关设备的集合110,数据消息通过这些网关设备进出可用区105。可用区105还包括VPC的控制器计算机的集合140,它们向主机120提供配置指令。在一些实施例中,控制器计算机140在不同的可用区中执行并且通过跨越多个可用区的管理平面(例如,管理VPC)与主机120通信。

图1还图示了用作AZ 105中的其它路由器的路由学习(例如,BGP)代理的路由服务器130的集合以及连接图1中所示的不同元素的中间架构150。最后,图1图示了主机计算机120的集合,它们表示在其上实现至少一个VPC的AZ 105的物理资源的集合。主机计算机120由主机120a表示,主机120a包括将主机计算机120a的组件彼此连接并连接到中间架构150以与其它主机计算机120并与外部网络101中的外部机器102通信的受管理的转发元件160a。在一些实施例中,MFE 160a是在主机120a的管理程序中执行的软件转发元件。

主机计算机120执行访客机器125(例如,DCN、容器、舱等),为了简单起见,假设它们属于单个租户的VPC。跨主机120的集合实现的VPC还包括提供给在主机120的集合上执行的GM 125的服务的集合。在一些实施例中,GM 125是服务外部请求(例如,web服务器)或支持其它GM 125(例如,数据库服务器)的应用。

在所示示例中,用于GM 125a的服务的集合包括L4服务124a和129a的集合以及提供L7服务122a的集合的访客机器。在一些实施例中,L4服务124a和L7服务GM 122a连接到VPC的服务片段,而L4服务129a是针对GM 125a的集合中的目的地GM的内联L4服务。在一些实施例中,服务片段由使用相同L7服务GM 122a的多个租户VPC共享。因为L7服务GM 122a是资源密集型的,所以为每个租户执行分离的L7服务GM 122会不必要地消耗资源。

L4服务124a和129a被示为在内核空间中执行,而L7服务被示为在用户空间中的L7服务GM 122a中执行。在一些实施例中,内联L4服务129a包括诸如防火墙和NAT服务之类的服务,它们是用于GM 125a的集合中的目的地GM的处理管道的一部分。在一些实施例中,从逻辑交换元件的端口或从GM 125a的集合中的GM的VNIC调用L4服务129a。对于作为用于特定目的地GM的处理管道的一部分的一些服务(例如,L4防火墙),该服务不能由外部机器独立寻址并且不需要具有由路由机器123a公告的任何网络地址。

在一些实施例中,L4服务124a包括L4防火墙和负载平衡服务中的至少一种,并且在L7服务访客机器122a中提供的L7服务包括负载平衡服务、分布式入侵检测系统(IDS)服务和分布式入侵保护系统(IPS)服务中的至少一种。对于一些L4和L7服务,诸如使用特定外部IP地址的内联NAT服务或用于使用特定虚拟IP地址(VIP)寻址的计算节点的集合的负载平衡服务(或者L4或者L7负载平衡),一些实施例公告与服务关联的网络地址。

在一些实施例中,为特定服务公告的网络地址的集合不仅是服务使用的特定地址,而且包括在使用相同网络地址提供分布式服务的服务实例的集合中识别特定服务实例(例如,在特定主机计算机上执行的服务)的附加网络地址。例如,在多个主机计算机处使用特定IP版本4(IPv4)地址作为外部地址的分布式NAT服务可以通过让每个主机计算机公告唯一地识别AZ内的主机计算机(或在主机计算机上执行的分布式NAT服务实例)的IP版本6(IPv6)地址来识别提供服务的各个主机计算机。类似地,分布式负载平衡服务可以通过让每个主机计算机公告唯一地识别AZ内的主机计算机(或在主机计算机上执行的分布式负载平衡服务实例)的IP版本6(IPv6)地址来识别提供服务的不同主机。在一些实施例中,为特定分布式服务实例公告的IPv6地址基于与分布式服务关联的IPv4地址,使得网关设备在接收到发往与分布式服务关联的IPv4地址的数据消息后可以生成识别应当接收数据消息的特定主机的IPv6地址。在2020年7月16日提交的美国专利申请16/931,196中提供了使用此类IPv6地址的具体示例,该申请通过引用并入本文。

主机计算机120还包括用于与控制器计算机集合140交互的组件。主机计算机120a包括配置数据存储装置128a,其存储从控制器计算机的集合140接收的配置数据。本地控制器126a使用存储在配置数据存储装置128a中的信息来配置GM 125a、路由机器123a以及服务124a和122a。在一些实施例中,存储在配置数据存储装置128a中的信息包括与GM 125a、路由机器123a以及服务124a和122a关联的L2和L3地址,以及与每个GM 125a关联的服务的标识(例如,定义服务何时应当处理传入或传出的数据消息的策略)。在其它实施例中,本地控制器还配置MFE 160a、分布式路由(DR)实例121a和VXLAN隧道端点(VTEP)170a以实现VPC。

图1图示了其中主机计算机为单个租户执行VPC的组件的实施例。在替代实施例中,代表一个或多个租户操作的两个或更多个VPC的组件在单个主机计算机中执行。图2和3图示了为一个或多个租户的多个VPC执行组件的两个可能的实施例。图2图示了在图2中为两个VPC(即,租户A和租户B)实现的示例性逻辑网络(VPC)和在执行多个VPC的组件的诸如图1的网络100之类的网络中代表性主机计算机220的物理视图202的管理视图201(或逻辑视图)。在一些实施例中,这两个VPC属于两个不同的租户,而在其它实施例中,这两个VPC属于单个租户(例如,用于同一公司的两个不同部门的VPC)。

VPC(或逻辑网络)200包括逻辑路由器271,在所描绘的实施例中,逻辑路由器271是用于VPC的边缘(或网关)逻辑路由器。VPC包括第一逻辑交换机272,其被用于将访客机器的集合225(例如,DCN、VM、容器、舱等)连接到逻辑路由器271。在所描绘的实施例中,VPC还包括将逻辑路由器271连接到L7服务GM 222的分离的服务逻辑交换机273。如上面所讨论的,在一些实施例中,L7服务GM 222执行多个应用、程序或容器来为VPC提供多个不同的服务。

逻辑视图图示了在逻辑交换机272和GM 225之间提供的内联服务L4服务的集合224以及在逻辑路由器和服务逻辑交换机之间提供的内联L4服务的集合229。在一些实施例中,这些服务在逻辑上是逻辑路由器271或逻辑交换机272和273的处理管线的一部分并且在逻辑上没有不同。在一些实施例中,L4服务224被逻辑地应用在附接到GM 225的虚拟接口处并且包括分布式防火墙服务和分布式网络地址翻译服务中的至少一种。在其它实施例中,附加的分离的服务节点(例如,第三方服务节点)由逻辑路由器271或逻辑交换机272和273调用。虽然所示的VPC仅包括单个逻辑路由器和两个逻辑交换机,但其它实施例中的其它VPC包括多层逻辑路由器和附加逻辑交换机,并且都跨越特定主机计算机的不同VPC将具有不同的逻辑组件或逻辑结构。

物理视图202图示了与图1类似的组件,它们具有类似的编号,但是用于租户A和B的VPC的组件通过使用“A”和“B”以及不同的边界阴影来区分。图2中所描绘的多租户(或多VPC)实施例中的路由机器223是多租户路由机器,其分别为租户A和B维护不同的虚拟路由和转发(VRF)表280A和280B。在一些实施例中,不同的VRF表与用于促进使用多协议标签交换(MPLS)的分组转发的不同路由区分符和路由目标关联。附加地或可替代地,在一些实施例中,不同的VRF表280与用于实现VXLAN封装的不同虚拟网络标识符(VNI)关联。主机计算机220还执行单个VTEP 270,其用作用于多个租户的数据消息的隧道端点。

在所示实施例中,主机计算机220执行分离的访客机器225A和225B(DCN、VM、容器、舱等)、分布式路由器实例221A和221B、L4服务224A、224B、229A和229B,以及用于每个租户(例如,VPC)的L7服务GM 222A和222B。在图2中,受管理的交换元件(MSE)260用于连接每个VPC的不同组件。在一些实施例中,MSE 260被配置为实现每个VPC的逻辑交换元件(例如,逻辑交换机272和服务逻辑交换机273)。在一些实施例中,逻辑交换元件跨越多个主机计算机并且由逻辑交换元件的跨度中的每个主机计算机上的MSE实现。类似地,每个VPC的逻辑路由器271跨越多个主机并且由用于每个主机上的VPC的分布式路由器实例221实现。在一些实施例中,主机计算机220的各种元件基于存储在配置数据存储装置228中的配置数据进行配置,该配置数据是从控制器计算机集群接收的,该控制器计算机集群生成用于跨包括主机计算机220的多个主机计算机实现VPC的集合的配置数据。

除了分离的VPC组件之外,主机计算机220还执行在一些实施例中由所有租户使用的组件。例如,在一些实施例中,路由机器223、VTEP 270、受管理的交换元件(MSE)260、本地控制器226、通信代理227和配置数据存储装置228由所有租户共同使用。在其中单个VTEP270在主机计算机上执行的一些实施例中,网关设备110建立到VTEP 270的隧道以将分组转发到L7服务222A和222B以及GM225A和225B。

图3图示了示例性逻辑网络(VPC)300A和300B的管理视图301(或逻辑视图)以及执行多个VPC的组件的诸如图1的网络100之类的网络中的代表性主机计算机320的物理视图302。图3的主机计算机320实现具有与图2的示例性逻辑网络(VPC)类似的逻辑结构的VPC,但是代替服务逻辑交换机(1)对于每个VPC在逻辑上是分离的并且(2)通过逻辑路由器专门可达中,服务逻辑交换机(1)是VPC 300A和300B均可达的逻辑交换机,并且(2)服务VTEP370b被用于将寻址到L7服务的进入的数据消息直接转发到服务逻辑交换机373。在将第一VTEP 370a用于到GM 325A和325B的流量以及将第二VTEP 370b用于到多上下文L7服务DNC 350中的L7服务的流量的一些实施例中,AZ的网关设备建立到主机计算机的每个VTEP的分离隧道,用于将流量转发到GM的第一隧道和用于将流量转发到多上下文L7服务DCN350中的外部可寻址L7服务实例的第二隧道。在一些实施例中,从L7服务发送到VPC中的其它GM的分组通过VTEP 370b和370a之间的隧道使用覆盖网络被转发到分布式路由器。对于图2,在一些实施例中,这两个VPC属于两个不同的租户,而在其它实施例中,这两个VPC属于单个租户(例如,用于同一公司的两个不同部门的VPC)。

在一些实施例中,服务逻辑交换机(例如,服务平面)是分离的逻辑交换机或允许每个VPC的逻辑转发元件(例如,逻辑路由器、逻辑交换机等)访问L7服务(例如,L7防火墙、负载平衡、入侵检测等)的其它结构。在一些实施例中,通过将数据消息封装在识别逻辑服务交换机(或其它构造)和源上下文(例如,VPC、逻辑转发元件、租户等)的报头中以到达正确的L7服务实例351并返回到正确的VPC或逻辑转发元件来到达L7服务。在一些实施例中,L7服务被称为用于逻辑转发元件的处理管道的一部分并且被返回到逻辑转发元件以完成逻辑处理管道。在一些实施例中,调用L7服务作为处理管道的一部分包括拦截要求L7服务的流量,封装流量(例如,使用通用网络虚拟化封装(GENEVE))以递送到L7服务,其中具有识别原始流量的逻辑上下文(例如,租户ID、逻辑转发元件的VNI等)以使L7服务能够提供为逻辑上下文定义的服务并将流量返回到正确的逻辑交换机或处理管道。

在其它实施例中,代替提供每个VPC连接到的逻辑交换机(例如,服务平面),L7服务DCN 350具有到它为其提供L7服务的每个逻辑交换机的连接。但是,因为到L7服务的流量的(重新)定向是在内核空间中执行的,所以在本领域普通技术人员将理解的还有其它实施例中使用其它构造。

图3图示了其中与服务逻辑交换机373关联的L4服务324A和324B作为多上下文L4服务340执行的实施例,该多上下文L4服务340基于包括在分组中的租户或逻辑网络标识符(例如,VXLAN报头中包括的VNI)为不同租户提供L4服务。此外,用于租户A和B的L7服务351A和351B的集合分别在单个多上下文L7服务DCN350内执行。为了促进在同一L7服务DCN 350内为不同VPC提供L7服务,所示实施例还在L7服务DCN 350内实现服务VTEP 370b以区分用于不同租户或VPC的流量。在一些实施例中,多上下文L7服务DCN 350是包括多个L7服务容器或为不同租户执行多个L7服务应用的虚拟机或舱之一。图3中出现并与图1和2具有相似编号的其它元素也具有相似的功能和特征。

图4概念性地图示了用于配置主机计算机(例如,主机计算机120)的组件以在AZ内实现VPC的过程400。在一些实施例中,过程400基于从控制器计算机(例如,控制器计算机集140)接收的配置信息由主机计算机的管理程序执行。在一些实施例中,过程400是当主机计算机首先被配置为实现VPC时执行的初始化过程。过程400通过从控制器计算机集接收(在410处)配置信息开始。在一些实施例中,配置信息包括用于与AZ(和可能的其它AZ)中的其它主机计算机协同实现VPC的组件的集合的配置。在一些实施例中,用于实现VPC的组件包括路由机器,其被用于将与VPC关联的网络地址公告给AZ中的其它路由器,并从AZ中的其它路由器接收公告。在一些实施例中,用于实现VPC的组件包括VPC的数据计算节点(DCN)和在VPC内为VPC的DCN提供的服务的服务实例。

基于接收到的配置信息,过程400实例化(在420处)主机计算机上的路由机器。如本文档中所使用的,术语实例化被用于表示使得网络组件(例如,DCN、服务、逻辑网络元素等)被添加到主机计算机或在主机计算机上可用的过程。在一些实施例中,路由机器在每个主机计算机上实例化,因为它首先被配置用于实现VPC,然后单个路由机器由随后在主机计算机上实现的每个VPC使用。因而,路由机器是多租户(或多租户能力)路由机器,并且被配置为使用至少一个标准路由公告协议(例如,MP-BGP)来公告用于不同租户的VPC组件的路由。在一些实施例中,路由机器是标准虚拟机、轻量级虚拟机、容器或舱之一。

在主机计算机上实例化路由机器之前或之后(在420处),该过程识别(在430处)要在主机计算机上执行的VPC组件的集合。在一些实施例中,识别出的组件包括VPC的DCN的集合、VPC的逻辑转发元件(LFE)的集合,以及服务计算节点(例如,虚拟机、容器或舱)。在一些实施例中,配置信息还包括关于DCN、服务计算节点和LFE之间的连接的信息。在其中实例化路由机器在识别(在430处)VPC组件的集合之后发生的一些实施例中,识别VPC组件的集合包括识别路由机器需要被实例化。

在识别(在430处)要在主机计算机上执行的VPC的组件之后,过程400实例化(在440处)识别出的用于VPC的DCN。在一些实施例中,识别出的DCN包括与为外部网络中的机器提供特定服务关联的VPC的DCN。在一些实施例中,与为外部网络中的机器提供特定服务关联的DCN包括可从外部机器直接寻址的DCN和可在与用于提供在一个或多个AZ中的主机计算机的集合上执行的特定服务的DCN的集合关联的网络地址(例如,VIP)处寻址的DCN中的至少一个。在一些实施例中,其它识别出的DCN包括用于向VPC中的其它DCN提供服务的DCN,这些DCN在VPC的私有地址空间内是可寻址的。

除了识别(在430处)VPC的组件之外,过程400还识别(在450处)与识别出的VPC组件关联的服务的集合。在一些实施例中,服务是基于定义与VPC中的DCN关联的服务的集合的VPC的策略来识别的。在一些实施例中,识别出的服务包括不同类型的服务,诸如防火墙服务、NAT服务、负载平衡服务、IDS服务和IPS服务。在一些实施例中,对于在特定主机计算机上执行的DCN的集合而言,并非所有与VPC关联的服务都是必需的,并且识别出的服务的集合是与在主机计算机上执行的特定DCN关联的服务的子集。在一些实施例中,从单个逻辑交换元件的多个端口或者甚至从VPC的多个逻辑交换元件的端口调用相同的服务(例如,防火墙服务)。

一旦与DCN关联的服务被识别(在450处),该过程就实例化(在460处)识别出的服务。在一些实施例中,识别出的服务包括以不同方式实例化的服务。例如,作为内联服务提供(例如,作为处理管道的一部分提供)的服务被添加为可以从多个逻辑交换元件的端口调用的组件(例如,程序或函数调用)。例如,图1的L4服务129a表示可以使用函数调用来实现的内联服务的集合。在一些实施例中,识别出的服务包括基于在OSI模型的第1-4层而非更高层的信息提供的服务(例如,L4服务124a和129a),这些服务被实例化以在主机计算机的内核空间中执行。

其它识别出的服务包括基于OSI模型的第7层的信息提供的服务(例如,L7服务)并且被实例化以在主机计算机的用户空间中执行。在一些实施例中,L7服务在主机计算机的用户空间中的虚拟机、轻量级虚拟机、容器或舱之一中运行。在一些实施例中,多个L7服务在同一虚拟机(例如,作为VM内的分离的应用)或舱(例如,作为舱内的分离的容器)中执行。在一些实施例中,资源密集型的其它识别出的服务也被配置为与识别出的L7服务一起在主机计算机的用户空间中执行。在一些实施例中,在识别出要求VM或容器的服务之前,不实例化(或添加)执行L7服务的虚拟机或容器。在一些实施例中,仅运行被识别为必要的服务和VM或容器为在主机上执行的DCN和服务节省主机资源。在一些实施例中,本地控制器(例如,本地控制器126)负责基于存储在本地存储装置(例如,配置数据存储装置128)中的配置数据实例化和配置DCN、服务、LFE和服务VM(或容器/舱)。在一些实施例中,使用从本地存储装置提供配置信息的虚拟机通信接口(VMCI)代理(例如,通信代理127)配置在VM或容器(或与VM或容器关联的nginx数据路径)内执行的服务。

在(或结合)实例化(在440和460处)识别出的VPC组件之后,过程400向主机计算机上的路由实例提供(在470处)用于VPC的实例化组件和服务的路由信息。在一些实施例中,提供路由信息包括使实例化的组件向路由机器宣布它们的网络地址(例如,使用无偿地址解析协议(GARP)数据消息)。在其它实施例中,向路由机器提供路由信息附加地或可替代地包括通过VMCI代理(例如,通信代理127)从本地存储装置提供路由信息,VMCI代理从本地存储装置检索配置信息并将其提供给路由机器。在一些实施例中,路由实例向本地配置数据存储装置(通过VMCI代理)或向VMCI代理注册以接收对与在主机计算机上操作的DCN和服务相关的配置信息的更新。

在一些实施例中,呈现了一种用于识别主机计算机处可用的网络地址的新颖方法。执行路由实例的主机计算机(例如,路由机器)检测网络地址在主机上已变得可用。在一些实施例中,检测网络地址已变得可用包括检测DCN或服务中的至少一个已被添加到主机计算机。然后,路由实例识别与检测到的DCN或已添加到主机的服务关联的网络地址。在一些实施例中,识别出的网络地址是AZ中的其它路由器使用的地址。在其它实施例中,识别出的网络地址是AZ外部网络中的路由器和机器使用的地址。然后路由实例将识别出的网络地址公告给至少一个路由服务器,以公告给AZ中的其它路由器。

图5概念性地图示了用于检测DCN已经被添加到主机计算机并且将与DCN关联的网络地址公告给AZ中的其它路由器的过程500。在一些实施例中,过程500由主机计算机上的路由机器(或路由机器的自由范围路由守护进程)执行,主机计算机使用路由学习协议(例如,BGP,MP-BGP、IS-IS等)与路由服务器的集合通信。在一些实施例中,当DCN被添加到路由机器在其上执行的主机计算机或从主机计算机移除时,路由机器注册以接收通知。在一些实施例中,注册(例如,通过API调用)是向在从本地配置数据存储装置检索关于主机计算机上的DCN的配置数据的主机计算机上执行的本地控制器或VMCI代理进行的。

在一些实施例中,过程500通过接收(在510处)DCN已被添加到主机计算机的通知而开始。在一些实施例中,通知包括关于用于在路由机器中生成路由条目的添加的DCN的信息的集合。此外,在一些实施例中,信息的集合被用于生成到AZ中的其它路由器的公告,如下所述。本领域普通技术人员将认识到的是,在一些实施例中,不要求注册,并且在操作510中接收的信息在被添加到主机计算机后从DCN接收(例如,通过无偿地址解析代理(GARP)信息)。

在接收(在510处)关于添加的DCN的信息的集合之后,识别(在520处)与DCN关联的网络地址。在一些实施例中,识别网络地址包括识别接收到的与DCN的网络地址相关的信息的集合中的信息。在一些实施例中,信息的集合包括为其添加它的VPC内的DCN的网络地址、VPC标识符(例如,虚拟网络标识符(VNI))以及朝着所添加的DCN的下一跳。一旦网络地址被识别(在520处),路由机器就识别(在530处)用于公告所添加的DCN的网络地址的集合。在一些实施例中,识别出的用于将DCN公告给AZ中的其它路由器的网络地址的集合包括用于将DCN的可用性公告给VPC的其它组件的第一网络地址和由VPC外部的机器使用的第二网络地址。在一些实施例中,第二网络地址是DCN用来使其自身对外部机器可用的网络地址。在一些实施例中,第二网络地址是与添加到主机计算机以服务于所添加的DCN的服务关联的网络地址。

在一些实施例中,识别出的网络地址的集合是与用于识别DCN对VPC的其它组件和对VPC外部的机器的可用性的附加信息关联的单个网络地址(例如,指定IP地址的所有32位的/32IP地址)。在一些实施例中,附加信息(例如,上下文信息)包括与和DCN关联的VPC关联的虚拟网络标识符(VNI)或逻辑网络标识符(LNI)、关联的租户标识符(TID)和由其它路由器用于(1)将公告的路由识别为与特定VRF上下文相关和(2)将用于所添加的DCN的路由与不同VPC中其它具有相同网络地址的其它DCN(例如,共享多个VPC使用的私有IP地址空间中的IP地址的DCN)的路由区分开的路由区分符值中的至少一个。在一些实施例中,识别出的网络地址还包括识别DCN在其上执行的主机计算机的信息,诸如主机计算机的VTEP网络地址或IP地址。在一些实施例中,上下文信息由在其上执行新添加的DCN的主机计算机基于存储在主机计算机处的信息(例如,存储在配置数据存储装置中的配置信息)来生成。

在一些实施例中,附加信息与识别出的网络地址一起被发送到路由服务器,如下面进一步描述的。在一些实施例中,这个附加信息包括与识别出的网络地址所属的机器关联的上下文属性。一些实施例中的上下文属性的示例可以包括不是L2、L3或L4报头值的任何属性。例如,在一些实施例中,与识别出的网络地址一起发送到路由反射器的上下文属性是逻辑端口标识符。在一些实施例中,逻辑端口标识符被用于解析转发和服务策略(例如,使用对其添加逻辑端口标识符的逻辑端口组指定的安全策略)。在一些实施例中,为具有新添加的IP地址的DCN(例如,为新添加的DCN或为现有DCN添加的新IP地址)识别逻辑端口标识符。在一些实施例中,上下文属性被包括在公告的GENEVE报头中。

一旦要公告的地址的集合已被识别(在530处),识别出的网络地址的集合就被公告(在540处)给AZ中的其它路由器,以便允许将数据消息定向到DCN并且该过程结束。在一些实施例中,向其它路由器公告网络地址的集合是通过将网络地址的集合公告给用于在AZ内传播路由信息的路由服务器的集合中的至少一个路由服务器来完成的。在一些实施例中,向路由服务器的集合(路由反射器)公告网络地址的集合包括将附加信息(例如,上下文信息)连同所公告的网络地址的集合一起发送到路由服务器。在一些实施例中,附加信息被包括在识别出的网络地址的集合的公告的GENEVE(或其它封装)报头中。

在一些实施例中,路由服务器的集合使用用于在路由器之间传送路由的标准协议(诸如BGP或MP-BGP、IS-IS、IBGP、eBGP、OSPF等)接收和发送公告,并且使用这些标准协议代替控制器计算机集群更新每个主机计算机的路由信息,因为DCN或服务从VPC添加或删除,或从VPC内的一个主机计算机迁移到另一个主机计算机。在一些这样的实施例中,使用诸如BGP之类的成熟协议来提高收敛速度并减少控制器计算机的工作量。此外,与AZ中所有路由器之间的全网状体系架构相比,使用路由服务器与AZ中的路由器通信减少了更新AZ中的路由器所需的数据量。

图6概念性地图示了类似的过程600,该过程用于检测DCN已经从主机计算机中移除并且从可用区中的其它路由器撤回与被移除的数据计算节点关联的网络地址。在一些实施例中,过程600由执行过程500的同一路由机器执行。如上所述,在一些实施例中,当DCN从路由机器在其上执行的主机计算机中被移除时,路由机器注册以接收通知。在一些实施例中,注册(例如,通过API调用)与在主机计算机上执行的本地控制器或VMCI代理进行,其从本地配置数据存储装置检索关于主机计算机上的DCN的配置数据。

在一些实施例中,过程600通过接收(在610处)DCN已经或将要从主机计算机移除的通知而开始。移除DCN包括将DCN迁移到不同的主机和关闭DCN(例如,从VPC中移除DCN)。在一些实施例中,通知包括关于用于在路由机器中生成路由条目的已移除的DCN的信息的集合。在一些实施例中,通知仅包括被移除的DCN的唯一标识符(例如,通用唯一标识符(UUID)),路由机器使用该唯一标识符来识别路由条目和在DCN被添加到主机计算机时做出的公告。此外,在一些实施例中,信息的集合被用于向AZ中的其它路由器生成公告以撤回该路由。本领域普通技术人员将认识到的是,在一些实施例中,不要求注册,并且在操作610中接收的信息是从本地控制器或VMCI代理接收的,作为从主机计算机移除DCN的过程的一部分。

在接收到(在610处)关于被移除的DCN的信息的集合之后,识别(在620处)与DCN关联的网络地址。在一些实施例中,识别网络地址包括识别接收到的与DCN的网络地址相关的信息的集合中的信息。如果通知包括被移除DCN的唯一标识符,那么识别与被移除DCN关联的网络地址包括使用唯一标识符来识别网络地址。在一些实施例中,信息的集合包括与被移除的DCN关联的VPC内的DCN的网络地址和VPC标识符(例如,VNI)。一旦网络地址被识别(在620处),路由机器识别(在630处)被用于在DCN被添加到主机时公告DCN的网络地址的集合。在一些实施例中,用于向AZ中的其它路由器公告DCN的识别出的网络地址的集合包括用于向VPC的其它组件公告DCN的可用性的第一网络地址和由VPC外部的机器使用的第二网络地址。在一些实施例中,识别出的网络地址的集合是与附加信息关联的单个网络地址,该附加信息用于识别DCN对VPC的其它组件和对VPC外部的机器的可用性。在一些实施例中,附加信息包括与和DCN关联的VPC关联的VNI、由其它路由器用于将所公告的路由识别为与特定VRF上下文相关并区分用于所添加的DCN的路由与用于不同VPC中具有相同网络地址的其它DCN(例如,在多个VPC使用的私有IP地址空间中共享IP地址的DCN)的路由的路由区分符值中的至少一个。在一些实施例中,识别出的网络地址还包括识别DCN在其上执行的主机计算机的信息,诸如主机计算机的VTEP网络地址或IP地址。

一旦已经识别出(在630处)地址的集合,就从AZ中的其它路由器撤回(在640处)识别出的网络地址的集合,以便停止将数据消息定向到位于主机计算机处的DCN并且过程结束。在一些实施例中,通过从用于在AZ内传播路由信息的路由服务器的集合中的至少一个路由服务器撤回网络地址的集合来完成向其它路由器撤回网络地址的集合。

除了检测向主机计算机添加DCN之外,在一些实施例中,路由机器还检测向主机计算机添加服务。图7概念性地图示了用于检测已添加到主机的服务并将网络地址公告给AZ中的其它路由器的过程700。在一些实施例中,过程700不仅在将服务添加到主机计算机时被执行,而且在更新服务的配置后(例如,更新分配的网络地址或端口范围)也被执行。在一些实施例中,过程700由主机计算机上的路由机器执行,该主机计算机使用路由学习协议(例如,BGP、MP-BGP、IS-IS等)与路由服务器的集合通信。在一些实施例中,路由机器注册用于在服务被添加到执行路由机器的主机计算机或从主机计算机移除服务时接收通知。在一些实施例中,注册(例如,通过API调用)是向在主机计算机上执行的本地控制器或VMCI代理进行的,其从本地配置数据存储装置检索关于主机计算机上的服务的配置数据。

在一些实施例中,过程700通过接收(在710处)服务已经或将要添加到主机计算机的通知而开始。在一些实施例中,所添加的服务作为分布式服务的服务实例被添加,该分布式服务使用相同的网络地址(或网络地址的集合)在多个主机计算机处提供。在一些实施例中,通知包括关于用于在路由机器中生成路由条目的添加的服务(或服务实例)的信息的集合。此外,在一些实施例中,信息的集合被用于生成到AZ中的其它路由器的公告,如下所述。本领域的普通技术人员将认识到的是,代替注册通知,在一些实施例中,本地控制器被配置为向路由机器提供与添加到主机计算机的服务相关的信息。可替代地,关于服务的信息在被添加到主机计算机后从服务实例接收(例如,通过无偿地址解析代理(GARP)消息)。

在接收到(在710处)关于所添加的服务的信息的集合之后,识别(在720处)与该服务关联的网络地址。在一些实施例中,识别网络地址包括识别接收到的信息的集合中与和服务关联的网络地址关联的信息(例如,与NAT服务关联的外部IPv4地址或与负载平衡服务关联的虚拟IPv4地址)。在一些实施例中,信息的集合包括VPC标识符(例如,VNI)、分配给主机计算机上的服务实例的端口的集合(例如,用于分布式NAT服务),以及朝着所添加的服务的下一跳。一旦网络地址被识别(在720处),路由机器就识别(在730处)用于公告所添加的服务的网络地址的集合。在一些实施例中,识别出的用于向AZ中的其它路由器公告服务的网络地址的集合包括用于向VPC的其它组件公告服务的可用性的第一网络地址和由VPC外部的机器使用的第二网络地址。在一些实施例中,识别出的用于公告所添加的服务的网络地址的集合基于接收到的网络地址中的网络地址并基于附加信息。例如,在一些实施例中,由特定主机计算机为在多个主机计算机上执行的分布式NAT服务(例如,分布式有状态服务)公告的网络地址是IPv6网络地址前缀,该前缀结合了与NAT服务关联的IPv4地址以及分配给在特定主机计算机上执行的分布式NAT服务实例的端口的集合。IPv6网络地址的生成被用于识别在特定主机计算机上执行的服务实例,该主机计算机存储流的状态信息以避免在AZ内重定向,并在2020年7月16日提交的美国专利申请16/931,196中进一步描述,该申请通过引用并入本文。

对于其它服务,识别出的网络地址的集合在一些实施例中是单个网络地址(即,与服务关联的VTP),其与用于识别服务对VPC的其它组件和对VPC外部的机器的可用性的附加信息关联。在一些实施例中,附加信息包括与和DCN关联的VPC关联的VNI、由其它路由器用于将所公告的路由识别为与特定VRF上下文相关并区分用于所添加的DCN的路由与用于不同VPC中具有相同网络地址的其它DCN(例如,在多个VPC使用的私有IP地址空间中共享IP地址的DCN)的路由的路由区分符值。在一些实施例中,识别出的网络地址还包括识别在其上执行服务的主机计算机的信息,诸如主机计算机的VTEP网络地址或IP地址。

在一些实施例中,甚至一些有状态分布式服务被公告为在使用相同网络地址的每个主机计算机处可用。例如,在一些实施例中,用于分发从外部网络中的客户端接收到的请求的有状态分布式负载平衡服务依赖于AZ的网关的集合,以一致地将同一个流发送到同一个主机计算机,从而跨提供分布式负载平衡服务的主机计算机基于在AZ的网关设备处执行的等价多路径(ECMP)操作提供分布式负载平衡。为了启用此ECMP操作,在一些实施例中,执行分布式负载平衡器实例的每个主机上的路由机器将相同的VIP地址公告为可用,并且AZ的网关设备将多个公告的下一跳地址记录为与VIP尽可能关联的下一跳。对于接收到的寻址到VIP的数据消息,AZ的网关设备使用ECMP操作选择特定的下一跳。在此类实施例中,当提供分布式负载平衡服务的主机计算机的数量改变后,可以要求可接受数量的重定向操作,使得确保可以为每个流确定性地识别不同主机计算机的努力是不值得的(或数据消息)。

在依赖于AZ网关设备的ECMP的实施例中,在AZ网关的路由表改变后(例如,基于提供分布式边缘服务的主机数量的改变)ECMP操作可能将至少一些数据消息流的数据消息引导到与路由表改变之前接收的数据消息不同的主机计算机。为了将这些数据消息重定向到维护用于关联的数据消息流的状态信息的主机计算机,一些实施例提供了重定向操作。在一些实施例中,主机计算机知道AZ网关的ECMP操作使用的算法或散列,并且当接收到主机计算机不为其存储状态信息的已建立数据消息流的数据消息时,主机计算机根据主机计算机的前一集合执行ECMP操作,以确定存储状态信息的主机计算机并将数据消息重定向到那个主机计算机。

在其中AZ网关ECMP操作的算法或散列未知的其它实施例中,在特定主机计算机处接收到的每个新数据消息流触发发送到提供特定主机计算机的边缘服务的每个其它主机计算机的通知维护那个数据消息流的状态信息。可替代地,在一些实施例中,由特定主机计算机发送的通知被发送到使用每个主机计算机已知的操作(例如,一致散列)选择的主机计算机。在成员资格改变(即,提供边缘服务的主机计算机的数量或身份改变)之后,已知操作被用于将数据消息重定向到使用基于先前成员资格的已知操作选择的主机。然后,所选择的主机计算机将基于从特定主机计算机发送的通知将数据消息重定向到维护状态信息的特定主机计算机。

一旦已经识别出(在730处)要被公告的地址的集合,用于公告服务的可用性的识别出的网络地址的集合被公告(在740处)给AZ中的其它路由器以便允许数据消息被定向到服务并且过程结束。在一些实施例中,向其它路由器公告组网络地址的集合是通过将网络地址的集合公告给用于在AZ内传播路由信息的路由服务器的集合中的至少一个路由服务器来完成的。对于AZ之外的网络中的机器可用的服务,路由服务器的集合将网络地址公告给AZ的网关设备的集合,这些网关设备提供对外部网络的访问。

在一些实施例中,路由服务器的集合使用诸如BGP或MP-BGP等标准协议来接收和发送公告,并且,当DCN或服务从VPC中添加或移除或从VPC中的一个主机计算机迁移到另一个主机计算机时,这些标准协议被用于代替控制器计算机集群来更新每个主机计算机的路由信息。在一些这样的实施例中,使用诸如BGP之类的成熟协议来提高收敛速度并减少控制器计算机的工作量。此外,与AZ中所有路由器之间的全网状体系架构相比,使用路由服务器与AZ中的路由器进行通信减少了更新AZ中的路由器所需的数据量。

图8概念性地图示了类似的过程800,该过程用于检测服务已经从主机计算机中移除并且从可用区(和外部网络)中的其它路由器撤回与被移除的服务关联的网络地址。在一些实施例中,过程800由执行过程700的同一路由机器执行。如上所述,在一些实施例中,当服务从路由机器在其上执行的主机计算机中被移除时,路由机器注册以接收通知。在一些实施例中,注册(例如,通过API调用)是向在主机计算机上执行的本地控制器或VMCI代理进行的,其从本地配置数据存储装置检索关于主机计算机上的服务的配置数据。

在一些实施例中,过程800通过接收(在810处)服务已经或将要从主机计算机被移除的通知。在一些实施例中,当用于包括该服务的VPC的DCN不再在主机计算机上执行时,当在计算机上执行的DCN不要求该服务时,或者用于特定服务的服务实例从主机计算机(或者迁移到另一个主机或者关闭以缩减服务容量),移除服务发生。在一些实施例中,通知包括关于用于在路由机器中生成路由条目的被移除服务的信息的集合。在一些实施例中,通知包括路由机器可以用来识别路由条目和在将服务添加到主机计算机时作出的公告的信息。此外,在一些实施例中,信息的集合被用于向AZ中的其它路由器生成公告以撤回该路由(网络地址的集合)。本领域普通技术人员将认识到的是,在一些实施例中,不要求注册,并且在操作810中接收的信息是从本地控制器或VMCI代理接收的,作为从主机计算机移除服务的过程的一部分。

在接收到(在810处)关于被移除的服务的信息的集合之后,识别(在820处)与该服务关联的网络地址。在一些实施例中,识别网络地址包括识别接收到的与和服务关联的网络地址关联的信息的集合中的信息。如果通知包括被移除的服务的识别信息,那么识别与被移除的服务关联的网络地址包括使用识别信息来识别网络地址。在一些实施例中,信息的集合包括VPC标识符(例如,VNI)、分配给主机计算机上的服务实例的端口的集合(例如,用于分布式NAT服务),以及朝着所添加的服务的端口的集合。一旦网络地址被识别出(在820处),路由机器就识别(在830处)网络地址的集合,用于在服务被添加到主机机器时公告服务。在一些实施例中,识别出的网络地址还包括识别在其上执行服务的主机计算机的信息,诸如主机计算机的VTEP网络地址或IP地址。

一旦用于公告服务的地址的集合已经被识别出(在830处),识别出的网络地址的集合就从AZ中的其它路由器撤回(在840处)以便停止数据消息被引导到主机计算机处的DCN并且过程结束。在一些实施例中,通过从用于在AZ内传播路由信息的路由服务器的集合中的至少一个路由服务器撤回网络地址的集合来完成向其它路由器撤回网络地址的集合。

在一些实施例中,路由服务器的集合使用诸如BGP或MP-BGP等的标准协议来接收和发送公告,并且当在VPC中添加或移除DCN或服务或从VPC中的一个主机计算机迁移到另一个主机计算机时,这些标准协议被用于代替控制器计算机集群来更新用于每个主机计算机的路由信息。在一些这样的实施例中,使用诸如BGP之类的成熟协议来提高收敛速度并减少控制器计算机的工作量。此外,与AZ中所有路由器之间的全网状体系架构相比,使用路由服务器与AZ中的路由器进行通信减少了更新AZ中的路由器所需的数据量。

在一些实施例中,路由服务器(例如,路由服务器130)的集合接收关于图5-8讨论的公告。图9概念性地图示了用于路由服务器的过程900,该过程接收路由公告并基于接收到的公告生成到其它路由器的路由公告。在一些实施例中,过程900由用于AZ的路由服务器的集合中的路由服务器执行,每个路由服务器从AZ中的不同分配路由器的集合接收公告并为AZ中指派的路由器的不同集合生成公告。在一些实施例中,指派的路由器的不同集合重叠以确保每个路由器即使在路由服务器故障的情况下也将接收公告。在其它实施例中,指派的路由器的不同集合是不同的以避免冲突的公告。

过程900通过从AZ中的多个路由器接收(在910处)AZ中的地址的公告的集合开始。在一些实施例中,多个路由器位于路由服务器从其接收公告并且路由服务器生成并向其发送公告的所指派路由器的集合中。在一些实施例中,接收到的公告包括与L4和L7服务关联的虚拟IP地址,以及与L7服务在其上执行的L7服务DCN关联的IP地址。在一些实施例中,公告将L7服务DCN的IP地址或VTEP识别为L7服务的VIP可用的地址。AZ的网关设备接收与VIP关联的多个地址(例如,多个VTEP地址或L7服务DCN IP地址),在一些实施例中,包括每个接收到的地址作为要由负载平衡操作选择的可能下一跳(例如,等价多路径(ECMP)操作)。在服务实例的数量大于AZ网关设备可以在ECMP操作中使用的一些实施例中,在服务实例之前引入了附加的负载平衡操作,或者附加的VIP与服务关联以允许ECMP在较少数量的服务实例上为每个VIP执行。

在从AZ中的多个路由器接收到(在910处)公告之后,路由服务器与其它路由服务器交换(在920处)路由信息以维护用于AZ的准确路由信息。在一些实施例中,路由服务器之间的路由交换在每个路由服务器接收到公告时执行,使得操作920仅包括发送关于接收到的公告的信息并且从其它路由服务器接收信息独立于操作920中的交换。在一些实施例中,交换通过公告(例如,BGP或MP-BGP公告)的集合进行。在其它实施例中,控制平面消息被用于同步在每个路由服务器处接收到的路由。

在与其它路由服务器交换(在920处)路由信息之后,过程900基于至少多个接收到的公告来生成(在930处)至少一个聚合公告。在一些实施例中,至少一个聚合公告还基于从其它路由服务器接收到的路由信息。在一些实施例中,聚合公告仅包括未包括在先前公告中的路由的集合,而在其它实施例中,所有活动路由都被公告以便将路由识别为活动并避免基于定时使活动路由无效或路由器处的清理操作。在一些实施例中,该过程生成(在930)多个聚合公告。在一些实施例中,多个聚合公告包括针对在不同主机计算机上执行的不同路由器的公告,其仅包括与主机计算机相关的路由。在其它实施例中,为每个唯一的路由区分符生成不同的聚合公告。在一些实施例中,多个聚合公告包括针对在AZ中的主机计算机中执行的所指派路由器的集合中的路由器的不同子集的不同公告。在一些实施例中,多个聚合公告包括针对AZ中路由器的不同子集的不同公告,诸如在AZ的主机计算机中执行的路由器的不同指派的集合、中间架构中的路由器的集合,以及包括与路由器的每个集合相关的路由的AZ的网关路由器的集合。

一旦生成(在930处)至少一个聚合公告,就识别(在940处)AZ中的路由器的集合用于接收至少一个生成的聚合公告。在一些实施例中,识别AZ中的路由器的集合包括识别路由器的集合以接收每个生成的聚合公告。如上所述,在一些实施例中,为路由器的不同集合生成不同的聚合公告,并且识别路由器的集合包括识别路由器的集合以接收每个生成的聚合公告。在其中生成单个聚合公告的实施例中,识别路由器的集合包括识别用于路由服务器的指派的路由器的AZ集合中的所有路由器。一旦识别出(在940处)用于接收所生成的聚合公告的路由器的集合,就将聚合公告发送到AZ中识别出的路由器的集合并且该过程结束。在一些实施例中,使用标准公告协议(例如,BGP、MP-BGP、IS-IS等)来制作公告。

在一些实施例中,路由服务器负责监视AZ中服务的可用性(例如,服务实例的健康状况)并处置服务实例故障公告。可替代地或附加地,在一些实施例中,在与服务实例相同的主机计算机上执行的控制器计算机的集合或路由实例负责监视在特定主机计算机上执行的服务实例的可用性并处置服务实例故障公告。图10概念性地图示了用于监视单个服务实例的健康状况并将服务实例的故障公告给AZ中的路由器的过程1000。过程1000以建立与服务实例的监视会话开始。在一些实施例中,监视会话是双向转发检测(BFD)会话或本领域普通技术人员已知的任何其它监视协议。

过程1000然后确定(在1020处)服务是否仍然通过监视协议可获得。在一些实施例中,如果网络元素(例如,路由服务器、路由实例或控制器计算机)接收到心跳分组或基于所使用的监视协议服务实例可用的其它指示,那么确定该服务仍然可用。如果确定(在1020处)该服务仍然可用,那么过程继续确定该服务是否可用。可以基于预期心跳分组或其它可用性指示的周期(例如,每50ms、100ms等)周期性地做出该确定。如果确定(在1020处)服务不可用(例如,基于用于监视协议的标准),那么生成公告以从AZ中的路由器撤回与服务实例关联的路由。

在生成(在1030处)撤回公告之后,所生成的撤回公告被用于从AZ中的路由器公告与服务实例关联的路由的撤回。在其中路由实例或控制器计算机监视服务实例的可用性的一些实施例中,向与路由实例或控制器计算机关联的至少一个路由服务器进行公告。在此类实施例中,路由服务器然后将公告传播到AZ中的其它路由服务器和路由器。在其中路由服务器监视服务实例的健康状况的实施例中,路由服务器将与服务实例关联的路由的撤回公告给AZ本身中的其它路由服务器和路由器。

在一些多租户实施例中,路由实例是为每个租户维护分离的虚拟路由和转发(VRF)上下文的多租户路由实例。在一些实施例中,路由实例是BGP实例。在一些实施例中,路由实例是支持多种寻址协议(例如,多协议标签交换(MPLS)、BGP标记单播(BGP-LU)、分段路由(SR)的多协议BGP实例(MP-BGP))。在一些实施例中,不同的VRF上下文由路由区分符来区分,并且路由目标被用于识别与每个VRF上下文相关的公告。

图11概念性地图示了用于在多租户路由实例处更新路由信息的过程1100。图12图示了多租户MP-BGP路由实例1223在自由范围路由(FRR)守护进程(即,MP-BGP守护进程)处从路由服务器1230接收路由公告并更新VRF 1280A-1280D的路由表。图12将在讨论图11的背景下进行讨论。在一些实施例中,过程1100由在主机计算机上执行的多租户MP-BGP路由实例(例如,路由实例1223或FRR守护进程1290)执行。过程1100开始于(在1110处)接收与AZ中的至少一个VPC关联的地址的集合(例如,路由1-4)的路由的公告(例如,MP-BGP公告1231)。在一些实施例中,与不同VPC关联的公告路由的集合各自在分离的公告中被公告。在其它实施例中,单个公告(例如,MP-BGP公告1231)包括用于不同VPC的地址的集合,其中用于每个不同VPC的公告与不同VPC标识符(例如,路由区分符)关联。

在接收到(在1110处)公告之后,与每个所公告的地址关联的虚拟路由和转发(VRF)上下文被识别(例如,由多租户MP-BGP路由实例1223或FRR守护进程1290)。在一些实施例中,识别VRF上下文包括识别与所公告的地址关联的路由区分符以及与每个VRF上下文关联的路由目标。如图12中所示,单个VRF上下文可以与多个路由区分符关联(例如,通过指定多个导入路由目标)。例如,VRF 1280A和1280B都与同一个租户关联,并且每个都与和租户VPC关联的两个VRF的路由目标(即,路由目标65000:100和65000:200)关联。其它VRF上下文与单个路由目标关联(例如,分别用于VRF 1280C和1280D的65000:300或65000:400)。

在识别出(在1120处)与每个所公告的路由关联的VRF之后,用关联的所公告的路由来修改(在1130处)每个识别出的VRF的路由表。在一些实施例中,修改是在撤回公告的情况下移除路由,并且在向地址添加新路由的公告的情况下添加路由。例如,公告1231包括分别与路由区分符65000:100和65000:200关联的路由1和2,这些路由区分符与租户1的VPC关联。基于路由区分符,指定导入路由目标65000:100和65000:200的VRF 1280A和1280B添加路由1和2。基于用于路由3的公告与路由区分符65000:300关联,路由3基于指定的导入路由目标65000:300添加到VRF 1280C的路由表中。此外,基于用于路由4的公告与路由区分符65000:400关联,路由4基于指定的导入路由目标65000:400添加到VRF 1280D的路由表中。

在修改(在1130处)识别出的VRF的路由表之后,将修改后的路由表提供(在1140处)到本地存储装置(例如,配置数据存储装置)以供路由器(例如,逻辑路由器、软件路由器等)访问以更新其路由表,以便为路由器处理的数据消息做出转发决定,并且过程结束。在一些实施例中,将路由表提供给本地存储装置包括将路由表提供给在路由实例和本地存储装置之间居中的通信代理(例如,VMCI代理)。在一些实施例中,每个路由器向本地存储装置或提供对本地存储装置的访问的本地控制器注册以接收特定路由表(例如,特定VRF路由表)的更新。在一些实施例中,向本地存储装置注册包括发起长拉以接收更新后的路由表。

新颖体系架构中的主机计算机在接收到进入VPC并以VPC中的一个或多个DCN的集合为目的地的数据消息后,在将数据消息递送到目的地DCN之前执行处理步骤的集合。图13概念性地图示了用于处理寻址到在主机计算机上执行的服务或DCN的数据消息的过程1300。虽然该过程被描述为由主机计算机执行,但本领域普通技术人员将认识到的是,在一些实施例中,不同的操作由主机计算机的不同组件执行。过程1300开始于(在1310处)从寻址到逻辑网络中的DCN的集合的网关设备接收进入的数据消息。在一些实施例中,主机计算机在受管理的转发元件(MFE)(例如,在主机计算机上执行的软件交换机)处接收数据消息。在一些实施例中,MFE将接收到的数据消息提供给路由实例以确定下一跳。在一些实施例中,在公告目的地网络(例如,IP)地址的可用性的路由实例处接收数据消息。

在一些实施例中,DCN的集合是由进入的数据消息具体寻址的单个DCN。在一些实施例中,DCN的集合是由在主机计算机上执行的负载平衡服务实例为其提供负载平衡的DCN的集合。在一些实施例中,DCN的集合包括在主机计算机上执行的一个或多个DCN的集合,而在其它实施例中,DCN的集合仅包括在其它主机计算机上执行的DCN。在其中负载平衡服务实例对包括在主机计算机上执行的DCN的DCN的集合执行负载平衡的一些实施例中,在主机计算机上执行的DCN被优先选择以接收数据消息。在一些实施例中,偏好被表达为用于加权的负载平衡算法的更高权重,或用于将数据消息转发到在另一个主机上执行的DCN的附加成本(例如,将恒定值添加到另一个主机计算机上DCN的负载的测量)。

在接收(在1310处)进入的数据消息之后,在向AZ中的其它路由器公告目的地网络(例如,IP)地址的可用性的路由实例处执行(在1320处)第一路由操作。在一些实施例中,路由实例是使用进入的数据消息的报头中的信息(例如,MPLS报头中的路由区分符、VXLAN报头中的VNI等)的多租户路由实例以识别VRF上下文,以用来对进入的数据消息执行路由操作。路由操作识别数据消息的下一跳,并且在一些实施例中,包括解封装操作、封装操作或用于根据需要修改分组以到达进入数据消息的目的地的其它操作中的任何或全部。在一些实施例中,用于进入VPC的数据消息的下一跳是隧道端点(例如,虚拟可扩展局域网VXLAN隧道端点(VTEP))。在其中路由实例已经在VTEP处公告了进入的数据消息的目的地IP地址的可用性的其它实施例中,操作1310和1320不被执行,因为数据消息被直接发送到VTEP。在主机计算机上执行两个VTEP的实施例中,目的地地址与在主机计算机上执行的特定VTEP关联。

在其中VTEP接收到进入的数据消息的实施例中,VTEP识别(在1330处)与由进入的数据消息寻址的DCN的集合关联的逻辑网络。在一些实施例中,该标识包括识别与包括在进入的数据消息中的VXLAN VNI对应的租户逻辑网络的本地VNI,移除数据消息的VXLAN报头并将其替换为逻辑网络报头(例如,VLAN报头),本地VNI将数据消息提供给与逻辑路由器标识符关联的分布式逻辑路由器。在其它实施例中,标识包括基于包括在进入的数据消息中的信息来识别与逻辑网络关联的接口。在一些实施例中,VTEP用作在主机计算机上实现的多个逻辑网络的隧道端点。在一些实施例中,多个逻辑网络用于不同的租户。

在识别出(在1330处)与由进入的数据消息寻址的DCN的集合关联的逻辑网络之后,将进入的数据消息提供(在1340处)到在主机计算机上执行的识别出的逻辑网络的分布式逻辑路由器实例。在一些实施例中,分布式逻辑路由器在VPC的逻辑边缘处被定义,使得进入和离开VPC的所有流量都通过分布式逻辑路由器进行处理。在一些实施例中,分布式逻辑路由器实例是为多个租户的分布式逻辑路由器执行逻辑路由(例如,实现逻辑路由器)的受管理的物理路由元件(MPRE)。在其它实施例中,MPRE在主机计算机上为每个租户执行以执行用于租户的分布式逻辑路由器的逻辑路由。

在向分布式逻辑路由器实例提供(在1340处)进入的数据消息之后,执行(在1350处)逻辑路由操作以识别进入的数据消息朝着DCN的集合的下一跳。在一些实施例中,代替配置AZ的物理网关设备的集合执行边缘服务,分布式逻辑路由器实例与其它主机计算机中的分布式逻辑路由器实例一起实现为逻辑网络执行边缘服务的分布式逻辑边缘路由器。在一些实施例中,在分布式逻辑路由实例处执行逻辑路由包括确定(在1355处)服务是否被逻辑被配置为在到达下一跳之前执行。在其它实施例中,在执行逻辑路由操作的分布式逻辑路由器(或下一跳逻辑路由器或逻辑交换机的逻辑接口)的逻辑接口(例如,端口)处做出(在1355处)该确定,作为逻辑转发操作的一部分。如果过程1300确定(在1355处)逻辑路由器和下一跳之间没有逻辑地配置服务,那么过程前进到操作1370并将数据消息转发到下一跳,如下面所讨论的,并且过程结束。

在一些实施例中,分布式逻辑路由器处理操作识别处理进入VPC的数据消息所需的服务(例如,有状态或无状态边缘服务)的集合。在一些实施例中,服务的集合包括防火墙服务、网络地址翻译(NAT)服务、负载平衡服务、分布式入侵检测系统(IDS)服务和分布式入侵保护系统(IPS)服务中的任何一个或全部。不同的服务使用包含在数据消息中的不同信息,并且在一些实施例中,基于所使用的信息的类型以不同的方式实现。例如,使用包含在开放系统互连(OSI)模型第4层的报头中的信息的服务(有时称为“L4服务”)在内核空间中执行,因为它们不会消耗大量资源并且将它们移动到用户空间中会使它们慢得令人无法接受。但是,在一些实施例中,使用OSI模型第7层数据的服务(有时称为“L7服务”)在用户空间中执行,因为它们的资源密集型处理会为了快速处理数据消息而占用内核空间中的线程并且因为与首先执行该操作的成本相比移入用户空间的成本并不显著。

在一些实施例中,服务的集合是为同一主机计算机上的分离VPC中的多个租户实现的,如上文关于图3所描述的。在一些实施例中,不同的服务由多租户服务机器(或舱)中的不同模块(容器、应用等)提供。在使用多租户服务机器的一些实施例中,服务机器执行分离的VTEP以区分针对每个租户的流量。在其它实施例中,为每个租户提供分离的服务机器(例如,虚拟机、容器、舱等)以实现针对租户的L7服务集。

如果过程1300确定(在1355处)该服务被逻辑被配置为在到达逻辑交换机之前被执行,那么该服务被调用(在1360处)。在一些实施例中,调用服务包括向在主机计算机上执行的服务实例(例如,程序、模块、应用等)提供进入的数据消息。在一些实施例中,服务实例将被服务的数据消息返回到从其接收到分布式逻辑路由实例的逻辑接口(例如,返回到逻辑接口)。在其它实施例中,服务是处理管道(例如,分布式逻辑路由器处理管道)的一部分,并且服务将被服务的数据消息提供给处理管道中的下一阶段或操作。在一些实施例中,服务是负载平衡服务(例如,分布式负载平衡服务),其在主机计算机的内核中执行并基于与OSI模型的第1-4层相关的报头值中的参数来执行负载平衡服务(即,第4层(L4)服务)。在其它实施例中,服务是防火墙服务或可以在路由器和交换机之间执行的任何其它中间盒服务。

在提供服务之后,过程1300确定(在1365处)附加服务在到达下一跳之前是否在逻辑上被配置。在一些实施例中,该确定由在将数据消息转发到下一跳之前包括或不包括附加服务的处理管道隐含地做出。在其它实施例中,分布式逻辑路由器实例对服务进入数据消息执行后续路由操作,以确定在到达朝着目的地DCN的下一跳之前是否在逻辑上配置了附加服务。在一些实施例中,由分布式逻辑路由器实例做出的确定是通过基于路由规则(例如,基于策略的路由规则)确定应当将数据消息提供给服务实例而隐含地做出的。

如果过程1300确定(在1365处)附加服务在到达下一跳之前被逻辑配置,那么过程返回到操作1360以如上所述调用附加服务。但是,如果过程1300确定(在1365处)在到达下一跳之前没有逻辑配置附加服务,那么数据消息被转发到下一跳并且过程结束。在一些实施例中,下一跳是与进入的数据消息的目的地IP地址关联的目的地DCN(例如,容器、舱、VM等)。用于一些进入的数据消息的目的地DCN是由进入的数据消息寻址的特定DCN。对于寻址到VIP的其它进入的数据消息,由路由操作识别的目的地DCN是中间盒服务DCN,它为与入口数据消息的目的地地址关联的DCN的集合提供负载平衡或其它服务。在一些实施例中,中间盒服务DCN执行服务并识别与目的地地址关联的DCN的集合中的DCN(例如,执行负载平衡服务以识别DCN以接收进入的数据消息)并将进入的数据消息转发到识别出的DCN。本领域的普通技术人员将理解,附加的逻辑转发元件和服务实例可以沿着到目的地DCN的路径存在,并且在一些实施例中,将类似于操作1350-1370进行处理。

在一些实施例中,AZ中的VPC(例如,逻辑网络)的控制器计算机集群(即,一个或多个控制器计算机的集合)向网络元素提供配置信息以实现VPC。图14概念性地图示了用于为不同的网络元素生成配置数据的过程1400,这些网络元素提供了一种新颖的网络体系架构,用于在可用区(例如,提供硬件资源的集合的数据中心)中公告路由,并用于在VPC的边缘供分布式服务的集合。在一些实施例中,过程1400由控制器计算机或控制器计算机集群执行。在一些实施例中,控制器计算机集群包括管理平面控制器计算机。在一些实施例中,每当新的分布式边缘服务被添加到逻辑网络或分布式边缘服务实例(例如,中间盒服务实例)被启动或添加到用于现有分布式边缘服务的AZ中的主机计算机时,执行过程1400。

过程1400开始于接收(在1410处)修改逻辑网络(例如,VPC)中的分布式边缘服务的指令。在一些实施例中,修改指令是添加先前未在逻辑网络中提供的分布式边缘服务的指令。在其它实施例中,修改指令是将分布式边缘服务实例添加到当前提供分布式边缘服务的分布式边缘服务实例的集合的指令。在一些实施例中,接收到的指令由控制器计算机或控制器计算机集群执行过程1400基于指定何时应将特定分布式边缘服务或分布式边缘服务实例添加到逻辑网络的策略来生成。

在接收到(在1410处)修改分布式边缘服务的指令之后,过程1400确定(在1420处)要执行以实现用于逻辑网络的分布式边缘服务的分布式服务实例的数量。在一些实施例中,确定分布式服务实例的数量包括识别(1)活动的分布式服务实例和(2)已被请求激活(例如,启动)的分布式服务实例。在一些实施例中,识别分布式服务实例包括识别每个分布式服务实例支持(即,为其提供分布式服务)的终端机器(例如,DCN、工作负载VM、容器等)的数量。在一些实施例中,除了识别终端机器的数量之外,识别分布式服务实例还包括识别(1)分布式服务正在处置的连接的总数(即,所有分布式实例的总和)和(2)由每个分布式服务实例处置的连接的数量中的一个或两个。

在确定(在1420处)分布式服务实例的数量之后,过程1400确定(在1430处)将可用于指派给特定分布式服务(诸如分布式网络地址转换服务)的分布式服务实例的端口范围的数量或端口范围的大小。在一些实施例中,端口范围的数量或端口范围的大小基于来自VPC或VPC内的逻辑子网络的用户(例如,管理员)的输入来确定。来自用户的输入可以基于用户期望分布式服务实例在提供分布式服务时消耗的最大资源量。在一些实施例中,用户输入指定(1)可以被实例化的分布式服务实例的最大数量,(2)可以指派给单个分布式服务实例的端口的最大数量或(3)用于确定指派给特定分布式服务实例的端口数量的策略中的任何一个或全部。在一些实施例中,策略基于以下任何一项或全部:(1)活动的分布式服务实例的数量,(2)每个活动的分布式服务实例为其提供分布式服务的计算节点的数量,(3)由分布式服务处置的连接的数量,以及(4)由每个分布式服务实例处置的连接的数量。

例如,策略可以指定将可能的端口号的整个范围划分为至少是分布式服务实例的数量的两倍(或同样大)的二的幂,并且端口号范围基于策略随着分布式服务实例数量的增加或减少而被调整(例如,从4到5个分布式服务实例导致8个端口范围中的每一个被划分为两个较小的端口号范围,或者从17到16个分布式实例导致64个端口号范围合并为32个端口号范围)。在一些实施例中,策略指定为每个分布式服务实例指派不相邻的端口号范围(例如,指派给第一分布式服务实例的0-8191,指派给第二分布式服务实例的16384-2475等)。这种策略允许增加和减少主机的数量,而不必经常重新指派端口号范围。

在一些实施例中,策略可以指定当特定分布式服务实例使用指派给分布式服务实例的端口号的一部分高于阈值分数(例如,0.8或0.9)时,将执行(a)为分布式服务实例指派相邻的可用范围,(b)从分布式服务实例在其上执行的主机计算机迁移工作负载计算节点,或(c)在另一个主机计算机上添加新的分布式服务实例。可替代地或附加地,在一些实施例中,策略可以指定当特定分布式服务实例使用指派给分布式服务实例的端口号的一部分低于阈值分数(例如,0.3或0.2)时,所指派的端口号的范围将减少,或者附加的终端机器将被迁移到分布式服务实例在其上执行的主机计算机(例如,从使用其指派的端口号的大部分执行分布式服务实例的主机计算机)。用于处置分布式服务的过剩容量的其它可能策略包括一个策略,该策略指定当分布式服务实例处置的连接的总数低于基于分布式服务实例的数量和将分布式服务实例将被停用的指派的端口范围的容量的某个阈值分数时,或者将较小的端口范围指派给每个活动的分布式服务实例。其它策略可以基于由分布式服务实例提供分布式服务的工作负载计算节点的数量来指定指派端口范围(例如,对于0-10个工作负载计算节点,指派256个端口号;对于11-20个工作负载计算节点,指派512个端口号;等等)。本领域普通技术人员将理解,这些策略仅仅是可能的策略的示例,并且根据用户的要求在不同的实施例中使用不同的策略。

在确定(在1430处)端口号范围之后,过程1400选择(在1440处)至少一个端口范围以指派给每个分布式服务实例。如上面所讨论的,在一些实施例中,初始端口范围指派为每个分布式服务实例指派不相邻、不重叠的端口范围。在一些实施例中,后续指派将至少一个附加的端口号范围指派给特定分布式服务实例,这些分布式服务实例使用高于所指派的端口号的阈值分数的端口号数量。在一些实施例中,其它后续分配将一定范围的端口号的一部分从初始指派中移除到特定分布式服务实例,该特定分布式服务实例在初始指派的端口号范围中使用少于阈值数量的端口号。

在一些实施例中,指派给分布式服务实例的端口号范围的大小由管理员基于预期的分布式服务实例的最大数量(例如,对于预期的最大64个分布式服务实例,创建64个不同的端口号范围,每个范围包括1024个端口,每个端口在启动时被指派给分布式服务实例)。在其它实施例中,端口号范围的大小是动态的并且可以基于使用分布式服务的活动分布式服务实例、活动连接或工作负载计算节点的数量而改变。端口号范围的大小也可以在分布式服务实例之间有所不同。例如,与在执行较少数量工作负载的主机上执行的第二分布式服务实例相比,更大的端口号范围被指派给在使用分布式服务的主机上执行的第一分布式服务实例,该主机使用分布式服务执行更多数量的工作负载计算节点使用分布式服务的计算节点,并且可以随着工作负载计算节点数量的改变而改变。

在为每个分布式服务实例选择(在1440处)要使用的端口号范围之后,过程1400识别(在1450处)主机计算机的集合来托管分布式边缘服务实例。在一些实施例中,该确定包括识别当前执行逻辑网络的元素的主机计算机,为其添加分布式边缘服务实例。在识别出主机计算机之后,可用于执行逻辑网络的附加网络元素的每个主机计算机的资源被确定以识别具有足够资源来执行分布式边缘服务实例的主机计算机。在一些实施例中,附加考虑因素包括在要求分布式边缘服务的主机上执行的工作负载DCN的数量、在主机计算机上执行网络元素的其他租户的数量、由主机计算机当前处理的连接的数量等。

在识别出(在1450处)主机计算机的集合以执行分布式边缘服务实例之后,过程1400生成(在1460处)用于实现期望的分布式服务实例的配置数据。在一些实施例中,生成的用于执行分布式边缘服务实例的配置数据包括多个核心(例如,服务实例在其上执行的服务GM的核心)或指派给服务实例的其它资源的量。在一些实施例中,指派给服务实例的资源使用kubernetes(k8s)注释来指定并且被转换成配置数据以提供给主机计算机1520(例如,提供给配置数据存储装置1528)。在一些实施例中,为将在主机计算机1520中执行的服务DCN(例如,L7服务GM 1522a)中执行的第一L7服务生成的配置数据包括用于将服务DCN添加到用于L7服务在其中执行的DCN的服务接口的服务片段子网中的IP地址的配置数据。

在一些实施例中,所生成的配置数据包括用于不同网络元素(例如,主机计算机、网关设备)和用于不同目的的配置数据的多个集合。图15图示了数据中心1505中的计算机控制器集群1540向不同的网络元素发送不同类型的配置数据。图15的元素一般而言与图1中讨论的元素相同。图15图示了用于每个主机计算机1520的配置数据1542的集合(在配置数据存储装置1528处接收)。在一些实施例中,配置数据1542包括用于以下的配置信息:(1)配置分布式服务实例以提供分布式服务,(2)配置在主机计算机上执行的其它网络元素(例如,GM 1525和MFE 1560)以与分布式服务实例(例如,1524)通信,以及(3)配置在主机计算机上执行的路由实例(例如,路由机器1523)以公告与在主机计算机上执行的分布式服务实例关联的IPv6地址。

在一些实施例中,配置数据存储装置1528接收配置数据并识别用于在主机计算机1520上执行的每个模块的配置数据,如关于图4所描述的。在一些实施例中,配置数据从配置数据存储装置1528推送到本地控制器1526和通信代理1527,以传播到在主机计算机1520上配置的不同元素。在一些实施例中,本地控制器1526负责将L4服务配置数据推送到数据平面并配置主机计算机以执行DCN(GM1525和L7服务GM 1522a),而通信代理1527(例如,VMCI代理)负责将数据从配置数据存储装置1528推送到L7服务在其中执行的DCN(例如,L7服务GM 1522a)的数据路径(例如,nginx)。

配置数据(例如,配置数据1542)包括用于配置在至少一个主机计算机上执行的至少一个分布式服务实例以使用指派的端口号的范围来提供分布式服务的配置数据。在一些实施例中,用于在主机计算机上初始化新的分布式服务实例的配置数据包括与在执行分布式服务操作中使用的分布式NAT服务关联的IPv4地址(例如,替换从第一网络到外部网络的数据消息的源IP地址)和指派的端口号范围。在一些实施例中,配置数据包括用于提供分布式服务的策略的集合(例如,防火墙规则、负载平衡准则或用于选择DCN以接收数据消息的策略等)。在一些实施例中,将附加的配置信息(例如,分布式实例连接到的逻辑覆盖网络元素)发送到主机计算机以配置主机的其它元素以与新的分布式服务实例通信,如本领域普通技术人员将认识到的那样。对于在用户空间DCN(例如,VM、容器或舱)中执行的L7服务,在一些实施例中,配置数据包括与服务关联的VIP以及用于L7服务在其中执行的用户空间DCN的服务IP地址。

在一些实施例中,发送到主机计算机的附加配置数据包括发送到主机计算机以配置主机计算机(或在主机计算机上执行的MFE或BGP实例)以识别和公告与分布式服务实例或添加的DCN关联的IPv6地址前缀的配置数据,如关于图4-8所述。如关于图4所讨论的,在一些实施例中,配置数据还包括在主机计算机内部用于寻址分布式服务实例和配置在主机计算机上执行的机器以将分布式服务实例用于特定分组的信息(例如,发往外部网络的分组)。

在一些实施例中,生成的配置数据包括为提供给网关设备而生成的配置数据(例如,配置数据1541)。在一些实施例中,控制器计算机集群1540将配置数据1541发送到网关设备的集合,用于配置网关设备以执行IPv4到IPv6封装,并且在一些实施例中,用于用IPv6路由表条目配置网关设备。在一些实施例中,网关设备是部分或完全可编程的网关设备,其可以由控制器计算机集群编程以基于基于IPv4地址和IPv4报头中的目的地端口指定的PBR规则来实现IPv4到IPv6翻译和封装。在其它实施例中,网关设备是现成的网关设备(例如,双栈路由器),其能够进行简单的编程,足以配置网关设备以实现IPv4到IPv6封装。

对于可编程和现成网关设备两者,配置数据都包括将被称为分布式服务记录的集合和IPv6路由表条目的内容。在一些实施例中,分布式服务记录将特定分布式服务操作使用的IPv4地址和目的地端口号的组合映射到IPv6目的地地址。在一些实施例中,分布式服务记录被提供为查找表和使用查找表来使用与分布式服务关联的IPv4地址路由数据消息的指令。在一些实施例中,分布式服务记录是定义用于从IPv4目的地地址和端口号生成IPv6地址的算法的PBR规则(或类似规则或策略)。在一些实施例中,PBR规则指定了应当为其应用该算法的IPv4目的地地址,而在其它实施例中,指定了IPv4地址和端口号。在一些实施例中,分布式服务记录是用于配置现成网关设备以根据指定算法对发往特定分布式服务操作所使用的IPv4的IPv4分组执行IPv6封装的指令。在一些实施例中,指令基于由现成的网关设备提供的功能(例如,暴露的API)。

在一些实施例中,IPv6路由表条目中的每一个识别与执行分布式服务实例的主机计算机的集合中的特定主机计算机关联的IPv6地址前缀和用于到达该特定主机计算机的下一跳接口。在IPv6路由条目中为特定主机指定的IPv6地址前缀基于与分布式服务关联的IPv4地址和指派给在主机上执行的分布式服务实例的端口号范围。如果将多个不相邻的端口范围指派给特定主机计算机,那么IPv6路由表条目的集合包括用于特定主机计算机的多个条目。

一旦生成(在1460处)配置数据,为每个网络元素生成的配置数据就被转发(在1470处)到适当的网络元素,以用于配置如关于图4-8描述的网络元素。在一些实施例中,配置数据在被本地代理接收以用于与控制器计算机集群(例如,配置数据存储装置1528)通信之后,由本地控制器(例如,本地控制器1526)和VMCI代理(例如,通信代理1527)在主机计算机处使用,本地代理使用控制平面消息与控制器计算机集群通信。本地控制器和VMCI代理然后提供配置数据或配置主机计算机上的元素以实现分布式服务(例如,实例化分布式服务实例,配置GM使用分布式服务实例,用服务IP并用L7服务实例的集合配置DCN,并配置MFE或路由实例来公告与分布式服务实例关联的IPv6地址前缀,等等)。为网关设备生成的配置数据被转发到网关设备以配置网关设备以识别与特定接收到的分组关联的特定主机(例如,通过使用提供的IPv6路由表条目)。在转发(在1470处)配置数据之后,该过程结束。本领域普通技术人员将理解,在一些实施例中,针对在多个分布式服务实例中的每一个处使用相同IPv4地址作为传出分组的源地址的每个分布式服务执行过程1400。

在一些实施例中,控制器计算机集群周期性地或基于时间表来监视分布式服务实例和聚合中的分布式服务上的负载。在一些实施例中,监视基于在与分布式服务实例相同的主机计算机上执行的程序。在一些实施例中,该程序监视与分布式服务实例关联的度量的集合(例如,时延、所处置的连接的数量、每秒的分组的数量、使用分布式服务实例的终端机器的数量等)。在一些实施例中,只要请求初始化新的分布式服务实例或工作负载机器,就执行操作1420和1430。在一些实施例中,操作1420和1430也周期性地或基于管理员设置的时间表来执行,以确定监视信息是否指示已经存在要求重新分配端口号范围或任何端口号范围的大小的改变。如果发生了这种改变,那么执行操作1440-1470以更新端口范围的分配并向网络元素提供更新后的配置数据。

许多上述特征和应用被实现为被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的指令集的软件处理。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器的核心或其它处理单元)执行时,它们使(一个或多个)处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于CD-ROM、闪存驱动器、RAM芯片、硬盘驱动器、EPROM等。计算机可读介质不包括无线地或通过有线连接传递的载波和电子信号。

在本说明书中,术语“软件”意在包括驻留在只读存储器中的固件或存储在磁性存储装置中的应用,其可以被读入存储器以供处理器处理。而且,在一些实施例中,可以将多个软件发明实现为更大程序的子部分,同时保留不同的软件发明。在一些实施例中,多个软件发明也可以被实现为分开的程序。最后,共同实现这里描述的软件发明的分开的程序的任意组合都在本发明的范围内。在一些实施例中,软件程序在被安装以在一个或多个电子系统上操作时定义执行(execute)并执行(perform)软件程序的操作的一种或多种具体机器实施方式。

图16概念性地图示了计算机系统1600,利用该计算机系统1600来实现本发明的一些实施例。计算机系统1600可以被用于实现任何上述主机、控制器和管理器。照此,它可以被用于执行任何上述处理。这个计算机系统包括各种类型的非暂态机器可读介质以及用于各种其它类型的机器可读介质的接口。计算机系统1600包括总线1605、(一个或多个)处理单元1610、系统存储器1625、只读存储器1630、永久存储设备1635、输入设备1640和输出设备1645。

总线1605整体表示通信连接计算机系统1600的众多内部设备的所有系统总线、外围和芯片集总线。例如,总线1605将(一个或多个)处理单元1610与只读存储器1630、系统存储器1625和永久存储设备1635通信连接。

(一个或多个)处理单元1610从这些各种存储单元中检索要执行的指令和要处理的数据,以便执行本发明的处理。在不同的实施例中,(一个或多个)处理单元可以是单个处理器或多核处理器。只读存储器(ROM)1630存储(一个或多个)处理单元1610和计算机系统的其它模块所需的静态数据和指令。另一方面,永久存储设备1635是读写存储器设备。这个设备是非易失性存储器单元,即使计算机系统1600关闭,它也存储指令和数据。本发明的一些实施例使用大容量存储设备(诸如磁盘或光盘及其对应的磁盘驱动器)作为永久存储设备1635。

其它实施例使用可移动存储设备(诸如软盘、闪存驱动器等)作为永久存储设备。就像永久存储设备1635一样,系统存储器1625是读写存储器设备。但是,与存储设备1635不同,系统存储器是易失性读写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时所需的一些指令和数据。在一些实施例中,本发明的处理被存储在系统存储器1625、永久存储设备1635和/或只读存储器1630中。(一个或多个)处理单元1610从这些各种存储器单元中检索要执行的指令和要处理的数据,以便执行一些实施例的处理。

总线1605还连接到输入和输出设备1640和1645。输入设备使用户能够向计算机系统传达信息并选择命令。输入设备1640包括字母数字键盘和指点设备(也称为“光标控制设备”)。输出设备1645显示由计算机系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(CRT)或液晶显示器(LCD)。一些实施例包括诸如触摸屏之类的设备,其既充当输入设备又充当输出设备。

最后,如图16中所示,总线1605还通过网络适配器(未示出)将计算机系统1600耦合到网络1665。以这种方式,计算机可以是计算机网络(诸如局域网(LAN)、广域网(WAN)或内联网,或网络的网络(互联网))的一部分。计算机系统1600的任何或所有部件可以与本发明结合使用。

一些实施例包括电子部件,诸如微处理器、将计算机程序指令存储在机器可读或计算机可读介质(可替代地称为计算机可读存储介质、机器可读介质、或机器可读存储介质)。此类计算机可读介质的一些示例包括RAM、ROM、只读光盘(CD-ROM)、可记录光盘(CD-R)、可重写光盘(CD-RW)、只读数字多功能光盘(例如,DVD-ROM、双层DVD-ROM)、各种可记录/可重写DVD(例如,DVD-RAM、DVD-RW、DVD+RW等)、闪存(例如,SD卡、mini-SD卡、micro-SD卡等)、磁性和/或固态硬盘驱动器、只读和可记录的

虽然以上讨论主要是指执行软件的微处理器或多核处理器,但是一些实施例是由一个或多个集成电路(诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA))执行的。在一些实施例中,此类集成电路执行存储在电路本身上的指令。

如本说明书中使用的,术语“计算机”、“服务器”、“处理器”和“存储器”均指电子或其它技术设备。这些术语不包括一个人或一群人。为了本说明书的目的,术语“显示”是指在电子设备上显示。如本说明书中所使用的,术语“计算机可读介质”、“计算机可读介质”和“机器可读介质”完全限于以计算机可读的形式存储信息的有形物理对象。这些术语不包括任何无线信号、有线下载信号以及任何其它短暂或暂态的信号。

虽然已经参考许多具体细节描述了本发明,但是本领域普通技术人员将认识到的是,在不脱离本发明的精神的情况下,可以以其它具体形式来实施本发明。例如,几个图从概念上说明了过程。这些过程的具体操作可以不按照所示和描述的确切次序来执行。具体操作可以不在一个连续的操作系列中执行,并且不同的具体操作可以在不同实施例中执行。此外,过程可以使用若干子过程来实现,或者作为更大的宏过程的一部分来实现。因此,本领域普通技术人员将理解的是,本发明不限于前述说明性细节,而是由所附权利要求书限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号