用于联合多站点逻辑网络的网络管理系统的制作方法

文档序号:32292186发布日期:2022-11-23 01:53阅读:19来源:国知局
用于联合多站点逻辑网络的网络管理系统的制作方法
用于联合多站点逻辑网络的网络管理系统


背景技术:

1.随着越来越多的网络移到云中,一个公司或其它实体具有跨越多个站点的网络更为常见。虽然在单个站点内运营的逻辑网络已经很好地建立起来,但在使逻辑网络跨越多个物理站点(例如,数据中心)方面存在各种挑战。站点应当是独立的(self-contained),同时还允许将数据轻松地从一个站点发送到另一个站点。需要各种解决方案来解决这些问题。


技术实现要素:

2.本发明的一些实施例提供了用于管理跨越多个联合站点(例如,多个数据中心)的逻辑网络的网络管理系统。一些实施例的网络管理系统包括(i)管理跨越所有站点的整个逻辑网络的全局网络管理器,(ii)在每个站点处的直接管理它们的相应站点处的逻辑网络的本地网络管理器,以及(iii)每个站点处的中央控制器,用于将逻辑网络配置数据分发到站点处实现逻辑网络的计算设备。全局管理器(例如,从网络管理员)接收全局逻辑网络配置数据,而本地网络管理器(i)从全局管理器接收它们相应站点的全局逻辑网络配置数据和(ii)(例如,从网络管理员)接收本地逻辑网络配置数据。在一些实施例中,提供允许网络管理员经由相同的用户界面(ui)访问全局管理器以及本地管理器中的一些或全部的网络管理应用。
3.在一些实施例中,全局管理器在由逻辑网络跨越的站点之一处的计算设备上执行,并且每个本地管理器也在其相应站点处的计算设备上执行。在一些实施例中,全局管理器在物理站点之一处的与用于该站点的本地管理器相同的计算设备上执行。在一些实施例中,全局管理器和本地管理器是单个应用的单独模块,并且共享存储在全局管理器的站点处的数据库(例如,分布式数据库)。一些实施例将物理站点处的每个管理器部署为机器的集群(例如,虚拟机(vm)),其中每个机器在同一站点处的不同计算设备上执行。
4.一些实施例以活动-备用的布置采用主要全局管理器和辅助全局管理器。主要全局管理器与辅助全局管理器异步地同步,作为故障转移场景的备用。辅助全局管理器在不同的计算设备(或计算设备的集合)上执行,在一些实施例中,为了快速恢复而位于与主要全局管理器不同的站点,并且维护独立的数据库。在一些实施例中,主要全局管理器和辅助全局管理器都被部署为机器的集群,每一个在它们相应的站点处与本地管理器一起执行。
5.在一些实施例中,全局逻辑网络配置作为定义全局逻辑网络的元素和策略的期望配置(例如,基于意图的配置)被全局管理器接收。具体而言,在一些实施例中,网络管理员(例如,通过网络管理应用)提供基本配置意图(例如,创建逻辑转发元素和它们之间的连接、安全组和策略的定义等)并且网络管理系统将这个意图转换成全局逻辑网络配置的细节。
6.在一些实施例中,逻辑网络的期望全局配置被表达为具有节点和节点之间的连接的分层树(也称为全局策略树)。一些实施例定义了用于全局逻辑网络(也称为联合)的根节点并将用于物理站点和逻辑网络实体两者的节点添加为根节点的子节点。在一些实施例
中,网络管理员(例如,通过在全局管理器处定义物理站点并向全局管理器提供访问该站点所需的网络和认证信息来访问站点)来将物理站点添加到联合,并且全局管理器自动发现站点的物理网络结构。即,在接收到必要的信息后,全局管理器与用于站点的本地管理器通信以确定站点处的计算设备的组(例如,将被配置为实现逻辑网络的边缘设备的集群和主机计算机的区)。
7.对于逻辑网络实体(例如,逻辑网络元素和/或策略),当网络管理员创建新的逻辑网络实体时,全局管理器在用于该实体的策略树中创建一个或多个节点。在一些实施例中,这些逻辑网络实体可以包括跨越一个或多个站点的逻辑网络元素和应用于这些元素的逻辑网络策略,并且连接表示节点之间的关系(例如,父-子关系、逻辑网络连接等)。逻辑网络元素包括逻辑转发元素(例如,逻辑路由器、逻辑交换机等),以及逻辑构造(例如,与逻辑转发元素相关联的逻辑端口、一个或多个站点的逻辑分组、以及共享一个或多个属性的逻辑网络端点的组)。在一些实施例中,每个逻辑网络元素通过在由该逻辑网络元素跨越的站点处的计算设备上执行的物理转发元素来实现。逻辑网络策略包括转发策略、服务策略和安全策略,并且在一些实施例中被应用以支配逻辑转发元素的行为。在一些实施例中,策略可以是逻辑网络元素节点的子节点(例如,用于逻辑路由器的静态路由策略配置)。
8.作为逻辑网络配置的一部分,全局管理器为每个逻辑网络元素(例如,逻辑转发元素、安全组等)和全局逻辑网络的每个策略(例如,每个规则)识别跨度。用于特定元素或策略的跨度可以基于管理员直接或间接指定用于特定元素或策略的跨度,或从另一个元素继承跨度的特定元素或策略(例如,基于全局策略树中的关系)。在一些实施例中,全局管理器使用用于每个元素或策略的跨度来确定应当向哪些本地管理器提供元素或策略的配置。即,一些实施例不向每个本地管理器提供整个全局逻辑网络配置,而是仅提供用于与该本地管理器的站点相关的元素和策略的配置(例如,全局策略树的子树,与在该站点处实现的逻辑网络元素对应)。
9.每个站点处的本地管理器使用从全局管理器接收到的全局期望配置的相关部分来管理站点处的逻辑网络。在一些实施例中,特定站点处的本地管理器(和/或站点处的单独管理平面)使用全局逻辑网络配置的相关部分来生成配置数据并将其提供给特定站点处的网络控制器。在一些实施例中,这些网络控制器识别站点处的计算设备(例如,执行物理转发元素的主机计算机)并将配置数据分发到识别出的计算设备。在一些实施例中,在计算设备中的一个或多个上执行的本地控制器从网络控制器接收配置数据并在计算设备上配置转发元素。本地控制器使用配置数据来配置物理转发元素以实现逻辑网络元素。每个站点的控制器集群还创建逻辑地址(例如,在计算设备上执行的逻辑网络端点的mac地址)和物理地址(例如,在计算设备处的隧道端点的ip地址)之间的映射,并将这些映射分发给它们相关的每个计算设备,以及分发给需要该数据的其它站点处的其它控制器集群。
10.在每个站点处实现逻辑网络的计算设备的至少子集托管逻辑网络端点数据计算节点(dcn),诸如虚拟机(vm)、容器等。此外,这些计算设备中的一些还执行对逻辑网络数据流量执行服务的服务机器(例如,防火墙、负载平衡器等)。计算设备中的一些被指定为边缘网关,并实现某些集中式逻辑转发元素(例如,逻辑路由器的组件)用于处理进出逻辑网络端点dcn的某些类型的数据流量。
11.为了使(一个或多个)网络管理员能够在全局管理器和/或本地管理器处配置逻辑
网络,一些实施例提供网络管理客户端应用,管理员可以通过该网络管理客户端应用访问网络管理器。这单个网络管理应用提供用于访问全局管理器和任何本地管理器两者的ui,以便创建和/或修改逻辑网络配置。该应用提供用于访问全局管理器以配置跨越物理站点的组的全局逻辑网络的第一ui,以及用于访问每个物理站点处的每个本地管理器的附加ui。用于访问特定站点处的本地管理器的ui允许管理员(i)修改在该特定站点处实现的全局逻辑网络并且(ii)在该站点处配置本地逻辑网络(其可以与全局逻辑网络完全独立或连接到全局逻辑网络)。
12.在一些实施例中,逻辑网络组件对于全局逻辑网络和本地逻辑网络是相同的,因此全局管理器和本地管理器的ui看起来是具有相同ui项和显示区域的单个玻璃窗格。此外,在一些实施例中,在ui内提供项以使用户能够在用于不同网络管理器的ui之间切换。
13.在一些实施例中,ui提供用于配置逻辑转发元素(对于全局逻辑网络和本地逻辑网络两者是相同的构造)和用于配置网络服务的区段。在一些实施例中,对于每个网络管理器,主要ui页面为每个可用类型的逻辑转发元素(例如,逻辑交换机、用于将逻辑网络连接到外部网络的第0层(t0)逻辑路由器、以及用于连接逻辑交换机而不需要t0逻辑路由器进行处理并用于为连接到这些逻辑交换机的逻辑网络端点dcn提供有状态服务的第1层(t1)逻辑路由器)提供显示区域。这些显示区域是可选择的,以便为每种类型的逻辑转发元素访问单独的ui页面,从而提供关于这种类型的已配置逻辑转发元素的附加信息,并且启用这些逻辑转发元素的创建/修改/删除。类似地,主要ui页面包括可选择的显示区域,其具有关于不同类型的配置的网络服务(例如,网络地址转化(nat)、负载平衡、防火墙规则等)的信息。在一些实施例中,这些显示区域是可选择的以提供关于相应服务的附加信息并允许配置这些策略。如上所述,用于不同网络管理器的不同ui为相同类型的逻辑转发元素和逻辑网络服务(当这些服务配置在不同的逻辑网络中时)提供相同的显示区域。
14.在一些实施例中,应用客户端直接访问全局管理器(只要管理员已经为全局管理器提供了适当的认证信息即可)。为了访问本地管理器,全局管理器充当代理—即,在一些实施例中,应用客户端通过全局管理器访问本地管理器。
15.这个网络管理应用允许管理员或者通过全局管理器或者通过用于该站点的本地管理器为单个站点配置逻辑网络元素和策略。通过全局管理器,管理员可以创建特定于站点的逻辑网络元素和策略,它们是全局逻辑网络的一部分(因此以后可以扩展到其它站点)。在这种情况下,逻辑网络元素配置数据将作为全局策略树的一部分被存储,并基于到该站点的跨度被推送到该站点的本地管理器。此外,逻辑网络元素配置数据在全局管理器处被创建时被备份到备用全局管理器。
16.另一方面,如果直接在本地管理器处被创建为本地逻辑网络的一部分,那么逻辑网络元素配置数据和策略将仅是存储在本地管理器处的本地策略树的一部分。虽然这个本地管理器在一些实施例中是集群,但是如果站点(例如,由于自然灾害)出现故障,那么本地逻辑网络配置数据不会在另一个站点处备份。但是,仅有权访问该站点的本地管理器(即,未被授予对全局管理器的访问权限)的本地网络管理员可以使用网络管理应用直接配置该站点处的逻辑网络。
17.在一些情况下,可以在全局定义的逻辑网络配置与本地定义的逻辑网络配置之间发生冲突。例如,在网络配置上下文中,用于本地逻辑路由器的ip地址可能与为跨越逻辑网
络的逻辑路由器配置的ip地址冲突。在安全上下文中,本地管理员可以基于第一安全组来配置第一防火墙规则,而全局管理员可以基于第二安全组来配置第二防火墙规则。如果逻辑网络端点dcn属于这两个安全组,那么这两个防火墙规则会发生冲突。一些实施例一般解决安全冲突以有利于全局定义的策略,但解决联网冲突以利于本地定义的配置(其中本地管理器将全局配置的这些覆盖报告给全局管理器以进行通知和/或验证)。
18.如前面所提到的,一些实施例的网络控制器在每个站点处操作以便除其它功能之外尤其将来自站点处的本地管理器的配置数据提供给站点的计算设备。在一些实施例中,网络控制器的集群(也称为中央控制平面)在每个站点处操作。
19.除了从本地管理器向其特定站点处的计算设备(即,主机计算机和边缘设备)提供配置数据之外,用于特定站点的网络控制器还生成某些逻辑网络状态数据并向(i)特定站点处的计算设备和(ii)其它站点处的网络控制器提供这个生成的逻辑网络状态数据。此外,特定站点处的网络控制器将生成的逻辑网络状态数据提供给其它站点处的网络控制器。如下文更详细描述的,在一些实施例中,这个逻辑网络状态数据包括逻辑网络地址到物理网络地址(物理位置)映射数据以及安全组信息(例如,属于安全组的逻辑网络端点dcn的网络地址)。
20.在一些实施例中,由逻辑网络跨越的一组站点的网络控制器以全网状(full mesh)连接。在一些实施例中,用于每个站点处的控制器集群的站点管理器与其它站点(例如,与其它站点的站点管理器)交换证书和任何其它所需的认证信息。然后,这个站点管理器向其站点处的网络控制器提供信息(例如,ip地址、证书等),以便该站点处的每个网络控制器与每个其它站点处的每个网络控制器都具有连接性。
21.在一些实施例中,来自每个站点处的集群的一个控制器被指派用于向每个其它站点发送逻辑网络状态数据,并且来自每个站点处的集群的一个控制器被指派用于接收来自每个其它站点的逻辑网络状态数据。即,如果有三个站点,那么第一站点分别指派(i)用于向第二站点发送数据的控制器、(ii)用于向第三站点发送数据的控制器、(iii)用于从第二站点接收数据的控制器、以及(iv)用于从第三站点接收数据的控制器。这些单独指派的控制器中的每一个可以是集群中的不同控制器,或者可以存在重叠。例如,可以指派不同的控制器将状态数据发送到不同的站点,并且对于同一个远程站点,可以指派不同的控制器来将状态数据发送到远程站点并从远程站点接收状态数据。为了做出选择,一些实施例(例如,通过以集群中可用控制器的数量为模计算散列值)使用基于槽的分片机制。作为基于站点的分片的替代方案或作为其补充,一些实施例基于逻辑网络状态对控制器集群进行分片(例如,使用一个控制器将安全组数据发送到特定远程站点并且使用另一个控制器将逻辑网络到物理网络映射数据发送到特定远程站点)。
22.在一些实施例中,逻辑网络到物理网络映射包括逻辑网络层2(例如,mac)地址到物理网络隧道端点层3(例如,ip)地址的映射,在该地址可以到达这些逻辑网络地址。在一些实施例中,当在主机计算机上创建逻辑网络端点dcn时,该主机计算机将新的dcn连同关于dcn的数据一起报告给集群的网络控制器之一。这个数据包括dcn的mac地址,该mac地址映射到主机计算机的虚拟隧道端点(vtep),以及与该mac地址相关联的逻辑交换机。控制器集群将这个逻辑mac地址到vtep ip地址映射(在逻辑交换机的上下文中)提供给同一站点中的实现逻辑交换机的任何其它主机计算机,以便这些其它主机计算机上的物理转发元素
可以通过站点的物理网络向逻辑网络dcn传输逻辑网络数据消息。
23.用于特定站点的控制器集群还向由逻辑交换机跨越的每个其它站点提供与逻辑交换机相关联的逻辑mac地址的列表。站点内的逻辑网络数据消息经由用于源逻辑网络端点dcn的主机计算机上的vtep与用于目的地逻辑网络端点dcn的主机计算机上的vtep之间的隧道被发送。为了将与逻辑交换机相关联的数据消息从第一站点处的源主机计算机发送到第二站点处的目的地主机计算机,源主机计算机将数据消息通过隧道传输到为第一站点中的逻辑交换机实现逻辑网络网关的第一边缘设备,其将数据消息通过隧道传输到为第二站点中的逻辑交换机实现逻辑网络网关的第二边缘设备,其进而将数据消息通过隧道传传输到第二站点中的目的地主机计算机。照此,第二站点中的控制器不向第一站点中的控制器提供用于逻辑交换机的逻辑mac地址到vtep映射,而是代替地提供(i)与逻辑交换机相关联并位于第二站点处的逻辑mac地址的列表和(ii)用于到达第二站点处的逻辑网络网关的远程隧道端点(rtep)ip地址。第一站点处的控制器将这个逻辑网络状态数据提供给为第一站点处的逻辑交换机实现逻辑网络网关的边缘设备。此外,对于在第一站点处实现逻辑交换机的主机计算机,控制器向其提供位于任何站点(第一站点除外)的mac地址的列表,以及为第一站点处的逻辑交换机实现逻辑交换机的边缘设备可以到达的vtep ip地址。
24.除了逻辑网络到物理网络映射数据之外,一些实施例的网络控制器还生成并在站点之间共享属于动态安全组的逻辑网络端点dcn的列表。从本地管理器,控制器集群接收动态安全组的定义(即,属于该组的准则的集合)。当逻辑网络端点dcn与用于特定安全组的准则的集合匹配时,控制器将dcn的逻辑网络地址(例如,mac和ip地址)添加到安全组。在一些实施例中,控制器使用在主机计算机上创建dcn时从主机计算机接收到的信息来(i)识别dcn属于哪些组,以及(ii)识别mac和ip地址以添加到用于识别出的组的列表。对于跨越多个站点的每个组,这些站点处的控制器集群彼此共享属于该组的逻辑网络地址的列表。然后,控制器将用于每个组的完整地址列表提供给使用安全组强制实施策略规则的主机计算机和/或边缘设备。
25.当提供对逻辑网络状态数据的更新时,在一些实施例中,控制器不重新发送用于给定逻辑交换机的整个mac地址列表或用于站点之间的特定安全组的地址的整个列表。代替地,一些实施例将对当前状态的每个改变作为指定改变的原子更新发送,从而最小化需要在站点之间传送的数据的量。特定站点处的控制器(例如,在该站点处的分布式数据库中)维护当前逻辑网络状态的快照,以及每当这个状态改变时(例如,由于来自站点中的主机计算机的dcn的创建或删除),处置将该状态发送到另一个站点的每个控制器识别该改变并将该改变作为更新发送到另一个站点。因为这些改变可以由发送站点处的集群中的任何控制器得出,因此在一些实施例中,这个站点不保持(persist)更新的队列。在一些实施例中,同步协议是无损的,因此一旦将更新从第一站点发送到第二站点,就可以假设第二站点将处理该更新(并且将按照接收更新的次序进行处理)。此外,第二站点处的控制器将这些更新保持在分布式数据库中。
26.如果从第一(发送)站点到第二(接收站点)的连接断开,那么在重新连接后,一些实施例比较比较(i)第二站点处的持久(persisted)数据的快照与(ii)第一站点处的状态的快照,以识别差异。因此,第一站点只能发送这些差异。在一些实施例中,接收控制器基于其快照计算加密散列树并将这个散列树发送到发送控制器。发送控制器基于其快照计算类
似的散列树并将两者进行比较以便识别状态的差异。然后发送控制器将更新发送到接收控制器,以使该站点保持最新。
27.在某些情况下,诸如当逻辑网络端点dcn从一个站点移动到另一个站点时,基于从两个其它站点接收到的数据,可能在第一站点出现冲突。当dcn从第二站点迁移到第三站点,或者在第二站点中崩溃并在第三站点中恢复时,在理想场景下(i)第二站点处的控制器被通知删除dcn,相应地更新其逻辑网络状态数据,并与第一站点共享这个数据,并且(ii)第三站点处的控制器被通知dcn创建,相应地更新其逻辑网络状态数据,并与第一站点共享这个数据。但是,如果第二站点处出现连接问题(例如,主机计算机和控制器集群之间或第一站点和第二站点之间出现连接问题),那么第一站点将不会接收到关于删除的信息,因此一旦接收到来自第三站点的信息就以冲突的信息(例如,安全组中的ip地址)结束。在一些实施例中,第一站点基于偏爱来自具有当前操作连接的站点的数据,并且如果两个连接都可操作,那么偏爱具有较新时间戳的数据来解决这些类型的冲突。
28.前面的发明内容旨在用作对本发明的一些实施例的简要介绍。这并不意味着是对本文档中公开的所有创造性主题的介绍或概述。下面的具体实施方式和具体实施方式中引用的附图将进一步描述发明内容中描述的实施例以及其它实施例。因而,为了理解本文档描述的所有实施例,需要对发明内容、具体实施方式和附图进行全面查看。而且,要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制,而是由所附权利要求限定,因为要求保护的主题可以以其它特定形式实施而不脱离主题的精神。
附图说明
29.本发明的新颖特征在所附权利要求中阐述。但是,为了解释的目的,本发明的若干实施例在以下附图中阐述。
30.图1概念性地图示了一些实施例的网络管理系统。
31.图2-图4概念性地图示了用于跨越三个物理站点的逻辑网络的一些实施例的网络管理系统的网络管理器的集合。
32.图5概念性地图示了经由全局管理器处的代理访问全局管理器和/或本地管理器的两个用户客户端。
33.图6概念性地更详细地图示了图2中描述的网络管理系统的不同组件。
34.图7概念性地图示了由逻辑网络跨越的物理站点处的管理器集群和分布式数据库系统。
35.图8概念性地图示了通过通道从主要全局管理器接收数据的本地管理器的体系架构。
36.图9概念性地图示了一些实施例的逻辑网络的简单示例。
37.图10概念性地图示了图9的逻辑网络,示出了逻辑路由器的逻辑路由组件以及连接到这些逻辑组件并且将逻辑组件彼此连接的各种逻辑交换机。
38.图11概念性地图示了由图2的逻辑网络所跨越的三个数据中心以及实现逻辑网络的主机计算机和边缘设备。
39.图12概念性地图示了用于跨越多个物理站点的逻辑网络的一些实施例的全局策略树的示例。
40.图13概念性地图示了用于自动发现物理站点网络的物理结构(例如,边缘集群和主机计算机的区)的一些实施例的过程。
41.图14概念性地图示了用于从全局策略树生成策略子树的一些实施例的过程。
42.图15图示了用于基于全局策略树的物理站点的全局策略子树,并且全局策略子树存储在用于站点的本地管理器的数据库处。
43.图16概念性地图示了在一些实施例中与从全局管理器接收的全局策略子树不同的站点的本地策略树。
44.图17概念性地图示了一些实施例的用于处置直接在本地管理器处从用户客户端接收到的cud事件的过程。
45.图18图示了用于在全局管理器处查看和修改全局逻辑网络配置的gui页面的示例。
46.图19图示了在图18的gui页面中对位置选择器项的选择。
47.图20图示了当已经通过位置选择器项选择了这个选项时图18的相同主要ui页面仅示出用于一个站点的统计信息。
48.图21图示了在图18的gui页面中对这个网络管理器选择器项的选择。
49.图22图示了用于本地管理器的主要gui页面。
50.图23图示了用于全球逻辑网络中的t0网关的gui页面。
51.图24图示了用于特定站点处的t0网关的gui页面。
52.图25概念性地图示了在一些实施例中跨三个站点(例如,数据中心)的网络控制器的全网。
53.图26概念性地图示了一些实施例的网络控制器的体系架构。
54.图27概念性地图示了一些实施例的用于建立与另一个站点的逻辑网络状态数据交换的过程。
55.图28概念性地图示了示出在三个站点处的指定的发送者和接收者主控器(master)之间的逻辑网络状态数据的流的示例。
56.图29概念性地图示了在站点内和站点之间两者的逻辑网络到物理网络映射数据的生成和传输。
57.图30a-图30b概念性地图示了用于站点内和站点之间两者的动态安全组的逻辑网络地址列表的生成和传输。
58.图31a-图31b概念性地图示了对第一站点处的动态安全组的更新以及更新在第二站点处的保持。
59.图32概念性地图示了一些实施例的用于识别在与远程站点重新连接之后要求被发送到远程站点处的控制器的逻辑网络状态数据更新的过程。
60.图33概念性地图示了一些实施例的用于解决冲突的逻辑网络状态数据的过程。
61.图34概念性地图示了利用其实现本发明的一些实施例的电子系统。
具体实施方式
62.在本发明的以下详细描述中,阐述和描述了本发明的许多细节、示例和实施例。但是,对于本领域技术人员来说将清楚和显而易见的是,本发明不限于所阐述的实施例并且
可以在没有所讨论的一些具体细节和示例的情况下实践本发明。
63.本发明的一些实施例提供了一种用于管理跨越多个联合站点(例如,多个数据中心)的逻辑网络的网络管理系统。一些实施例的网络管理系统包括(i)管理跨越所有站点的整个逻辑网络的全局网络管理器,(ii)在每个站点处的直接管理它们的相应站点处的逻辑网络的本地网络管理器,以及(iii)每个站点处的中央控制器,用于将逻辑网络配置数据分发到站点处实现逻辑网络的计算设备。全局管理器(例如,从网络管理员)接收全局逻辑网络配置数据,而本地网络管理器(i)从全局管理器接收它们相应站点的全局逻辑网络配置数据和(ii)(例如,从网络管理员)接收本地逻辑网络配置数据。在一些实施例中,提供允许网络管理员经由相同的用户界面(ui)访问全局管理器以及本地管理器中的一些或全部的网络管理应用。
64.在一些实施例中,逻辑网络是网络管理员(或多个网络管理员)通过网络管理器的集合定义的概念网络结构。具体而言,一些实施例包括用于每个站点的全局管理器以及本地管理器。图1概念性地图示了一些实施例的这种网络管理系统100。这个网络管理系统100包括全局管理器105以及在被逻辑网络跨越的两个数据中心120和125中的每一个处的本地管理器110和115。第一数据中心120除了本地管理器110之外还包括中央控制器130以及主机计算机135和边缘设备140,而第二数据中心125除了本地管理器115之外还包括中央控制器145以及主机计算机150和边缘设备155。
65.在一些实施例中,(一个或多个)网络管理员定义逻辑网络以通过全局管理器105跨越物理站点的集合(在这种情况下是两个图示的数据中心120和125)。此外,跨越多个数据中心的任何逻辑网络构造(诸如逻辑转发元素)都是通过全局管理器105定义的。在不同的实施例中,这个全局管理器可以在数据中心之一处操作(例如,在与那个站点处的本地管理器相同的一个或多个机器上或在与本地管理器不同的机器上)或在不同的站点处操作。
66.全局管理器105向逻辑网络跨越的每个站点处的本地管理器(在这种情况下,本地管理器110和115)提供数据。在一些实施例中,全局管理器为每个逻辑网络构造识别由该构造跨越的站点,并且仅将关于该构造的信息提供给识别出的站点。因此,仅跨越第一数据中心120的安全组、逻辑路由器等将被提供给本地管理器110而不是提供给本地管理器115。此外,站点专有的lfe(和其它逻辑网络构造)可以由网络管理员直接通过该站点处的本地管理器定义。下面更详细地描述逻辑网络配置以及全局和本地网络管理器。
67.给定站点处的本地管理器110或115(或管理平面应用,其可以与本地管理器分离)使用或者从全局管理器105或者直接从网络管理员接收的逻辑网络配置数据来生成用于实现逻辑网络的主机计算机135和150以及边缘设备140和155(以下统称为计算设备)的配置数据。本地管理器将这个数据提供给中央控制器130和145,中央控制器确定应当向哪些计算设备提供关于每个逻辑网络构造的配置数据。在一些实施例中,不同的lfe(和其它构造)跨越不同的计算设备,这取决于哪些逻辑网络端点在主机计算机135和150上操作以及各种lfe构造被指派给哪些边缘设备(如下文更详细地描述)。
68.在一些实施例中,中央控制器130和145除了将配置数据分发到计算设备之外还从计算设备接收物理网络到逻辑网络映射数据并且跨数据中心共享这个信息。例如,在一些实施例中,中央控制器130从主机计算机135接收隧道端点到逻辑网络地址映射数据,并且(i)与第一数据中心120中的其它主机计算机135和边缘设备140以及(ii)与第二站点125中
的中央控制器145共享这个信息(以便中央控制器145可以与主机计算机150和/或边缘设备155共享这个数据)。类似地,在一些实施例中,中央控制器130基于来自主机计算机135的信息识别第一数据中心120中的安全组的成员,并且将关于安全组的聚合信息至少分发到主机计算机135和第二站点125中的中央控制器。下面更详细地描述中央控制器操作。
69.关于全局和本地管理器,图2-图4概念性地图示了一些实施例的用于跨越三个物理站点205-215的逻辑网络的网络管理系统的网络管理器的集合。图2中所示的网络管理系统200包括(i)管理跨越所有物理站点205-215的整个逻辑网络的全局管理器220,以及(ii)用于每个站点的管理其相应站点205-215处的逻辑网络的本地管理器225-235。除了本地管理器之外,每个物理站点还包括中央控制器、主机计算机和边缘设备(未示出)。在一些实施例中,全局管理器220在由逻辑网络跨越的站点205之一处的计算设备245上执行,并且本地管理器225-235也在其相应站点210-215处的计算设备250-255上执行。
70.全局管理器经由一个或多个用户客户端240接收用于逻辑网络的全局期望配置。在一些实施例中,每个本地管理器225-235还可以经由用户客户端240接收用于逻辑网络的(特定于站点的)期望配置。在一些实施例中,使用代表性状态转移(rest)应用编程接口(api)从用户客户端240向管理器220-235提供期望的配置,并且在图2中由虚线表示。全局管理器220还向本地管理器225-235中的每一个提供全局期望配置的特定于站点的部分,如图2中的点划线所示。
71.在一些实施例中,如图2中所示,全局管理器220在给定的物理站点205处的与管理该站点的本地管理器225相同的计算设备245上执行。在一些实施例中,同一站点处的全局管理器和本地管理器是单个应用的单独模块,并且共享存储在全局管理器的站点处的数据库(例如,分布式数据库)。在其它实施例中,如图3中所示,全局管理器220在给定物理站点205处的计算设备305上执行,与管理该站点的任何本地管理器225分开(但是它们仍然可以共享分布式数据库)。在还有其它实施例中,如图4中所示,全局管理器220在不被逻辑网络跨越的单独站点410处的计算设备405上执行,因此不具有用于该逻辑网络的本地管理器。
72.一些实施例采用辅助(备用)全局管理器260,与主要(活动)全局管理器220处于活动-备用布置。主要全局管理器220与辅助全局管理器260异步地同步,作为故障转移场景的备用。这种异步复制由图2中的点划线表示。为了快速恢复(resiliency),辅助全局管理器260位于与活动全局管理器220所在的站点205不同的物理站点210,并且维护独立于主要全局管理器220的数据库。这确保由于与主要全局管理器的物理站点的连接性问题而导致的故障转移场景不会自动影响辅助全局管理器的物理站点,并利用联合逻辑网络的多站点体系架构。
73.在一些实施例中,辅助全局管理器260在与管理其站点210的本地管理器230相同的计算设备250上执行,如图2中所示。在其它实施例中,如图3中所示,辅助全局管理器260在其物理站点210处的不同计算设备310上执行,与管理该站点的任何本地管理器230分开。在还有其它实施例中,如图4中所示,辅助全局管理器260在不被逻辑网络跨越的单独站点420处的计算设备415上执行,因此不具有本地管理器(但仍然不同于活动全局管理器220的位置)。虽然图2-图4图示了主要全局管理器220和辅助全局管理器260具有完全相同托管布置的示例,但是在一些实施例中,可以根据需要采用托管的任何组合或排列。仅作为一个示例,主要全局管理器220可以与本地管理器共同定位(如图2中所示),并且辅助全局管理器
260可以在不被逻辑网络跨越的物理站点处执行(如图4中所示)。
74.主要全局管理器220、辅助全局管理器260和本地管理器225-235在一些实施例中是单个应用的单独模块,而在其它实施例中是单独的应用。在一些实施例中,这些应用作为在每个物理站点处的主机计算机上执行的机器内的一个或多个过程来执行。一些实施例将管理器220-235和260中的一个或多个部署为它们的物理站点处的机器的集群,其中每个机器在同一站点处的不同计算设备上执行,如下面参考图7进一步详细描述的。
75.应当注意的是,虽然上面的图图示了用户客户端240直接连接到全局管理器220和本地管理器225-235,但在其它实施例中,用户客户端仅直接访问全局管理器220(只要应用已为全局管理器提供了适当的认证信息即可)。为了在此类实施例中访问本地管理器,全局管理器充当代理—即,在一些实施例中,应用客户端通过全局管理器访问本地管理器。
76.图5概念性地图示了两个用户客户端505和510,它们经由全局管理器处的代理515访问全局管理器220和/或本地管理器225-235。在一些实施例中,代理515被配置有连接到本地管理器225-235中的每一个所需的信息(例如,ip地址、认证信息等)。如图所示,第一用户客户端505可以访问全局管理器220以及所有三个本地管理器225-235。另一方面,第二用户客户端510只能访问用于第三站点215的本地管理器235。在这个示例中,第二用户客户端可能属于用于该站点的本地管理器,因此这个管理器没有被授予访问全局管理器220或其它本地管理器225-230的特权。在不同的实施例中,对本地管理器的这些不同访问特权的强制实施可以在代理515处(通过验证访问凭证)或在单独的本地管理器处。在后一种情况的一些实施例中,代理515允许从任何用户客户端到本地管理器225-235的连接,本地管理器225-235执行它们自己的认证过程。
77.图6概念性地更详细地图示了图2中描述的网络管理系统200的不同组件。逻辑网络的期望配置由主要全局管理器220从用户客户端240(例如,通过诸如互联网之类的广域网242)接收并且存储在全局管理器220的数据库610中。这种期望配置通过专用异步通道复制到辅助全局管理器260,以存储在单独的数据库612中。还向每个本地管理器(经由专用异步通道)225-235提供期望配置的特定于站点的部分,以存储在它们各自的数据库(未示出)中。
78.全局管理器220还包括多个附加模块,包括用于经由rest api接收用户客户端输入的api处理器606、将数据写入数据库610的核心全局管理器服务607、在数据库610中维护传入创建/更新/删除(cud)事件的因果关系的持久工作队列611、将cud事件复制到辅助全局管理器260处的数据库260的日志复制模块630、对cud事件(和其中引用的逻辑网络元素)执行跨度计算的代理(broker)/跨度服务635、包括用于将cud事件传播到不同物理站点的不同本地管理器的专用持久队列625-627的异步复制(ar)模块640、以及用于维护ar模块用于建立到其它本地管理器的通道的连接参数的站点管理器645。这些模块中的每一个及其功能将在下面进一步详细描述。
79.在一些实施例中,数据库610和612是分布式数据库(例如,共享日志),在管理者的相应物理站点的存储设备的集合上实现。此外,在一些实施例中,全局管理器220和260被实现为在其各自的物理站点的单独计算设备上执行的机器的集群。图7概念性地图示了管理器集群和位于被逻辑网络跨越的物理站点处的分布式数据库系统。这个示例中所示的管理器集群在不同的实施例中可以用作活动模式下的主要全局管理器、作为备用模式下的辅助
全局管理器或作为本地管理器。管理器是在物理站点处的单独主机计算机720-730上执行的若干管理器机器705-715上运行的应用,它们通过物理站点处的物理网络735(例如,数据中心网络架构)彼此通信。在一些实施例中,管理器机器705中的一个被指派为集群的领导者,其在主动-主动模式(例如,使用负载平衡)或主动-备用模式下与其它管理器机器共享任务。管理器机器705-715的集群对于逻辑网络中的其它管理器来说看起来是单个逻辑管理器。
80.在一些实施例中,在机器705-715上运行的管理器应用具有用于全局管理器和本地管理器的单独模块,其可以根据需要被启用或禁用。可替代地或结合地,在一些实施例中,机器705-715中的至少一个是专用全局管理器机器,具有用于运行本地管理器的应用的单独机器(未示出),在相同的主机计算机720-730或不同的主机计算机上执行(如上面参考图2-图4所述)。
81.在一些实施例中,管理器集群将期望的配置数据存储在由在主机计算机720-730上执行的数据库的一个或多个实例740-750管理的分布式数据库系统中。在一些实施例中,数据库在主机上的本地管理器机器内执行,但是为了清楚起见它们在图中被示为单独的。数据库实例740-750通过管理器集群使用的物理站点(例如,数据中心网络架构)处的物理网络735彼此通信。数据库实例740-750对管理器集群共同看起来是单个逻辑数据库610。在一些实施例中,实例是数据库的碎片或切片。在其它实施例中,每个实例是具有数据的完整副本的节点(例如,如图7的示例中所示)。在主机720-730之一发生故障的情况下,冗余度允许持久性。
82.在一些实施例中,数据库实例740-750是存储在主机计算机720-730上的分布式日志的节点。分布式日志中的条目提供了对不同逻辑网络元素和逻辑网络策略的状态的有序、持久的更新历史,管理器集群经由数据库实例740-750提供的应用编程接口(api)访问这些历史。美国专利10,540,119中更详细地描述了分布式日志和数据库api,该专利通过引用并入本文。
83.返回到图6的示例,描述全局期望配置的数据在一些实施例中使用一系列事务从用户客户端240接收并存储在数据库610中,这些事务通过来自用户客户端240的对主要全局管理器220的一系列rest api调用发起。在一些实施例中,这些api调用由api处理器模块606接收和处理,然后将接收到的数据提供给执行全局管理器220的核心功能的管理器服务607。管理器服务607将接收到的数据存储在数据库610中。在一些实施例中,数据以存储逻辑网络的逻辑网络元素的配置参数的表的形式存储在数据库中。在一些这样的实施例中,表中的数据被表达为用户意图的分层树,如下面参考图12所描述的。此外,在一些实施例中,管理器服务607还在工作队列611中存储(例如,复制)传入的一系列事务,以保持它们的因果关系和次序。在一些实施例中,工作队列是数据库612中的持久队列,并且为了冗余度也跨数据库节点复制。
84.在一些实施例中,管理器服务607是管理器机器705-715的集群,如上面参考图7所描述的。如图6中所示,在一些实施例中,辅助全局管理器还具有对应的api处理器和管理器服务,它们在主要全局管理器发生故障(例如,变得无法访问)并且辅助全局管理器成为活动的管理器的故障转移场景中被激活。
85.在一些实施例中,数据库610从一系列事务中生成一个或多个更新流。当接收到描
述逻辑网络期望配置的数据时(例如,作为一系列api事务接收的创建/更新/删除(cud)事件),这个数据使用与每个事务相关联的元数据(例如,诸如可以用于数据排序和数据库状态的时间戳信息)进行标记,以防止针对访问的竞争条件。在一些实施例中,由数据库610生成的更新流将新写入的cud事件推送到日志复制模块630以复制到辅助全局管理器260。
86.在一些实施例中,并非由全局管理器存储在数据库中的所有数据都必需用于复制。在一些实施例中要复制的数据包括策略表、许可、物理站点信息和辅助全局管理器将要求以便在主要全局管理器发生故障的情况下呈现活动状态的其它数据。其它数据库表,诸如与在活动模式下管理网络相关的那些数据库表,对于复制到备用模式下的辅助全局管理器来说不是必需的。此外,不需要将关于逻辑网络的实现状态的状态信息复制到辅助全局管理器,因为在发生故障转移场景时实现状态将过时。一些实施例通过标记要复制的数据来区分要复制的数据和不要复制的数据。如上所述,在一些实施例中,数据库610由主要全局管理器220与本地管理器225共享(例如,在同一个计算设备245上,如图2的示例中所示)。在此类实施例中,本地管理器还将与cud事件对应的数据写到数据库,与由全局管理器写入的数据分开。这些本地管理器事件不复制到辅助全局管理器的数据库中。
87.在一些实施例中,全局管理器220还包括异步复制(ar)模块640,其具有若干持久队列625-627。这些持久队列625-627中的每一个专用于将期望的配置数据传播到每个物理站点205-215的本地管理器225-235之一。在一些实施例中,辅助全局管理器260还具有包括类似队列的ar模块(未示出)。
88.当主要全局管理器220接收到用于逻辑网络的全局期望配置时,全局管理器基于全局配置的各个部分与队列的对应物理站点处逻辑网络的配置的相关性将全局配置的各个部分存储在持久队列625-627中。在一些实施例中,全局管理器的代理服务635例如基于逻辑网络元素的跨度来识别用于每个物理站点的全局期望配置的相关部分,如下文进一步详细描述的。在一些实施例中,跨度由跨度服务确定,在一些实施例中,跨度服务是代理服务635(如图6中所描绘)的一部分,而在其它实施例中是独立服务。
89.在一些实施例中,全局管理器220处的异步复制器(ar)模块640维护将主要全局管理器220连接到本地管理器225-235的异步通道的集合。这些通道被描绘为从持久队列625-627到本地管理器225-235的对应ar模块655-665的点划线。
90.在一些实施例中,ar模块维护将主要全局管理器220连接到辅助全局管理器260的专用异步通道。在其它实施例中,到辅助全局管理器260的复制由专用日志复制模块630处置。如上所述,日志复制模块从数据库612中的工作队列611接收要复制的数据,并且在一些实施例中,将数据(如点划线所描绘的)直接复制到辅助全局管理器260的数据库612,绕过ar模块。在一些实施例中,辅助全局管理器260还具有接收者模块642,用于与主要全局管理器建立通道、接收复制的数据、并且将数据写入数据库612。如果辅助全局管理器260变为活动的(例如,由于故障转移),那么在一些实施例中,接收模块642承担复制模块的角色。
91.ar模块640和650-665维护物理站点之间的通道,并且在一些实施例中保证数据到辅助全局管理器的复制所需的各种连接参数(例如,最小带宽、最大往返时间等),并将数据分发给本地管理器。在辅助全局管理器和/或本地管理器被实现为机器的集群的实施例中,通道还识别每个管理器集群的领导机器。
92.一些实施例在主要全局管理器220处执行站点管理器645的集合,其向ar模块640
提供关于物理站点的信息(例如,连接性统计信息、ip地址等)以用于维护通道,每个站点管理器与物理站点205-215之一对应。站点管理器645在一些实施例中与ar模块640分开执行(如图6中所描绘的),或者在其它实施例中作为ar模块的子模块运行。在此类实施例中,辅助全局管理器260还执行站点管理器的集合(未示出),但是这些站点管理器在故障转移场景之前是不活动的。
93.如上所述,代理服务635将cud事件排队到ar模块640的持久队列625-627。在一些实施例中,ar模块640轮询其持久队列625-627以确定何时有新的cud事件。如果在队列中找到数据(例如,与cud事件对应),那么ar模块640检索数据(即,使cud事件出队)并通过与该队列对应的通道将检索到的数据传输到对应站点处本地管理器的ar模块。
94.图8概念性地图示了本地管理器通过通道从主要全局管理器220接收数据的体系架构。一些实施例的本地管理器230包括多个模块,包括用于从全局管理器220接收数据的接收ar模块665、用于存储接收到的事件的ar模块的入口队列802、执行核心本地管理器功能的本地管理器服务810、以及数据库805(在一些实施例中是分布式数据库,如上文参考图7所述)。在一些实施例中,本地管理器230还包括经由rest api从用户客户端240接收输入的api处理器815,以及将配置数据发送到控制平面以实现期望的逻辑网络配置的处置器817。这些模块及其功能将在下面更详细地描述。
95.在图8的示例中,本地管理器230位于与主要全局管理器不同的物理站点,因此经由广域网670(例如,互联网、私有网络等)接收数据。在其它实施例中,本地管理器在同一物理站点(例如,物理站点205),并且通过本地物理网络(例如,数据中心架构)接收数据。作为另一个示例,如果本地管理器共同位于同一主机机器上(例如,如图2中所示),那么在一些实施例中通过进程间通信方法接收数据。
96.如上所述,在一些实施例中,代理服务635从数据库610检索新数据并执行跨度计算以确定数据应当存储在哪些队列625-627中。全局管理器220的ar模块640然后从每个队列检索新数据并通过专用通道将数据传输到对应的物理站点。每个通道将主要全局管理器220的发送ar模块640连接到本地管理器225-235的接收ar模块655-665之一。
97.参考本地管理器230,ar模块665经由本地管理器230的发送ar模块640和接收ar模块665之间的专用通道从主要全局管理器220接收数据。在一些实施例中,接收ar模块665维护持久入口队列802以存储接收到的数据,在一些这样的实施例中,该数据存储在活动存储器中。在一些实施例中,接收到的数据与一个或多个cud事件对应,每个cud事件引用一个或多个逻辑网络元素,这些逻辑网络元素跨越一个或多个物理站点,包括物理站点210。在一些实施例中,接收到的数据的次序和因果关系由入口队列802保存。
98.在一些实施例中,本地管理器服务810执行验证以确定与接收到的数据相关联的cud事件是否有效。验证基于在将cud事件应用于物理站点的逻辑网络配置时是否存在任何错误或不一致。此外,在一些实施例中,其它验证是支配逻辑网络元素是否可以被更新以将其跨度延伸到新站点的规则。例如,在将元素延伸到新站点之前,必须先将影响该元素的安全策略延伸到新站点。否则,将产生漏洞,适用于逻辑网络元素的安全策略没有完全应用。在一些实施例中,验证由本地管理器服务810执行,其从入口队列802检索cud事件并将其存储在数据库805中。
99.如果cud事件无效,那么本地管理器服务为主要全局管理器生成未能验证cud事件
的通知。在一些实施例中,通知是在ar模块665的出口队列(未示出)中排队的通知事件,将经由相同的异步通道(例如,图8中的点划线)发送回全局管理器220处的ar模块640。在其它实施例中,通知事件是经由带外通知通道发送的。在一些实施例中,作为本地管理器服务810的核心功能的一部分,通过通道检索和发送出口队列中的通知事件。在一些实施例中,一些实施例不丢弃无效事件,而是保持这些事件以便维持因果关系。无效事件仍然被接受,并且要求(例如,由网络管理员)干预来解决无效性。
100.在一些实施例中,无论事件是有效还是无效,该事件都被应用于物理站点处的逻辑网络的本地期望配置。在一些实施例中,逻辑网络的期望配置被表示为策略树,如下文进一步详细描述的。在图8的示例中,逻辑网络的期望配置(例如,其跨度包括物理站点210的逻辑网络元素的配置)存储在本地数据库805中。经验证的cud事件应用于期望的配置。例如,如果经验证的cud事件是创建事件,那么在存储在数据库805中的期望配置内创建由该事件定义的逻辑网络元素。如果经验证的cud事件是更新事件,那么事件所引用的逻辑网络元素的期望配置在存储在数据库805中的期望配置内被更新。如果经验证的cud事件是删除事件,那么在存储在数据库805中的期望配置内删除由该事件引用的逻辑网络元素。
101.本地管理器使用逻辑网络的期望配置来生成配置数据并将其提供给逻辑网络的控制平面(例如,每个站点处的中央控制器或控制器集群)。在一些实施例中,这些控制器识别站点处的计算设备,这些计算设备执行物理转发元素并将配置数据分发到识别出的计算设备。在一些实施例中,不同的逻辑网络元素跨越不同的计算设备(例如,主机计算机、边缘设备等)。在一些实施例中,每个逻辑网络元素通过在由该逻辑网络元素跨越的站点处识别出的计算设备上执行的物理转发元素来实现。换句话说,逻辑网络元素由其跨越的每个站点处的至少一个物理转发元素来实现。一些实施例具有本地控制器(也称为底盘控制器),其在物理转发元素旁边的一个或多个计算设备上执行,并且从控制器集群接收配置数据。本地控制器使用配置数据来配置物理转发元素以在每个计算设备处实现逻辑网络元素。
102.本地管理器也可以直接从用户客户端240而不是从全局管理器220接收cud事件。例如,当物理站点的本地管理器(可以与全局联合逻辑网络的管理员相同或不同)修改在本地站点实现的逻辑网络的期望配置(例如,通过为其跨度包括本地站点的逻辑网络元素指定一系列创建、更新或删除事件),或者修改站点处的本地逻辑网络(其可以连接到全局逻辑网络)。在一些实施例中,这些本地cud事件使用一系列事务存储在数据库610中,通过从用户客户端到主要全局管理器220的一系列rest api调用来发起。在一些实施例中,用户客户端240不在同一物理站点,因此本地管理器230通过广域网242接收本地cud事件。如上所述,在一些实施例中,全局管理器充当用户客户端240访问本地管理器230的代理。
103.在一些实施例中,这些api调用由本地管理器230的api处理器模块815接收和处理,然后将接收到的数据提供给执行本地管理器230的核心功能的本地管理器服务810。在一些实施例中,本地管理器服务810确定本地cud事件是否与从全局管理器220接收的期望配置冲突。当逻辑网络元素的本地期望配置与全局定义的期望配置冲突时,本地管理器服务810将优先级规则的集合应用于cud事件以确定cud事件是否覆盖全局定义的期望配置。例如,一些实施例仅允许本地cud事件对联网相关配置(例如,消息转发规则和策略)的期望配置进行覆盖。在此类情况下,本地cud事件将具有优先权。作为另一个示例,一些实施例防止本地cud事件对安全相关配置的期望配置的覆盖。在此类情况下,全局定义的期望配置将
具有优先权。
104.如果不存在冲突,或者本地配置具有优先级,那么本地管理器服务810将cud事件应用于本地存储在数据库805中的物理站点处的逻辑网络的本地期望配置。例如,如果cud事件是创建事件,那么在存储在数据库805中的本地期望配置内创建由事件定义的逻辑网络元素。如果经验证的cud事件是更新事件,那么在存储在数据库805中的本地期望配置内更新由事件引用的逻辑网络元素的期望配置。如果验证的cud事件是删除事件,那么在存储在数据库805中的本地期望配置内删除该事件所引用的逻辑网络元素。
105.如上所述,本地管理器230根据存储在本地数据库805中的逻辑网络的期望配置生成并提供配置数据。在图8例示的实施例中,本地管理器服务810从存储的期望配置生成配置数据,并将生成的数据提供给处置器模块817。处置器模块817然后将配置数据分发到一个或多个控制器的中央控制器集群820。控制器集群识别向其分发配置数据的主机计算机850和边缘设备855。
106.在描述一些实施例的全局(和本地)策略树之前,将进一步描述由这些策略树描述的逻辑网络,以及它们跨多个站点的物理实施方式。一些实施例的逻辑网络可以包括逻辑交换机(逻辑网络dcn附接到其上)和逻辑路由器两者。每个lfe(例如,逻辑交换机或逻辑路由器)都跨一个或多个数据中心实现,具体取决于网络管理员如何定义lfe。在一些实施例中,lfe通过在还托管逻辑网络的dcn的主机计算机上(例如,mfe在主机计算机的虚拟化软件中执行)和/或数据中心内的边缘设备上执行的受管理的转发元件(mfe)在数据中心内实现。在一些实施例中,边缘设备是可以是执行数据路径的裸机和/或dcn在其上执行数据路径的计算机的计算设备。在一些实施例中,这些数据路径执行各种网关操作(例如,用于跨数据中心延伸逻辑交换机的网关、用于执行诸如执行有状态服务和/或连接到外部网络之类的逻辑路由器的集中式特征的网关)。
107.图9概念性地图示了一些实施例的逻辑网络900的简单示例。这个逻辑网络900包括第0层(t0)逻辑路由器905、第1层(t1)逻辑路由器910以及两个逻辑交换机915和920。虽然未示出,但各种逻辑网络端点(例如,vm、容器或其它dcn)附接到逻辑交换机915和920的逻辑端口。这些逻辑网络端点在由它们附接到的逻辑交换机跨越的数据中心中的主机计算机上执行。在这个示例中,t0逻辑路由器和t1逻辑路由器都被定义为具有包括三个数据中心的跨度。在一些实施例中,逻辑交换机915和920继承它们连接到的逻辑路由器905的跨度。
108.如在这个示例中,在一些实施例中,逻辑路由器可以包括直接连接到外部网络的t0逻辑路由器(例如,路由器905)和隔离逻辑交换机的集合与逻辑网络的其余部分的t1逻辑路由器(例如,路由器910),并且可以为连接到这些逻辑交换机的端点执行有状态服务。在一些实施例中,这些逻辑路由器由网络管理员定义为具有一个或多个路由组件,这取决于网络管理员如何配置逻辑路由器。
109.图10概念性地图示了逻辑网络900,其示出逻辑路由器905和910的逻辑路由组件以及连接到这些逻辑组件并且将逻辑组件彼此连接的各种逻辑交换机。如图所示,t1逻辑路由器910包括分布式路由组件(dr)1005以及集中式路由组件(也称为服务路由器或sr)1010-1020的集合。在一些实施例中,t1逻辑路由器可以仅具有dr,或者可以同时具有dr和sr。对于t1逻辑路由器,sr允许对在(i)连接到连接到t1逻辑路由器的逻辑交换机的dcn和
(ii)连接到不连接到第1层逻辑路由器或来自外部网络端点的其它逻辑交换机的dcn之间发送的数据消息执行集中式(例如,有状态)服务。在这个示例中,发送到连接到逻辑交换机915和920的dcn或来自该dcn的数据消息将具有由t1逻辑路由器910的sr 1010-1020之一(具体而言,由主要sr 1015)应用的有状态服务。
110.在一些实施例中,t1逻辑路由器可以连接到t0逻辑路由器(例如,t1逻辑路由器910连接到t0逻辑路由器905)。如所提到的,这些t0逻辑路由器处置逻辑网络dcn与外部网络端点之间交换的数据消息。如图所示,t0逻辑路由器905包括dr 1025以及sr 1030-1040的集合。在一些实施例中,t0逻辑路由器包括在被逻辑路由器跨越的每个数据中心中操作的sr(或多个sr)。在这些数据中心中的一些或全部中,t0 sr连接到外部路由器1041-1043(或提供到外部网络的连接的架顶式(tor)交换机)。
111.除了逻辑交换机915和920(其跨越由t1 dr 1005跨越的所有数据中心),图10还图示了各种自动定义的逻辑交换机。在每个数据中心内,t1 dr 1005经由相应的中转逻辑交换机1045-1055连接到其相应的本地t1 sr 1010-1020。类似地,在每个数据中心内,t0 dr1025经由相应的中转逻辑交换机1060-1070连接到其相应的本地t0sr 1030-1040。此外,路由器链路逻辑交换机1075将主要t1 sr 1015(为t1逻辑路由器执行有状态服务)连接到t0 dr 1025。在一些实施例中,为每个其它数据中心定义类似的路由器链路逻辑交换机,但被标记为关闭。
112.最后,网络管理系统还定义连接sr的每个集合的背板逻辑交换机。在这种情况下,存在连接三个t1 sr 1010-1020的背板逻辑交换机1080和连接三个t0 sr 1030-1040的背板逻辑交换机1085。与中转逻辑交换机不同,这些背板逻辑交换机跨过由它们相应的逻辑路由器跨越的数据中心而延伸。当用于特定逻辑路由器的一个sr将数据消息路由到用于同一逻辑路由器的另一个sr时,数据消息将根据适当的背板逻辑交换机被发送。
113.如所提到的,逻辑网络的lfe可以由在源主机计算机上执行的mfe以及由边缘设备实现。图11概念性地图示了由逻辑网络900跨越的三个数据中心1105-1115以及实现逻辑网络的主机计算机1120和边缘设备1125。vm(在这个示例中)或其它逻辑网络端点dcn在主机计算机1120上操作,主机计算机1120执行用于托管这些vm的虚拟化软件。在一些实施例中,虚拟化软件包括mfe,诸如虚拟交换机和/或虚拟路由器。在一些实施例中,一个mfe(例如,基于流的mfe)在每个主机计算机1120上执行以实现多个lfe,而在其它实施例中,多个mfe在每个主机计算机1120(例如,一个或多个虚拟交换机和/或虚拟路由器)上执行。在还有其它实施例中,不同的主机计算机用不同类型的mfe执行不同的虚拟化软件。在这个应用内,“mfe”用于表示在主机计算机上执行以实现一个或多个逻辑网络的lfe的一个或多个mfe的集合。
114.在一些实施例中,边缘设备1125执行实现一个或多个lfe的数据路径(例如,数据平面开发套件(dpdk)数据路径)。在一些实施例中,逻辑路由器的sr被指派给边缘设备并由这些边缘设备实现(sr是集中式的,因此不以与dr或逻辑交换机相同的方式分布)。在不同的实施例中,边缘设备1125的数据路径可以在裸机计算设备的主要操作系统中执行和/或在边缘设备上操作的vm或其它dcn(非逻辑网络端点dcn)内执行。
115.在一些实施例中,如图所示,边缘设备1125将数据中心彼此连接(并且连接到外部网络)。在此类实施例中,数据中心内的主机计算机1120可以直接向彼此发送数据消息,但
经由边缘设备1125向其它数据中心中的主机计算机1120发送数据消息。当第一数据中心1105中的源dcn(例如,vm)向第二数据中心1110中的目的地dcn发送数据消息时,这个数据消息首先由在与源vm相同的主机计算机1120上执行的mfe处理,然后由第一数据中心1105中的边缘设备1125,然后是第二数据中心1110中的边缘设备1125,然后由与目标dcn相同的主机计算机1120中的mfe处理。
116.如所提到的,在一些实施例中,逻辑网络的全局期望配置被表达为具有节点和节点之间的连接的分层树(也称为全局策略树)。一些实施例定义了用于全局逻辑网络(也称为联合)的根节点并将用于物理站点和逻辑网络实体的节点添加为根节点的子节点。
117.对于逻辑网络实体(例如,逻辑网络元素和/或策略),当网络管理员创建新的逻辑网络实体时,全局管理器在策略树中为该实体创建一个或多个节点。在一些实施例中,这些逻辑网络实体可以包括跨越一个或多个站点的逻辑网络元素和应用于这些元素的逻辑网络策略,并且连接表示节点之间的关系(例如,父-子关系、逻辑网络连接等)。逻辑网络元素包括逻辑转发元素(例如,逻辑路由器、逻辑交换机等),以及逻辑构造(例如,与逻辑转发元素相关联的逻辑端口、一个或多个站点的逻辑分组,以及共享一个或多个属性的逻辑网络端点的组)。在一些实施例中,每个逻辑网络元素通过在由该逻辑网络元素跨越的站点处的计算设备上执行的物理转发元素来实现。逻辑网络策略包括转发策略、服务策略和安全策略,并且在一些实施例中被应用以支配逻辑转发元素的行为。在一些实施例中,策略可以是逻辑网络元素节点的子节点(例如,用于逻辑路由器的静态路由策略配置)。
118.主要全局管理器将全局策略树存储在其数据库中,而辅助全局管理器将复制的全局策略树存储在其自己的数据库中。在一些实施例中,节点表示跨越一个或多个站点的逻辑网络元素和应用于这些元素的逻辑网络策略,并且连接表示节点之间的关系(例如,父-子关系、逻辑网络连接等)。节点之间的交叉引用是通过引用通过树的层次结构的路径来实现的,该路径提供关于每个节点的跨度的信息。
119.图12概念性地图示了一些实施例的这种全局策略树1200的示例,用于跨越多个物理站点的逻辑网络。在一些实施例中,全局根节点1202表示整体联合逻辑网络配置。全局策略树的部分表示逻辑网络元素,包括逻辑转发元素(例如,逻辑路由器、逻辑交换机等)。例如,在图12中,全局策略树根1202连接单个第0层逻辑路由器t01205、两个第1层逻辑路由器t1a 1210和t1b 1215,以及两种不同类型的网络片段(segment)。这些片段是覆盖网络片段1220和vlan片段1225。用于路由器t0 1205的节点具有多个子节点,包括静态路由定义1230以及引用物理站点a和b的区域设置服务1235和1240。在这个示例中,路由器t0 1205也跨越站点c,但为了简单起见图中未示出引用站点c的对应区域设置(locale)服务。用于路由器t1a 1210的节点具有用于逻辑交换机1245的子节点。用于路由器t1b的节点1215具有用于引用物理站点a的区域设置服务1250的子节点。
120.用于t0路由器和t1路由器的区域设置服务节点定义这些路由器的跨度。例如,路由器t0 1205跨越站点a、b和c,而路由器t1b1215跨越站点a。随着将更多区域设置服务添加到t0或t1路由器,路由器被延伸到相应的站点。与路由器t1b 1215不同,路由器t1a1210不具有区域设置服务子节点,而是具有对路由器t0 1205的引用(虚线)。因此,路由器t1a 1210继承路由器t0 1205的跨度,即,路由器t1a跨越站点a、b和c。某些子节点在一些实施例中也自动继承该跨度。因而,t0路由器下的静态路由定义1230也跨越站点a、b和c。逻辑交换
机1245继承其父路由器t1a 1210的跨度,其进而从对路由器t0 1205的引用导出其跨度。因此,逻辑交换机1245也跨越站点a、b和c。
121.全局策略树1200中的每个节点具有定义配置参数的多个属性,其中一些由用户定义,而另一些被继承。在一些实施例中,跨度不是子节点从父节点继承的唯一属性。例如,跨越多于一个站点的某些t0或t1路由器将其中一个物理站点指派为主要站点,而其它站点则被指派为辅助站点。如果这种逻辑路由器具有多个服务路由器(sr)组件,那么主要站点处的sr组件优先执行某些操作。这种配置是(例如,由网络的管理员)为路由器指定的,并且不是路由器下的区域设置服务配置的一部分。
122.区域设置服务节点1235、1240和1250具有对相应站点a和b处的边缘集群1251和1252的引用(虚线)。如上所述,在这个示例中,t0路由器1205也跨越站点c,但是为了清楚起见,省略了用于该站点的路由器的区域设置服务并且因此省略了对站点c节点1265下的边缘集群的对应引用。在一些实施例中,区域设置服务节点与以上参考图10描述的服务路由器相关联。下面参考站点节点来描述边缘集群。在一些实施例中,本地服务节点还具有各种类型的子节点,定义在各个站点可用的各种不同类型的配置信息,包括接口(例如,逻辑端口)、l2 vpn、bgp服务和ipsec vpn。即使区域设置服务是其它元素的子节点,它们也不一定继承这些元素的全部范围。在一些实施例中,区域设置服务节点具有单个站点的跨度(即,本地服务节点引用的边缘集群节点的站点),因此所有子节点仅继承本地服务节点引用的单个站点的跨度。
123.逻辑交换机1245被示为路由器t1a 1210下的子节点。如果它们作为子节点连接(如图12中所示),那么此类逻辑交换机(也称为片段)仅限于父路由器。但是,在一些实施例中,逻辑交换机也直接连接到全局根1202。例如,覆盖片段1220直接连接到全局根1202,并且具有对路由器t1b 1215的引用(虚线)。如果期望,那么通过仅改变对位于全局根1202下方顶层的另一个逻辑路由器的引用,这允许覆盖片段移动到不同路由器。覆盖路由器1220继承路由器t1b 1215的跨度(例如站点a),但如果要将另一个区域设置服务添加到路由器t1b 1215,那么覆盖路由器可以自动延伸。
124.在一些实施例中,另一种类型的片段是支持vlan的片段。这些是针对运输区定义的,运输区是单个物理站点处的主机设备的组。因此,支持vlan的片段只能跨越定义了运输区的单个站点。在一些实施例中,支持vlan的片段在一些实施例中用作上行链路,以将逻辑路由器连接到逻辑网络之外的外部物理路由器。换句话说,vlan位于t0路由器和外部路由器之间。由于多个t0路由器可以连接到相同的外部物理路由器,因此在一些实施例中使用基于vlan的片段来区分它们的流量。通常,将逻辑t0路由器连接到物理路由器发生在单个物理站点处,因为每个站点具有自己的到站点之间的广域网(例如,互联网)的连接,即唯一的互联网服务提供商(isp)。因而,支持vlan的片段提供了逻辑隔离从不同t0路由器到同一外部路由器的流量的方式,即使t0路由器可以跨越多个站点延伸并在其跨度上重叠。
125.在图12的示例中,vlan片段1225具有对路由器t1b 1215下的区域设置服务1250的接口1255的引用(虚线)。接口1255被限制为区域设置服务1250的跨度,因此通过将vlan段1225连接到接口1255,vlan片段的跨度根据需要被限制为仅站点a。如果要在路由器t1b下添加另一个区域设置服务,那么路由器t1b的跨度将延伸到包括新站点,但vlan片段1225的跨度将保持不变,因为它引用的是本地服务1250的接口1255。
126.在一些实施例中,接口是上行链路或服务端口。接口连接到逻辑交换机或片段,然后逻辑网络端点(诸如虚拟机、数据计算节点或其它类型的工作负载)附接到这些逻辑交换机和片段。这些端点也具有自己的服务,诸如dns、tcp等。
127.此外,全局策略树1200包括用于每个物理站点的节点。例如,在图12中,在全局根1202下存在用于站点a 1260、站点b 1277和站点c 1265的节点。每个站点具有实施点子节点,在其下指派特定资源,诸如边缘集群、运输区等。在示例中,站点a的边缘集群1251具有来自附接到路由器t0 1205的区域设置服务1235和来自附接到路由器t1b 1215的区域设置服务1250的传入引用(incoming reference)。站点b处的边缘集群1252具有来自附接到路由器t01205的区域设置服务1240的传入引用。在一些实施例中,边缘集群还具有与特定边缘节点1253对应的子节点,这些节点实际上实现sr并执行诸如防火墙、dhcp等服务。
128.在一些实施例中,当站点被添加到由全局根节点1202表示的联合时,全局管理器经由自动发现识别站点的物理结构(以及因此用于全局策略树1200中的站点的子节点的结构)。图13概念性地图示了用于自动发现物理站点网络(例如,数据中心网络)的物理结构(例如,边缘集群和主机计算机的区)的一些实施例的过程1300。
129.如图所示,过程1300通过(在1305处)接收将新站点添加到由逻辑网络跨越的站点的联合的输入而开始。此时,可以为一组站点定义逻辑网络,并将新站点添加到这组站点,或者管理员可以在定义逻辑网络元素之前提供要跨越的初始站点组。在一些实施例中,网络管理员通过在全局管理器处定义物理站点并向全局管理器提供访问该站点所需的网络和认证信息(例如,用于本地管理器的证书和/或登录信息)来将物理站点添加到联合。
130.过程1300(在1310处)将用于新站点的节点添加到全局逻辑网络策略树。例如,如图12中所示,当管理员最初定义站点c时,全局管理器将创建节点1265并将其作为全局根节点1202的子节点添加到策略树1200中。
131.接下来,过程1300(在1315处)确定用于与新站点处的本地管理器通信的连接细节。例如,这些连接细节可以包括用于与全局管理器通信的本地管理器的接口的ip地址、认证信息等。如所提到的,在一些实施例中,网络管理员提供这个信息中的至少一些。此外,基于由网络管理员提供的这些连接细节,在一些实施例中,全局管理器与新站点的本地管理器协商安全连接。
132.随着连接建立,过程1300(在1320处)与本地管理器通信以自动发现新站点处的物理网络结构。即,全局管理器与新站点的本地管理器通信以确定该站点处的计算设备组,诸如主机计算机的边缘集群和运输区。在一些实施例中,边缘集群是被指定用于执行边缘网关服务(例如,为t0和/或t1逻辑路由实现sr)的计算设备的组。在一些实施例中,运输区是物理站点中主机计算机的区段,诸如服务器的机架或连接在一起的机架的组。在一些实施例中,本地管理器已经具有关于其站点处的物理网络结构的信息。在其它实施例中,本地管理器查询中央控制器或以其它方式盘点站点的物理网络结构。
133.最后,过程1300(在1325处)将节点添加到用于新站点的物理网络的自动发现的区段的策略树。然后过程1300结束。例如,参考图12,全局管理器将与站点c处的本地管理器通信并添加运输区节点1280。在一些实施例中,站点实施点节点(其边缘集群节点和运输区节点是子节点)由全局管理器自动添加。
134.在一些实施例中,逻辑网络元素还包括逻辑构造,诸如作为一个或多个站点的逻
辑分组的域(例如,地理区域),以及共享一个或多个属性的逻辑网络端点的组(例如,操作系统、区域(region)等)。域(domain)被定义并表示为全局根1202下的全局策略树1200中的节点。在一些实施例中,域(例如,由逻辑网络的管理员)在全局管理器处定义。与表示物理构造的站点不同,域是逻辑构造,它用作将不同逻辑实体组合在一起的包络(例如,出于安全目的)。例如,在一些实施例中,应用于域的防火墙策略或其它策略微分段将自动应用于域内定义的所有逻辑端点组。
135.在一些实施例中,逻辑网络配置(以及因此全局策略树)包括不同类型的域。例如,一些域特定于单个物理站点,并被称为位置。这种类型的域充当用于所有站点范围和站点特定配置和策略的容器。在一些实施例中,为联合逻辑网络中的每个物理站点自动创建位置域并且用户不能修改域。
136.其它域是一个或多个站点的逻辑组并且被称为区域。在一些实施例中,可以将区域指派给具有多个站点的地理区域。例如,在图6的示例中,物理站点a 205可以在巴黎,物理站点b 210在伦敦,并且物理站点c 215在纽约。这些分别与图12示例中的站点节点a 1260、b 1277和c 1265对应。然后可以定义一个区域(例如,欧洲),该区域包括物理站点a和b,并且定义包括物理站点c的不同区域(例如,北美)。这在例如存在不同监管环境的情况下是有用的(例如,欧盟的通用数据保护条例或gdpr)。与所有域一样,区域和位置都附接到全局根1202,并且不作为子节点附接到其它域。一些实施例将每个物理站点限制到在单个位置和单个区域中的成员资格。换句话说,位置可以不具有多于一个的物理站点,并且物理站点可以不是两个区域的成员。
137.在一些实施例中,域仅被创建为全局根1202下的顶级节点并且不能是其它域的子级或从其它域继承跨度。代替地,在一些实施例中,域的跨度在全局管理器处(例如,由逻辑网络的管理员)手动定义为作为域的成员的站点。在一些实施例中,跨度由域实施点表示,该域实施点被配置为引用该域旨在跨越的任何站点的站点实施点。例如,在图12中,用于域a 1270的域实施点引用站点a 1260(例如,巴黎)的站点实施点和站点b 1277(例如,伦敦)的站点实施点。因此,域a 1270是跨越站点a和b以及图12中未示出的潜在其它站点(例如,柏林)的区域(例如,欧洲)。此外,用于域b 1275的域实施点引用站点c 1265(例如,纽约)的站点实施点。因此,域b 1275跨越站点c。在这个示例中,域b 1275是也可以跨越图12中未示出的其它物理站点(例如,芝加哥、洛杉矶等)的区域(例如,北美)。可替代地,域b是仅特定于站点c的位置。对于给定域,在一些实施例中,由域的实施点引用的(一个或多个)站点实施点的组也被称为域部署图。
138.在一些实施例中,每个站点处的逻辑网络端点在逻辑上被组织成可以跨越多个站点的安全组。在一些实施例中,基于根据这些组定义的策略规则,服务机器以及在主机计算机上执行的受管理的转发元素将逻辑网络策略(诸如网络策略1273)应用于在端点的安全组之间交换的数据消息。此类安全组和网络策略通过用户客户端240(例如,由逻辑网络的管理员)在全局管理器处定义。在一些实施例中,安全组和网络策略在全局策略树1200中被表示为域的子节点,并因而继承其父域的跨度。在一些实施例中,网络策略的跨度不仅由其父域定义,而且由策略引用的站点和/或域定义。
139.例如,在图12中,域a 1270具有与安全组a 1271对应的子节点,其相应地继承站点a和b的跨度(即,由域a的域部署图定义的跨度)。此外,域b 1275具有与安全组b 1272对应
的子节点,其相应地继承站点c的跨度(即,由域b的域部署图定义的跨度)。域a 1270也有与网络策略1273对应的子节点。网络策略适用于同一域下定义的任何组(例如,组a 1271)。为了将策略应用于安全组,在一些实施例中安全组的跨度必须包括策略的跨度。
140.在一些实施例中,网络策略还可以指不在同一域中的安全组。例如,网络策略1273还引用域b 1275中的安全组b 1272,即使用于父域a 1270的域部署映射不包括域b。
141.在一些实施例中,全局管理器解析全局策略树以识别每个节点的跨度以便为每个物理站点生成策略子树。全局管理器识别全局策略树中每个节点的跨度,然后使用用于每个节点的识别出的跨度解析全局策略树以生成用于每个站点的策略子树。每个站点处的本地管理器(或管理平面应用,其可以与本地管理器分离)使用从全局管理器接收的全局期望配置的相关部分,以及本地管理器本身直接接收的任何期望配置,以管理站点处的逻辑网络。
142.图14概念性地图示了一些实施例的用于从全局策略树生成策略子树的过程1400。在一些实施例中,这个过程1400由全局管理器(例如,全局管理器的策略代理)执行。参考图15部分地描述过程1400,图15概念性地图示了基于图12中所示的全局策略树1200的用于单个站点的策略子树的示例。
143.如图所示,过程1400通过(在1405处)接收表示多站点逻辑网络的期望配置的全局策略树(例如,全局策略树1200)开始。应当注意的是,过程1400是根据确定通过整个全局策略树的节点的跨度来描述的,就像在将新站点添加到站点的联合中的情况下将执行的一样,因此全局管理器需要提供将在新站点实现的整个全局逻辑网络。在一些实施例中,当接收到创建新元素、修改现有元素或删除元素的新配置数据时,全局管理器仅对全局策略树的新的/经修改的/删除的节点执行类似过程。
144.过程1400(在1410处)选择与逻辑网络元素之一对应的全局策略树的节点之一。在一些实施例中,以迭代方式在全局树的层次结构上选择节点,从全局根1202下的顶级节点(例如,逻辑路由器、逻辑交换机和片段、域等)开始。其它实施例以不同方式遍历全局策略树。
145.该过程(在1415处)确定用于所选择的节点的跨度属性。在一些实施例中,跨度属性由全局管理器的代理服务所执行的跨度计算确定。在一些实施例中,跨度计算基于全局策略树中的节点之间的关系。例如,当两个节点之间的关系是父-子关系时,子节点可以从父节点继承其跨度。但是,在其它情况下,子节点不会继承其父节点的整个跨度。作为另一个示例,当两个节点之间的关系是被表达为从一个节点对另一个节点的引用的一个节点对另一个节点的依赖时,依赖节点的跨度将取决于被引用的节点。在一些实施例中,一些逻辑网络元素还具有例如由网络的管理员定义的预定义跨度,其存储在全局管理器数据库中。对于这些逻辑网络元素,策略代理从数据库中检索跨度属性。
146.基于跨度属性,过程1400(在1420处)将选择的节点指派给由该节点跨越的每个物理站点的策略子树。这些策略子树在一些实施例中存储在数据库610中。在一些实施例中,策略子树与和每个物理站点对应的专用持久队列相关联。
147.过程1400(在1425处)确定是否存在任何附加节点保留在全局策略树中。如果存在附加节点,那么过程返回到上面描述的1410。如果不存在附加节点,那么过程继续到1430。在1430处,该过程使用生成的策略子树来为每个物理站点生成相关的期望配置。在一些实
施例中,该过程通过识别全局期望配置的部分来从策略子树生成相关配置。然后过程1400结束。
148.图15图示了基于全局策略树1200的用于物理站点a的全局策略子树1500,并且该全局策略子树1500存储在用于站点a的本地管理器的数据库中。由于子树1500特定于站点a,因此全局根1502以下且跨度包括站点a的所有顶级节点都被保留,而省略仅与站点b和/或c相关的顶级节点。例如,用于站点b 1277的顶级节点、用于站点c 1265的顶级节点和用于域b 1275的顶级节点都被省略,它们各自的子节点也是如此。此外,对于路由器t0 1205,用于站点b 1240的区域设置服务节点也被省略。在一些实施例中,路由器t0 1205仍然跨越站点a和b,因为它的跨度属性与其在全局管理器220处的定义相关联,而不与本地管理器225相关联。
149.网络策略1273也被保存在全局策略子树1500中。这个策略在域a 1270下定义,因此在一些实施例中,它具有站点a和站点b的跨度,即使这个子树特定于站点a。此外,如上文参考图12所述,网络策略1273也参考b组1272。因此,策略的跨度还包括站点c,即使该站点位于不同的域中。对组b 1272的这种引用也保存在策略子树1500中。在一些实施例中,域节点(例如,用于域b 1275的节点)被推送到所有站点处的本地管理器,或者至少被推送到要求这些域节点下的节点(如在这种情况下的节点1272)的所有站点处的本地管理器。
150.在一些实施例中,本地管理器还存储单独的策略树,该策略树是基于直接在本地管理器处而不是从全局管理器220接收的期望配置而生成的。从网络管理员接收这个本地期望配置以定义限制到该站点的逻辑网络(即,所有逻辑网络元素的跨度仅为单个站点)。在一些实施例中,管理员可以为本地逻辑网络定义的逻辑网络元素与管理员可以为全局逻辑网络定义的逻辑网络元素的类型相同。如下所述,这允许管理员通过其访问全局和本地管理器的网络管理应用为不同的网络管理器提供相同的ui。全局策略树存储在主要全局管理器数据库中,并且全局策略树的副本也存储在辅助全局管理器数据库中。同时,在一些实施例中,本地策略树不被复制到不同的站点。
151.图16概念性地图示了用于站点a的本地策略树1600。在一些实施例中,这种本地策略树不同于从全局管理器接收的全局策略子树1500。在这个示例中,本地策略树1600的本地根1602连接用于站点a的站点节点、两个第1层逻辑路由器tic 1605和t1d 1610、以及覆盖片段1615。覆盖片段1615包括对路由器t1d 1610的引用,该路由器具有与站点a对应的区域设置服务。
152.在一些实施例中,在本地策略树1600中定义的逻辑网络元素可以引用在全局策略树1200中定义的逻辑网络元素。例如,用于路由器tic 1605的节点引用从全局管理器220定义的路由器t0 1205的节点。因此,发送到逻辑路由器tic 1605的数据消息可以被发送到用于t0路由器1205的sr(例如,用以到达外部网络)。
153.如上所述,在一些实施例中,节点还表示应用于逻辑网络元素的逻辑网络策略。逻辑网络策略包括转发策略、服务策略和安全策略,并且在一些实施例中被应用于(例如,通过支配实现逻辑转发元素的物理转发元素的行为)支配逻辑转发元素的行为。
154.在一些实施例中,策略(例如,由逻辑网络的管理员)在全局管理器处通过用户客户端定义。在一些实施例中,策略是在站点处基于流属性的集合对数据消息流强制实施的一个或多个服务规则。在一些实施例中,全局管理器将服务规则分发到要强制实施策略的
站点(即,策略的跨度)处的本地管理器。在一些实施例中,通过参考跨越一个或多个站点的逻辑网络端点组(例如,在一些实施例中在全局管理器处定义的安全组)来定义策略。在一些实施例中,服务规则通过使用在定义组时在全局管理器处指派的组标识符来引用这些组。这些组的定义被分发到被策略跨越的站点。
155.通过全局管理器,管理员可以创建特定于站点的逻辑网络元素和策略,它们是全局逻辑网络的一部分(并且因此可以稍后扩展到其它站点)。在这种情况下,逻辑网络元素配置数据将作为全局策略树的一部分被存储并基于到该站点的跨越被推送到该站点的本地管理器。此外,逻辑网络元素配置数据在全局管理器处被创建时被备份到备用全局管理器。
156.另一方面,如果直接在本地管理器处被创建为本地逻辑网络的一部分,那么逻辑网络元素配置数据和策略将仅是存储在本地管理器处的本地策略树的一部分。虽然这个本地管理器在一些实施例中是集群,但是如果站点(例如,由于自然灾害)出现故障,那么本地逻辑网络配置数据不会在另一个站点处备份。但是,仅有权访问该站点的本地管理器(即,未被授予对全局管理器的访问权限)的本地网络管理员可以使用网络管理应用直接配置该站点处的逻辑网络。
157.在一些情况下,可以在全局定义的逻辑网络配置与本地定义的逻辑网络配置之间发生冲突。例如,在网络配置上下文中,用于本地逻辑路由器的ip地址可能与为跨越逻辑网络的逻辑路由器配置的ip地址冲突。在安全上下文中,本地管理员可以基于第一安全组来配置第一防火墙规则,而全局管理员可以基于第二安全组来配置第二防火墙规则。如果逻辑网络端点dcn属于这两个安全组,那么这两个防火墙规则会发生冲突。一些实施例一般解决安全冲突以有利于全局定义的策略,但解决联网冲突以利于本地定义的配置(其中本地管理器将全局配置的这些覆盖报告给全局管理器以进行通知和/或验证)。
158.图17概念性地图示了一些实施例的过程1700,用于处置直接在本地管理器处从用户客户端(而不是从全局管理器)接收的cud事件。例如,当物理站点的本地管理器(其可以与全局联合逻辑网络的管理员相同或可以不同)修改在本地站点处实现的逻辑网络的期望配置时(例如,通过为其跨度包括本地站点的逻辑网络元素指定一系列创建、更新或删除事件),会发生这个场景。
159.过程1700(在1705处)通过直接从用户客户端接收cud事件开始。例如,如图8中所示,从用户客户端240接收描述cud事件的数据,并且在一些实施例中使用一系列事务直接存储在数据库610中,这些事务通过来自用户客户端的一系列rest api调用发起。在一些实施例中,用户客户端可以不位于相同的物理站点,因此由本地管理器230通过广域网242(例如,互联网)接收cud事件。如上所述,在一些实施例中,api调用是经由全局管理器处的代理接收的。在一些实施例中,这些api调用由本地管理器的api处理器模块接收和处理,然后该api处理器模块将接收到的数据提供给执行本地管理器的核心功能的本地管理器服务。
160.过程1700然后(在1710处)确定(一个或多个)cud事件是否有效。验证基于在将cud事件应用于物理站点处的逻辑网络配置时是否存在任何错误或不一致。在一些实施例中,验证由本地管理器服务或者在直接在从api处理器接收时或者在从本地管理器的数据库检索事件之后执行。如果cud事件无效,那么过程1700(在1713处)生成未能验证cud事件的通知。在一些实施例中,通知是(例如,由网络的管理员)提供给用户客户端以供干预的通知事
件。然后,过程1700结束。
161.如果cud事件有效,那么过程1700(在1715处)确定该事件是否是本地事件。换句话说,本地管理器确定cud事件是否仅引用在本地站点处定义的逻辑网络元素。如果通过本地管理器定义这些元素,那么这些元素不会超出物理站点,并且全局管理器不知道这些元素。如果cud事件是本地事件,那么过程1700继续到1735,这将在下面描述。
162.如果cud事件不是本地事件(即,事件引用在全局管理器处定义的逻辑网络元素),那么过程1700(在1720处)确定该事件是否覆盖逻辑网络元素的全局定义的期望配置。在一些实施例中,通过将优先级规则的集合应用于cud事件以确定是否允许cud事件覆盖全局定义的期望配置来做出这个确定。例如,一些实施例仅允许本地cud事件对网络相关配置(例如,消息转发规则和策略)或配置简档(定时器等,其受本地站点的参数(诸如时延)影响)的期望配置进行覆盖。在此类情况下,本地cud事件将具有优先级。
163.作为另一个示例,一些实施例防止针对安全相关配置的本地cud事件的期望配置的覆盖。在此类情况下,全局定义的期望配置将具有优先权。此外,在一些情况下,该事件是与紧急情况相关的事件,它只能由本地管理器识别并且因此覆盖任何相关的全局配置。如果事件不具有覆盖全局配置的优先级(例如,根据优先级规则),那么过程继续到上面定义的1717。
164.如果cud事件确实具有覆盖全局定义的期望配置的优先级,那么过程1700(在1725处)生成覆盖事件的主要全局管理器的通知。在一些实施例中,通知是在ar模块的出口队列(未示出)中排队以经由相同的异步通道(例如,图8中所示的点划线)在全局管理器处发送回ar模块的通知事件。在其它实施例中,通知事件是经由带外通知通道发送的。在一些实施例中,作为本地管理器服务810的核心功能的一部分,在通道上检索和发送出口队列中的通知事件。
165.接下来,过程1700(在1730处)创建逻辑网络元素的本地副本,其配置将被cud事件覆盖。在一些实施例中,来自全局管理器的原始逻辑网络元素在本地管理器的数据库中保留为只读对象,而本地副本(也称为影子对象)是cud事件的目标,而不是原始副本。
166.过程1700然后(在1735处)将cud事件应用于物理站点处的逻辑网络的本地期望配置。如果事件是覆盖,那么该过程将cud事件应用于对象的影子副本,而不是从全局管理器接收的原始对象。在一些实施例中,逻辑网络的期望配置被表达为策略树,这在上面更详细地描述。在图8的示例中,逻辑网络的期望配置(例如,其跨度包括物理站点210的逻辑网络元素的配置)本地存储在数据库805中。cud事件应用于本地期望配置。
167.例如,如果cud事件是创建事件,那么在存储在数据库中的本地期望配置内创建由事件定义的逻辑网络元素。如果经验证的cud事件是更新事件,那么事件所引用的逻辑网络元素的期望配置在数据库中存储的本地期望配置内更新。如果经验证的cud事件是删除事件,那么在存储在数据库中的本地期望配置内删除该事件所引用的逻辑网络元素。最后,过程1700(在1740处)生成配置数据并将其分发到逻辑网络的控制平面(例如,每个站点处的中央控制器或控制器集群)。然后,过程1700结束。
168.如上所述,为了使(一个或多个)网络管理员能够在全局管理器和/或本地管理器处为逻辑网络提供期望的配置,一些实施例提供网络管理客户端应用,管理员可以通过该网络管理客户端应用来访问网络管理器。这单个网络管理应用提供用于访问全局管理器和
任何本地管理器的ui,以便创建和/或修改逻辑网络配置。该应用提供用于访问全局管理器以配置跨越物理站点的组的全局逻辑网络的第一ui,以及用于访问每个物理站点处的每个本地管理器的附加ui。用于访问特定站点处的本地管理器的ui允许管理员(i)修改在特定站点处实现的全局逻辑网络和(ii)在站点处配置本地逻辑网络(其可以完全独立于全局逻辑网络或连接到全局逻辑网络)。
169.在一些实施例中,逻辑网络组件对于全局逻辑网络和本地逻辑网络是相同的,因此用于全局管理器和本地管理器的ui看起来是具有相同ui项和显示区域的单个玻璃窗格。此外,在一些实施例中,在ui内提供项以使用户能够在用于不同网络管理器的ui之间切换。
170.图18图示了用于在全局管理器处查看和修改全局逻辑网络配置的gui页面1800的示例。在一些实施例中,用于全局管理器(和用于本地管理器)的gui提供用于配置逻辑转发元素和用于配置网络服务的区段。gui页面1800是用于全局管理器的主要gui页面,其提供导航区域1805和网络概览区段1810、以及用于每种可用类型的逻辑转发元素和/或服务的显示区域。
171.在一些实施例中,导航区域1805包括按逻辑网络构造的类型分组的可选择的项。如图所示,这个导航区域1805包括“连接性”区段,该“连接性”区段具有不同类型的逻辑转发元素(例如,逻辑交换机(片段)、用于将逻辑网络连接到外部网络的t0逻辑路由器、以及用于连接逻辑交换机而不需要t0逻辑路由器进行处理并且用于为连接到这些逻辑交换机的逻辑网络端点dcn提供有状态服务的t1逻辑路由器)。在一些实施例中,这些项中的每一个都是可选择的,以使应用在全局管理器处访问关于这些不同类型的逻辑转发元素的配置信息。
172.此外,导航区域1805包括“网络服务”区段,其可以包括关于各种不同类型的网络服务的信息。这些服务可以被配置为在边缘设备处执行(例如,作为sr处理的一部分)、在主机计算机处作为分布式逻辑转发元素处理的一部分执行、由站点处的主机计算机上的服务dcn执行、或者由不同网络中的第三方服务机器执行。在这种情况下,仅配置nat服务,但是(如下所示),一些实施例可以包括vpn服务、负载平衡服务、转发策略(诸如防火墙服务或基于策略的路由等)。导航区域1805还包括“ip管理”区段,其具有与ip地址管理相关的可选择的项(例如,dns、dhcp、ip地址池等),以及通用“设置”区段,其具有用于修改设置的可选择的项(诸如图示的联网设置)。
173.如所提及的,gui页面1800还包括网络概览区段1810,其为全局逻辑网络配置提供概览统计信息。如图所示,这个网络概览区段1810指示t0网关(即,t0逻辑路由器)、t1网关(即,t1逻辑路由器)和片段(即,逻辑交换机)的数量。在一些实施例中,这个区段1810还指示用于所配置的网络服务(例如,为逻辑网络配置的nat规则的数量)和ip地址管理(例如,配置的dns区域和dhcp服务器的数量)的统计信息。
174.全局管理器主要ui页面1800中的网络概览区段1810还包括位置选择器项1815,其使得用户能够选择应用是否示出用于站点的整个联合(即,整个逻辑网络)或仅用于其中一个站点的网络概览统计信息。图19图示了这个位置选择器项1815的选择,它允许用户从“所有位置”或逻辑网络跨越的各个物理站点之一(伦敦、纽约或巴黎)中进行选择。图20图示了当已通过位置选择器项1815选择了这个选项时,相同的主要ui页面1800仅示出用于纽约站点的统计信息。具体而言,纽约站点的t1网关、片段和dhcp服务器的数量已经减少。
175.返回到图18,用于全局管理器的主要gui页面1800还包括为全局逻辑网络配置的每种类型的逻辑转发元素的可选择的显示区域。在这种情况下,显示区域包括t0网关显示区域1820、t1网关显示区域1825和片段显示区域1830。在一些实施例中,这些相应显示区域中的每一个提供关于为逻辑网络配置的相应类型的逻辑转发元素的附加细节,并且可以提供这些细节中的一些的可视化。例如,t0网关显示区域1820指示有多少t0网关当前正在运行bgp(例如,用以与外部网络交换路由)并提供关于在网关上使用bgp的附加信息。t1网关显示区域1825提供关于每个t1网关的t1逻辑路由器数量的统计信息,并且片段显示区域1830提供vlan片段(例如,用于将t0sr连接到外部网络)与覆盖片段(例如,可以在站点之间延伸的逻辑交换机)之间的分解(breakdown)。虽然在这个图中未示出,但是主要ui页面1800还可以包括具有关于不同类型的已配置网络服务(例如,nat、负载平衡、防火墙规则等)的信息的可选择的显示区域。在一些实施例中,这些项中的每一个都是可选择的,以使应用在全局管理器处访问关于这些不同类型的逻辑转发元素和/或网络服务的配置信息。
176.最后,gui页面1800包括网络管理器选择器项1835。在一些实施例中,这允许用户通过相同的网络管理应用客户端快速访问其它网络管理器(例如,任何本地管理器)并被呈现等效(相似)gui页面。图21图示了这个网络管理器选择器项1835的选择。如图所示,当被选择时,网络管理器选择器项1835显示下拉菜单2100,示出全局管理器(其位于伦敦,并且当前被选择)以及用于伦敦、纽约和巴黎的每个本地管理器(还指示他们的ip地址,以及他们位于这些站点)。在一些实施例中,这个下拉菜单2100仅在用户针对所有本地管理器(和全局管理器)被认证时才可用。如果仅允许用户访问例如本地管理器之一,那么仅从中检索到的信息显示在gui中,并且选择器项1835不能被用于访问其它网络管理器。
177.当用户从下拉菜单中选择本地管理器之一时,应用客户端访问该本地管理器以检索推送到本地管理器的期望状态配置并显示用于本地管理器的主要gui页面。图22图示了用于伦敦本地管理器的主要gui页面2200。如图所示,gui页面2200以与全局管理器gui页面1800相同的方式布局(即,gui通过客户端应用作为单个玻璃窗格出现)。
178.gui页面2200包括导航区域2205、网络概览区段2210以及用于每种可用类型的逻辑转发元素和/或服务的显示区域。在一些实施例中,与全局管理器gui页面1800中的导航区域1805一样,导航区域2205包括按逻辑网络构造的类型分组的可选择的项。如图所示,这个导航区域2205包括具有不同类型的逻辑转发元素(例如,片段、t0逻辑路由器和t1逻辑路由器)的“连接性”区段、“网络服务”区段、“ip管理”区段、和“设置”区段。与用于全局管理器的导航区域类似,这些项在一些实施例中是可选择的,以导航到特定于所选择的逻辑网络构造的类型的gui页面,在这种情况下,用于提供特定于当前本地站点(伦敦)的信息。
179.网络概览区段2210以与全局管理器gui页面1800中的网络概览区段2210提供全局逻辑网络配置的统计信息相同的方式提供本地逻辑网络配置的概览统计信息。在这种情况下,管理员已提供输入以在网络处启用多种类型的网络服务(vpn、nat、负载平衡器、转发策略),但尚未创建此类服务、规则、策略等。类似地,全局逻辑转发元素(t0网关、t1网关等)尚未延伸到伦敦站点,因此统计信息也还没有示出这些。还应当注意的是,与全局管理器页面不同,网络概览区段2210不包括位置选择器项,因为只有关于特定站点的信息才可通过用于该特定站点的本地管理器获得。
180.此外,用于不同网络管理器的gui为相同类型的逻辑转发元素和逻辑网络服务(当
这些服务被配置在不同的逻辑网络中时)提供相同的显示区域。因此,gui页面2200包括t0网关显示区域2215、t1网关显示区域2220和片段显示区域2225。在一些情况下,本地管理器gui页面2200提供与全局管理器gui页面1800相同的可视化和信息(例如,用于t0逻辑路由器的bgp信息、每个t0逻辑网关的t1网关的数量)。另一方面,对于片段,gui页面2200提供关于连接到t1网关和/或vm的片段的信息(例如,对于覆盖片段),而不提供关于覆盖片段与vlan片段之间的分解的信息。
181.返回到图18,如果用户在导航区域1805中选择特定类型的逻辑转发元素(或逻辑网络服务)或用于特定类型的逻辑转发元素的可选择的显示区域,那么客户端应用从全局管理器请求关于所选择的类型的逻辑网络元素的信息并显示特定于该种类型的逻辑网络元素的gui页面。
182.图23图示了用于全局逻辑网络中的t0网关的gui页面2300。如图所示,这个gui页面2300包括导航区域1805以及t0网关显示区段2305,其提供关于为逻辑网络配置的t0逻辑路由器的更多详细信息。在一些实施例中,这个区段2305列出所有t0逻辑路由器,提供它们的管理员定义的名称、高可用性配置模式(例如,活动-活动或活动-备用)、链接到t0逻辑路由器的t1逻辑路由器的数量、链接到t0逻辑路由器的片段(例如,覆盖和/或vlan片段)的数量、状态、以及已经引发的任何警报(例如,由于特定站点处设置t0 sr的故障)。在一些实施例中,仅在用户请求时才提供该状态,在这种情况下,全局管理器识别由t0路由器跨越的站点并向这些站点处的本地管理器发送请求以确定是否已在这些站点处正确实现期望状态。
183.在这种情况下,配置了一个t0逻辑路由器,并且用户已经选择查看关于逻辑路由器的附加信息。如图所示,在一些实施例中,这个附加信息与上述策略树中所示的期望状态配置的各个方面对应,诸如位置(指示在各个站点中实现t0 sr的边缘集群)、接口、路由信息(例如,静态路由、ip前缀列表、路由图等)、bgp信息(例如,用于每个sr的bgp设置)和路由重新分发设置(例如,如何将在一个sr处学习到的路由重新分发到其它sr)。在一些实施例中,这些子区段中的每一个都是可选择的,以提供关于t0网关的附加信息。在这个图中,已经选择了位置项以提供关于每个不同站点(伦敦、纽约和巴黎)处的sr的附加信息。具体而言,这个显示指示在每个站点中将sr指派到哪个边缘集群,以及用于sr的模式(因为ha模式是活动-活动,所以在这种情况下所有sr都是主要的)。在一些实施例中,其它项也可扩展以提供附加信息。
184.图24图示了在站点中的特定站点(巴黎)处的t0网关的gui页面2400。可以经由站点的本地管理器的主要页面中的导航区域或经由用于不同管理器(例如,全局管理器或不同的本地管理器)处的t0网关的gui页面上的网络管理器选择器项来到达这个gui页面。正如用于本地管理器的主要gui页面2200镜像于用于全局管理器的主要gui页面1800一样,用于本地管理器的t0网关gui页面2400镜像于用于全局管理器的t0网关gui页面2300。因此,gui页面2400包括导航区域2405以及t0网关显示区段2410,其提供关于为逻辑网络配置并跨越特定站点的t0逻辑路由器的更详细信息。这些可以包括跨越多个站点并经由全局管理器配置的t0逻辑路由器,以及通过特定站点的本地管理器配置的t0逻辑路由器。在一些实施例中,与为全局管理器和为本地管理器提供相似或相同的gui一致,t0网关显示区段2410的区段与全局管理器gui页面2300中的那些区段相似。但是,代替提供关于多个位置的信息,显示区段2410仅在t0 sr被指派到的本地管理器处指示边缘集群。
185.如前面所提到的,一些实施例的网络控制器在每个站点处操作,除其它功能外,尤其将来自站点处的本地管理器的配置数据提供给站点的计算设备。在一些实施例中,网络控制器的集群(也称为中央控制平面)在每个站点处操作。在一些实施例中,用于由逻辑网络跨越的一组站点的网络控制器以全网状连接。
186.图25概念性地图示了在一些实施例中跨三个站点(例如,数据中心)2505-2515的网络控制器的全网。如图所示,站点2505-2515中的每一个包括三个控制器的集群,每个控制器与集群中的其它控制器通信。即,在第一站点2505处,三个控制器2516-2518彼此通信;在第二站点2510处,三个控制器2521-2523彼此通信;在第三站点2515处,三个控制器2526-2528彼此通信。
187.站点2505-2515中的每一个还包括从控制器2516-2528接收配置数据的主机计算机(和边缘设备,图中未示出)。在一些实施例中,每个计算设备(例如,每个主机计算机和/或边缘设备)具有主网络控制器,该控制器负责向该计算设备提供配置数据,以及从该计算设备接收任何运行时状态改变(例如,在计算设备上创建和/或删除逻辑网络端点dcn)。例如,在第一站点2505中,主机计算机2531具有控制器2516作为其主控制器,并且主机计算机2532具有控制器2517作为其主控制器。在第二站点2510中,所示的主机计算机2533和2534都具有控制器2522作为它们的主控制器。在第三站点2515中,主机计算机2535具有控制器2526作为其主控制器,并且主机计算机2536具有控制器2528作为其主控制器。
188.此外,每个站点处的每个控制器与每个其它站点处的每个控制器通信。如图所示,第一站点2505处的控制器2516-2518中的每一个与第二站点2510处的控制器2521-2523中的每一个和第三站点2515处的控制器2526-2528中的每一个都有连接。类似地,第二站点2510处的控制器2521-2523中的每一个具有到第三站点2515处的控制器2526-2528中的每一个的连接。在一些实施例中,这些连接中的每一个都是双向连接。但是,如下所述,并非所有连接都在所有情况下都使用(并且一些连接可以是单向的以提供逻辑网络状态)。
189.图26概念性地图示了一些实施例的网络控制器2600的体系架构。在一些实施例中,网络控制器是在计算设备上操作的应用(例如,在vm或容器内,或在裸机操作系统上执行)。网络控制器2600包括站点主控权(mastership)模块2605、站点同步模块2610、跨度计算器2615、mac:tep记录生成器2620和动态组转化器2625。网络控制器还访问用于存储从远程站点处的控制器接收的数据的分布式数据库2630以及用于存储本地站点的数据记录的存储装置2632(例如,另一个分布式数据库)。在一些实施例中,网络控制器2600具有用于来自每个远程站点的数据的单独的分布式数据库(或单独的数据库分区),该远程站点的控制器向网络控制器2600(或本地集群中的其它控制器)提供数据。类似于上面参考图7描述的分布式数据库,在一些实施例中,分布式数据库2630和/或本地站点记录存储装置2632存储在网络控制器集群的成员在其上操作的每个计算设备上。因此,集群中的每个网络控制器都可以访问整个分布式数据库2630和整个本地站点记录的集合2632。
190.在一些实施例中,用于每个站点处的控制器集群的站点管理器2635与其它站点(例如,与其它站点的站点管理器)交换证书和任何其它所需的认证信息。这个站点管理器2635然后向其站点处的网络控制器提供信息(例如,ip地址、证书等),使得该站点处的每个网络控制器与每个其它站点处的每个网络控制器具有连接性。
191.在一些实施例中,只要将新站点添加到逻辑网络,站点主控权模块2605就从站点
管理器2635接收这个信息。站点管理器搜集所需的认证信息并将这个信息提供给站点主控权模块2605。在一些实施例中,来自每个站点处的集群的一个控制器被指定用于向每个其它站点发送逻辑网络状态数据,并且来自每个站点处的集群的一个控制器被指定用于从每个其它站点接收逻辑网络状态数据。为了做出选择,一些实施例的站点主控权模块2605(例如,通过以集群中可用控制器的数量为模计算散列值)使用基于槽的分片机制。在一些实施例中,分片机制是确定性的(例如,基于控制器和/或站点标识符),并且集群中的每个控制器处的站点主控权模块2605执行相同的计算以便为了与每个其它站点的通信而确定发送者控制器和接收者控制器。下面通过参考图27进一步详细描述这个过程。作为基于站点的分片的替代方案或作为其补充,一些实施例基于逻辑网络状态对控制器集群进行分片(例如,使用一个控制器将安全组数据发送到特定远程站点并且使用另一个控制器将逻辑网络到物理网络映射数据发送到特定远程站点)。
192.当站点主控权模块2605确定网络控制器2600是用于特定其它站点的发送者控制器时,站点同步模块2610负责与那个特定其它站点通信以经由远程站点接口2650向特定站点提供逻辑网络状态数据。如下所述,在一些实施例中,mac:tep记录生成器2620和动态组转化器2625检索本地站点记录2632并生成要提供给远程站点的数据(例如,位于本地站点处的mac地址的列表用于跨本地站点和特定远程站点的逻辑交换机、用于站点处属于各种安全组的dcn的ip和mac地址的列表)。然后将数据的这些集合提供给站点同步模块2610以提供给远程站点。
193.类似地,当站点主控权模块2605确定网络控制器2600是用于特定远程站点的接收者控制器时,站点同步模块2610负责与该特定远程站点通信以经由远程站点接口2650从远程站点接收逻辑网络状态数据。在一些实施例中,站点同步模块2610将从其它站点处的控制器接收的逻辑网络状态数据存储在分布式数据库2630中(例如,在用于该特定远程站点的特定数据库或数据库分区中)。
194.在一些实施例中,网络控制器2600经由本地管理器接口2640从用于站点的本地管理器接收逻辑网络配置数据,并将这个数据存储在分布式数据库2630中。跨度计算器2615从本地管理器接口2640(或从用于本地站点的集群中的另一个控制器(在该另一个控制器从本地管理器接收数据并将数据存储在另一个共享数据库中的情况下))接收这个网络配置数据,并且确定数据应当分发到的计算设备。在全局管理器级别,逻辑网络元素的跨度指定用于逻辑网络元素的配置数据被分发到的物理站点。在用于特定站点的控制器级别,跨度指定该特定站点中要求用于逻辑网络元素的配置数据的计算设备(例如,边缘设备和/或主机计算机)。跨度计算器2615识别哪个逻辑网络配置数据去往哪个计算设备(网络控制器2600是该计算设备的主控制器),并且经由计算设备接口2645将这个数据发送到这些计算设备(例如,发送到设备上的本地控制器)。
195.除了从本地管理器向其特定站点处的计算设备(即,主机计算机和边缘设备)提供配置数据之外,用于特定站点的网络控制器还生成某些逻辑网络状态数据并向(i)特定站点处的计算设备和(ii)其它站点处的网络控制器提供这个生成的逻辑网络状态数据。在一些实施例中,网络控制器2600经由计算设备接口2645从其站点处的计算设备接收数据,并将这个数据存储在本地站点记录存储装置2632中。这个信息包括关于在特定计算设备上执行的逻辑网络端点dcn的信息(例如,mac和ip地址、dcn标签等)以及关于计算设备本身的信
息(例如,隧道端点(tep)ip地址)。
196.在一些实施例中,mac:tep记录生成器2620基于存储在本地站点记录2632中的数据和存储在分布式数据库2630中的来自(一个或多个)远程站点的数据来生成逻辑网络地址到物理网络地址(物理位置)映射数据。这些记录可以包括用于本地站点处的计算设备的记录以及要提供给远程站点的记录。在一些实施例中,动态组转化器2625生成安全组信息,诸如属于安全组的逻辑网络端点dcn的网络地址。
197.动态组转化器2625接收来自本地管理器的安全组定义和来自本地站点记录2632的端点dcn信息,并且组合这个信息以生成用于不同安全组的网络地址(例如,mac和ip地址)的列表。在一些实施例中,动态组转化器2625还将这个数据与从远程站点接收并存储在分布式数据库2630中的安全组的网络地址的列表进行组合。这些逻辑网络状态生成和分发操作在下面更详细地描述。
198.跨度计算器2615从mac:tep记录生成器2620和/或动态组转化器2625接收生成的逻辑网络状态数据,并确定应当向本地站点处的哪些计算设备提供这个逻辑网络状态数据(例如,基于逻辑网络状态数据所属的逻辑交换机和/或安全组)。
199.为了与其它站点处的控制器交换逻辑网络状态数据,如所提到的,网络控制器上的站点主控权模块2605识别该网络控制器是否是用于特定其它站点的发送和/或接收主控器。图27概念性地图示了一些实施例的用于建立与另一个站点的逻辑网络状态数据交换的过程2700。在一些实施例中,过程2700在另一个站点加入与由特定站点的逻辑网络跨越的站点的相同联合时由特定站点处的每个控制器执行。这个过程2700也将由新站点处的控制器执行,因为虽然逻辑网络状态数据交换是双向的,但在一些实施例中,用于每个方向的主控权是单独处置的。
200.如图所示,过程2700(在2705处)通过接收用于新站点处的控制器的通信信息开始。在一些实施例中,特定站点处的站点管理器与新站点交换证书和任何其它所需的认证信息,并向其站点处的网络控制器提供这个信息(例如,ip地址、证书等),以便网络控制器与新站点处的每个网络控制器都有连接性。
201.过程2700然后(在2710处)执行发送者主控权计算。在一些实施例中,控制器使用基于槽的分片机制,使得(i)集群中的不同控制器将成为不同的其它站点的主发送器,并且(ii)集群中的每个控制器将执行相同的计算以确定主控器。例如,一些实施例基于关于两个控制器集群(即,用于特定站点和新站点的控制器)的信息(诸如使用控制器标识符、控制器ip地址等)来计算散列值。虽然这个过程基于站点对用于发送(和接收)逻辑网络状态数据的责任进行分片,但是一些实施例代替地基于逻辑网络状态对这个责任进行分片。例如,一些实施例具有集群中的不同控制器,它们负责发送和/或接收用于不同安全组的转化后的网络地址,或用于不同逻辑交换机的逻辑网络到物理网络映射记录。
202.接下来,过程2700(在2715处)确定它(即,执行过程2700的控制器)是否被指定为用于新站点的发送者(即,主控权计算是否已将其自身指定为用于向新站点发送逻辑网络状态数据的主控器)。如果不是,那么过程2700结束,因为集群中的不同网络控制器是主控器(并且因此将执行过程2700的剩余操作)。
203.如果该控制器是主控器,那么过程(在2720处)选择新站点处的控制器,利用该控制器执行主控权检查。在一些实施例中,执行过程2700的控制器随机地选择另一个站点处
的控制器。在其它实施例中,执行过程2700的控制器使用循环选择机制来选择其它站点处的控制器。还有其它实施例可以使用其它选择机制。
204.过程2700然后(在2725处)向所选择的控制器发送主控权检查消息。在一些实施例中,这个主控权检查消息(i)指定发送该消息的控制器被指派为用于向新站点发送逻辑网络状态数据的主控器,并且(ii)请求向其发送该消息的控制器确定是否它被指派为用于从发送消息的站点接收逻辑网络状态数据的主控器。
205.这使得新站点处接收到主控权检查消息的控制器(接收方控制器)执行主控权计算(用于接收而不是用于发送)。基于这个主控权计算,接收方控制器向发送控制器发送返回消息。照此,过程2700(在2730处)从所选择的(接收方)控制器接收这个返回消息。在一些实施例中,这个返回消息或者(i)指示所选择的控制器被指派为相对于执行过程2700的现有站点的新站点的接收主控器或(ii)指示所选择的控制器未被指派为接收主控器,但指定其集群中的哪个控制器被指派为接收主控器。
206.过程2700(在2735处)基于这个返回消息确定所选择的控制器节点是否是用于新站点的接收主控器。如果先前选择的(发送返回消息的)控制器不是指派的接收主控器,那么过程(在2740处)选择返回消息中指定的控制器节点作为接收主控器以进行主控权检查,并返回到2725以发送与这个新选择的控制器节点的主控权检查消息。
207.新站点处的这个新选择的控制器将接收主控权检查消息,执行相同的确定性计算以确定接收主控权,并且可能将其自身识别为接收主控器。新的接收方控制器向执行过程2700的发送控制器发送指示它是接收主控器的返回消息。一旦识别了接收主控器(无论是在第一次尝试还是后续尝试),过程2700(在2745处)就开始通过识别用于新站点的状态数据并将这个数据传输到识别出的接收主控器来同步逻辑网络状态数据。然后,过程2700结束。
208.在每个站点执行的这个过程(和对应的接收主控权检查)的结果是,来自每个站点处的集群的一个控制器被指派用于向每个其它站点发送逻辑网络状态数据,并且来自每个站点处的集群的一个控制器被指派用于接收来自每个其它站点的逻辑网络状态数据。即,如果有三个站点,那么第一站点分别指派(i)用于向第二站点发送数据的控制器、(ii)用于向第三站点发送数据的控制器、(iii)用于从第二站点接收数据的控制器、以及(iv)用于从第三站点接收数据的控制器。这些单独指派的控制器中的每一个可以是集群中的不同控制器,或者可以存在重叠。例如,可以指派不同的控制器将状态数据发送到不同的站点,并且对于同一个远程站点,可以指派不同的控制器来将状态数据发送到远程站点并从远程站点接收状态数据。
209.图28概念性地图示了这种示例,该示例示出了三个站点2805-2815处的指派的发送者和接收者主控器之间的逻辑网络状态数据的流。如图所示,每个站点处的控制器集群包括三个控制器。第一站点2805包括控制器2820-2830,第二站点2810包括控制器2835-2845,并且第三站点2815包括控制器2850-2860。
210.在这个示例中,第一站点处的控制器已将第一控制器2820指派为用于将逻辑网络状态数据发送到第二站点2810的主控器,并将第三控制器2830指派为用于将逻辑网络状态数据发送到第三站点2815的主控器。此外,第二控制器2825被指派为用于从第二站点2810接收逻辑网络状态数据的主控器,并且第三控制器2830被指派为用于从第三站点2815接收
逻辑网络状态数据的主控器。因此,在第一站点处,不同的控制器是相对于第二站点2810的发送者和接收者主控器,但是同一个控制器2830是相对于第三站点2815的发送者和接收者主控器。
211.第二站点处的控制器已将第一控制器2835指派为用于将逻辑网络状态数据发送到第一站点2805的主控器,并且将第三控制器2845指派为用于将逻辑网络状态数据发送到第三站点2815的主控器。此外,第一控制器2835被指派为用于从第一站点2805接收逻辑网络状态数据的主控器,并且第二控制器2840被指派为用于从第三站点2815接收逻辑网络状态数据的主控器。同一个控制器2835是关于第一站点2805的发送者和接收者主控器,但是这些逻辑网络数据交换是在第一站点处与两个不同的控制器进行的。
212.第三站点处的控制器已将第二控制器2855指派为用于将逻辑网络状态数据发送到第一站点2805的主控器以及指派为用于将逻辑网络状态数据发送到第二站点2810的主控器。此外,这个第二控制器2855被指派为用于从第一站点2805接收逻辑网络状态数据的主控器,而第一控制器2850被指派为用于从第二站点2810接收逻辑网络状态数据的主控器。因此,第一站点2805和第三站点2815之间的逻辑网络数据交换是双向的,因为相同的控制器2830和2855都是两个站点处的发送者和接收者主控器。
213.在一些实施例中,逻辑网络状态数据在一些实施例中包括逻辑网络地址到物理网络地址(物理位置)映射数据以及安全组信息(例如,属于安全组的逻辑网络端点dcn的网络地址)。在一些实施例中,逻辑网络到物理网络映射包括逻辑网络层2(例如,mac)地址到物理网络隧道端点层3(例如,ip)地址的映射,在该地址可以到达这些逻辑网络地址。
214.图29概念性地图示了这个逻辑网络到物理网络映射数据在站点内和站点之间的生成和传输。在这个示例中,逻辑交换机在两个站点2905和2910之间延伸,中央控制平面(ccp)2915位于第一站点2905处,并且ccp 2920位于第二站点2910处。在这个图中,每个站点处的ccp表示该站点处的整个控制器集群,包括分布式数据库和本地站点记录。即,这个图没有示出控制器集群的不同节点之间的任何(潜在的)内部数据事务,或者从本地站点处的计算设备接收的信息与从远程站点接收的信息之间的数据分离。
215.第一站点2905还包括两个主机计算机2925和2930,每个主机计算机托管附接到延伸的逻辑交换机(分别具有逻辑mac地址a和b)的vm。第一主机计算机2925具有ip地址x的虚拟隧道端点(vtep)接口,并且第二主机计算机2930具有ip地址y的vtep接口,用于第一站点2905内的封装的数据消息。此外,第一站点包括为延伸的逻辑交换机实现逻辑网络网关的边缘设备2935。逻辑网络网关被用于根据延伸的逻辑交换机来处理站点间传输的数据消息。边缘设备2935具有用于向站点2905内的主机计算机发送数据消息和从其接收数据消息的ip地址z的vtep接口以及用于向为其它站点处的延伸的逻辑交换机实现逻辑网络网关的边缘设备发送数据消息和从其接收数据消息的ip地址q的远程隧道端点(rtep)接口。逻辑网络网关以及vtep和rtep ip地址在站点内和站点间数据流量中的使用在与代理案卷no.g548.01同时提交的标题为“architecture for stretching logical switches between multiple datacenters”的美国专利申请**中进行了更详细的描述,该专利申请通过引用并入本文。
216.第二站点2910还包括托管vm的主机计算机2940。这个vm不附接到同一个延伸的逻辑交换机,而是附接到不同的逻辑交换机,使得例如主机计算机2940上的vm可以经由t1逻
辑路由器与附接到延伸的逻辑交换机的vm进行通信。照此,延伸的逻辑交换机的跨度包括主机计算机2940(即,主机计算机接收关于延伸的逻辑交换机的逻辑网络状态数据)。此外,第二站点包括为延伸的逻辑交换机实现逻辑网络网关的边缘设备2945。这个边缘设备2945具有用于向站点2910内的主机计算机发送数据消息和从其接收数据消息的ip地址w的vtep接口以及用于向为其它站点(例如,边缘设备2935)处的延伸的逻辑交换机实现逻辑网络网关的边缘设备发送数据消息和从其接收数据消息的ip地址r的rtep接口。
217.在一些实施例中,当在主机计算机上创建逻辑网络端点dcn(例如,主机计算机2925和2930上的vm)时,该主机计算机将新的dcn连同关于dcn的数据一起报告给集群的网络控制器之一。这个数据包括dcn的mac地址,该mac地址映射到主机计算机的虚拟隧道端点(vtep),以及与该mac地址相关联的逻辑交换机。如图所示,主机计算机2925向ccp 2915报告逻辑mac地址a到vtep ip地址x的映射(即,延伸的逻辑交换机上的mac地址a位于vtep ip地址x处)并且主机计算机2930向ccp 2915报告逻辑mac地址b到vtep ip地址y的映射(即,延伸的逻辑交换机上的mac地址b位于vtep ip地址y处)。
218.控制器集群将这个逻辑mac地址到vtep ip地址映射(在逻辑交换机的上下文中)提供给同一站点中实现逻辑交换机的任何其它主机计算机,以便这些其它主机计算机上的物理转发元素可以通过站点的物理网络到逻辑网络dcn传输逻辑网络数据消息。因此,第一站点2905处的ccp 2915将mac b到vtep y的映射提供给主机计算机2925,并将mac a到vtep x的映射提供给主机计算机2930(这些数据集都还包括逻辑交换机上下文)。站点内的逻辑网络数据消息经由用于源逻辑网络端点dcn的主机计算机上的vtep与用于目的地逻辑网络端点dcn的主机计算机上的vtep之间的隧道被发送,因此这允许主机计算机2925和2930处的mfe通过站点的网络在两个vm之间彼此传输数据消息。此外,ccp 2915将这两个映射都提供给边缘设备2935,以便逻辑网络网关可以将其从其它逻辑网络网关接收到的用于其它数据中心处的延伸的逻辑交换机的两个vm中的任一个的任何数据消息传输到正确的主机计算机。
219.用于特定站点的控制器集群还向由逻辑交换机跨越的每个其它站点提供与逻辑交换机相关联的逻辑mac地址的列表。为了将与逻辑交换机相关联的数据消息从一个站点处的源主机计算机发送到另一个站点处的目的地主机计算机(例如,从主机计算机2940到主机计算机2925),源主机计算机(例如,主机计算机2940)将数据消息通过隧道传输到为源站点中的逻辑交换机实现逻辑网络网关的第一边缘设备(例如,边缘设备2945),其将数据消息通过隧道传输到为目的地站点中的逻辑交换机实现逻辑网络网关的第二边缘设备(例如,边缘设备2935),其进而将数据消息通过隧道传传输到第二站点中的目的地主机计算机(例如,主机计算机2925)。
220.照此,第一站点2905中的ccp 2915不向第一站点中的控制器提供用于逻辑交换机的逻辑mac地址到vtep映射,而是提供与逻辑交换机相关联并位于第二站点处的逻辑mac地址的列表到用于到达第二站点处的逻辑网络网关的rtep ip地址的映射。在这种情况下,该数据将逻辑mac地址a和b映射到rtep q。应当注意的是,在一些实施例中,代替单个rtep ip地址,这被提供为具有多个rtep ip地址的rtep组记录,如同存在在站点处为延伸的逻辑交换机实现逻辑网络网关的至少两个边缘设备那样(例如,处于活动-备用配置)。
221.第一站点处的控制器将这个逻辑网络状态数据提供给实现用于第一站点处的逻
辑交换机的逻辑网络网关的边缘设备。即,ccp 2920向边缘设备2945提供映射信息,用于向正确的边缘设备2935(例如,经由站点间网络)发送具有目的地mac地址a或b(并且在延伸的逻辑交换机的上下文中)的数据消息。
222.此外,对于在第一站点处实现逻辑交换机的主机计算机,控制器提供位于任何站点(除了第一站点以外)的mac地址的列表,以及为第一站点处的逻辑交换机实现逻辑网络的网关边缘设备可以到达的vtep ip地址。在这个示例中,主机计算机2940接收将mac地址a和b映射到用于边缘设备2945的vtep w的数据(如果逻辑交换机延伸到第三站点,那么附接到该第三站点处的逻辑交换机的任何mac地址将包括在同一记录中)。与rtep组一样,在一些实施例中,这些记录实际上是针对vtep组的,该vtep组包括用于站点2910中的延伸的逻辑交换机的所有逻辑网络网关的不同vtep ip地址。
223.虽然这个图仅图示了从第一站点2905发送到第二站点2910的数据,但如果附接到延伸的逻辑交换机的任何逻辑网络端点dcn托管在第二站点2910处,那么用于这些dcn的逻辑网络状态数据将在相反的方向上被发送。此外,在主机计算机2940上的vm附接到的逻辑交换机的上下文中,ccp 2920将这个信息提供给ccp 2915,以便站点2905中的主机计算机和边缘设备可以为这个vm将数据消息传输到第二站点2910。
224.除了逻辑网络到物理网络映射数据之外,一些实施例的网络控制器生成并在站点之间共享属于动态安全组的逻辑网络端点dcn的列表。具体而言,在一些实施例中,控制器接收动态安全组的定义并使用从其站点处的主机计算机接收的信息来确定跨越到该站点的每个动态安全组的网络地址(例如,mac和ip地址)。
225.图30a-图30b概念性地图示了针对站点内和站点之间的动态安全组的逻辑网络地址的这些列表的生成和传输。在这个示例中,图示了两个站点3005和3010。第一站点3005包括本地管理器3015和ccp集群3020(如上图,集群的节点之间的内部数据传送未示出)。第二站点3010包括本地管理器3025和ccp集群3030。此外,第一站点3005包括两个相关的主机计算机3035(托管vm a)和3040(托管vm b),而第二站点3010包括一个相关的主机计算机3045(托管vm c)。
226.从本地管理器3015和3025,ccp 3020和3030分别接收动态安全组的定义3050和3055。在一些实施例中,这些动态安全组定义包括在全局管理器处为全局逻辑网络定义的安全组以及在相应的本地管理器处定义的任何安全组。在一些实施例中,可以静态地定义安全组(例如,作为mac和/或ip地址的预先指定的列表)或动态地定义安全组(例如,作为准则的集合)。控制器负责确定哪些本地逻辑网络端点dcn属于每个动态安全组。属于动态安全组的准则可以在不同的实施例中变化。例如,这些准则可以包括与特定逻辑交换机的附接、特定子网中的ip地址、特定vm上运行的操作系统、dcn所在的站点、在dcn上操作的应用类型等。在这个示例中,安全组包括跨越站点3005和3010两者的两个组(组1和组2),以及仅跨越第二站点3010的第三组(组3)。
227.如关于图29所提到的,在一些实施例中,当在主机计算机上创建逻辑网络端点dcn(例如,vm a-c中的任何一个)时,该主机计算机将新dcn连同关于dcn的数据一起报告给集群的网络控制器之一。在一些实施例中,这个数据不仅包括vm的mac和ip地址,而且还包括关于dcn所附接到的逻辑交换机的信息以及用于dcn的各种其它运行时状态数据。如图所示,主机计算机3035向ccp 3020报告vm a的附接并且主机计算机3040向ccp 3020报告vm b
3120和3125,以及它们各自的用于指示第一站点处的安全组(组1)的成员资格的逻辑网络状态数据的存储装置3130和3135。在一些实施例中,每个控制器集群单独存储用于其自己的站点和用于从其接收状态数据的每个站点的逻辑网络状态数据。例如,一些实施例将安全组成员的列表(例如,ip和mac地址)存储在他们自己的站点中,在数据库中保持(或者保持从本地计算设备接收的数据,从该数据中可以生成安全组成员列表),并且还保持用于每个其它站点的更新的队列。在不同的实施例中,更新的队列可以是用于来自每个其它站点的更新的单独队列,或者是用于具有指示从哪个站点接收到每个更新的标签的所有站点的单个队列。因此,数据库3130存储第一站点处的组1(a和b)的当前成员的列表,而数据库3135存储对组1的更新的集合。这些更新指定将d添加到安全组,将a添加到安全组,将b添加到安全组,最后从安全组中删除d。
234.在第一阶段3105中,主机计算机3140向ccp 3120报告在主计算机3140上创建新的逻辑网络端点dcn c。因此,ccp 3120确定dcn c属于哪些动态安全组,在这种情况下其包括组1。如第二阶段3110中所示,ccp 3120将用于dcn c的网络地址添加到其数据库3130中的组1。虽然未示出,但ccp 3120会将这个信息提供给主机计算机3140。此外,如第二阶段3110中所示,第一站点处的ccp3120向第二站点处的ccp 3125发送更新3145,指定将用于dcn c的网络地址添加到组1。
235.响应于接收到更新3145,在第三阶段3115中,ccp 3125在数据库3135中在其用于组1的更新的保持队列中添加将用于dcn c的网络地址添加到组1的更新。作为一系列更新存储的这个数据现在相当于存储在数据库3130中的数据。虽然未示出,但ccp 3125随后会将这个更新提供给第二站点处要求组1的成员资格以强制实施策略的任何主机计算机。
236.第三阶段3115还说明,在一段时间之后,ccp 3125从更新队列3135中移除对添加d和删除d的更新。在一些实施例中,ccp移除不再相关的逻辑网络状态数据更新(即,当更新指定从列表中删除实体时,可以移除关于该实体的所有先前更新)。不同的实施例可以定期地、在接收到删除更新后等执行这些操作。第四阶段3117说明更新队列3135现在仅包括针对dcn a、b和c的更新。应当注意的是,虽然这个示例示出了对安全组成员资格的更新,但一些实施例以相同的方式处理对其它逻辑网络状态数据(例如,逻辑网络到物理网络映射记录)的更新。
237.如果从第一(发送)站点到第二(接收)站点的连接断开,那么在第一站点处生成的更新中的一些不会被发送到第二站点。第一站点的ccp可能不知道需要将哪些更新发送到第二站点(例如,因为这些更新没有保持在第一站点处,并且不存在针对每个个体更新的确认过程)。但是,如上面所提到的,发送整个逻辑网络状态以与第二站点同步是对带宽的低效使用。代替地,一些实施例比较(i)第二站点处的持久数据的快照与(ii)第一站点处的状态的快照,以识别差异。因此,第一站点只能将这些差异发送到第二站点。
238.图32概念性地图示了一些实施例的过程3200,用于识别在与远程站点重新连接之后需要发送到远程站点处的控制器的逻辑网络状态数据更新。在一些实施例中,过程3200由第一站点处的网络控制器集群(例如,负责将逻辑网络状态数据发送到第二远程站点的网络控制器)执行。
239.如图所示,过程3200通过(在3205处)在断开一段时间之后检测与来自另一个站点的接收者控制器的重新连接而开始。在一些实施例中,控制器使用心跳协议或其它机制来
检测与其它站点处的控制器的连接何时断开或恢复。由于站点之间的物理连接问题、远程站点的控制器节点出现问题或其它原因,这个连接可能断开。
240.在重新连接之后,过程3200(在3210处)基于从另一个站点处的持久数据生成的逻辑网络状态的快照从接收者控制器接收密码散列树。在一些实施例中,如上面所讨论的,这个持久数据是更新的队列,其可以被用于生成逻辑网络状态(例如,与特定逻辑交换机相关联的发送者站点处的mac地址和用于发送者站点的rtep ip地址的列表,属于发送者站点处的特定安全组的网络地址的列表)。在一些实施例中,接收方控制器使用这个逻辑网络状态来生成密码散列树(例如,merkle树)并将这个散列树发送到发送控制器。在一些实施例中,散列树叶子节点是数据块(例如,逻辑网络状态数据)的散列,并且后续父节点是其子节点的散列。
241.过程3200还(在3215处)基于存储在本地站点数据库中的逻辑网络状态的快照(即,对于应当在第二站点处表示的逻辑网络状态数据)计算密码散列树。这个数据已经存储在用于控制器集群的分布式数据库中,并且使用与在接收者处执行的相同算法来计算散列树。
242.接下来,过程3200(在3220处)比较两个散列树以识别逻辑网络状态的差异。在一些实施例中,如果根节点相同,那么这(有效地)保证整个状态相同,并且不要求更新。如果根节点中存在差异,那么该过程可以朝着叶子节点继续以识别差异。如果两个散列树之间的任何节点相同,那么任何子节点都将相同。使用这个过程,可以识别不同的初始数据块,从而识别两个站点之间逻辑网络状态的差异。基于这个比较,过程3200(在3225处)向远程站点发送任何需要的更新。
243.连接问题的另一个后果可以是来自两个不同站点的逻辑网络状态数据之间的冲突。具体而言,当逻辑网络端点dcn从第一站点移动到第二站点时,基于从前两个站点接收到的数据,可能在第三站点出现冲突。当dcn从第一站点迁移到第二站点,或者在第一站点崩溃并在第二站点恢复时,在理想场景下(i)第一站点处的控制器被通知删除dcn,相应地更新其逻辑网络状态数据,并与第三站点(和第二站点)共享这个数据,并且(ii)第二站点处的控制器被通知dcn创建,相应地更新其逻辑网络状态数据,并与第三站点(和第一站点)共享这个数据。但是,如果第二站点处出现连接问题(例如,主机计算机和控制器集群之间或第一站点和第二站点之间出现连接问题),那么第一站点将不会接收到关于删除的信息,因此一旦接收到来自第三站点的信息就以冲突的信息(例如,安全组中的ip地址)结束。
244.图33概念性地图示了一些实施例的用于解决这种冲突的逻辑网络状态数据的过程3300。过程3300由一个站点处的控制器在检测到从两个其它站点接收的数据之间存在冲突的逻辑网络状态数据后执行。
245.如图所示,过程3300(在3305处)开始于检测来自两个不同站点的逻辑网络状态数据之间的冲突。这种冲突的示例可以是,来自第一站点的控制器发送应当将特定ip地址添加到安全组并位于第一站点处的更新,同时基于来自第二状态的逻辑网络状态数据已经将该特定ip地址添加到安全组中(并且尚未从安全组中删除)。在一些情况下,当dcn在站点之间移动时,用于dcn的mac地址将改变,但ip地址将保持相同。如果mac地址也相同,那么逻辑网络到物理网络映射记录也可能发生冲突。
246.在检测到冲突后,过程3300(在3310处)确定到作为冲突数据的源的多于一个的站
点处的控制器的连接是否可用。虽然上面的示例描述了来自两个站点的信息之间的冲突,但在极少数情况下可能会在多于两个站点之间发生冲突。
247.如果到仅一个站点处的控制器的连接可用,那么过程3300(在3315处)使用来自具有可用连接的站点的逻辑网络状态数据,假设这个逻辑网络状态数据是最新的,并且如果连接可用,那么其它(一个或多个)站点处的控制器将提供解决冲突的更新。另一方面,如果连接可用于多个站点,那么过程3300(在3320处)使用基于附加到更新的时间戳的最新逻辑网络状态数据。也可以是这种情况:从其中一个站点中的主机移除dcn,但由于该站点处的主机和控制器之间的连接丢失,控制器集群没有意识到该移除,因此可能不生成或发送更新。在这种情况下,在不同站点处创建新dcn将是较新的,因此应当被使用。
248.图34概念性地图示了利用其实现本发明的一些实施例的电子系统3400。电子系统3400可以是计算机(例如,台式计算机、个人计算机、平板计算机、服务器计算机、大型机、刀片计算机等)、电话、pda或任何其它类型的电子设备。这种电子系统包括各种类型的计算机可读介质和用于各种其它类型的计算机可读介质的接口。电子系统3400包括总线3405、(一个或多个)处理单元3410、系统存储器3425、只读存储器3430、永久存储设备3435、输入设备3440和输出设备3445。
249.总线3405共同表示所有系统、外围设备和芯片组总线,它们可通信地连接电子系统3400的众多内部设备。例如,总线3405将(一个或多个)处理单元3410与只读存储器3430、系统存储器3425和永久存储设备3435通信地连接。
250.从这些各种存储器单元中,(一个或多个)处理单元3410检索为了执行本发明的过程要执行的指令和要处理的数据。在不同的实施例中,(一个或多个)处理单元可以是单个处理器或多核处理器。
251.只读存储器(rom)3430存储(一个或多个)处理单元3410和电子系统的其它模块所需的静态数据和指令。另一方面,永久存储设备3435是读写存储器设备。这个设备是即使在电子系统3400关闭时也能存储指令和数据的非易失性存储器单元。本发明的一些实施例使用大容量存储设备(诸如磁盘或光盘及其对应的盘驱动器)作为永久存储设备3435。
252.其它实施例使用可移动存储设备(诸如软盘、闪存驱动器等)作为永久存储设备。与永久存储设备3435一样,系统存储器3425是读写存储器设备。但是,与存储设备3435不同,系统存储器是易失性读写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时需要的指令和数据中的一些。在一些实施例中,本发明的过程存储在系统存储器3425、永久存储设备3435和/或只读存储器3430中。从这各种存储器单元中,(一个或多个)处理单元3410检索为了执行一些实施例的过程而要执行的指令和要处理的数据。
253.总线3405还连接到输入设备3440和输出设备3445。输入设备使用户能够向电子系统传达信息和选择命令。输入设备3440包括字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备3445显示由电子系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(crt)或液晶显示器(lcd)。一些实施例包括用作输入和输出设备两者的设备,诸如触摸屏。
254.最后,如图34中所示,总线3405还通过网络适配器(未示出)将电子系统3400耦合到网络3465。以这种方式,计算机可以是计算机网络(诸如局域网(“lan”)、广域网(“wan”)或内联网、或者网络的网络(诸如互联网)的一部分。电子系统3400的任何或所有组件都可
以与本发明结合使用。
255.一些实施例包括将计算机程序指令存储在机器可读或计算机可读介质(可替代地称为计算机可读存储介质、机器可读介质或机器可读存储介质)中的电子组件,诸如微处理器、存储装置和存储器。此类计算机可读介质的一些示例包括ram、rom、只读光盘(cd-rom)、可记录光盘(cd-r)、可重写光盘(cd-rw)、只读数字多功能盘(例如,dvd-rom、双层dvd-rom)、各种可刻录/可重写dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、闪存(例如,sd卡)、mini-sd卡、micro-sd卡等)、磁性和/或固态硬盘驱动器、只读和可刻录蓝光(blu-)盘、超密度光盘、任何其它光学或磁性介质、以及软盘磁盘。计算机可读介质可以存储可由至少一个处理单元执行并且包括用于执行各种操作的指令集的计算机程序。计算机程序或计算机代码的示例包括机器代码,诸如由编译器产生的机器代码,以及包括由计算机、电子组件或微处理器使用解释器执行的高级代码的文件。
256.虽然上述讨论主要涉及执行软件的微处理器或多核处理器,但一些实施例由一个或多个集成电路(诸如专用集成电路(asic)或现场可编程门阵列(fpga))执行。在一些实施例中,此类集成电路执行存储在电路本身上的指令。
257.如在本说明书中使用的,术语“计算机”、“服务器”、“处理器”和“存储器”全都指电子或其它技术设备。这些术语不包括人或人群。出于本说明书的目的,术语显示(display)或显示(displaying)是指在电子设备上显示。如本说明书中使用的,术语“计算机可读介质”、“计算机可读媒介”和“机器可读介质”完全限于以计算机可读的形式存储信息的有形物理对象。这些术语不包括任何无线信号、有线下载信号和任何其它短暂信号。
258.本说明书自始至终涉及包括虚拟机(vm)的计算和网络环境。但是,虚拟机只是数据计算节点(dcn)或数据计算端节点(也称为可寻址节点)的一个示例。dcn可以包括非虚拟化物理主机、虚拟机、在主机操作系统之上运行而无需管理程序或单独的操作系统的容器,以及管理程序内核网络接口模块。
259.在一些实施例中,vm使用由虚拟化软件(例如,管理程序、虚拟机监视器等)虚拟化的主机的资源在主机上与它们自己的客人操作系统一起操作。租户(即,vm的所有者)可以选择在客人操作系统之上运行哪些应用。另一方面,一些容器是在主机操作系统之上运行的构造,而不需要管理程序或单独的客人操作系统。在一些实施例中,主机操作系统使用名称空间来将容器彼此隔离,并因此提供在不同容器内操作的不同应用组的操作系统级隔离。这种隔离类似于在将系统硬件进行虚拟化的管理程序虚拟化环境中供应的vm隔离,因此可以被视为隔离在不同容器中操作的不同应用组的虚拟化形式。此类容器比vm更轻量级。
260.在一些实施例中,管理程序内核网络接口模块是包括具有管理程序内核网络接口和接收/传输线程的网络堆栈的非vm dcn。管理程序内核网络接口模块的一个示例是vmknic模块,它是vmware公司的esxi
tm
管理程序的一部分。
261.应当理解的是,虽然说明书提到了vm,但给出的示例可以是任何类型的dcn,包括物理主机、vm、非vm容器和管理程序内核网络接口模块。事实上,在一些实施例中,示例网络可以包括不同类型的dcn的组合。
262.虽然已经参考许多具体细节描述了本发明,但是本领域的普通技术人员将认识到,在不脱离本发明的精神的情况下,本发明可以以其它具体形式实施。此外,多个图(包括
图13、14、17、27、32和33)概念性地图示了过程。这些过程的具体操作可能不会按照所示和描述的确切次序执行。具体操作可以不是在一个连续的操作序列中执行,并且在不同的实施例中可以执行不同的具体操作。此外,该过程可以使用若干子过程来实现,或者作为更大的宏过程的一部分来实现。因此,本领域的普通技术人员将理解本发明不受前述说明性细节的限制,而是由所附权利要求限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1