用于配置中间盒的网络控制系统的制作方法

文档序号:6497056阅读:710来源:国知局
用于配置中间盒的网络控制系统的制作方法
【专利摘要】一些实施例提供了一种用于在包括一组节点的托管系统中配置逻辑中间盒的方法。逻辑中间盒是包括连接一组终端机的一组逻辑转发元件的逻辑网络的一部分。该方法接收用于逻辑中间盒的一组配置数据。所述方法使用所存储的描述终端机的物理位置的一组表来识别实现逻辑中间盒的一组节点。该方法提供用于分发到所识别的节点的逻辑中间盒配置。
【专利说明】用于配置中间盒的网络控制系统
【背景技术】
[0001]许多当前的企业具有大型且复杂的网络,其包括交换机、集线器、路由器、中间盒(例如,防火墙)、服务器、工作站、以及支持各种连接、应用和系统的其它联网装置。计算机网络增加的复杂性,包括虚拟机迁移、动态工作负载、多租户、以及客户特定的服务质量和安全配置需要更好的范式以用于网络控制。网络传统地已通过单个网络组件的低级配置来管理。网络配置通常取决于底层网络:例如,利用访问控制列表(“ACL”)条目阻止用户的访问需要知道用户的当前IP地址。更复杂的任务需要更广泛的网络知识:迫使访客用户的端口 80业务(traffic)穿越HTTP代理需要知道当前的网络拓扑和每个访客的位置。在网络交换元件在多用户之间共享的情况下,该处理具有增加的难度。
[0002]作为响应,存在朝向被称为软件定义网络(SDN)的新的网络控制范式的日渐发展。在SDN范式中,在网络中的一个或多个服务器上运行的网络控制器以每用户为基础控制、维护并且实现对共享的网络交换元件的转发行为进行管控的控制逻辑。做出网络管理决策通常需要了解网络状态。为了便于做出管理决策,网络控制器创建并且维护网络状态的视图,并且提供管理应用可以访问网络状态的视图的应用程序接口。
[0003]维护大型网络(包括数据中心和企业网络两者)的主要目标中的一些是可扩展性、移动性和多租户。处理这些目标中的一个所采用的许多方法导致阻碍其它目标中的至少一个。例如,可以容易地在L2域内为虚拟机提供网络移动性,但是L2域不能扩展到大的尺寸。此外,保持用户隔离极大地使移动性复杂化。这样,需要可以满足可扩展性、移动性和多租户目标的改进的解决方案。

【发明内容】

[0004]一些实施例提供一种网络控制系统,其允许用户指定包括一个或多个中间盒以及逻辑数据路径集的逻辑网络。用户指定(I)包括网络内的逻辑转发元件(例如,逻辑路由器、逻辑交换机)和中间盒位置的网络拓扑、(2)用于将业务转发到中间盒的路由策略、以及(3)对于不同的中间盒的配置。一些实施例的网络控制系统使用一组网络控制器以将实现网络拓扑的流条目和中间盒配置二者分发到受管理交换元件和分布式中间盒在其上操作的主机、以及在主机的外部操作的集中式中间盒设备。
[0005]在一些实施例中,网络控制器以分层的方式布置。用户将拓扑和配置信息键入到逻辑控制器、或将该信息作为一组记录传递给逻辑控制器的输入转换控制器中。逻辑控制器通信地耦合到一组物理控制器,其中每个物理控制器负责将配置数据分发到一个或多个主机。也就是说,每个主机被分配给充当该主机的主装置的特定物理控制器。逻辑控制器识别哪些主机需要接收配置,然后将适当的信息传递给管理所识别的主机的物理控制器。在将记录导出到物理控制器之前,逻辑控制器对流条目数据进行转换。然而,在一些实施例中,中间盒配置数据不被转换。
[0006]物理控制器接收信息,对数据中的至少一些执行附加转换,并将转换的数据传递到主机(即,主机上的受管理交换元件和中间盒)。与逻辑控制器一样,在一些实施例中,物理控制器对去往受管理交换机的流条目进行转换,但不对中间盒配置数据执行任何转换。然而,一些实施例的物理控制器对中间盒产生附加数据。具体地,因为在主机上(例如,作为守护进程或应用)操作的分布式中间盒应用元件可以为不同的租户网络执行几个单独的中间盒处理,所以物理控制器将切分标识符分配给对于中间盒的特定配置。该切分标识符还被传送到受管理交换元件,在一些实施例中,该受管理交换元件将该标识符添加到去往中间盒的分组。
[0007]前述的
【发明内容】
旨在用作对于本发明的一些实施例的简要介绍。它意不在于作为本文档中所公开的所有创造性主题的介绍或概述。后面的【具体实施方式】以及在【具体实施方式】中参照的附图将进一步描述在该
【发明内容】
中所描述的实施例以及其它的实施例。因此,为了理解本文档所描述的所有实施例,需要
【发明内容】
、【具体实施方式】和附图的全面审阅。而且,因为所要求保护的主题可以在不脱离主题的精神的情况下以其它特定的形式体现,所以要求保护的主题不受
【发明内容】
、【具体实施方式】以及附图中的说明性的细节限制,而是由所附的权利要求限定。
【专利附图】

【附图说明】
[0008]本发明的新颖特征在所附权利要求中阐述。然而,为了解释的目的,本发明的几个实施例在以下附图中阐述。
[0009]图1概念性地示出一些实施例的逻辑网络拓扑、以及在由网络控制系统进行配置之后实现该逻辑网络的物理网络。
[0010]图2概念性地示出一些实施例的网络控制系统,用于配置受管理交换元件和分布式中间盒元件(以及集中式中间盒)以便根据用户指定实现逻辑网络。
[0011]图3-5概念性地示出用户将与逻辑网络内的中间盒相关的信息键入到网络控制系统中、以及数据在网络控制系统中经历的转化的示例。
[0012]图6示出一些实施例的网络控制器的示例架构。
[0013]图7-9概念性地示出一些实施例中被执行以将分组从第一虚拟机发送到第二虚拟机的不同动作。
[0014]图10概念性地示出实现本发明的一些实施例的电子系统。
【具体实施方式】
[0015]在以下本发明的详细描述中,对本发明的许多细节、示例和实施例进行阐述和描述。然而,对于本领域技术人员将清楚和明显的是,本发明不限于所阐述的实施例,并且可以在没有所讨论的特定细节和示例的情况下实施本发明。
[0016]一些实施例提供一种网络控制系统,其允许用户指定包括一个或多个中间盒(例如,防火墙、负载均衡器、网络地址转换器、入侵检测系统(IDS)、广域网(WAN)优化器等)以及逻辑数据路径集的逻辑网络。用户指定(I)包括网络内的逻辑转发元件(例如,逻辑路由器、逻辑交换机)和中间盒位置的网络拓扑、⑵用于将业务转发到中间盒的路由策略、以及(3)对于不同的中间盒的配置。一些实施例的网络控制系统使用一组网络控制器以将实现网络拓扑的流条目(flow entry)和中间盒配置二者分发到受管理交换元件和分布式中间盒在其上操作的主机、以及在主机的外部操作的集中式中间盒设备。[0017]在一些实施例中,网络控制器以分层的方式布置。用户将拓扑和配置信息键入到逻辑控制器、或将该信息作为一组记录传递给逻辑控制器的输入转换控制器中。逻辑控制器通信地耦合到一组物理控制器,其中每个物理控制器负责将配置数据分发到一个或多个主机。也就是说,每个主机被分配给充当该主机的主装置(master)的特定物理控制器。逻辑控制器识别哪些主机需要接收配置,然后将适当的信息传递给管理所识别的主机的物理控制器。在将记录导出到物理控制器之前,逻辑控制器对流条目数据进行转换。然而,在一些实施例中,中间盒配置数据不被转换。
[0018]物理控制器接收信息,对数据中的至少一些执行附加转换,并将转换的数据传递到主机(即,主机上的受管理交换元件和中间盒)。与逻辑控制器一样,在一些实施例中,物理控制器对去往受管理交换机的流条目进行转换,但不对中间盒配置数据执行任何转换。然而,一些实施例的物理控制器对中间盒产生附加数据。具体地,因为在主机上(例如,作为守护进程(daemon)或应用)操作的分布式中间盒应用元件可以为不同的租户网络执行几个单独的中间盒处理,所以物理控制器将切分(slice)标识符分配给对于中间盒的特定配置。该切分标识符还被传送到受管理交换元件,在一些实施例中,该受管理交换元件将该标识符添加到去往中间盒的分组。
[0019]图1概念性地示出了一些实施例的逻辑网络拓扑100、以及通过网络控制系统进行配置之后实现该逻辑网络的物理网络。为了解释的目的,网络拓扑100为简化的网络。该网络包括由逻辑L3路由器115连接的两个逻辑L2交换机105和110。逻辑交换机105连接虚拟机120和125,而逻辑交换机110连接虚拟机130和135。逻辑路由器115还连接到外部网络145。
[0020]另外,中间盒140附连到逻辑路由器115。本领域的普通技术人员将认识到,网络拓扑100表示可以将中间盒并入到其中的仅一个特定的逻辑网络拓扑。在各个实施例中,中间盒可以直接位于两个其它组件(例如,)之间、直接位于外部网络与逻辑路由器之间(例如,以便监视和处理进入或退出逻辑网络的所有业务)、或者位于更复杂网络中的其它位置中。
[0021]在图1中所示的架构中,中间盒140不位于从一个域到另一个域或者外部世界与域之间的直接业务流中。因此,分组将不被发送到中间盒,除非对于逻辑路由器115指定(例如,由诸如网络管理员的用户指定)确定哪些分组应被发送到中间盒以进行处理的路由策略。一些实施例使得能够使用基于目的地地址(例如,目的地IP或MAC地址)以外的数据来转发分组的策略路由规则。例如,用户可以指定(例如,通过网络控制器应用程序接口(API))应将下述分组引导到中间盒140以进行处理:具有由逻辑交换机105交换的逻辑子网中的源IP地址且具有连接到逻辑交换机105的逻辑入站端口(ingress port)的所有分组、或者从外部网络145进入网络的去往由逻辑交换机110交换的逻辑子网的所有分组。
[0022]由用户(例如,网络管理员)键入的逻辑网络拓扑通过网络控制系统被分发到各个物理机器,以便实现逻辑网络。图1的第二阶段概念性地示出了逻辑网络100的这样的物理实现150。具体地,物理实现150示出了几个节点,包括第一主机155、第二主机160和第三主机165。三个节点中的每一个托管(host)逻辑网络100的至少一个虚拟机,其中虚拟机120托管在第一主机155上,虚拟机125和135托管在第二主机160上,虚拟机130托管在第三主机165上。[0023]另外,主机中的每一个包括受管理交换元件(“MSE”)。一些实施例的受管理交换元件是实现用于一个或多个逻辑网络的逻辑转发元件的软件转发元件。例如,主机155-165中的MSE包括实现网络100的逻辑转发元件的转发表中的流条目。具体地,主机上的MSE实现逻辑交换机105和110、以及逻辑路由器115。另一方面,一些实施例仅当连接到逻辑交换机的至少一个虚拟机位于特定节点处时才在该节点处实现逻辑交换机(即,在主机155处的MSE中仅实现逻辑交换机105和逻辑路由器115)。
[0024]一些实施例的实现300还包括连接到主机的池节点340。在一些实施例中,驻留在主机上的MSE执行第一跳处理。也就是说,这些MSE是分组在从虚拟机被发送之后到达的第一转发元件,并且试图在该第一跳处执行所有的逻辑交换和路由。然而,在一些情况下,特定的MSE可能没有存储含有网络的所有逻辑转发信息的流条目,并因此可能不知道对特定的分组如何处理。在一些这样的实施例中,MSE将分组发送到池节点340以进行进一步处理。这些池节点是内部的受管理交换元件,在一些实施例中,这些受管理交换元件存储包含逻辑网络的比边缘软件交换元件更大的一部分的流条目。
[0025]类似于逻辑交换元件在网络100的虚拟机驻留在其上的主机上的分布,中间盒140分布在这些主机155-165上的中间盒元件上。在一些实施例中,中间盒模块(或一组模块)驻留在主机上(例如,在主机的超管理器(hypervisor)中操作)。
[0026]如所说明的,一些实施例的网络控制系统用于配置分布式转发元件(MSE)和中间盒。三个主机155-165中的每一个被分配给特定的物理控制器,其接收对于MSE的流条目以及对于中间盒的配置信息,对数据执行任何必要的转换,并将数据传递到主机上的元件。
[0027]尽管图1仅示出了在主机155-165上实现的一个逻辑网络,但是一些实施例在该组主机上实现许多逻辑网络(例如,对于不同的租户)。这样,特定的主机上的中间盒元件实际上可以存储属于几个不同的逻辑网络的几个不同的中间盒的配置。例如,防火墙元件可以被虚拟化为实现两个(或更多个)不同的防火墙。这些将有效地作为两个独立的中间盒处理进行操作,使得中间盒元件被切分成几个(同一类型的)“虚拟”中间盒。
[0028]另外,当主机上的MSE将分组发送到中间盒时,一些实施例将切分标识符(或标签)附加(例如,前置(Pr印end))到分组上以识别该分组正被发送到几个虚拟中间盒中的哪个。当在用于单个逻辑网络的同一中间盒元件上实现多个中间盒(例如,两个不同的负载均衡器)时,切分标识符将需要识别特定的中间盒切分,而不仅仅识别分组所属的逻辑网络。不同的实施例可对于中间盒使用不同的切分标识符。
[0029]在一些实施例中,这些切分标识符由网络控制系统分配。因为,对于诸如中间盒140的分布式中间盒,中间盒元件通常将仅从该主机上的MSE接收分组,所以可以由管理特定的中间盒元件(以及MSE)的物理控制器对于每个中间盒元件单独分配切分标识符。在集中式中间盒(即,所有的MSE将分组发送到的单独的物理设备)的情况下,对于在该设备上操作的虚拟中间盒,将使用单个切分标识符。在一些实施例中,管理该设备的物理控制器分配该标识符,并然后通过网络控制系统将该标识符分发到其它的物理控制器,以便其它的物理控制器将信息传递到MSE。
[0030]以上示出了一些实施例的网络中的逻辑中间盒的实现的示例。下面描述几个更详细的实施例。节I描述一些实施例的用于配置网络以便实现包括防火墙的逻辑网络的网络控制系统。节II描述一些实施例的网络控制器的架构。接着,节III描述当分组通过中间盒时两个虚拟机之间的分组处理。最后,节IV描述实现本发明的一些实施例的电子系统。
[0031]1.网络控制系统
[0032]如上所述,为了对于受管理网络预配置中间盒和受管理交换元件,一些实施例使用网络控制系统。在一些实施例中,网络控制系统是分层的一组网络控制器,其中分层中的每个层次(level)在受管理交换元件和中间盒的预配置中执行不同的功能。
[0033]图2概念性地示出了一些实施例的网络控制系统200,其用于配置受管理交换元件和分布式中间盒元件(以及集中式中间盒)以便根据用户指定来实现逻辑网络。如所示的,网络控制系统包括输入转换控制器205、中间盒配置接口 207、逻辑控制器210、物理控制器215和220、以及主机225-235。如所示的,主机225-235包括受管理交换元件和分布式中间盒元件两者。在一些实施例中,网络控制系统可以包括均耦合到单个物理控制器的集中式中间盒(例如,物理设备、个别的虚拟机)。
[0034]在一些实施例中,中间盒配置接口 207实际上是输入转换控制器205的一部分;在该图中,这两个被单独示出为它们接收不同的输入并且包括用于与用户通信的不同的API。在一些实施例中,网络控制系统中的控制器中的每一个具有用作输入转换控制器、逻辑控制器和/或物理控制器的能力。也就是说,每个控制器机器包括用于执行不同的控制器类型中的任何一种的功能的必要的应用堆栈(stack),但是在任何时间仅使用这些应用堆栈中的一个。可替代地,在一些实施例中,给定的控制器可以仅具有作为这些类型中的特定一种类型的控制器(例如,作为物理控制器)操作的功能。另外,控制器的不同组合可以在同一物理机器中运行。例如,输入转换控制器205、中间盒配置接口 207和逻辑控制器210可以在用户与其交互的同一计算设备中运行。
[0035]此外,图2 (以及后面的图3-5)中所示的控制器中的每一个被示为单个控制器。然而,这些控制器中的每一个实际上可以是以分布式方式操作以执行逻辑控制器、物理控制器或输入转换控制器的处理的控制器集群。
[0036]一些实施例的输入转换控制器205包括对从用户接收的网络配置信息进行转换的输入转换应用。例如,用户可以指定包括关于哪些机器属于哪个逻辑域中的指定的网络拓扑,诸如图1中所示的网络拓扑。这有效地指定逻辑数据路径集、或一组逻辑转发元件。对于逻辑转发元件中的每一个,用户指定连接到逻辑交换机的机器或其它元件(即,对于逻辑交换机分配哪些逻辑端口)。在一些实施例中,用户还对于机器指定IP地址。
[0037]例如,用户可以键入网络拓扑,诸如图1所示的网络拓扑,其中机器连接到逻辑交换机,逻辑路由器连接两个逻辑交换机,并且一个或多个中间盒也连接到逻辑路由器的端口。如流产生列所示,输入转换控制器205将键入的网络拓扑转换为描述网络拓扑的逻辑控制平面数据。在一些实施例中,将逻辑控制平面数据表达为一组数据库表记录(例如,用nLog语言)。控制平面中描述特定的虚拟机附连到网络的条目可以声明,特定的MAC地址B位于特定的逻辑交换机的特定的逻辑端口 X处。
[0038]中间盒配置接口 207从用户接收中间盒配置输入。在一些实施例中,每个不同的中间盒(例如,来自不同提供商的中间盒、不同类型的中间盒)可以具有特定于中间盒实现的不同API。也就是说,不同的中间盒实现具有呈现给用户的不同接口(即,用户将必须对于不同的特定中间盒键入不同格式的信息)。如图2的中间盒数据产生列所示,用户键入中间盒配置,其由中间盒API转换成中间盒配置数据。[0039]在一些实施例中,由配置接口 207转换的中间盒配置数据也是一组记录,其中每个记录指定特定的规则。在一些实施例中,这些记录与传播到受管理交换元件的流条目在格式上类似。事实上,一些实施例使用控制器上的相同应用以传播关于流条目的防火墙配置记录,并且对于这些记录使用相同的表映射语言(例如,nLog)。
[0040]尽管该图示出了正被发送到逻辑控制器的中间盒配置数据,但是一些实施例的一些集中式中间盒仅可通过与中间盒装置的直接接口访问。也就是说,不是键入发送到逻辑控制器并通过网络控制系统分发的配置,用户而是直接将配置键入到中间盒装置中。在这样的情况下,用户仍将需要将将分组发送到中间盒的路由策略作为网络拓扑配置的一部分键入。在一些这样的实施例中,网络控制系统仍将如下所述那样对于中间盒产生切分数据(即,虚拟化标识符)。另一方面,在一些实施例中,用户对于中间盒配置切分数据,并且中间盒或用户将该信息提供给网络控制系统。
[0041]在一些实施例中,每个逻辑网络由特定的逻辑控制器(例如,逻辑控制器210)管控。关于对于受管理交换元件的流产生,一些实施例的逻辑控制器210将从输入转换控制器205接收的逻辑控制平面数据转换成逻辑转发平面数据,并且将该逻辑转发平面数据转换成通用控制平面数据。在一些实施例中,逻辑控制器应用堆栈包括用于执行第一转换的控制应用和用于执行第二转换的虚拟化应用。在一些实施例中,这两个应用都使用用于将第一组表映射到第二组表的规则引擎。也就是说,将不同的数据平面表示为表(例如,nLog表),并且控制器应用使用表映射引擎以在数据平面之间进行转换。在一些实施例中,控制应用和虚拟化应用二者使用相同的规则引擎以执行它们的转换。
[0042]在一些实施例中,逻辑转发平面数据由在逻辑层次上描述的流条目组成。对于逻辑端口 X处的MAC地址B,逻辑转发平面数据可以包括指定如果分组的目的地与MAC B匹配则将该分组转发到端口 X的流条目。
[0043]在一些实施例中,从逻辑转发平面到物理控制平面的转换将下述层添加到流条目,该层使得利用流条目预配置的受管理交换元件能够将在物理层端口(例如,虚拟接口)处接收的分组变换到逻辑域中并在该逻辑域中执行转发。也就是说,当在物理层在网络内发送和接收业务分组时,根据由用户键入的逻辑网络拓扑做出转发决策。在一些实施例中,从逻辑转发平面到物理控制平面的变换使得能够实现网络的这个方面。
[0044]如所示的,逻辑控制器将逻辑转发平面数据变换到通用物理控制平面,而物理控制器将通用物理控制平面数据变换到定制(customized)物理控制平面。一些实施例的通用物理控制平面数据是这样的数据平面:即使当一些实施例的控制系统含有实现逻辑数据路径集的大量受管理交换元件(例如,数千个)时,该数据平面也使得该控制系统能够扩展。通用物理控制平面对不同的受管理交换元件的共有特性进行抽象,以便在不考虑受管理交换元件的差异和/或受管理交换元件的位置详情的情况下表达物理控制平面数据。
[0045]对于以上所提到的示例(MAC B到逻辑端口 X的附连),通用物理控制平面将涉及几个流条目。第一条目声明,如果分组与特定的逻辑数据路径集匹配(例如,基于在特定的逻辑入站端口处接收到的分组),并且目的地地址与MAC B匹配,则将该分组转发到逻辑端口 X。这通过逻辑数据路径集(从物理端口到逻辑端口的变换)将匹配添加到在逻辑域中执行其分析的转发条目。在一些实施例中,该流条目在通用物理控制平面和定制物理控制平面中是相同的。[0046]附加流被产生以将物理入站端口(例如,主机的虚拟接口)匹配到逻辑入站端口X (用于从MAC A接收的分组)、以及将逻辑端口 X匹配到物理受管理交换机的特定出站端口(egress port)(用于发送到MAC A的分组)。然而,这些物理入站和出战端口是特定于含有受管理交换元件的主机的。这样,通用物理控制平面条目包括抽象物理端口(即,非特定于任何特定的物理主机的端口的通用抽象)到逻辑入站端口,以及用于将逻辑出站端口映射到通用物理出站端口。
[0047]另一方面,在一些实施例中,中间盒配置数据不由逻辑控制器变换,而在其它实施例中,逻辑控制器至少执行中间盒配置数据记录的最少转换。因为许多中间盒分组处理、修改和分析规则对分组的IP地址(或TCP连接状态)进行操作,并且发送到中间盒的分组将使该信息暴露(即,不封装在逻辑端口信息内),所以中间盒配置不需要从逻辑数据平面到物理数据平面的转换。因此,相同的中间盒配置数据被从中间盒配置接口 207传递到逻辑控制器210,并然后被传递到物理控制器215和220。
[0048]为了分发物理控制平面数据以及中间盒配置数据,逻辑控制器必须识别主机中的哪个(并因此物理控制器中的哪个)需要接收哪些流条目和哪些中间盒配置信息。在一些实施例中,逻辑控制器210存储逻辑网络的描述以及物理网络的物理实现的描述。逻辑控制器接收对于分布式中间盒的一个或多个中间盒配置记录,并识别各个节点中的哪个将需要接收配置信息。
[0049]在一些实施例中,整个中间盒配置被分发到所有主机处的中间盒元件,所以逻辑控制器识别其分组需要使用防火墙的至少一个虚拟机驻留在其上的所有机器。通常,所识别的机器是对于网络中的所有虚拟机的主机(例如,就图1所示的中间盒而言)。然而,如果网络拓扑使得在某些主机处将从不需要中间盒,则一些实施例可以识别网络中的虚拟机的子集。一些实施例以每记录为基础做出关于将配置数据发送到哪些主机的决策。也就是说,每个特定的规则可以仅应用于虚拟机的子集(例如,仅来源于特定的虚拟机或虚拟机的子集的分组),并且仅运行这些虚拟机的主机需要接收记录。
[0050]类似地,逻辑控制器识别哪些节点应接收物理控制平面中的每个流条目。例如,实现逻辑交换机105的流条目被分发到主机155和160,而不是图1的主机165。
[0051]一旦逻辑控制器识别了接收记录的特定节点,逻辑控制器就识别管理这些特定节点的特定的物理控制器。在一些实施例中,每个主机具有分配的主物理控制器。因此,如果逻辑控制器仅将第一主机和第二主机识别为配置数据的目的地,则对于这些主机的物理控制器将被识别为从逻辑控制器接收数据(并且其它物理控制器将不接收该数据)。对于集中式中间盒,逻辑控制器仅需要识别管理实现中间盒的设备的(单个)物理控制器。当集中式中间盒被实现为集群(例如,一组资源、主-备份集群等)时,集群中的中间盒设备中的每一个将接收配置数据。在一些实施例中,集群中的中间盒全部由单个物理控制器管理,而在其它实施例中,不同的物理控制器管理集群内的不同的中间盒。
[0052]为了向主机供给中间盒配置数据,一些实施例的逻辑控制器将数据推送到物理控制器(通过使用访问逻辑控制器中的表映射引擎的输出的导出模块)。在其它实施例中,物理控制器从逻辑控制器的导出模块请求配置数据(例如,响应于配置数据可用的信号)。
[0053]如所描述的,物理控制器215和220中的每一个是一个或多个受管理交换元件(例如,位于主机内)的主装置。在该示例中,第一物理控制器215是主机225和230处的受管理交换元件的主装置,而第二物理控制器220是主机235处的受管理交换元件的主装置。在一些实施例中,物理控制器接收用于逻辑网络的通用物理控制平面数据,并将该数据转换成用于物理控制器管理的、需要接收数据的特定受管理交换机(因为物理控制器也可以管理不接收特定逻辑网络的数据的附加的受管理交换元件)的定制物理控制平面数据。在其它实施例中,物理控制器将适当的通用物理控制平面数据传递到包括执行变换本身的能力(例如,以主机上运行的机箱(chassis)控制器的形式)的受管理交换元件。
[0054]通用物理控制平面到定制物理控制平面转换涉及流条目中的各个数据的定制。尽管因为通用物理控制平面条目包括对于不同的交换元件不同的任何数据的通用抽象,所以这些条目可适用于任何受管理交换元件,但是定制物理控制平面条目包括特定于条目将被发送到的特定受管理交换元件的替换(substitute)数据。例如,物理控制器对通用物理控制平面入站和出站端口整合(integration)条目中的物理层端口进行定制以包括特定主机的实际物理层端口(例如,虚拟接口)。
[0055]如图2所示,物理控制器215和220将信息传递到它们所分配的主机上的受管理交换元件和中间盒两者。在一些实施例中,中间盒配置和物理控制平面数据被发送到在主机上运行的同一数据库,并且受管理交换元件和中间盒模块从该数据库检索适当的信息。类似地,对于集中式中间盒,物理控制器将中间盒配置数据传递到中间盒设备(例如,中间盒处的用于存储配置数据的数据库)。
[0056]在一些实施例中,传递到受管理交换元件的定制物理控制平面数据包括使得受管理交换元件能够将分组发送到中间盒的附连和切分信息。如图2的中间盒切分信息产生列所示的这个切分数据在物理控制器内被产生,并且在一些实施例中还与物理控制器一起被发送到中间盒。因为中间盒配置用于使分布式中间盒元件内的中间盒实例虚拟化,所以中间盒元件可以具有同时运行的多个单独的中间盒处理(例如,用于不同的租户网络、用于单个租户网络内的不同的逻辑中间盒)。
[0057]基本上,切分信息是添加到受管理交换元件发送到中间盒的分组的、对于该受管理交换元件的标签。该标签指示分组应被发送到正被中间盒运行的(潜在)几个处理中的哪个。因此,当中间盒接收到分组时,该标签使得中间盒能够使用适当的一组分组处理、分析、修改等规则,以便对该分组执行其操作。一些实施例不是将切分信息添加到分组,而是对于每个中间盒实例定义受管理交换元件的不同端口,并且基本上使用这些端口来切分去往防火墙的业务(在分布式情况下),或者连接到集中式设备的不同端口以在实例之间进行区分(在集中式情况下)。
[0058]为了将切分数据作为定制物理控制平面数据的一部分发送到受管理交换元件,在一些实施例中,物理控制器添加指定特定于中间盒的切分信息的流条目。具体地,对于特定的受管理交换元件,流条目可以指定在基于连接到特定中间盒的端口的匹配将分组发送到该特定中间盒之前将对于该特定中间盒的切分标签(其可以是例如VLAN标签或类似标签)添加到分组。
[0059]在一些实施例中,附连信息(attachment information)包括使得受管理交换元件能够将分组发送到中间盒的流条目。在中间盒在与受管理交换元件相同的物理机器中的分布式中间盒的情况下,在一些实施例中,中间盒和受管理交换元件协商将通过其传送分组的软件端口抽象。在一些实施例中,受管理交换元件(或中间盒元件)将该信息向上传递到物理控制器,使得物理控制器能够使用定制物理控制平面数据中的信息(即,对于定制物理控制平面条目使用特定的软件端口)。
[0060]对于集中式中间盒,一些实施例将隧道附连数据提供给受管理交换元件和中间盒二者。在一些实施例中,中间盒将需要知道各个主机将使用其来将分组发送到中间盒的隧道封装的类型。在一些实施例中,中间盒具有接受的隧道协议(例如,STT、GRE等)的列表,并且所选协议在一个(多个)受管理交换元件与中间盒之间进行协调。隧道协议可以由用户作为中间盒配置的一部分键入,或者在不同实施例中可以由网络控制系统自动地确定。物理控制器还将将隧道封装信息添加到定制物理控制平面流条目,以便受管理交换元件适当地封装分组以发送到中间盒。
[0061]当从物理控制器接收到定制物理控制平面数据时,受管理交换元件执行定制物理控制平面数据到物理转发平面数据的转换。在一些实施例中,物理转发平面数据是存储在交换元件(物理路由器或交换机或软件交换元件)的转发表内的流条目,该交换元件实际上将所接收的分组与这些流条目匹配,并且基于这些匹配对分组执行动作。
[0062]中间盒从物理控制器接收其配置数据,并且在一些实施例中对该配置数据进行转换。将通过中间盒的控制平面API接收以特定语言表达分组处理、分析、修改等规则的中间盒配置数据。一些实施例的中间盒(分布式和/或集中式)将这些规则编译为更优化的分组分类规则。在一些实施例中,该转化(transformation)类似于物理控制平面到物理转发平面数据转换。当分组被中间盒接收时,它应用编译的优化规则,以便有效地、快速地对该分组执行其操作。
[0063]如图2所示,中间盒还将切分信息转换成内部切分绑定。在一些实施例中,中间盒使用它自己的内部标识符(不同于前置到分组的标签),以便识别中间盒内的状态(例如,活动的TCP连接、关于各个IP地址的统计等)。当接收到创建新的中间盒实例和用于该新实例的外部标识符(其在分组上使用)的指令时,一些实施例自动地创建新的中间盒实例,并为该实例分配内部标识符。另外,中间盒存储对于该实例的将外部切分标识符映射到内部切分标识符的绑定。
[0064]图3-5概念性地示出了用户将与逻辑网络内的中间盒相关的信息键入到网络控制系统、以及数据在网络控制系统内经历的转化的示例。具体地,图3示出了用户将逻辑网络拓扑305和路由策略310键入到网络控制系统中。逻辑网络拓扑305类似于图1所示的逻辑网络拓扑,其中,两个逻辑交换机A和B由逻辑路由器C连接,中间盒D挂在(hang off)路由器上。如该逻辑拓扑所示,中间盒D在端口 K处附连到逻辑路由器。
[0065]路由策略310由用户键入,以便指示逻辑路由器应将哪些分组发送到中间盒。当中间盒位于两个逻辑转发元件之间(例如,逻辑路由器与逻辑交换机之间)的逻辑线上时,通过该逻辑线发送的所有分组将自动地被转发到中间盒。然而,对于带外(out-of-band)中间盒,诸如网络拓扑305中的中间盒,逻辑路由器将仅当用户指定特定的策略时才将分组发送到中间盒。
[0066]鉴于路由器和交换机通常将根据分组的目的地地址(例如,MAC地址或IP地址)转发分组,策略路由允许转发决策基于该分组所存储的其它信息(例如,源地址、源地址和目的地地址的组合等)而被做出。例如,用户可以指定应将具有特定子网中的源IP地址或者具有与特定的一组子网不匹配的目的地IP地址的所有分组转发到中间盒。在这种特定的情况下,由用户指定的路由策略310将具有子网A中的源IP和逻辑端口 L(即,来自逻辑交换机A)的入站上下文的业务路由到中间盒。尽管源IP地址将足以将分组路由到中间盒D,但是入站端口阻止从中间盒返回的分组被再次发送到中间盒(S卩,无终止的循环)。来自中间盒的分组将具有不同的入站端口,因此,将不按照策略310路由。
[0067]如所示的,路由策略作为逻辑控制平面数据315被发送到逻辑控制器320 (例如,从输入转换控制器)。在该示例中,控制平面条目声明“将在入站端口 L处接收的具有子网A中的源IP地址的分组发送到端口 K处的中间盒D”。该L3(逻辑路由)控制平面条目将路由策略310与位于端口 K处的中间盒的网络拓扑组合。如所示的,逻辑控制器320首先将逻辑控制平面条目315变换为逻辑转发平面条目325。如所描述的,在一些实施例中,逻辑控制器320处的表映射规则引擎执行该变换。也就是说,条目315是第一数据库表记录,其经由规则引擎被映射到条目325。逻辑转发平面条目325是以匹配一动作为格式的流条目,其声明“如果源IP与{A}匹配且入站与端口 L匹配一转发到端口 K”。因为网络在逻辑平面中执行转发,所以该流条目将分组发送到逻辑路由器的逻辑端口。
[0068]接着,逻辑控制器320将逻辑转发平面条目320转换成一组通用控制平面条目330-340。第一条目330是通用物理控制平面中的转发条目,其声明“如果与L3C匹配且源IP与{A}匹配且入站与端口 L匹配一转发到端口 K”。该条目通过L3路由器将匹配添加到转发条目,确保根据该流条目对其动作的分组不是不同的逻辑网络的一部分。
[0069]另外,逻辑控制器添加入站端口整合条目335和出站端口整合条目340。因为这些条目是通用物理控制平面的一部分,所以这些条目中的物理端口信息是通用的。这些条目包括入站端口整合条目335,其将经由连接到主机中的中间盒的软件端口接收的分组映射到逻辑入站端口 K。类似地,出站端口整合条目340将转发到端口 K的分组映射到连接到中间盒的软件端口。因为该端口在不同的主机中可以具有不同的特定标识符,所以在通用控制平面层次上,使用这样的端口的通用抽象来表示它。通用物理控制平面将包括各种其它的条目,诸如入站映射和L2转发条目,该入站映射将从VMl所位于的(通用)虚拟接口接收的分组映射到L2A逻辑交换机上的入站端口,该L2转发条目将具有不在L2A逻辑交换机上的目的地的分组映射到逻辑连接到L3C逻辑路由器的出站端口。
[0070]与逻辑控制平面到逻辑转发平面一样,逻辑控制器320使用表映射规则引擎来执行第二变换。在一些实施例中,第一变换由逻辑控制器内的控制应用执行,而第二变换由虚拟化应用执行。在一些这样的实施例中,这两个应用使用相同的规则引擎。
[0071]接着,逻辑控制器320识别网络控制系统中的哪些物理控制器应接收通用物理控制平面条目。例如,对于特定虚拟机的L2层次上的入站和出站端口整合条目将仅需要被发送到作为其上托管特定的虚拟机的节点的主节点的物理控制器。在一些实施例中,对于L3路由器的条目330被发送到所有的机器,因此,逻辑控制器320识别接收用于逻辑网络的任何通用控制平面数据以接收条目330-340的所有物理控制器。另一方面,在一些情况下,可以仅在节点的子集处实现中间盒(例如,因为中间盒将仅需要对这些节点处的业务进行处理),因此,这些条目仅被导出到管理子集中的节点的物理控制器。
[0072]当接收到条目330-340时,物理控制器345 (接收这些条目的几个物理控制器中的一个)执行通用物理控制平面到定制物理控制平面变换。如所示的,条目330保持相同,因为在该流条目中不存在需要指定的信息。另一方面,入站端口整合条目335和出站端口整合条目340中的通用端口抽象被变换成中间盒所连接的MSE350的用于条目355和360的特定软件端口。
[0073]如所示的,在一些实施例中,在与中间盒协商软件端口连接之后,MSE将中间盒附连端口信息365向上传递到物理控制器345。物理控制器然后使用该信息作为其将通用物理控制平面记录变换成定制物理控制平面记录的表映射引擎的输入。物理控制器将该信息传递到MSE,其将定制物理控制平面条目变换成其转发表370中的物理转发平面条目。MSE使用这些转发表以与所接收的分组匹配并对分组执行动作(例如,转发、封装等)。尽管这里未示出,但是物理控制器产生附加流条目以在通过软件端口将分组发送到中间盒之前将切分标签添加到分组。
[0074]图4概念性地示出了与图3中相同的用户配置它们的逻辑网络的中间盒D、以及将配置数据向下传播到中间盒。如所示的,相同的逻辑网络拓扑305与中间盒规则405 —起被键入。中间盒规则405通过特定于中间盒D的实现和中间盒类型的中间盒配置接口被键入,并且指定对于中间盒将如何对分组进行处理的规则。例如,如果中间盒是防火墙,则该规则可以指定阻止或允许的特定源IP ;如果中间盒是源网络地址转换器,则该规则可以指定隐藏在特定的虚拟IP后面的一组真实IP ;如果中间盒是负荷均衡器,则该规则可以指定对于负荷均衡特定的虚拟IP后面的特定的一组服务器所使用的特定调度算法;等等。
[0075]如所示的,逻辑控制器320接收规则415 (例如,作为数据库表记录)。逻辑控制器识别应接收规则415的特定节点。在一些实施例中,这是实现中间盒D的所有节点,这些节点可以是实现网络的逻辑转发元件的所有节点。然而,在一些实施例中,逻辑控制器对用于中间盒的路由策略进行解析以确定仅实现逻辑转发元件的节点的子集需要实现中间盒(即,基于其在逻辑网络中的放置和功能)。基于所识别的节点,逻辑控制器识别它向其分发规则415的一组物理控制器。
[0076]该组物理控制器包括它向其导出规则415的示出的控制器345。如在逻辑控制器320处那样,物理控制器345不对规则415执行任何变换(或至少仅最少变换)。然而,当新的配置需要在主机上运行的中间盒应用(例如,中间盒守护进程)上启动新的虚拟中间盒时,物理控制器为中间盒实例分配切分标识符420。
[0077]物理控制器345将规则415和切分标识符420分发到与MSE350相同的主机上的中间盒425。中间盒产生新的中间盒实例,并将规则415 (与从物理控制器345接收的其它配置规则一起)变换成用于中间盒实例的编译的一组数据平面规则430。在一些实施例中,这些数据平面规则430有效地充当硬编码(hardcode)的一组转发表以在中间盒中进行分组处理。另外,中间盒425将条目添加到其切分绑定表435。对于每个实例,中间盒425创建它自己的内部标识符,并将该内部ID与由物理控制器分配的分组切分ID的绑定存储在切分绑定表435中。此外,如所示的,中间盒将已与主机中的MSE350订约(contract)以创建用于在这两个模块之间传送分组的软件端口。
[0078]图5概念性地示出了第二用户配置第二逻辑网络的中间盒H、以及将配置数据向下传播到中间盒425。如所示的,第二用户键入逻辑网络拓扑505,其在结构上类似于拓扑305,并且包括中间盒H(其是与第一用户的中间盒D相同类型的中间盒)。另外,第二用户通过与第一用户相同的中间盒配置接口来键入中间盒规则510。尽管第二用户在与第一用户不同的物理机器上键入数据,但是因为中间盒类型相同(并且使用相同的实现),所以用户通过相同接口的不同副本(copy)来键入数据。
[0079]如所示的,第二逻辑控制器515接收规则520 (例如,作为数据库表记录)。如前一示例中那样,逻辑控制器515识别应接收规则520的特定节点。在这种情况下,具有中间盒425和MSE350的节点托管用于第一网络305和第二网络505两者的虚拟机,所以管理该节点的同一物理控制器345接收规则415。
[0080]因为中间盒H需要在中间盒应用425上创建新的虚拟中间盒,所以物理控制器345为中间盒实例分配新的不同的切分标识符525。物理控制器345然后将规则520和切分标识符525分发到主机上的中间盒425。中间盒425创建新的中间盒实例,并将规则520 (与从物理控制器345接收的其它配置规则一起)变换成用于新创建的中间盒实例的新的一组数据平面规则530。
[0081]另外,中间盒425将另一条目添加到其切分绑定表435。如上所述,中间盒创建它自己的内部标识符,并将该内部ID与来自物理控制器345的分配的切分ID的绑定存储在其切分绑定表435中。这样,当从MSE350接收到分组时,中间盒425可以移除切分标识符,并将该标识符与其内部ID匹配,以便使用适当的一组中间盒规则来对分组进行处理。另夕卜,当中间盒创建新的状态(例如,用于新的TCP连接)时,它使用内部标识符来将该状态与特定的实例相关联。
[0082]以上示例涉及分布式中间盒。对于集中式中间盒,用户以相同的方式键入配置(通过针对中间盒设计的接口)。逻辑控制器仅识别管理中间盒的单个物理控制器(或者中间盒所位于的主机,如果被实现为单个虚拟机),并将配置规则导出到该物理控制器。当集中式中间盒还可以在几个网络之间被虚拟化时,物理控制器为配置分配切分标识符。
[0083]鉴于在分布式情况下,仅一个受管理交换元件将分组发送到特定的分布式中间盒元件,在集中式情况下,许多不同的MSE将需要接收切分标识符。这样,在一些实施例中,管理集中式中间盒的物理控制器将切分标识符发送到管理特定网络的逻辑控制器,其将该切分标识符(例如,以将标识符添加到去往中间盒的分组的流条目的形式)分发到可以将分组发送到中间盒的所有节点(经由它们的管理物理控制器)。在其它实施例中,逻辑控制器为中间盒分配切分标识符,并经由管理物理控制器将该信息分发到所有节点。
[0084]另外,网络控制系统在集中式中间盒与将分组发送到中间盒的各个受管理交换元件之间设置隧道。隧道信息可以由用户在输入转换控制器接口处键入,或者在了解中间盒所支持的不同隧道协议的情况下由逻辑控制器自动地产生。在变换到物理控制平面时,逻辑控制器添加隧道封装流条目,这些流条目添加隧道封装或者从分组移除隧道封装。然后可以在物理控制器层次上定制这些条目以考虑在每个不同的受管理交换元件处使用的特定端口和封装。
[0085]I1.网络控制器架构
[0086]以上节描述了包括几种不同类型的网络控制器的网络控制系统。图6示出了网络控制器(例如,逻辑控制器或物理控制器)600的示例架构。一些实施例的网络控制器使用表映射引擎来将输入的一组表中的数据映射到输出的一组表中的数据。控制器中的输入的一组表包括要被映射到逻辑转发平面(LFP)数据的逻辑控制平面(LCP)数据、要被映射到通用物理控制平面(UPCP)数据的LCP数据、和/或要被映射到定制物理控制平面(CPCP)数据的UPCP数据。该输入的一组表还可以包括要被发送到另一控制器和/或分布式中间盒实例的中间盒配置数据。如所示的,网络控制器600包括输入表615、规则引擎610、输出表620、导入器630、导出器625、转换器635以及持久数据储存器(PTD) 640。
[0087]在一些实施例中,取决于控制器600在网络控制系统中的作用,输入表615包括具有不同类型的数据的表。例如,当控制器600用作用于用户的逻辑转发元件的逻辑控制器时,输入表615包括用于逻辑转发元件的LCP数据和LFP数据。当控制器600用作物理控制器时,输入表615包括LFP数据。输入表615还包括从用户或另一控制器接收的中间盒配置数据。中间盒配置数据与识别中间盒要被整合到的逻辑交换元件的逻辑数据路径集参数相关联。
[0088]除了输入表615之外,控制应用600包括其它杂项表(未示出),规则引擎610使用这些杂项表来采集用于其表映射操作的输入。这些杂项表包括常数表,其存储对于规则引擎610执行其表映射操作所需的常数的定义值(例如,值O、用于重发的调度端口号等)。杂项表还包括函数表,其存储规则引擎610使用其来计算填充输出表625的值的函数。
[0089]规则引擎610执行指定用于将输入数据变换为输出数据的一种方式的表映射操作。每当输入表中的一个被修改(称为输入表事件)时,规则引擎就执行可以导致一个或多个输出表中的一个或多个数据元组(tuple)的修改的一组表映射操作。
[0090]在一些实施例中,规则引擎610包括事件处理器(未示出)、几个查询计划(plan)(未示出)、以及表处理器(未示出)。每个查询计划是指定当发生输入表事件时要执行的一组联合操作的一组规则。规则引擎610的事件处理器检测每个这样的事件的发生。在一些实施例中,事件处理器向输入表注册回调以通知输入表615中的记录的变化,并且当其记录中的一个已改变时,通过从输入表接收通知来检测输入表事件。
[0091]响应于检测到的输入表事件,事件处理器(I)对于该检测到的表事件选择适合的查询计划,并且(2)引导表处理器执行该查询计划。为了执行查询计划,在一些实施例中,表处理器执行由查询计划指定的联合操作,以生成表不来自一个或多个输入表和杂项表的一组或多组数据值的一个或多个记录。一些实施例的表处理器然后(I)执行选择操作以从通过联合操作生成的一个(多个)记录选择数据值的子集,并且(2)将所选的数据值的子集写入到一个或多个输出表620中。
[0092]一些实施例使用数据日志数据库语言的变型来允许应用开发者创建用于控制器的规则引擎,并从而指定控制器将逻辑数据路径集映射到受控物理交换底层结构(infrastructure)的方式。数据日志数据库语言的该变型在这里被称为nLog。像数据日志那样,nLog提供允许开发者指定当发生不同事件时要被执行的不同操作的一些声明规则和运算符。在一些实施例中,nLog提供由数据日志提供的运算符的有限子集以便提高nLog的运算速度。例如,在一些实施例中,nLog仅允许AND运算符在声明规则中的任何一个中使用。
[0093]通过nLog指定的声明规则和操作然后由nLog编译器编译成大得多的一组规则。在一些实施例中,该编译器将意在于处理事件的每个规则转换成几组数据库联合操作。更大的这组规则共同形成被称为nLog引擎的表映射规则引擎。
[0094]一些实施例将对于输入事件由规则引擎执行的第一联合操作指派为基于逻辑数据路径集参数。该指派确保当规则引擎已开始与不由控制器管理的逻辑数据路径集(即,逻辑网络)相关的一组联合操作时,规则引擎的联合操作失败并且立即终止。[0095]像输入表615那样,取决于控制器600的作用,输出表620包括具有不同类型的数据的表。当控制器600用作逻辑控制器时,输出表615包括用于逻辑交换元件的LFP数据和UPCP数据。当控制器600用作物理控制器时,输出表620包括CPCP数据。像输入表那样,输出表615还可以包括中间盒配置数据。此外,当控制器600用作物理控制器时,输出表615可以包括切分标识符。
[0096]在一些实施例中,可以将输出表620分组成几个不同的类别。例如,在一些实施例中,输出表620可以是规则引擎(RE)输入表和/或RE输出表。当输出表中的变化使规则引擎检测到需要执行查询计划的输入事件时,输出表是RE输入表。输出表还可以是产生使规则引擎执行另一查询计划的事件的RE输入表。当输出表中的变化使导出器625将该变化导出到另一控制器或MSE时,输出表是RE输出表。输出表可以是RE输入表、RE输出表、或RE输入表和RE输出表两者。
[0097]导出器625检测输出表620的RE输出表的变化。在一些实施例中,导出器向RE输出表注册回调以通知RE输出表的记录的变化。在这样的实施例中,当导出器625从RE输出表接收到其记录中的一个已改变的通知时,导出器625检测到输出表事件。
[0098]响应于检测到的输出表事件,导出器625获取修改的RE输出表中的每个修改的数据元组,并将该修改的数据元组传播到一个或多个其它控制器或者一个或多个MSE。当将输出表记录发送到另一控制器时,在一些实施例中,导出器使用单个通信的信道(例如,RPC信道)来发送记录中所含有的数据。当将RE输出表记录发送到MSE时,在一些实施例中,导出器使用两个信道。一个信道通过使用交换机控制协议(例如,OpenFlow)建立以将流条目写入到MSE的控制平面中。另一信道通过使用数据库通信协议(例如,JS0N)建立以发送配置数据(例如,端口配置、隧道信息)。
[0099]在一些实施例中,控制器600不在输出表620中保存对于控制器不负责管理的逻辑数据路径集(即,对于由其它逻辑控制器管理的逻辑网络)的数据。然而,这样的数据由转换器635转换成可以存储在PTD640中的格式,并然后被存储在PTD中。PTD640将该数据传播到一个或多个其它控制器的PTD,使得负责管理逻辑数据路径集的那些其它控制器可以对该数据进行处理。
[0100]在一些实施例中,为了数据的弹性,控制器还将存储在输出表620中的数据引入PTD0因此,在这些实施例中,控制器的PTD具有用于网络控制系统所管理的所有逻辑数据路径集的所有配置数据。也就是说,每个PTD含有所有用户的逻辑网络的配置的全局视图。
[0101]导入器630与多个不同的输入数据源接口,并且使用输入数据来修改或创建输入表610。一些实施例的导入器620从另一控制器接收输入数据。导入器620还与PTD640接口,使得通过PTD从其它控制器实例接收的数据被转换并用作输入数据以修改或创建输入表610。而且,导入器620还检测输出表630中随RE输入表的变化。
[0102]II1.分组处理
[0103]以上节详细地描述了流条目的创建、以及使用网络控制系统对逻辑网络的中间盒配置。该数据然后被用于处理和转发网络的物理实现内的业务(例如,通过将分组与受管理交换元件中的流条目匹配、将中间盒规则应用于分组等)。
[0104]图7概念性地示出了一些实施例中的被执行以将分组从第一虚拟机705发送到第二虚拟机725的动作。如所示的,VM705驻留在第一主机710中,第一主机710还包括受管理交换元件715和中间盒元件720。VM725与MSE735(以及图中未示出的中间盒元件)一起驻留在第二主机730中。在这个示例中,两个虚拟机位于由逻辑L3路由器连接的不同的逻辑L2域中。
[0105]VM705将分组发送到MSE715 (例如,通过主机710内的虚拟接口)。该分组具有与VM705相对应的源MAC和IP地址、以及与VM725相对应的目的地IP地址(以及,如果可获得,目的地MAC地址)。MSE715通过对逻辑交换机A (VM725所附连的逻辑交换机)执行L2流程开始,所述L2流程包括:将物理入站端口(虚拟接口)映射到逻辑入站端口,然后执行逻辑L2转发决策以将分组发送到逻辑路由器。该逻辑路由器也由MSE715实现,所以发送分组仅涉及分组的重发。
[0106]MSE715然后对逻辑路由器执行L3流程。在一些实施例中,转发表包括基于目的地IP地址将分组转发到VM725所附连的逻辑交换机B的流条目。然而,L3转发表还包括基于用户键入的路由策略(例如,基于源IP地址和/或逻辑入站端口或其它数据)将分组转发到中间盒的更高优先级条目。因此,L3转发决策要将分组发送到中间盒720。在通过在两个软件元件之间协商的软件端口发送分组之前,MSE715将切分标签添加到分组以识别正确的中间盒实例。在一些实施例中,MSE将该标签前置到分组头的特定字段中。
[0107]中间盒720接收分组,并移除切分标签,以便识别用于对分组进行处理的正确的中间盒实例。利用所识别的正确的实例(通过切分绑定表),中间盒执行其处理。这可以涉及:修改源IP (对于S-NAT),修改目的地IP (对于负荷均衡器),确定是丢弃还是允许分组(对于防火墙)、或其它处理。在对分组执行其处理之后,中间盒将分组送回到受管理交换元件。
[0108]在一些实施例中,中间盒将新的分组送回到MSE。因为MSE可以通过同一端口从多个中间盒实例接收分组,所以在一些实施例中,中间盒在通过软件端口发送分组之前将切分标签添加到该分组。在MSE715处,流条目将分组映射回逻辑L3路由器(S卩,连接到中间盒的L3路由器的入站端口),并然后执行L3转发。因为逻辑入站端口现在是连接到中间盒的端口,所以不执行发送到中间盒的路由策略,并且目的地IP地址导致向逻辑交换机B的转发决策。该交换机处的逻辑转发决策基于目的地MAC地址,这导致向VM725的转发决策。转发决策被用于封装分组,并且还映射到主机的通过其发送分组(在添加隧道封装之后)的特定物理端口。
[0109]分组经由隧道跨过网络,以便到达第二主机730的MSE735。在移除隧道之后,MSE735读取出站上下文,移除它,并将分组递送到VM725。这映射到主机730内的虚拟接口,使得分组到达VM725。
[0110]普通技术人员将认识到,这个示例仅是涉及分布式中间盒的许多可能的分组处理示例中的一个。如果目的地VM725与源VM705 —起位于主机710中,则分组将进入MSE715、中间盒720,返回到MSE715,并然后进入目的地VM725,而从不离开物理机器。作为另一示例,如果中间盒仅接收重复分组,则MSE715将将所接收的分组发送到第二主机730,并将重复分组发送到中间盒720,其在其处理完成之后不发送出分组。
[0111]尽管图7的示例示出了将分组发送到分布式中间盒时所涉及的处理,但是图8概念性地示出了通过位于主机的任何一个的外部的集中式中间盒发送分组。如所示的,在该图中,主机710中的VM705再次将分组发送到主机730中的VM725。当从源VM705接收分组时,MSE715执行L2流程(向连接到VM705的逻辑入站端口的入站映射,然后向逻辑L3路由器的逻辑转发)。在L3路由器处,路由策略再次将分组发送到中间盒,在这种情况下,中间盒不位于主机710内。这样,MSE将切分标签添加到分组(以与当中间盒为分布式时相同的方式),但是还将隧道封装添加到分组以便通过物理网络将分组发送到集中式中间盒805。
[0112]集中式中间盒805将切分标识符映射到其虚拟中间盒中的一个(例如,通过使用其切分绑定表),然后执行中间盒处理。在一些实施例中,集中式中间盒的示例包括防火墙(其也可以是分布式的)、入侵检测系统(其是接收重复分组的被动(passive)中间盒)、以及WAN优化器(用于在通过WAN发送出分组之前执行各种数据压缩技术)、以及其它中间盒。在执行其中间盒处理之后,中间盒805将新的分组发送到池节点。
[0113]在一些实施例中,每个集中式中间盒将其分组的全部发送到特定的池节点(或用于不同中间盒实例的不同池节点),因为中间盒可能不具有执行将分组发送到其目的地所需的逻辑转发的功能。因此,中间盒805对于隧道封装分组(并且,在一些实施例中,将切分标签添加到分组),然后将它发送到池节点810。池节点810将分组映射到正确的逻辑路由器,并使用分组的目的地IP地址来做出向目的地VM725所连接的逻辑交换机的转发决策。池节点中的逻辑L2流程将分组转发到目的地机器725,并且使用该出站上下文来封装分组。池节点810然后添加隧道封装以用于通过物理网络传输,并且将分组发送到主机730。MSE735读取该出站上下文,移除它,并将分组递送到VM725(以与图7中的方式相同的方式)。
[0114]图9是集中式中间盒905的第二示例,在该第二示例中,集中式中间盒还具有受管理交换元件910。在这种情况下,分组以与前面的图8的示例相同的方式到达集中式中间盒905,并且中间盒905执行相同的处理。然而,不是封装新的分组以通过隧道发送,中间盒处理而是将分组发送到整合的MSE910 (例如,经由与在主机内运作的那些软件端口类似的软件端口 )。MSE910执行与前面的示例的池节点相同的处理,最后做出将分组发送到VM725的逻辑L2转发决策,利用该出站上下文(以及隧道封装)来封装分组,然后通过网络将分组发送到主机730。此时,处理变得与图8中的处理相同。
[0115]IV.电子系统
[0116]上述特征和应用中的许多被实现为被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的指令集的软件处理。当这些指令被一个或多个计算或处理单元(例如,一个或多个处理器、处理器的核或其它处理单兀)执行时,它们使一个(多个)处理单元执行指令中所指示的动作。计算机可读介质的示例包括,但不限于,CD-ROM、闪存驱动器、随机存取存储器(RAM)芯片、硬盘驱动器、可擦式可编程只读存储器(EPROM)、电可擦式可编程只读存储器(EEPROM)等。计算机可读介质不包括无线地或通过有线连接传递的载波和电信号。
[0117]在本说明书中,术语“软件”意在于包括驻留在只读存储器中的固件或可以被读取到存储器中以由处理器处理的存储在磁储存器中的应用。并且,在一些实施例中,在保留截然不同的软件发明的同时,多个软件发明可以被实现为更大程序的子部分。在一些实施例中,多个软件发明也可以被实现为单独的程序。最后,一起实现这里所描述的软件发明的单独的程序的任何组合在本发明的范围内。在一些实施例中,软件程序在被安装以在一个或多个电子系统上操作时定义实行和执行软件程序的操作的一种或多种特定的机器实现。
[0118]图10概念性地示出了实现本发明的一些实施例的电子系统1000。电子系统1000可以是计算机(例如,桌面计算机、个人计算机、平板计算机等)、服务器、专用交换机、电话、PDA、或任何其它种类的电子或计算装置。这样的电子系统包括各种类型的计算机可读介质以及用于各种其它类型的计算机可读介质的接口。电子系统1000包括总线1005、一个(多个)处理单元1010、系统存储器1025、只读存储器1030、永久存储装置1035、输入装置1040以及输出装置1045。
[0119]总线1005共同表示通信地连接电子系统1000的许多内部装置的所有系统、外设和芯片组总线。例如,总线1005通信地将一个(多个)处理单元1010与只读存储器1030、系统存储器1025以及永久存储装置1035连接。
[0120]从这些各种存储器单元,一个(多个)处理单元1010检索执行的指令和处理的数据以便执行本发明的处理。在不同的实施例中,一个(多个)处理单元可以是单个处理器或多核处理器。
[0121]只读存储器(ROM) 1030存储处理单元1010和电子系统的其它模块所需的静态数据和指令。另一方面,永久存储装置1035是读写存储器装置。该装置是即使当电子系统1000关闭时也存储指令和数据的非易失性存储器单元。本发明的一些实施例使用大容量存储装置(诸如磁盘或光盘以及其相应的盘驱动器)作为永久存储装置1035。
[0122]其它实施例使用可移动存储装置(诸如软盘、闪存装置等以及其相应的驱动器)作为永久存储装置。像永久存储装置1035那样,系统存储器1025是读写存储器装置。然而,与存储装置1035不同,系统存储器1025是易失性读写存储器,诸如随机存取存储器。系统存储器1025存储处理器在运行时所需的指令和数据中的一些。在一些实施例中,本发明的处理存储在系统存储器1025、永久存储装置1035和/或只读存储器1030中。从这些各种存储器单元,一个(多个)处理单元1010检索执行的指令和处理的数据以便执行一些实施例的处理。
[0123]总线1005还连接到输入装置1040和输出装置1045。输入装置1040使得用户能够将信息和选择命令传送到电子系统。输入装置1040包括字母数字键盘和定点装置(也称为“光标控制装置”)、照相机(例如,网络摄像机)、麦克风或用于接收语音命令的类似装置等。输出装置1045显示由电子系统产生的图像或以其它方式输出数据。输出装置1045包括打印机和显示装置,诸如阴极射线管(CRT)或液晶显示器(LCD)、以及扬声器或类似的音频输出装置。一些实施例包括诸如用作输入装置和输出装置两者的触摸屏的装置。
[0124]最后,如图10所示,总线1005还通过网络适配器(未示出)将电子系统1000耦合到网络1065。以这种方式,计算机可以是以下网络的一部分:计算机网络(诸如局域网(“LAN”))、广域网(“WAN”)、或内联网、或诸如互联网的网络的网络。电子系统1000的任何或所有组件可以与本发明结合使用。
[0125]一些实施例包括电子组件,诸如将计算机程序指令存储在机器可读或计算机可读介质(可替代地被称为计算机可读存储介质、机器可读介质或机器可读存储介质)中的储存器、存储器和微处理器。这样的计算机可读介质的一些示例包括RAM、ROM、只读紧凑盘(⑶-ROM)、可记录紧凑盘(⑶-R)、可重写紧凑盘(⑶-RW)、只读数字多功能盘(例如,DVD-ROM、双层 DVD-ROM)、各种可记录 / 可重写 DVD (例如,DVD-RAM、DVD-RW、DVD+RW 等)、闪存(例如,SD卡、迷你SD卡、微SD卡等)、磁和/或固态硬盘驱动器、只读和可记录
Blue-Ray?盘、超密度光盘、任何其它光或磁介质、以及软盘。计算机可读介质可以存储
可由至少一个处理器单元执行并且包括用于执行各种操作的多个指令集的计算机程序。计算机程序或计算机代码的示例包括诸如由编译器生成的机器代码、以及包括由计算机、电子组件或微处理器通过使用解释器而执行的更高级代码的文件。
[0126]尽管以上讨论主要指的是执行软件的微处理器或多核处理器,但是一些实施例由一个或多个集成电路(诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA))执行。在一些实施例中,这样的集成电路执行存储在电路本身上的指令。另外,一些实施例执行存储在可编程逻辑器件(PLD)、ROM或RAM器件中的软件。
[0127]如在本申请的本说明书和任何权利要求中所使用的,术语“计算机”、“服务器”、“处理器”和“存储器”全部指的是电子或其它技术装置。这些术语排除人或人的群组。为了本说明书的目的,术语显示器或显示意指在电子装置上显示。如在本申请的本说明书和任何权利要求中所使用的,术语“计算机可读介质”和“机器可读介质”完全限于以计算机可读的形式存储信息的有形的物理对象。这些术语排除任何无线信号、有线下载信号以及任何其它短暂信号。
[0128]尽管已参照许多特定的细节描述了本发明,但是本领域普通技术人员将认识到,在不脱离本发明的精神的情况下,可以以其它特定的形式体现本发明。因此,本领域普通技术人员将理解,本发明不受前述说明性的细节限制,而是由所附的权利要求限定。
【权利要求】
1.一种用于在包括一组节点的托管系统中配置逻辑中间盒的方法,逻辑网络的逻辑中间盒部分包括连接一组终端机的一组逻辑转发元件,所述方法包括: 接收用于所述逻辑中间盒的一组配置数据; 使用所存储的描述所述终端机的物理位置的一组表来识别实现所述逻辑中间盒的一组节点;以及 提供用于分发到所识别的节点的逻辑中间盒配置。
2.根据权利要求1所述的方法,其中,所述配置数据包括一组数据库表记录。
3.根据权利要求2所述的方法,其中,所述数据库表记录和所存储的一组表被用作所述识别的输入。
4.根据权利要求1所述的方法,其中,所述一组配置数据是通过显露给用户的应用程序接口来接收的。
5.根据权利要求1所述的方法,还包括: 接收描述所述一组逻辑转发元件的逻辑控制平面数据; 从所述逻辑控制平面数据产生逻辑转发平面数据,所述逻辑转发平面数据包括用于在所述逻辑网络内转发分组的一组流条目;以及 从所述逻辑转发平面数据产生物理控制平面数据,所述物理控制平面数据包括用于转发在实现所述逻辑转发元件的物理转发元件处接收的物理分组的一组流条目。
6.根据权利要求5所述的方法,其中,所述逻辑控制平面数据包括用于将匹配特定标准的分组转发到所述逻辑中间盒的路由策略。
7.根据权利要求6所述的方法,其中,所述逻辑转发平面数据包括用于逻辑路由器的流条目,该用于逻辑路由器的流条目指定将匹配所述特定标准的分组路由到所述逻辑中间盒所连接的逻辑路由器的逻辑端口。
8.根据权利要求7所述的方法,其中,所述物理控制平面数据包括流条目,其指定将具有所述逻辑端口的逻辑出站上下文的分组映射到所述逻辑中间盒的物理实现所连接的物理端口。
9.根据权利要求5所述的方法,其中,所述所识别的一组节点是第一组节点,其中,所述物理控制平面数据是通用物理控制平面数据,其中,所述方法还包括: 使用所述所存储的描述所述终端机的物理位置的一组表来识别在其实现所述逻辑转发元件的第二组节点;以及 提供用于分发到所识别的节点的物理控制平面数据。
10.根据权利要求9所述的方法,其中,所述第一组节点和第二组节点是相同的。
11.根据权利要求9所述的方法,其中,所述第一组节点是所述第二组节点的子集。
12.—种存储用于供至少一个处理单元执行的网络控制器应用的机器可读介质,所述网络控制器应用包括用于以下操作的指令集: 接收用于分发到所述网络控制器应用所耦合的物理主机上的中间盒元件的逻辑中间盒配置; 自动地产生用于与所述中间盒元件处的逻辑中间盒配置相关联的标识符;以及 将所述逻辑中间盒配置和所产生的标识符分发到所述物理主机上的中间盒元件。
13.根据权利要求12所述的机器可读介质,其中,所述网络控制器应用用于供第一网络控制器的至少一个处理单元执行,其中,所述逻辑中间盒配置是从第二网络控制器接收的。
14.根据权利要求12所述的机器可读介质,其中,所述网络控制器应用还包括用于以下操作的指令集: 接收用于分发到所述物理主机上的中间盒元件的第二逻辑中间盒配置; 自动地产生用于与所述中间盒元件处的第二逻辑中间盒配置相关联的不同的第二标识符;以及 将所述第二逻辑中间盒配置和第二标识符分发到所述物理主机上的中间盒元件。
15.根据权利要求14所述的机器可读介质,其中,所述第一逻辑中间盒配置和第二逻辑中间盒配置用于同一逻辑网络中的逻辑中间盒。
16.根据权利要求14所述的机器可读介质,其中,所述第一逻辑中间盒配置和第二逻辑中间盒配置用于不同逻辑网络中的逻辑中间盒。
17.根据权利要求12所述的机器可读介质,其中,所述网络控制器应用还包括用于以下操作的指令集: 接收用于分发到所述物理主机上的第二中间盒元件的第二逻辑中间盒配置; 自动地产生用于与所述第二中间盒元件处的第二逻辑中间盒配置相关联的不同的第二标识符;以及 将所述第二逻辑中间盒配置和第二标识符分发到所述物理主机上的第二中间盒元件。
18.根据权利要求12所述的机器可读介质,其中,所述网络控制器应用还包括用于将所产生的标识符分发到所述物理主机上的在所述物理主机内耦合到所述中间盒元件的受管理交换元件的指令集。
19.一种用于将逻辑中间盒配置分发到一组主机处的一组分布式中间盒元件的分层网络控制系统,所述网络控制系统包括: 第一网络控制器,所述第一网络控制器在第一分层层次上,用于基于网络状态信息来识别用于接收所述逻辑中间盒配置的多个主机; 多个附加网络控制器,所述多个附加网络控制器在第二分层层次上,每个附加网络控制器管理所识别的主机中的一个或多个,所述附加网络控制器中的每一个用于从第一网络控制器接收所述逻辑中间盒配置并且将所述配置分发到所识别的主机处的分布式中间盒元件。
20.根据权利要求19所述的分层网络控制系统,还包括在第二分层层次上的第二多个附加网络控制器,每个附加网络控制器管理不包括所识别的多个主机中的任何一个的一组主机,其中,所述第二多个附加网络控制器不用于从第一网络控制器接收逻辑中间盒配置。
21.根据权利要求19所述的分层网络控制系统,还包括: 第二网络控制器,所述第二网络控制器在第一分层层次上,用于接收第二逻辑中间盒配置并且基于附加网络状态信息来识别用于接收第二逻辑中间盒配置的第二多个主机; 第二多个附加网络控制器,所述第二多个附加网络控制器在第二分层层次上,每个附加网络控制器管理第二多个所识别的主机中的一个或多个,所述附加网络控制器中的每一个用于从第二网络控制器接收第二逻辑中间盒配置并且将第二配置分发到所述第二多个所识别的主机处的分布式中间盒元件。
22.根据权利要求21所述的分层网络控制系统,其中,特定网络控制器是第一多个网络控制器和第二多个网络控制器的一部分。
23.根据权利要求22所述的分层网络控制系统,其中,所述特定网络控制器用于将不同的标识符分 配给不同的中间盒配置并且将所述标识符分发到其受管理主机处的分布式中间盒元件。
【文档编号】G06F15/177GK103917967SQ201280055041
【公开日】2014年7月9日 申请日期:2012年11月15日 优先权日:2011年11月15日
【发明者】张荣华, T·考珀内恩, P·萨卡尔, A·帕德马纳班, M·卡萨多 申请人:Nicira股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1