网络控制系统到公共云中的扩展的制作方法

文档序号:30792862发布日期:2022-07-16 10:52阅读:87来源:国知局
网络控制系统到公共云中的扩展的制作方法
网络控制系统到公共云中的扩展
1.本技术是申请日为2017年1月17日、申请号为201780063156.6、发明名称为“网络控制系统到公共云中的扩展”的发明专利申请的分案申请。
技术领域
2.本发明公开通常涉及网络控制系统到公共云中的扩展。


背景技术:

3.公共数据中心设置包括托管虚拟机或其它数据计算节点的许多服务器,其中服务器的虚拟化软件中的转发元件(例如,软件虚拟交换机)处理这些数据计算节点的分组转发和网络安全性。在私有数据中心(例如,企业网络)中,存在允许数据中心的所有者控制主机服务器的管理程序从而实现其自己的安全性和分组转发规则的技术。
4.公共数据中心为公司提供了将其网络扩展或移出其自己的私有数据中心的能力,从而降低物理服务器以及它们所需的常规维护的成本和其它负担。但是,公共数据中心拥有其自己的所有者来控制虚拟化软件,并且可能没有强健或透明的安全功能。由此,由于无法实施直接的安全控制,一些公司对将其网络迁移到这些公共数据中心犹豫不决。


技术实现要素:

5.本发明的一些实施例提供了一种具有管理逻辑网络的能力的网络管理和控制系统,该逻辑网络跨越(i)私有数据中心,其中该系统可以访问和控制转发元件,以及(ii)一个或多个公共多租户数据中心,其中该系统不能访问转发元件。在一些实施例的私有数据中心中,网络管理和控制系统(本文称为网络控制系统)管理在主机机器的虚拟化软件(例如,管理程序)中执行的软件转发元件,因此可以实现管理员期望的网络转发和安全策略。但是,在公共数据中心中,网络控制系统不能访问虚拟化软件,因此可能无法对在公共数据中心中操作的工作负载实现相同的联网策略。
6.一些实施例使用分层网络控制系统来将私有数据中心管理和控制扩展到公共数据中心中。具体而言,一些实施例在公共数据中心中操作的虚拟机(vm)或其它数据计算节点(dcn)内部操作网络控制器和受管理转发元件,以便为发送到这些dcn和从这些dcn发送的分组强制执行网络安全性和转发规则。在一些实施例中,(一个或多个)公共数据中心向租户提供租户对其具有控制的一个或多个隔离的资源(即,数据计算节点)集合,也称为虚拟私有云(vpc)。对于一些云提供商,租户可以定义具有网络子网和路由表的虚拟网络,和/或将他们的dcn置于由公共云提供商定义的安全组中。
7.为了实现分层网络控制系统,一些实施例在每个vpc中的第一dcn(或者作为每个vpc中的主用-备用网关控制器的dcn集合)中实现第一级网络控制器(称为网关控制器)。在一些实施例中,这些网关dcn还操作网关数据路径,以便与相同数据中心的其它vpc或其它数据中心(或者私有数据中心或者另一个公共数据中心)中的逻辑网络通信,以及与外部网络通信。在每个工作负载dcn(即,执行工作负载应用的dcn,诸如web服务器、应用服务器、数
据库服务器等)内,受管理转发元件(mfe)被插入到dcn的工作负载应用和网络接口之间的数据路径中。此外,本地控制代理在每个工作负载dcn上执行,以配置它们各自的mfe。
8.在私有数据中心中(或在单独的vpc中)操作的中央控制平面集群基于规则的跨度将配置规则分发到在私有数据中心中的主机机器上操作的本地控制器(即,将需要基于规则的类型和规则适用的逻辑端口实现规则的mfe)。为了将这些规则分发给在公共数据中心vpc中操作的控制系统,中央控制器将与vpc中的dcn对应的所有逻辑端口视为连接到由网关控制器控制的mfe。由此,所有这些规则都由中央控制器推送到网关控制器。
9.然后,网关控制器进行其自己的单独跨度计算,以便识别vpc中需要从中央控制器接收的每个规则的mfe,并将这些规则分发给操作以控制mfe的本地控制代理。本地控制代理在接收到规则后,将规则转换为特定于在其dcn上操作的mfe的格式。例如,一些实施例使用基于流的mfe,诸如在公共数据中心vpc中的dcn上执行的open vswitch(ovs)实例,在这种情况下,本地控制代理将规则转换为ovs实例的流条目和/或其它配置数据。
10.在一些实施例中,网关控制器还负责管理其vpc内的覆盖隧道。因为中央控制器将整个vpc视为单个mfe,因此它仅为网关控制器节点(即,在网关dcn上配置的数据路径)配置隧道端点。但是,对于在vpc内的工作负载应用之间(以及工作负载应用和网关数据路径之间)的通信,中央控制器不配置覆盖。由此,网关控制器通过为每个mfe配置mac到虚拟隧道端点(vtep)ip绑定来建立这些dcn之间的隧道(例如,stt、geneve等隧道)。该信息还被传递到工作负载dcn上的各种本地控制代理,使得每个mfe都能够将分组隧道传输到同一vpc中的其它mfe。
11.如上所述,网关dcn包括网关控制器和数据路径。在一些实施例中,数据路径作为网关操作,以将其vpc中的工作负载连接到(i)连接到在其它vpc和其它数据中心中操作的逻辑网络的工作负载,以及(ii)外部网络。在一些实施例中,网关dcn包括三个网络接口:从外部网络接收分组和向外部网络发送分组(经由云提供商互联网网关)的上行链路接口,具有本地vpc子网上的地址的vtep接口,以及专用于控制流量的控制接口。除了数据路径和网关控制器之外,一些实施例可以包括用于处理用于保护vpc内的mfe(在一些情况下,包括网关数据路径)的流量的加密密钥的分布式网络加密(dne)管理器、用于处理vpc内的dhcp的dhcp模块,以及使得管理平面和网关控制器能够与公共云管理系统交互的公共云管理器(pcm)。
12.例如,pcm具有轮询公共云管理器以识别新的dcn(包括与dcn相关联的指示dcn将属于的逻辑交换机和/或安全组的标签)的能力。此外,一些实施例的pcm可以在接收到dcn已被破坏的通知后与公共云管理系统交互以隔离dcn。例如,如果黑客获得对执行mfe的dcn的访问,那么该黑客可以(i)卸载本地控制代理和/或mfe,(ii)创建不通过mfe发送流量的新接口,(iii)断开现有接口与mfe的连接,或(iv)通过断开mfe与本地控制代理的连接直接重新编程mfe。如果接口被编辑,或者控制代理与mfe断开连接,那么代理将检测到变化并向网关控制器通知该问题。如果代理本身被移除,那么网关控制器将检测到与代理的连接丢失并识别出dcn被破坏。在任一种情况下,网关控制器都向pcm通知受破坏的dcn。pcm具有与公共云管理系统交互以将受破坏的dcn置于隔离安全组中的能力,使得公共云转发元件(例如,在主机机器的管理程序中)可以阻止来自受破坏的dcn的流量。
13.分层网络控制系统使得能够实现从私有数据中心延伸到公共数据中心中的逻辑
网络。在不同的实施例中,可以跨数据中心以不同的方式实现不同的逻辑拓扑。例如,一些实施例将附接到给定逻辑交换机的dcn约束到私有数据中心中的单个vpc,或者同一数据中心内进行对等(peered)以便类似于单个vpc操作的多个vpc(虽然该逻辑交换机可以通过逻辑路由器逻辑上连接到在另一个vpc或另一个数据中心中实现的逻辑交换机)。在其它实施例中,单个逻辑交换机可以在同一公共数据中心的多个非对等vpc、多个公共数据中心的多个vpc和/或公共和私有数据中心两者中具有dcn。
14.虽然以上描述了控制平面到vpc的扩展和使得能够进行这种扩展的网关控制器,但是在一些实施例中vpc内的这些各种组件必须被初始配置并且带有内置(on-board)管理平面和中央控制平面。在一些实施例中,公共云中的网络和控制系统的初始设置由操作管理器(也称为生命周期管理器或lcm)管理。网络管理员与该lcm交互(例如,经由用户界面),其使用网络管理员的公共云凭证来访问lcm并初始地配置vpc中的各种vm。
15.lcm识别管理员想要在其中实现逻辑网络的每个vpc,并自动实例化这些vpc中的每一个中的网关dcn(或网关dcn的主用-备用集合)。在一些实施例中,网关dcn被提供为针对特定公共云提供商格式化的预先打包的实例。此外,一些实施例的lcm从管理员接收关于vpc中存在的哪些dcn应由网络控制系统管理的信息,并将关于这些dcn的逻辑交换机和安全组信息提供给管理平面。
16.作为初始配置的一部分,网关控制器需要被管理平面认证(并且验证管理平面应用为有效),并且类似地被网关控制器与之交互的(一个或多个)中央控制器应用认证。此外,在其中一个工作负载dcn中操作的每个本地控制代理以类似于配置规则分发的分层方式向网关控制器验证自己。
17.以上段落中的描述假设控制器在其中操作的vm已经存在。在一些情况下,用户(例如,非管理员用户)将需要在公共数据中心vpc中创建新的工作负载dcn,并确保dcn上的mfe被供应有正确的配置规则集合。这可能在一天中的任何时间发生,因此理想情况下不应要求网络管理员在那时进行任何工作或授权。由此,在一些实施例中,网络控制系统被配置为自动向mfe供应这些新的工作负载dcn。
18.在启动dcn之前,用户将已从管理员接收工作负载将连接到的逻辑交换机(和/或安全组)的令牌以及要在实例上安装的控制代理程序包(package)。在设置dcn时,用户将逻辑交换机和/或安全组的令牌添加为实例上的标签。在一些实施例中,当用户通过云提供商用户界面创建实例时,该界面包括向vm添加标签的能力,这些标签作为关于vm实例的数据被存储在公共云数据储存库中。例如,标签可以被标记为“token-ls1”和“token-sg1”,以指示vm应该属于安全组sg1并且附接到逻辑交换机ls1。这些标签可以经由任何带外机制(例如,口头地、经由电子邮件或消息传递等)从网络控制系统管理员提供给用户。
19.一些实施例的pcm定期轮询该数据储存库以识别在其vpc中创建的任何新dcn。响应于确定在vpc中创建了新的dcn,pcm采取若干动作。pcm将新的dcn添加到管理平面的库存(inventory)中,并将dcn的所有各种公共云提供商属性(vm标识符、vpc标识符、接口id等)作为标签添加在dcn的管理平面中创建的对象上。这使得网络管理员能够在管理平面库存中查看dcn及其属性。pcm还使用云提供商api读取逻辑交换机和/或安全组标签。pcm使用逻辑交换机标签来确定要在其上创建新端口的逻辑交换机。pcm创建新的端口并将dcn的接口附接到该逻辑端口(例如,使用来自云提供商的接口标识符)。此外,pcm读取接口的ip和mac
地址,并将它们配置为新创建的逻辑端口上的mac/ip绑定。一些实施例还启用任何必要的特征,使得如果需要可以为逻辑端口设置dfw规则。此外,pcm基于安全组标签识别新dcn的安全组,并经由管理平面将逻辑端口添加到该安全组中。
20.如上所述,一些实施例的mfe是基于流的mfe,诸如ovs实例。在不同的实施例中,这些ovs实例可以以非覆盖模式、使用单独的内部和外部ip地址的第一覆盖模式、或者针对其vtep和内部工作负载应用使用相同ip地址的第二覆盖模式来建立。在所有三种情况下,在ovs实例中设置了两个桥接器,但是对于三个选项用三种不同的方式设置。工作负载应用连接到集成桥接器上的内部端口,该集成桥接器执行网络安全和/或逻辑转发操作。物理接口(pif)桥接器连接到mfe在其上操作的dcn的虚拟网络接口控制器(vnic)。
21.在一些实施例的非覆盖模式中,工作负载应用的ip地址与面向云提供商网络(在本文称为底层网络)的vm网络接口的ip地址(由云提供商分配)相同。在这种情况下,mfe不执行任何分组转发,而是被配置为执行微分段和/或网络安全处理,诸如分布式防火墙规则处理。该网络安全处理由集成桥接器执行,并且分组默认经由两个桥接器之间的接插(patch)端口被发送到pif桥接器。
22.在其它实施例中,mfe被配置为使得工作负载应用连接到的内部接口(例如,在集成桥接器上)具有与面向外的接口(在pif桥接器上)不同的ip地址。在这种情况下,除了任何网络安全或其它处理之外,mfe(例如,集成桥接器)还根据逻辑网络配置执行分组转发。分组由工作负载应用使用映射到工作负载dcn连接到的逻辑交换机端口的第一内部ip地址发送,然后使用由云提供商分配的ip地址(即vnic的ip地址)进行封装。在一些实施例中,集成桥接器执行封装,并通过第二网络堆栈将分组发送到pif桥接器上的vtep。
23.最后,网络管理员可能希望为已经存在的工作负载保留相同的ip地址,但是利用逻辑网络进行分组处理、隧道传输等。在第三种情况下,mfe在与应用的工作负载vm单独的命名空间中进行配置。这使得工作负载应用能够连接到具有其现有ip地址的命名空间的接口,然后使用veth对将该接口连接到其单独命名空间中的mfe,该命名空间对其vtep使用相同的ip地址。在一些实施例中,对工作负载应用和mfe使用单独的命名空间允许单独的网络堆栈使用相同的ip地址。
24.上述覆盖封装的使用主要是针对公共云vpc中的工作负载dcn之间的东西向流量。但是,许多逻辑网络包括外部客户端应该可以访问的工作负载。例如,典型的三层(web服务器、应用服务器、数据库服务器)设置将至少要求web服务器能够经由互联网与客户端连接。由于vpc子网通常是可以由不同租户的许多vpc重用(和在各种不同的数据中心处重用)的私有ip地址,因此通常使用网络地址转换(nat)来修改从内部使用的私有ip地址到公共ip地址的传出分组的源ip地址(以及对应地,传入分组的目的地ip地址)。
25.此外,当逻辑网络至少部分地在公共数据中心中实现时,到公共ip地址的实际转换可能需要由云提供商的互联网网关执行,而不是由网络控制系统管理的任何mfe执行。但是,由于云提供商将不会分配在覆盖模式中使用的内部ip地址,因此不应使用这些内部地址向提供商的网关发送数据分组。而是,一些实施例的mfe执行其自己的nat以将内部ip地址转换为向云提供商注册的地址。
26.不同的实施例可以以不同的方式实现这种地址转换。一些实施例将nat应用为网关数据路径的一部分。在这种情况下,北向分组从源mfe隧道传输到网关,其中ip地址以一
致的方式转换为辅助ip地址。一些实施例使用nat表,该表将每个内部工作负载ip地址映射到向云提供商注册的辅助ip地址。然后,所有这些辅助ip地址都与网关的北向接口相关联,并且云提供商的网关执行从这些辅助ip地址到公共ip地址的转换。在集中式的情况下,也可以在网关处应用其它网络服务,诸如服务链(向第三方服务装置发出数据分组以进行各种中间盒处理)、入侵检测、南北向防火墙、vpn、审计日志记录等。此外,当网关执行nat时,也需要在网关中执行任何负载平衡(云提供商可能无法在这种情况下执行负载平衡,因为就提供商的网关而言,所有流量都被发送到网关接口)。
27.其它实施例在源dcn(传入流量的目的地dcn)上操作的mfe中以分布式方式执行第一级nat。在这种情况下,对于传出分组,源dcn处的mfe执行地址转换并将转换后的分组直接发送到云提供商网关,从而绕过网关。由此,源mfe区分它使用其vtep ip封装的覆盖流量和它未封装地发送到云提供商底层网络上(在一些实施例中,使用与vtep相同的ip地址)的南北向流量。由于该流量(在两个方向上)不通过网关,因此在工作负载vm上操作的mfe处执行任何服务链、入侵检测、南北向防火墙规则、日志记录等。
28.对于负载平衡,分布式内部nat允许使用云提供商的现有负载平衡特征。可以使用单个公共ip地址(或仅少量地址),而不是使用多个公共ip地址,并且所有传入连接都被发送到该地址。云提供商的互联网网关(或特殊的负载平衡装置)执行负载平衡,以便以平衡的方式跨不同的工作负载vm(其仍然需要执行它们自己的内部nat)分发这些连接。
29.对于在逻辑网络工作负载之间发送的分组,一些实施例使得能够使用由网络控制系统管理的分布式网络加密(dne)。在一些实施例中,用于公共数据中心中的dcn的dne仅在在相同vpc内或在对等vpc内操作的dcn之间可用,而在其它实施例中,dne在附接到逻辑网络的逻辑端口的任何两个dcn之间(包括在工作负载dcn和网关之间)可用。
30.在一些实施例中,分布式网络加密允许网络控制系统管理员为分组设置加密和/或完整性规则。这些规则定义(i)规则将应用于哪些分组以及(ii)那些分组的加密和/或完整性要求。一些实施例按照分组的源和目的地定义规则应用于的分组。可以基于ip地址或地址范围、mac地址、逻辑交换机端口、虚拟接口、l4端口号和范围等(包括其组合)来定义这些源和目的地端点。
31.此外,每个规则指定满足源和目的地特性的分组是否需要加密(以及鉴权(authentication))、仅需要鉴权、或需要明文(其可以用作设置以便允许广播分组)。加密需要使用密钥来加密分组的一部分或全部(例如,整个内部分组、仅l4和更高层的报头、隧道传输的分组的整个内部和外部分组等),而鉴权不加密分组但是使用密钥来创建鉴权数据,目的地可以使用该鉴权数据来验证分组在传输过程中未被篡改。
32.为了使网络中的mfe实现dne规则,网络控制系统需要以安全的方式将密钥分发给mfe。一些实施例使用网关dcn中的dne模块,以便与网络控制系统的dne方面一起传送,并将密钥分发给在其vpc中的工作负载dcn中操作的mfe。对于需要使用加密密钥的每个规则,dne模块从中央控制器接收密钥的票据(ticket)。dne模块使用票据从安全密钥管理存储装置请求密钥,该存储装置验证票据是真实的并返回主密钥。一些实施例的dne模块计算由规则指定的每个连接(例如,vpc中的两个工作负载之间的单个连接、vpc内的多个连接、工作负载和网关之间的连接等)的会话密钥并将这些密钥分发给适当的本地控制代理。
33.前述发明内容旨在用作对本发明的一些实施例的简要介绍。它并不意味着是对本
文件中公开的所有发明性主题的介绍或概述。下面的具体实施方式和具体实施方式中引用的附图将进一步描述发明内容中描述的实施例以及其它实施例。因此,为了理解本文档描述的所有实施例,需要对发明内容、具体实施方式和附图进行全面回顾。此外,所要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制,而是由所附权利要求限定,因为在不脱离本主题的精神的情况下,所要求保护的主题可以以其它具体形式实施。
附图说明
34.在所附权利要求中阐述了本发明的新颖特征。但是,出于解释的目的,在以下各图中阐述了本发明的若干实施例。
35.图1概念性地图示了管理私有数据中心和公共数据中心中的转发元件的一些实施例的分层网络控制系统。
36.图2概念性地图示了通过图1的网络控制系统的控制数据流。
37.图3概念性地图示了将配置数据分发到位于私有和公共数据中心两者中的受管理转发元件的一些实施例的处理。
38.图4概念性地图示了用于将逻辑网络配置数据分发到vpc内的mfe的一些实施例的处理。
39.图5概念性地图示了用于完全在公共数据中心内实现的逻辑网络的网络控制系统的示例。
40.图6概念性地图示了将逻辑网络扩展到多个公共数据中心中的一些实施例的网络控制系统。
41.图7概念性地图示了一些实施例的网关vm的体系架构。
42.图8概念性地图示了初始地将管理私有数据中心的网络控制系统扩展到公共数据中心的一个或多个vpc中的一些实施例的处理。
43.图9概念性地图示了用于利用管理平面和控制平面来认证网关的一些实施例的处理。
44.图10概念性地图示了由在公共云vpc中的dcn上操作的本地控制代理执行,以向该vpc的网关控制器认证自己的一些实施例的处理。
45.图11概念性地图示了当在现有受管理的vpc中创建新工作负载vm时一些实施例的网络控制系统中的数据流。
46.图12概念性地图示了一些实施例的逻辑拓扑,管理员可能将该拓扑输入到管理平面中。
47.图13图示了如在单个公共云提供商的单个vpc内实现的附接到逻辑交换机的四个vm的示例。
48.图14图示了其中逻辑交换机跨单个数据中心(即,同一云提供商的数据中心)内的两个单独的vpc延伸的示例。
49.图15图示了其中逻辑交换机跨位于两个完全不同的云提供商的数据中心中的vpc延伸的示例。
50.图16概念性地图示了具有以非覆盖模式配置的受管理转发元件的vm。
51.图17图示了由在非覆盖模式下操作的mfe通过vpc进行分组处理的示例,其示出了
第一工作负载应用将分组发送到同一vpc上的另一个工作负载应用。
52.图18概念性地图示了具有以覆盖模式配置的受管理转发元件的vm,其具有不同的ip地址用于(i)由应用使用的内部端口以及(ii)封装要发送到同一vpc上的其它vm的分组的vtep。
53.图19图示了由在覆盖模式下操作的mfe通过vpc进行分组处理的示例,具体而言示出了第一工作负载应用将分组发送到同一vpc上的另一个工作负载应用。
54.图20图示了对于发送到vpc外部的逻辑网络目的地的分组,由以覆盖模式的mfe通过vpc进行分组处理的示例。
55.图21概念性地图示了具有以覆盖模式配置但是使用相同ip地址用于内部端口的受管理转发元件的vm。
56.图22概念性地图示了对于从工作负载应用发送到逻辑网络外部的目的地的北向分组通过云提供商网络进行分组处理的示例。
57.图23图示了当传入分组从外部源发送到与租户的vpc相关联的公共ip地址之一时公共云网关内的处理。
58.图24图示了对于从与图22中的工作负载应用相同的vpc上的不同工作负载应用发送的分组通过图22的云提供商网络的分组处理。
59.图25概念性地图示了具有以具有不同ip地址的覆盖模式配置的、还针对南北流量执行nat的受管理转发元件的vm。
60.图26和27图示了在分布式nat设置中对于北向和南向流量通过云提供商网络进行分组处理的示例。
61.图28概念性地图示了当在mfe在覆盖模式下操作并且被配置为执行分布式nat时由该mfe对工作负载vm执行以处理传出分组的处理。
62.图29图示了在公共云网关中使用负载平衡以及由在工作负载vm中操作的mfe进行的分布式nat。
63.图30概念性地图示了一些实施例的dne规则和密钥分发系统,以及在公共数据中心中的mfe上实现dne规则的数据流。
64.图31概念性地图示了用于管理公共数据中心vpc的网关中的dne密钥的一些实施例的处理。
65.图32概念性地图示了由pcm执行以处置受破坏的vm的一些实施例的处理。
66.图33和34图示了识别其公共数据中心vpc中受破坏的vm的网关控制器以及将受破坏的vm与公共数据中心提供商隔离的其pcm的示例。
67.图35概念性地图示了用于实现本发明的一些实施例的电子系统。
具体实施方式
68.在本发明的以下详细描述中,阐述和描述了本发明的许多细节、示例和实施例。但是,应该理解的是,本发明不限于所阐述的实施例,并且可以在没有所讨论的一些具体细节和示例的情况下实践本发明。
69.本发明的一些实施例提供了一种具有管理逻辑网络的能力的网络管理和控制系统,该逻辑网络跨越(i)私有数据中心,其中该系统可以访问和控制转发元件,以及(ii)一
个或多个公共多租户数据中心,其中该系统不能访问转发元件。在一些实施例的私有数据中心中,网络管理和控制系统(本文称为网络控制系统)管理在主机机器的虚拟化软件(例如,管理程序)中执行的软件转发元件,因此可以实现管理员期望的网络转发和安全策略。但是,在公共数据中心中,网络控制系统不能访问虚拟化软件,因此可能无法对在公共数据中心中操作的工作负载实现相同的联网策略。
70.一些实施例使用分层网络控制系统来将私有数据中心管理和控制扩展到公共数据中心中。具体而言,一些实施例在公共数据中心中操作的虚拟机(vm)或其它数据计算节点(dcn)内部操作网络控制器和受管理转发元件,以便为发送到这些dcn和从这些dcn发送的分组强制执行网络安全性和转发规则。在一些实施例中,(一个或多个)公共数据中心向租户提供租户对其具有控制的一个或多个隔离的资源(即,数据计算节点)集合,也称为虚拟私有云(vpc)。对于一些云提供商,租户可以定义具有网络子网和路由表的虚拟网络,和/或将他们的dcn置于由公共云提供商定义的安全组中。
71.为了实现分层网络控制系统,一些实施例在每个vpc中的第一dcn(或者作为每个vpc中的主用-备用网关控制器的dcn集合)中实现第一级网络控制器(称为网关控制器)。在一些实施例中,这些网关dcn还操作网关数据路径,以便与相同数据中心的其它vpc或其它数据中心(或者私有数据中心或者另一个公共数据中心)中的逻辑网络通信,以及与外部网络通信。在每个工作负载dcn(即,执行工作负载应用的dcn,诸如web服务器、应用服务器、数据库服务器等)内,受管理转发元件(mfe)被插入到dcn的工作负载应用和网络接口之间的数据路径中。此外,本地控制代理在每个工作负载dcn上执行,以配置它们各自的mfe。
72.在私有数据中心中(或在单独的vpc中)操作的中央控制平面集群基于规则的跨度将配置规则分发到在私有数据中心中的主机机器上操作的本地控制器(即,将需要基于规则的类型和规则适用的逻辑端口实现规则的mfe)。为了将这些规则分发给在公共数据中心vpc中操作的控制系统,中央控制器将与vpc中的dcn对应的所有逻辑端口视为连接到由网关控制器控制的mfe。由此,所有这些规则都由中央控制器推送到网关控制器。
73.然后,网关控制器进行其自己的单独跨度计算,以便识别vpc中需要从中央控制器接收的每个规则的mfe,并将这些规则分发给操作以控制mfe的本地控制代理。本地控制代理在接收到规则后,将规则转换为特定于在其dcn上操作的mfe的格式。例如,一些实施例使用基于流的mfe,诸如在公共数据中心vpc中的dcn上执行的open vswitch(ovs)实例,在这种情况下,本地控制代理将规则转换为ovs实例的流条目和/或其它配置数据。
74.在一些实施例中,网关控制器还负责管理其vpc内的覆盖隧道。因为中央控制器将整个vpc视为单个mfe,因此它仅为网关控制器节点(即,在网关dcn上配置的数据路径)配置隧道端点。但是,对于在vpc内的工作负载应用之间(以及工作负载应用和网关数据路径之间)的通信,中央控制器不配置覆盖。由此,网关控制器通过为每个mfe配置mac到虚拟隧道端点(vtep)ip绑定来建立这些dcn之间的隧道(例如,stt、geneve等隧道)。该信息还被传递到工作负载dcn上的各种本地控制代理,使得每个mfe都能够将数据分组隧道传输到同一vpc中的其它mfe。
75.如上所述,网关dcn包括网关控制器和数据路径。在一些实施例中,数据路径作为网关操作,以将其vpc中的工作负载连接到(i)连接到在其它vpc和其它数据中心中操作的逻辑网络的工作负载,以及(ii)外部网络。在一些实施例中,网关dcn包括三个网络接口:从
外部网络接收分组和向外部网络发送分组(经由云提供商互联网网关)的上行链路接口,具有本地vpc子网上的地址的vtep接口,以及专用于控制流量的控制接口。除了数据路径和网关控制器之外,一些实施例可以包括用于处理用于保护vpc内的mfe(在一些情况下,包括网关数据路径)的流量的加密密钥的分布式网络加密(dne)管理器、用于处理vpc内的dhcp的dhcp模块,以及使得管理平面和网关控制器能够与公共云管理系统交互的公共云管理器(pcm)。
76.例如,pcm具有轮询公共云管理器以识别新的dcn(包括与dcn相关联的指示dcn将属于的逻辑交换机和/或安全组的标签)的能力。此外,一些实施例的pcm可以在接收到dcn已被破坏的通知后与公共云管理系统交互以隔离dcn。例如,如果黑客获得对执行mfe的dcn的访问,那么该黑客可以(i)卸载本地控制代理和/或mfe,(ii)创建不通过mfe发送流量的新接口,(iii)断开现有接口与mfe的连接,或(iv)通过断开mfe与本地控制代理的连接直接重新编程mfe。如果接口被编辑,或者控制代理与mfe断开连接,那么代理将检测到变化并向网关控制器通知该问题。如果代理本身被移除,那么网关控制器将检测到与代理的连接丢失并识别出dcn被破坏。在任一种情况下,网关控制器都向pcm通知受破坏的dcn。pcm具有与公共云管理系统交互以将受破坏的dcn置于隔离安全组中的能力,使得公共云转发元件(例如,在主机机器的管理程序中)可以阻止来自受破坏的dcn的流量。
77.分层网络控制系统使得能够实现从私有数据中心延伸到公共数据中心中的逻辑网络。在不同的实施例中,可以跨数据中心以不同的方式实现不同的逻辑拓扑。例如,一些实施例将附接到给定逻辑交换机的dcn约束到私有数据中心中的单个vpc,或者同一数据中心内进行对等以便类似于单个vpc操作的多个vpc(虽然该逻辑交换机可以通过逻辑路由器逻辑上连接到在另一个vpc或另一个数据中心中实现的逻辑交换机)。在其它实施例中,单个逻辑交换机可以在同一公共数据中心的多个非对等vpc、多个公共数据中心的多个vpc和/或公共和私有数据中心两者中具有dcn。
78.虽然以上描述了控制平面到vpc的扩展和使得能够进行这种扩展的网关控制器,但是在一些实施例中vpc内的这些各种组件必须被初始配置并且带有内置管理平面和中央控制平面。在一些实施例中,公共云中的网络和控制系统的初始设置由操作管理器(也称为生命周期管理器或lcm)管理。网络管理员与该lcm交互(例如,经由用户界面),其使用网络管理员的公共云凭证来访问lcm并初始配置vpc中的各种vm。
79.lcm识别管理员想要在其中实现逻辑网络的每个vpc,并自动实例化这些vpc中的每一个中的网关dcn(或网关dcn的主用-备用集合)。在一些实施例中,网关dcn被提供为针对特定公共云提供商格式化的预先打包的实例。此外,一些实施例的lcm从管理员接收关于vpc中存在的哪些dcn应由网络控制系统管理的信息,并将关于这些dcn的逻辑交换机和安全组信息提供给管理平面。
80.作为初始配置的一部分,网关控制器需要被管理平面认证(并且验证管理平面应用为有效),并且类似地被网关控制器与之交互的(一个或多个)中央控制器应用认证。此外,在其中一个工作负载dcn中操作的每个本地控制代理以类似于配置规则分发的分层方式向网关控制器验证自己。
81.以上段落中的描述假设控制器在其中操作的vm已经存在。在一些情况下,用户(例如,非管理员用户)将需要在公共数据中心vpc中创建新的工作负载dcn,并确保dcn上的mfe
被供应有正确的配置规则集合。这可能在一天中的任何时间发生,因此理想情况下不应要求网络管理员在那时进行任何工作或授权。由此,在一些实施例中,网络控制系统被配置为自动向mfe供应这些新的工作负载dcn。
82.在启动dcn之前,用户将已从管理员接收工作负载将连接到的逻辑交换机(和/或安全组)的令牌以及要在实例上安装的控制代理程序包(package)。在设置dcn时,用户将逻辑交换机和/或安全组的令牌添加为实例上的标签。在一些实施例中,当用户通过云提供商用户界面创建实例时,该界面包括向vm添加标签的能力,这些标签作为关于vm实例的数据被存储在公共云数据储存库中。例如,标签可以被标记为“token-ls1”和“token-sg1”,以指示vm应该属于安全组sg1并且附接到逻辑交换机ls1。这些标签可以经由任何带外机制(例如,口头地、经由电子邮件或消息传递等)从网络控制系统管理员提供给用户。
83.一些实施例的pcm定期轮询该数据储存库以识别在其vpc中创建的任何新dcn。响应于确定在vpc中创建了新的dcn,pcm采取若干动作。pcm将新的dcn添加到管理平面的库存中,并将dcn的所有各种公共云提供商属性(vm标识符、vpc标识符、接口id等)作为标签添加在dcn的管理平面中创建的对象上。这使得网络管理员能够在管理平面库存中查看dcn及其属性。pcm还使用云提供商api读取逻辑交换机和/或安全组标签。pcm使用逻辑交换机标签来确定要在其上创建新端口的逻辑交换机。pcm创建新的端口并将dcn的接口附接到该逻辑端口(例如,使用来自云提供商的接口标识符)。此外,pcm读取接口的ip和mac地址,并将它们配置为新创建的逻辑端口上的mac/ip绑定。一些实施例还启用任何必要的特征,使得如果需要可以为逻辑端口设置dfw规则。此外,pcm基于安全组标签识别新dcn的安全组,并经由管理平面将逻辑端口添加到该安全组中。
84.如上所述,一些实施例的mfe是基于流的mfe,诸如ovs实例。在不同的实施例中,这些ovs实例可以以非覆盖模式、使用单独的内部和外部ip地址的第一覆盖模式、或者针对其vtep和内部工作负载应用使用相同ip地址的第二覆盖模式来建立。在所有三种情况下,在ovs实例中设置了两个桥接器,但是对于三个选项用三种不同的方式设置。工作负载应用连接到集成桥接器上的内部端口,该集成桥接器执行网络安全和/或逻辑转发操作。物理接口(pif)桥接器连接到mfe在其上操作的dcn的虚拟网络接口控制器(vnic)。
85.在一些实施例的非覆盖模式中,工作负载应用的ip地址与面向云提供商网络(在本文称为底层网络)的vm网络接口的ip地址(由云提供商分配)相同。在这种情况下,mfe不执行任何分组转发,而是被配置为执行微分段和/或网络安全处理,诸如分布式防火墙规则处理。该网络安全处理由集成桥接器执行,并且分组默认经由两个桥接器之间的接插端口被发送到pif桥接器。
86.在其它实施例中,mfe被配置为使得工作负载应用连接到的内部接口(例如,在集成桥接器上)具有与面向外的接口(在pif桥接器上)不同的ip地址。在这种情况下,除了任何网络安全或其它处理之外,mfe(例如,集成桥接器)还根据逻辑网络配置执行分组转发。分组由工作负载应用使用映射到工作负载dcn连接到的逻辑交换机端口的第一内部ip地址发送,然后使用由云提供商分配的ip地址(即vnic的ip地址)进行封装。在一些实施例中,集成桥接器执行封装,并通过第二网络堆栈将分组发送到pif桥接器上的vtep。
87.最后,网络管理员可能希望为已经存在的工作负载保留相同的ip地址,但是利用逻辑网络进行分组处理、隧道传输等。在第三种情况下,mfe在与应用的工作负载vm单独的
命名空间中进行配置。这使得工作负载应用能够连接到具有其现有ip地址的命名空间的接口,然后使用veth对将该接口连接到其单独命名空间中的mfe,该命名空间对其vtep使用相同的ip地址。在一些实施例中,对工作负载应用和mfe使用单独的命名空间允许单独的网络堆栈使用相同的ip地址。
88.上述覆盖封装的使用主要是针对公共云vpc中的工作负载dcn之间的东西向流量。但是,许多逻辑网络包括外部客户端应该可以访问的工作负载。例如,典型的三层(web服务器、应用服务器、数据库服务器)建立将至少要求web服务器能够经由互联网与客户端连接。由于vpc子网通常是可以由不同租户的许多vpc重用(和在各种不同的数据中心处重用)的私有ip地址,因此通常使用网络地址转换(nat)来修改从内部使用的私有ip地址到公共ip地址的传出分组的源ip地址(以及对应地,传入分组的目的地ip地址)。
89.此外,当逻辑网络至少部分地在公共数据中心中实现时,到公共ip地址的实际转换可能需要由云提供商的互联网网关执行,而不是由网络控制系统管理的任何mfe执行。但是,由于云提供商将不会分配在覆盖模式中使用的内部ip地址,因此不应使用这些内部地址向提供商的网关发送数据分组。而是,一些实施例的mfe执行其自己的nat以将内部ip地址转换为向云提供商注册的地址。
90.不同的实施例可以以不同的方式实现这种地址转换。一些实施例将nat应用为网关数据路径的一部分。在这种情况下,北向分组从源mfe隧道传输到网关,其中ip地址以一致的方式转换为辅助ip地址。一些实施例使用nat表,该表将每个内部工作负载ip地址映射到向云提供商注册的辅助ip地址。然后,所有这些辅助ip地址都与网关的北向接口相关联,并且云提供商的网关执行从这些辅助ip地址到公共ip地址的转换。在集中式的情况下,也可以在网关处应用其它网络服务,诸如服务链(向第三方服务装置发出数据分组以进行各种中间盒处理)、入侵检测、南北向防火墙、vpn、审计日志记录等。此外,当网关执行nat时,也需要在网关中执行任何负载平衡(云提供商可能无法在这种情况下执行负载平衡,因为就提供商的网关而言,所有流量都被发送到网关接口)。
91.其它实施例在源dcn(传入流量的目的地dcn)上操作的mfe中以分布式方式执行第一级nat。在这种情况下,对于传出分组,源dcn处的mfe执行地址转换并将转换后的分组直接发送到云提供商网关,从而绕过网关。由此,源mfe区分它使用其vtep ip封装的覆盖流量和它未封装地发送到云提供商底层网络上(在一些实施例中,使用与vtep相同的ip地址)的南北向流量。由于该流量(在两个方向上)不通过网关,因此在工作负载vm上操作的mfe处执行任何服务链、入侵检测、南北向防火墙规则、日志记录等。
92.对于负载平衡,分布式内部nat允许使用云提供商的现有负载平衡特征。可以使用单个公共ip地址(或仅少量地址),而不是使用多个公共ip地址,并且所有传入连接都被发送到该地址。云提供商的互联网网关(或特殊的负载平衡装置)执行负载平衡,以便以平衡的方式跨不同的工作负载vm(其仍然需要执行它们自己的内部nat)分发这些连接。
93.对于在逻辑网络工作负载之间发送的分组,一些实施例使得能够使用由网络控制系统管理的分布式网络加密(dne)。在一些实施例中,用于公共数据中心中的dcn的dne仅在在相同vpc内或在对等vpc内操作的dcn之间可用,而在其它实施例中,dne在附接到逻辑网络的逻辑端口的任何两个dcn之间(包括在工作负载dcn和网关之间)可用。
94.在一些实施例中,分布式网络加密允许网络控制系统管理员为分组设置加密和/
或完整性规则。这些规则定义(i)规则将应用于哪些分组以及(ii)那些分组的加密和/或完整性要求。一些实施例按照分组的源和目的地定义规则应用于的分组。可以基于ip地址或地址范围、mac地址、逻辑交换机端口、虚拟接口、l4端口号和范围等(包括其组合)来定义这些源和目的地端点。
95.此外,每个规则指定满足源和目的地特性的分组是否需要加密(以及鉴权)、仅需要鉴权、或需要明文(其可以用作设置以便允许广播分组)。加密需要使用密钥来加密分组的一部分或全部(例如,整个内部分组、仅l4和更高层的报头、隧道传输分组的整个内部和外部分组等),而鉴权不加密分组但是使用密钥来创建鉴权数据,目的地可以使用该鉴权数据来验证分组在传输过程中未被篡改。
96.为了使网络中的mfe实现dne规则,网络控制系统需要以安全的方式将密钥分发给mfe。一些实施例使用网关dcn中的dne模块,以便与网络控制系统的dne方面一起传送,并将密钥分发给在其vpc中的工作负载dcn中操作的mfe。对于需要使用加密密钥的每个规则,dne模块从中央控制器接收密钥的票据(ticket)。dne模块使用票据从安全密钥管理存储装置请求密钥,该存储装置验证票据是真实的并返回主密钥。一些实施例的dne模块计算由规则指定的每个连接(例如,vpc中的两个工作负载之间的单个连接、vpc内的多个连接、工作负载和网关之间的连接等)的会话密钥并将这些密钥分发给适当的本地控制代理。
97.以上描述了一些实施例的网络管理和控制系统。以下部分更详细地描述了将系统扩展到公共数据中心中的不同方面。第i节描述了一些实施例的分层网络控制系统,而第ii节描述了网关dcn的体系架构。接下来,第iii节描述了公共云vpc的初始配置。然后,第vi节描述了逻辑拓扑、跨多个vpc和/或数据中心延伸拓扑的不同物理实现。第v节描述了在工作负载dcn中操作的mfe的不同配置,而第vi节描述了以集中式和分布式方式供应nat和其它服务。接下来,第vii节描述了在公共数据中心中分布式网络加密的实现,而第viii节描述了威胁检测和处理。最后,第ix节描述了用于实现本发明的一些实施例的电子系统。
98.i.分层网络控制系统
99.如上所述,一些实施例使用分层网络控制系统来将私有数据中心的管理扩展到诸如amazon web services、microsoft azure等的公共多租户数据中心(“公共云”)中。图1概念性地图示了管理私有数据中心105和公共数据中心110中的转发元件的一些实施例的这种分层网络控制系统100。数据中心105和110两者都包括用于托管虚拟机(vm)或其它数据计算节点(dcn)的主机机器。在私有数据中心105中,网络控制系统具有管理管理程序(虚拟化软件)并且因此管理与那些管理程序集成的转发元件的能力。但是,在公共数据中心110中,网络控制系统不能访问管理程序,因为这些管理程序由数据中心的所有者控制。
100.如图所示,私有数据中心内的网络控制系统包括在许多主机机器125中的每一个上的管理平面/中央控制平面(mp/ccp)集群115和本地控制器120。本地控制器120对主机机器上的受管理转发元件(mfe)集合130进行直接控制。如图所示,主机机器上的vm(或其它数据计算节点)连接到mfe集合130(例如,经由虚拟网络接口控制器(vnic)),以便发送和接收数据流量。基于经由网络控制系统接收到的转发和配置数据,mfe集合130对发送到这些vm和从这些vm发送的数据分组执行转发和网络安全(例如,分布式防火墙(dfw)规则、访问控制列表(acl)规则等)操作。在一些实施例中,mfe集合可以是单个受管理转发元件(例如,执行l2、l3和附加处理的单个虚拟交换机),或者可以是各种受管理的转发和安全元件(例如,
过滤器集合、(一个或多个)l2交换机、(一个或多个)l3路由器等,所有这些在虚拟化软件内操作)的组合。
101.如本文所述,mp/ccp集群115包括具有不同特征的管理平面(mp)和中央控制平面(ccp)。在一些这样的实施例中,mp和ccp是可以在相同或不同的物理机器上操作的单独的应用。此外,一些实施例的mp/ccp集群115可以包括具有单个中央控制平面应用的单个管理平面应用、具有中央控制平面应用集群的管理平面应用集群、具有中央控制平面应用集群的单个管理平面应用,反之亦然。应该理解的是,在其它实施例中,在不脱离本发明的情况下,这些应用的各种特征可以被组合到单个管理器或控制器应用(或这些应用的集群)中。
102.在一些实施例中,管理平面提供应用编程接口(api),通过该应用编程接口,私有数据中心105的管理员(例如,经由云管理应用)输入配置要在私有数据中心105和/或一个或多个公共数据中心内实现的一个或多个逻辑网络的配置数据。来自管理员的逻辑网络配置可以包括逻辑l2交换机和逻辑l3路由器的网络(其中逻辑路由器可能包括到逻辑网络外部的其它逻辑路由器和/或子网的连接(例如,为了连接到互联网))。逻辑网络配置数据还可以包括网络地址转换(nat)规则、负载平衡规则、用于向第三方服务发送分组的规则、网络安全规则(例如,dfw规则)等。
103.一些实施例的管理平面将逻辑网络配置转换为定义逻辑转发元件(例如,逻辑交换机和路由器)的规则、用于逻辑转发元件的逻辑端口、用于逻辑端口的安全性和加密规则等。一些实施例的中央控制平面处置这些规则到适当的mfe的分发。在一些实施例中,中央控制平面跟踪每个逻辑端口在物理网络中的位置,并因此跟踪用于该逻辑端口的第一跳的受管理转发元件。在接收到特定逻辑端口和/或逻辑转发元件的规则时,中央控制平面识别该规则的跨度(即,为了正确地实现逻辑网络而需要接收规则的mfe)并将规则分发到与其各自的主机机器125上的mfe 130直接交互的本地控制器120。关于逻辑端口的规则的跨度可以只是其中存在该逻辑端口的主机上的(一个或多个)mfe(即,在托管附接到逻辑端口的dcn的主机机器上设置的mfe),或者是许多mfe(例如,托管附接到与该逻辑端口同一逻辑网络的dcn的主机机器上的每个mfe)。
104.以上描述了用于数据中心的一些实施例的网络控制系统,其中网络控制系统可以访问主机机器的虚拟化软件,并且因此可以控制单个主机机器上的许多dcn的联网(通过控制虚拟化软件中的mfe)。但是,当将逻辑网络扩展到公共云中时,网络控制系统不再能够访问虚拟化软件,因为公共云提供商的网络管理系统管理主机机器。由公共云提供商提供的联网和安全性可能适合或可能不适合潜在租户,但在任何情况下都不受该租户的直接控制,并且可能无法与其室内(on-premises)网络(在私有数据中心中)充分网格化(mesh)。
105.因此,图1图示了用于将网络控制系统100扩展到公共数据中心110中,而无需对公共数据中心中的主机机器的虚拟化软件进行控制的一些实施例的技术。该图图示了在公共数据中心110中为私有数据中心105(在本文称为公共数据中心的租户)的所有者创建的虚拟私有云(vpc)135。虚拟私有云135(或类似的构造,取决于公共云提供商)是公共数据中心110的逻辑上隔离的、租户可以对其进行控制的资源集合。对于一些云提供商,租户可以定义具有网络子网和路由表的虚拟网络和/或将其vm置于安全组(由公共云提供商定义)中。但是,租户不能直接控制云提供商中的转发元件,并且可能无法根据需要配置其网络安全特征。
106.在vpc内,该图图示了托管具有网关控制器150的vm 145的第一主机机器140,和托管具有工作负载应用165的vm 160的附加主机机器集合155。应该理解的是,虽然主机机器140和155被示出为是vpc的一部分,但是在一些实施例中,这些主机机器还可以托管属于不同vpc(相同或其它租户的vpc)的附加vm。如图所示,主机机器140和155中的每一个包括转发元件170。在一些实施例中,主机机器包括在其虚拟化软件内由公共云提供商管理的转发元件。但是,网络控制系统100不能访问这些转发元件,因为它们是云提供商网络的一部分。
107.虽然这里示出为单个vm 145,但是在一些实施例中,在vpc135中实例化至少两个具有网关控制器的vm。其中一个网关控制器作为主用控制器操作,另一个作为备用控制器操作,以防主用控制器发生故障(例如,由于它在其上操作的主机机器发生故障、vm故障或需要重启等)。在一些实施例中,网关vm的其它方面(下面描述)也在主用-备用模式下操作。即,在一些实施例中,实例化主用网关vm和备用网关vm。
108.在一些实施例中,vm 145是包括网关控制器150的预先打包的机器映像(image)。对于在vpc 135内实现的所有逻辑端口,网关控制器150从mp/ccp集群115(例如,从中央控制平面应用)接收数据。在一些实施例中,在mp/ccp集群115的视图中,网关控制器等效于具有连接的许多逻辑端口(假设有许多逻辑端口映射到在vpc 135中操作的vm)的mfe的本地控制器120。由此,mp/ccp集群115将网关控制器150识别为vpc 135中的任何逻辑端口所需的所有配置规则的接收者。虽然这里未示出,但是在一些实施例中,网关vm 145还操作网关数据路径,用于提供集中式服务(例如,nat、负载平衡等)以及用于处理/路由在vm 160和外部源之间(例如,经由互联网)发送的分组。在一些实施例中,该数据路径所需的规则也被分发给网关控制器150。下面参考图7更详细地描述一些实施例的网关vm。
109.vm 160是工作负载vm,每个工作负载vm运行工作负载应用165(例如,web服务器、应用服务器、数据库服务器等)。此外,为了使得能够由网络控制系统100配置第一跳处理,这些vm中的每一个还操作控制代理170和受管理转发元件175(例如,诸如open vswitch的虚拟交换机)。在接收到配置规则后,网关控制器150识别该规则在vpc 135内的跨度(即,需要该规则的各种mfe 175),并将这些配置规则传递给适当的控制代理170。控制代理170使用该数据来配置mfe 175以将联网和/或安全规则应用于发送到工作负载应用165和从工作负载应用165发送的分组,类似于本地控制器120配置mfe 130的方式。
110.图2概念性地图示了通过网络控制系统100的控制数据流。mp/ccp集群115生成新的配置规则(例如,基于网络内的变化、当管理员修改逻辑网络时由管理平面接收到的配置数据等)。在一些实施例中,管理平面生成该规则并将该规则提供给中央控制平面,该中央控制平面确定配置规则的跨度。如图所示,mp/ccp集群115将该数据205传递到私有数据中心105内需要该数据的本地控制器120。在私有数据中心内,信息经由控制信道分发。接收该数据205的本地控制器将数据转换成适合于其主机机器中存在的特定类型mfe的格式。在一些实施例中,数据中心可能包括使用基于特征的转发元件(诸如esx管理程序)、基于流的转发元件(诸如运行open vswitch(ovs)的内核虚拟机(kvm)管理程序)或其它类型的软件转发元件的主机机器。本地控制器120接收配置数据205并将其转换为适当的格式(例如,ovs的流条目),然后将该配置数据210分发给它们的本地mfe 130。
111.对于其跨度包括公共数据中心110中的vpc 135的配置规则,mp/ccp集群115将配置数据215发送到网关控制器150。在一些实施例中,配置数据215与配置数据205的格式相
同,因为mp/ccp集群将网关控制器视为简单的另一个本地控制器。但是,为了将配置数据215发送到网关控制器150,一些实施例使用私有数据中心105和vpc 135之间的虚拟专用网络(vpn)设置。一些实施例使用相同的vpn用于控制流量以及用于私有数据中心和vpc之间的逻辑网络数据流量,而其它实施例使用单独的数据。对于云提供商转发元件,控制流量看起来与通过vpn发送的任何其它数据相同。网关控制器150接收配置数据215,并针对每个规则计算其vpc 135内的跨度。对于vpc 135内的每个mfe 175,网关控制器150将适当的配置数据220发送到在与mfe相同的vm上操作的本地控制代理170。该配置数据220通过云提供商的网络(例如,通过转发元件170)发送到控制代理170。
112.此外,在一些实施例中,网关控制器150负责管理vpc 135内的覆盖网络。因为mp/ccp集群115将整个vpc视为具有单个受管理转发元件,因此集群仅为网关控制器节点(即,在网关vm 145上配置的数据路径)配置隧道端点。但是,对于vpc内的工作负载应用之间(以及工作负载应用和网关数据路径之间)之间的通信,mp/ccp集群不配置覆盖。由此,网关控制器150通过配置mac:vtep ip绑定等来建立这些vm之间的隧道(例如,stt、geneve等隧道)。覆盖数据(例如,mac:vtep ip绑定)还作为配置数据220的一部分传递给各种控制代理170。
113.一旦控制代理170接收到配置数据,控制代理170就将该数据转换为特定于mfe 175的格式,并将特定于mfe的配置数据225提供给mfe 175。在一些实施例中,该配置数据225包括用于基于流的mfe的流条目和/或用于mfe配置数据库的数据库条目。例如,在一些实施例中,当mfe是ovs实例时,控制代理170使用openflow和/或ovsdb协议与mfe 175通信。
114.作为示例,从mp/ccp集群115发送到网关控制器的初始配置数据可以指定新的逻辑端口已被添加到逻辑交换机,并且该逻辑端口被附接到在vpc中操作的mfe。在该示例中,相同逻辑交换机的至少一个逻辑端口已经附接到在vpc中操作的不同mfe。由网关控制器150接收到的配置数据不指定特定位置,因为对于ccp,逻辑端口连接到网关。
115.网关控制器150将该配置数据的跨度计算为vpc内同一逻辑交换机上的所有附加逻辑端口连接到的mfe。这些mfe需要该信息以便它们可以正确地将分组转发到与新逻辑端口对应的工作负载应用,因此网关控制器150将该数据分发给这些识别出的mfe中的每一个的本地控制代理170。网关控制器150还将新逻辑端口连接到的mfe的覆盖信息(例如,mac:vtep ip绑定)分发到识别出的mfe中的每一个,并将这些其它识别出的mfe的覆盖信息分发给新逻辑端口连接到的mfe。
116.用于特定mfe 175的控制代理170使用该信息来生成用于其mfe的逻辑转发流条目(即,指定寻址到与逻辑端口相关联的mac地址的分组在逻辑上被转发到该逻辑端口,以及出口映射和物理转发(隧道传输)流条目(即,将逻辑端口映射到物理目的地并附加封装信息以将分组发送到其它mfe))。类似地,用于新逻辑端口连接到的mfe 175的控制代理170将接收关于其它逻辑端口位置的信息,并生成其自己的对应流条目,以便能够向对应的mfe发送分组和从对应的mfe接收分组。
117.图3概念性地图示了用于将配置数据分发到位于私有和公共数据中心两者中的受管理转发元件的一些实施例的处理300。在一些实施例中,基于从管理平面应用接收到的配置数据,由中央控制器(即,中央控制平面应用)执行处理300。应该理解的是,在一些实施例中,配置数据的分布实际上可以由集群中的多个中央控制器执行,因为集群中的不同控制
器可以处置到不同转发元件的分发。此外,该处理假设管理平面和中央控制平面位于私有(企业)数据中心。如果mp/ccp集群在公共数据中心的vpc内操作,则它对每个配置数据片段(piece)执行类似的跨度计算,并将该数据分发给其中逻辑网络操作的每个vpc的网关控制器。
118.如图所示,处理300通过接收(在305处)逻辑网络配置数据开始。如以上所解释的,在一些实施例中,管理平面基于从管理员(例如,通过云管理应用)接收到的输入生成逻辑网络的配置规则。管理平面将这些规则提供给中央控制平面。该配置数据可能涉及逻辑转发元件或这些逻辑转发元件的逻辑端口的创建或删除、关于这些逻辑实体之一的新配置数据、新安全组定义或分布式防火墙规则等。
119.然后,该处理对于每个原子数据片段(例如,每个规则)识别(在310处)接收该数据片段的mfe集合。中央控制器基于逻辑网络的拓扑及其物理实现以及规则的类型和规则所属的逻辑实体(例如,逻辑转发元件和逻辑端口)来确定每个规则的跨度。例如,用于两个逻辑端口之间的通信的分布式网络加密规则可能仅需要分发给那些逻辑端口直接附接到的mfe。另一方面,关于逻辑端口到mac地址绑定的规则将不仅分发给该逻辑端口附接到的mfe,而且分发给可能处理该逻辑端口为目的地的分组的任何其它mfe(例如,逻辑端口附接到的任何mfe可以将分组发送到特定的逻辑端口,而不需要分组进行集中式处理)。
120.在确定每个原子配置数据片段的跨度之后,该处理将配置数据发送(在315处)到私有云中识别出的mfe的本地控制器。即,中央控制平面将数据分发到其相同数据中心中的适当的本地控制器。
121.该处理还确定(在320处)任何数据的跨度是否包括位于公共云中的逻辑端口。如上所述,中央控制平面将公共云vpc中的所有逻辑端口视为附加到单个mfe。该处理假设单个公共数据中心中有单个vpc,如图1所示。如下所述,在一些实施例中,一个或多个公共数据中心中的多个vpc是可能的,在这种情况下,需要针对每个vpc进行类似的确定。如果需要将数据发送到公共云中的mfe,则该处理将这个数据发送(在325处)到在公共云中操作的网关控制器。在一些实施例中,使用中央控制器和网关在其上操作的dcn之间的vpn连接来分发数据。
122.图4概念性地图示了用于将逻辑网络配置数据分发到vpc内的mfe的一些实施例的处理400。在一些实施例中,处理400由网关控制器400执行,以便将该数据分发到其vpc内需要该数据的mfe。如图所示,该处理从中央控制器接收(在405处)逻辑网络配置数据开始。该中央控制器可以位于由公共数据中心租户管理的私有数据中心中、位于与网关控制器相同的公共数据中心的不同vpc中、或者位于不同的公共数据中心。
123.对于每个原子数据片段(例如,每个规则),处理400识别(在410处)vpc中接收数据的数据计算节点。如关于图3所提到的,每个规则具有基于逻辑网络的拓扑及其物理实现以及规则的类型和规则所属的逻辑实体(例如,逻辑转发元件和逻辑端口)的跨度(即,需要该规则的mfe)。因此,在vpc内,网关控制器可能不需要将每个规则分发给每个控制代理。然后,该处理将每个配置规则发送(在415)给针对该规则识别出的数据计算节点上的本地控制代理。在一些实施例中,配置数据以与标准数据分组相同的方式通过公共云提供商的物理网络发送。
124.处理400还为vpc中的每个数据计算节点生成(在420处)本地覆盖数据。由于中央
控制器将整个vpc视为连接到单个mfe,因此中央控制器仅为网关vm定义虚拟隧道端点(vtep)。但是,对于vpc内的通信,各种mfe也使用覆盖网络。因此,网关控制器为这些vtep定义mac:ip绑定(其中ip地址基于由租户为vpc中的vm配置的私有(或公共,取决于配置)ip地址来确定)。这份覆盖的建立将在下面的第iv和v节中更详细地讨论。
125.然后,该处理将本地覆盖数据发送(在425处)到vpc内的每个数据计算节点,以便在vpc中的数据计算节点之间创建隧道。这允许这些数据计算节点中的每一个处的mfe正确地封装要从其vtep发送到vpc内的其它mfe的vtep的分组(取决于公共数据中心的设置,这些分组然后将由主机机器上的提供商控制的转发元件再次封装,如下面更详细描述的)。
126.应该理解的是,处理400是概念性处理,并且网关控制器可以不以所示的线性方式执行这些操作。例如,一些实施例在vpc中创建新数据计算节点的任何时间执行操作420和425,而操作405-415在从中央控制器接收到新配置规则(这将在新数据计算节点被创建时发生,但也在其它配置方面被改变的任何时间发生)的任何时间执行。
127.图1和2中所示的示例图示了其中逻辑网络跨越私有数据中心105和公共数据中心中的单个vpc 135的情况。应该理解的是,在其它实施例中也可能有不同的变化。例如,图5概念性地图示了完全在公共数据中心500内实现的逻辑网络的网络控制系统的示例。在这种情况下,mp/ccp集群505在第一vpc 515内的主机机器510上操作。与网关控制器类似,管理平面和/或中央控制平面应用可以作为可以在公共数据中心500中被实例化的、预配置的vm映像的一部分提供。管理平面和/或中央控制平面应用可以在相同的一个或多个vm上或在单独的vm上操作,并且在一些实施例中,每个可以在多个主机机器上作为多个vm的集群操作。vpc 520以与图1中所示的vpc135相同的方式配置,其中第一vm 525(或主用-备用配置中的两个vm)托管网关控制器530,并且控制代理535管理工作负载vm 545上的mfe 540。
128.图6概念性地图示了将逻辑网络扩展到多个公共数据中心中610和615的一些实施例的网络控制系统600。如该图所示,mp/ccp集群620在私有数据中心605中操作,并且经由本地控制器管理数据中心中的mfe,如上所述。在该示例中,逻辑网络被扩展到第一和第二公共数据中心610和615中,每个数据中心610和615包括具有网关vm实例(或主用-备用对)的vpc和如参考图1所描述的那样配置的多个主机机器。mp/ccp集群620将这些网关控制器中的每一个视为类似于单个本地控制器,并且因此向每个网关控制器发送其各自的vpc中的工作负载的所有配置数据。
129.应该理解的是,图1、5和6中的这些不同体系架构仅仅是许多可能的体系架构中的三个。例如,网络控制系统可以跨一个云提供商的多个vpc延伸,每个vpc中有一个网关控制器(或主用-备用对),或者使用其中一个vpc(或单独的vpc)中的单个网关控制器(或主用-备用对)来管理所有vpc。
130.ii.网关vm体系架构
131.上节描述了一些实施例的网关vm的网络控制器功能(跨度计算和覆盖管理)。在一些实施例中,这些网关vm还执行若干其它功能,包括与公共云api、dhcp、dne管理以及用于发送到vpc中的dcn和从vpc中的dcn发送的数据分组的网关的接口。
132.图7概念性地图示了一些实施例的这种网关vm 700的体系架构。如上所述,在一些实施例中,网关vm被打包为用于特定云提供商的预配置vm映像(例如,amazon机器映像),逻辑网络的管理员可以将其实例化为公共数据中心vpc中的vm之一。如图所示,网关vm 700包
括网关控制器705、公共云管理器(pcm)710、网关数据路径715、dne管理模块720和dhcp模块725。应该理解的是,在不同的实施例中,网关vm可以包括这些模块的不同组合以及这些模块和其它模块中的全部或一些。
133.此外,网关vm包括三个接口—控制vnic 730、上行链路vnic735和本地覆盖vnic 740。在一些实施例中,控制vnic 730仅用于vpc中的其它主机上的本地代理与网关控制器705之间以及mp/ccp集群与网关控制器705之间的控制路径通信(以及dne管理器720或pcm的任何通信)。一些实施例将云提供商中的安全组编程为在该接口上仅允许来自ccp和本地代理的特定流量,以便防止来自vpc中受破坏的vm的拒绝服务(dos)攻击。此外,为了确保控制信道即使在恶意vm正在向网关数据路径715发送大量流量时也保持运行,一些实施例将网关控制器进程(以及在vpc中的其它vm中操作的代理)固定到不执行数据平面处理的特定虚拟cpu。上行链路vnic 735处置从网关数据路径715发送到外部目的地(并从那些外部目的地接收)的、通常不被数据路径封装的南北向分组。本地覆盖vnic 740处置东西向数据分组,网关数据路径处理这些东西向数据分组以在vpc内的工作负载应用与其它vpc、其它公共数据中心和/或室内数据中心中的数据计算节点之间发送分组。
134.一些实施例的网关控制器705执行以上第i节中描述的功能。通过控制vnic 735,网关控制器705的中央控制平面接口745从中央控制器接收配置规则并将信息提供回中央控制器(例如,当创建新vm并因此需要将新逻辑端口与网关相关联时)。代理接口750将配置数据分发到在vpc中的数据计算节点上操作的本地代理,并且当在数据计算节点上发生事件(例如,在数据计算节点上创建接口等)时从这些本地代理接收更新。在一些实施例中,这些接口745和750都是在网关vm上操作的netcpa代理的一部分。
135.网关控制器705还包括跨度管理器755和本地覆盖管理器760。跨度管理器接收从中央控制器发送的配置规则(经由ccp接口745)、确定在vpc内的数据计算节点上执行的mfe(可能包括网关数据路径715),并将这些配置规则发送到vpc中适当的代理。一些实施例对vpc内的每个代理使用不同的适配器和/或不同的队列,从而将每个接收到的规则置于一个或多个这样的队列中。
136.本地覆盖管理器760处置vpc内的覆盖网络的管理(对于以覆盖模式操作的mfe,如下面在第v节中所描述的)。假设vpc中的mfe以覆盖模式操作,在一些实施例中,vpc中的vm上的每个代理(以及网关数据路径715)将其vtep ip地址和绑定到该vtep ip地址的mac地址提供给控制器。一些实施例的本地覆盖管理器760识别vpc中哪些mfe需要每个提供的绑定,并处置向vpc中的mfe供应该信息,使得可以使用对应的vtep ip地址封装发送到mac地址的数据分组。如果附接到第一mfe的工作负载应用有可能将数据分组发送到附接到第二mfe的工作负载应用而无需数据分组行进通过网关数据路径715,那么第一mfe需要第二mfe的mac:vtep ip绑定。
137.一些实施例的公共云管理器(pcm)710使得网络控制系统能够与公共云提供商的计算管理系统交互。具体而言,一些实施例的pcm使用公共云api来从公共云提供商检索库存、配置、状态和统计信息。在本文示出的示例中,pcm 710在网关vm上操作,但是在其它实施例中,pcm可以在mp/ccp集群中操作(例如,在私有数据中心中)。
138.如图所示,pcm包括公共云api 765和用于与代理和与mp/ccp集群通信的接口770和775。在一些实施例中,pcm仅直接与管理平面通信,并且往返代理的任何通信都通过网关
控制器。公共云api765用于与公共云计算管理器通信。
139.例如,一些实施例的pcm 710从公共云管理器获取库存信息,并在检测到变化时将这些更新发送到管理平面。管理平面使用该信息在其中实现其逻辑网络的一个或多个公共和/或私有数据中心中维护其自己的数据计算节点的库存。在一些实施例中,来自公共云的该库存可以包括子网、安全组、数据计算节点(例如,vm)和网络接口中的一些或全部。
140.此外,在一些实施例中,pcm 710使用在公共云中的vm上配置的标签来指定这些vm到管理平面的网络和安全设置(例如,逻辑交换机和应当向其添加vm的安全组)。当在未安装本地代理和mfe的vpc中启动vm时,一些实施例的pcm也处置这些软件包在vm上的安装。当其vpc内的vm被破坏时,pcm被另外通知,并且可以使用公共云api 765通过公共云管理器将这些vm放置在隔离的安全组内。
141.在一些实施例中,网关数据路径715作为数据处理网关操作,以处置(i)在其本地vpc内的数据计算节点与位于相同的云提供商的不同vpc中的相同逻辑网络的其它数据计算节点、不同云提供商的不同vpc和/或私有数据中心之间,以及(ii)在其本地vpc内的数据计算节点与逻辑网络外部的源/目的地(例如,通过互联网访问数据计算节点的客户端)之间的数据分组的分组处理。数据路径715示出了数据路径内的服务路由器780(一些实施例的逻辑路由器的集中式路由组件),但是应该理解的是,数据路径还可以包括在vpc内实现的一个或多个逻辑交换机和一个或多个分布式路由组件的配置。
142.在不同的实施例中,数据路径715可以是基于数据路径开发工具包(dpdk)的数据路径、如在一些实施例的数据计算节点中使用的ovs数据路径,或者可以在vm内实现的另一种类型的数据路径。当实现ovs数据路径时,一些实施例使用ovs数据路径用于逻辑交换机和/或分布式路由器处理,同时实现单独的命名空间来处置集中式路由组件处理。另一方面,使用基于dpdk的数据路径的一些实施例实现同一数据路径内的所有逻辑转发元件组件的配置。在美国专利公开2016/0226759中描述了一些实施例的网关数据路径的附加描述,该专利公开通过引用并入本文。
143.如图所示,数据路径715使用两个端口:vtep端口785和上行链路端口790,它们分别连接到本地覆盖vnic 740和上行链路vnic735。网关数据路径715经由vtep 785接收从vpc中的本地工作负载发送的分组,vtep 785使用由云提供商分配的在vpc子网上(即,在与分配给vpc中的其它vm的地址在同一子网上)的ip地址。在一些实施例中,该vtep端口785还用于发送到和来自私有数据中心中的数据计算节点和相同或其它公共数据中心中的其它vpc的分组,因为所有这些流量都被封装用于逻辑网络。
144.数据路径715使用上行链路端口790来发送和接收vpc中的工作负载和外部源/目的地之间的南北向数据流量。这些数据分组在没有封装的情况下从上行链路端口发出(虽然它们可以在云提供商网络上单独地隧道传输到云提供商网关)。此外,这些分组可能需要集中式服务,诸如nat、用于南北向流量的分布式防火墙规则、服务链等。
145.对于跨多个vpc和/或数据中心延伸的逻辑l2交换机,网关数据路径715充当中间转发元件,简单地将分组(使用vtep 785)隧道传输到另一个vpc处的类似配置的网关或传输到私有数据中心中的目的地转发元件(经由vpn)。一些实施例附加地执行安全操作(例如,对这样的分组应用分布式防火墙规则),并且解密并且然后重新加密(以便检查并潜在地处理)在需要加密的两个端点之间发送的分组。如果这些分组需要集中式服务(nat、负载
平衡等),那么在两个不同逻辑交换机之间发送的分组还可能需要服务路由器处理780。
146.dne管理器720与网络控制系统交互,以便管理位于网络中的数据计算节点的加密规则和密钥。当中央控制平面接收到指定发送到或来自在本地vpc中操作的任何工作负载的分组的加密和/或鉴权要求的规则时,中央控制器将这些规则分发给dne管理器720(或者直接或者经由网关控制器705)。如下面更详细描述的和通过引用并入本文的美国专利申请62/380,338中所描述的,一些实施例的加密规则包括由控制器(在这种情况下,dne管理器)用于从通常位于私有数据中心中的密钥存储装置(也称为密钥管理器)获取密钥的票据。
147.dne管理器720使用该票据从密钥管理器请求密钥,密钥管理器提供用于加密规则的主密钥。dne管理器720接收主密钥并使用该密钥生成规则的会话密钥。在一些实施例中,会话密钥根据主密钥和特定于将要执行加密的两个端点的一个或多个附加参数生成。dne管理器(例如,经由网关控制器705)将生成的会话密钥分发到适当的端点。
148.最后,dhcp模块725充当dhcp服务器以在vpc内执行ip地址管理。如果在vpc内实现多个逻辑交换机,那么一些实施例使用相同的dhcp模块725用于多个子网。当vpc中的vm启动时,在一些实施例中,它在其本地网关中使用dhcp服务器以便接收其网络地址。
149.iii.初始vpc配置
150.虽然上节描述了将控制平面扩展到vpc中和使得能够进行这种扩展的网关控制器,但是在一些实施例中vpc内的这些各种组件必须被初始配置并且带有内置的管理平面和中央控制平面。在一些实施例中,公共云中的网络和控制系统的初始设置由操作管理器(也称为生命周期管理器或lcm)管理。网络管理员与该lcm交互(例如,经由用户界面),其使用网络管理员的公共云凭证来访问lcm并初始地配置vpc中的各种vm。
151.图8概念性地图示了将管理私有数据中心的网络控制系统初始地扩展到公共数据中心的一个或多个vpc中的一些实施例的处理800。在一些实施例中,处理800由与私有数据中心管理系统(例如,与计算管理器)交互以执行该初始设置的生命周期管理器(lcm)执行。lcm与上述pcm不同,因为lcm处置公共数据中心中的dcn(包括pcm在其上运行的网关dcn)的初始配置,而pcm处置与公共数据中心管理系统的持续交互。应该理解的是,处理800仅是lcm的一种可能的工作流程,并且假设dcn已经在公共数据中心中被实例化。在一些实施例中,例如对于其中已经定义vpc但在这些vpc中尚不存在dcn的情况,可能存在其它工作流程。
152.如图所示,处理800从接收(在805处)将在其中配置网络的数据中心的公共云提供商的管理员凭证开始。凭证可以包括用户名和密码,以及数据中心所需的可能的其它凭证。一些实施例的lcm可以提供单个接口,该接口允许用户以统一的方式与诸如amazon、google、microsoft等的多个公共云提供商交互,并且用户通过该接口输入这些凭证。然后,该处理使用(在810处)这些凭证来检索公共云中向用户注册的vpc列表。为此,lcm将这些凭证提供给公共云管理系统的接口,并且被提供关于用户的vpc的所请求的数据。在一些实施例中,用户将具有已经在公共云中配置的、已分配子网等的多个vpc。
153.接下来,处理800从管理员/用户接收(在815处)关于哪些vpc将由网络控制系统管理的标识。在一些实施例中,这些是逻辑网络将被扩展到其中的vpc。在一些实施例中,lcm通过用户界面向管理员呈现列表,管理员然后通过界面选择一些或所有可用的vpc。该处理自动部署(在820处)每个识别出的vpc中的网关实例。在一些实施例中,网关实例是具有上
面在第ii节中描述的组件的vm。如上所述,在一些实施例中,每个网关vm是专门为网关vm被部署在其数据中心中的公共云提供商设计的预先打包的机器映像的实例。
154.此外,处理800检索(在825处)由管理员识别出的vpc中的dcn列表(例如,vm)。与检索vpc一样,在一些实施例中,lcm向公共云管理系统查询该信息。该处理从管理员接收(在830处)关于应由网络控制系统管理哪些现有dcn的指示,以及这些dcn的逻辑交换机和/或安全组的规范。在这种情况下,已经配置了逻辑网络拓扑和安全组定义,并且公共云中的dcn被映射到这些实体。处理800向管理平面提供(在835处)逻辑交换机和安全组映射,使得可以经由网络控制系统生成和分发适当的配置规则,以便处理发送到这些dcn和从这些dcn发送的分组。
155.以上处理描述了在公共云中实例化网关dcn的lcm;但是,在一些实施例中,该网关dcn上的网关控制器还将需要用mp/ccp集群进行认证,以便从中央控制器接收数据。图9概念性地图示了用于利用管理平面和控制平面来认证网关控制器的一些实施例的处理900。在实例化包含网关控制器的网关dcn后,网关控制器执行处理900。
156.如图所示,处理900通过识别(在905处)管理平面证书和ip地址开始。在一些实施例中,管理平面证书与用于特定管理平面实例或实例集群的网关dcn的实例化一起被提供。在一些实施例中,该信息与网关dcn一起被提供(例如,在网关控制器可访问的配置文件中)。该处理还生成(在910处)用于与管理平面的安全通信信道的共享秘密。一些实施例基于管理员或lcm输入的命令行界面(cli)命令生成该共享秘密。
157.接下来,使用共享秘密和管理平面ip地址,处理900连接(在915处)到管理平面并验证管理平面的真实性(即,确保它已连接到授权的管理平面应用)。在一些实施例中,管理平面应用提供其证书(或从证书生成的诸如散列的值),并且网关验证证书匹配。该处理还向管理平面注册(在920处)其自己的证书。在一些实施例中,该证书也由管理平面验证。此时,网关具有与管理平面集群的连接,但不是与中央控制平面的连接,因此不能接收配置规则。
158.接下来,处理900经由与管理平面建立的通信信道从管理平面接收(在925处)中央控制平面证书。使用中央控制平面证书,该处理激活(在930处)与中央控制平面的信道。管理平面将已向中央控制平面提供网关证书,该中心控制平面验证从网关接收到的证书与该证书匹配。类似地,网关控制器验证从中央控制平面接收到的证书与从管理平面接收到的证书匹配。利用这种信道建立,一旦中央控制平面确定将哪个配置数据分发给网关控制器,网关控制器就可以开始从中央控制平面接收配置数据。
159.一旦网关内置有管理平面和中央控制平面,vpc的dcn中的代理就可以类似地被置入。但是,与私有数据中心中的网关或本地控制器不同,这些本地代理不与在私有数据中心中操作的mp/ccp集群通信,因为这些实体将网关控制器视为所有这些逻辑端口的控制器。因此,这些代理仅通过网关控制器验证自己。
160.图10概念性地图示了由在公共云vpc中的dcn中执行的本地控制代理执行,以利用该vpc的网关控制器来认证自己的一些实施例的处理1000。如图所示,处理1000通过识别(在1005处)网关名称和证书开始。在一些实施例中,网关名称作为控制代理的配置文件内的url(例如,nsx-gw.aws.com)提供。在一些实施例中,该配置文件还包括接口列表及其类型(例如,覆盖或非覆盖)。该处理基于网关名称解析(在1010处)网关ip地址。例如,一些实
施例使用数据中心内的dns服务器将网关名称解析为其在vpc内的ip地址。
161.然后,处理1000启动(在1015处)到网关控制器的控制信道。该处理将其自己的代理证书发送(在1020处)到网关,并经由该控制信道从网关接收网关证书。在一些实施例中,网关被授权在第一次使用时信任代理证书,而不是要求每个代理的证书已经向网关预先注册。但是,代理上的处理1000确实(在1025处)验证从网关接收到的证书以确保它已连接到有效的网关控制器。
162.以上处理涉及公共数据中心中的各种网络控制系统实体(即,网关控制器和控制代理)的认证,以经由网络控制系统接收配置数据。此外,这些处理假设其中控制器操作的vm已经存在。在一些情况下,用户(例如,非管理员用户)将需要在公共数据中心vpc中创建新的工作负载vm,并确保vm上的mfe被供应有正确的配置规则集合。这可能在一天中的任何时间发生,并且因此理想情况下不应要求网络管理员在那时进行任何工作或授权。由此,在一些实施例中,网络控制系统被配置为自动供应这些新的工作负载vm。
163.图11概念性地图示了当在现有受管理的vpc中创建新工作负载dcn(在该示例中为vm)时一些实施例的网络控制系统1100中的数据流。如图所示,该图包括vpc内的网关vm 1100和(新)工作负载vm 1105,以及在vpc外部的公共云数据储存库1110(例如,由公共云管理员用来管理公共云的计算管理系统)。此外,该图包括网络控制系统的管理平面1115和中央控制平面1120,其可以位于不同的vpc中、位于私有数据中心等。图示为网关vm 1100的组件是公共云管理器1125和网关控制器1130,但是一些实施例的网关vm可以附加地包括上面参考图7描述的其它功能(例如,网关数据路径、de管理器等)。
164.在启动vm之前,用户将从管理员接收以下中的一些或全部:(i)网关ip地址和令牌/证书(在一些实施例中它们可以在代理配置文件内预先配置),(ii)工作负载将连接到的逻辑交换机的令牌和/或工作负载将属于的安全组,以及(iii)要在实例上安装的控制代理程序包。在设置vm时,用户确保vm具有网关ip和证书,其可以或者在配置文件和代理设置中提供(如上面参考图10所述),或者使用公共云提供商的api。用户还将逻辑交换机的令牌和/或安全组添加为实例上的标签。在一些实施例中,当用户通过云提供商用户界面创建实例时,该界面包括向vm添加标签的能力,这些标签作为关于vm实例的数据被存储在公共云数据储存库1110中。例如,标签可以被标记为“token-ls1”和“token-sg1”,以指示vm应该属于安全组sg1并且附接到逻辑交换机ls1。这些标签可以经由任何带外机制(例如,口头地、经由电子邮件或消息传递等)从网络控制系统管理员提供给用户。
165.此时,vm数据存储在公共云数据储存库1110中。该数据指示vm 1105在特定vpc(即,网关vm 1100的vpc)中被实例化,并且还可以包括关于vm的其它数据,包括由用户输入的逻辑交换机和安全组标签。虽然公共云储存库不会将标签与这些实体相关联,但它确实会将这些标签存储为附加到vm。如圆圈1所示,pcm 1125从公共云数据储存库1110检索关于该新vm的信息。该信息包括新vm的存在以及与云提供商相关联的各种属性,诸如其云提供商标识符、与其相关联的vpc,以及区域和/或用户信息。在一些实施例中,pcm 1125使用与公共云储存库1110的轮询机制或通知信道来确定已在vpc中创建新实例。
166.响应于确定在vpc中创建新vm,pcm 1125采取若干动作。如圆圈2所示,pcm将新vm添加到管理平面1115的库存(例如,经由创建新vm对象的api调用),并添加该vm的所有各种公共云提供商属性(vm标识符、vpc标识符、接口id等)作为在该vm的管理平面中创建的对象
上的标签。这使得网络管理员能够在管理平面库存中查看该vm及其属性。
167.pcm 1125还使用云提供商api读取逻辑交换机和/或安全组标签。pcm 1125使用逻辑交换机标签来确定在其上在管理平面中创建新端口(例如,经由管理平面api)的逻辑交换机。如圆圈3所示,pcm 1125创建新端口并将vm的接口附接到该逻辑端口(例如,使用来自云提供商的接口标识符)。此外,pcm读取接口的ip和mac地址,并将它们配置为新创建的逻辑端口上的mac/ip绑定。一些实施例还启用任何必要的特征,使得如果需要可以为逻辑端口设置dfw规则。此外,如圆圈3所示,pcm 1125基于安全组标签识别新vm 1105的安全组,并经由管理平面1115将逻辑端口添加到该安全组中。
168.当vm 1105初始地通电(假设已经安装了代理1135)时,该代理读取网关ip并建立其与网关的连接(例如,经由上述处理1000)。一旦连接被建立,代理1135就向网关发送附接请求,如圆圈4a所示。这请求将vm的接口附接到逻辑网络,但是代理可能还没有关于接口将附接哪个逻辑交换机的信息。在一些实施例中,附接请求使用云提供商接口标识符来指定其应该被附接到逻辑交换机的接口。网关控制器1130将该请求转发到中央控制平面1120,如圆圈4b所示。
169.ccp将已从mp接收关于为接口创建逻辑端口的信息。由于请求中的标识符应该与由pcm用操作2提供的云提供商标识符匹配,因此ccp可以基于请求中所使用的标识符来识别正确的逻辑端口。现在将网关控制器1130视为逻辑端口的位置的ccp然后将逻辑端口信息和任何相关联的策略规则提供给网关控制器1130,如圆圈5a所示。网关控制器将该数据(如圆圈5b所示)传递给代理1135,使得它可以生成在工作负载vm 1105上操作的mfe的配置数据,并开始处理发送到工作负载应用和从工作负载应用发送的分组。网关控制器还高速缓存该数据,使得如果vm 1105重新启动,那么不需要将未来的附接请求转发到中央控制平面。此外,根据需要,网关控制器1130将关于逻辑端口及其策略规则的信息发送到vpc中的其它代理。如上所述,网关控制器1130还执行vm 1105的覆盖设置,并将覆盖信息分发给代理1135(如圆圈6所示)以及vpc中其它vm上的代理。
170.虽然该工作流描述了其中用户手动创建dcn的情况,但是对于自动缩放的dcn将发生类似的处理。在一些实施例中,管理员可以(经由云提供商接口)建立待监控以供使用的某些dcn(例如,一组相同或类似的工作负载,诸如web服务器),并使云提供商管理系统在dcn过载时自动创建附加的实例。在这种情况下,新的dcn将由云提供商系统自动添加到公共云数据储存库1110,并且数据流将如图中所示发生。此外,一些实施例的pcm 1125定期轮询云提供商数据储存库1110以识别其vpc中的现有dcn的变化,包括接口的创建/删除/修改(例如,ip和/或mac地址的变化)和dcn上标签的变化。当这些变化发生时,pcm 1125将它们传播到管理平面1115。
171.在一些实施例中,用户将不希望网络控制系统执行转发,而是仅执行微分段和/或分布式防火墙规则实施。这种非重叠模式也将在下面的第v.a节中进一步详细描述。在一些这样的实施例中,管理平面创建平坦的逻辑交换机(其实际上不涉及任何交换),其中所有附接都对该相同的逻辑交换机进行。在这种情况下,当通过云提供商接口指定新的dcn时,用户输入网络的默认标签而不是特定的逻辑交换机标签。然后,用户在子网(即,vpc)中创建新dcn,并且云提供商为该实例提供ip地址。在实例化新dcn后,pcm将在其vpc中识别该新dcn并向mp提供数据,使得新dcn可以附接到该平坦的逻辑交换机。然后,网络控制系统可以
根据需要将安全规则向下推送到在新dcn上操作的mfe。
172.iv.逻辑拓扑的物理实现
173.如上所述,通过将逻辑网络扩展到一个或多个公共数据中心中,逻辑拓扑可以跨这些数据中心延伸。一些实施例将附接到给定逻辑交换机的vm限制到一个vpc(或私有数据中心),而其它实施例允许甚至单个逻辑交换机跨多个vpc或多个数据中心延伸。
174.图12概念性地图示了一些实施例的逻辑拓扑1200,管理员可能将该拓扑输入到管理平面中。如图所示,逻辑拓扑1200包括逻辑路由器1205和两个逻辑交换机1210和1215。四个虚拟机附接到逻辑交换机1210,并且逻辑路由器包括到外部网络的上行链路端口。在这种情况下,逻辑网络中仅示出了一层逻辑路由器,但是一些实施例也可以包括多层逻辑路由器。此外,一些实施例的管理平面可能为逻辑路由器1205定义若干逻辑路由组件(例如,分布式路由器和一个或多个集中式服务路由器)。在美国专利公开2016/0226754中进一步详细描述了多层逻辑路由器和为逻辑路由器创建多个路由组件,该专利公开通过引用并入本文。
175.在一些实施例中,附接到逻辑路由器的逻辑交换机1210和1215每个都被分配子网,因此所创建的附接到特定逻辑交换机的工作负载vm应该被分配在适当子网中的ip地址。但是,如下面在第v.b节中更详细描述的,在一些实施例中,关于云提供商的vm的ip地址不同于映射到该vm的逻辑端口的ip地址,因为面向云提供商网络的ip地址是为在vm上操作的mfe创建的隧道端点的ip地址。在这种情况下,逻辑交换机1210被分配子网192.168.1.0/24。此外,示出了附接到逻辑交换机1210的四个vm。
176.图13图示了如在单个公共云提供商的单个vpc 1300内实现的附接到逻辑交换机1210的四个vm 1305-1320的示例。在该示例中,附接到逻辑交换机1210的所有vm在同一vpc中被实例化,其中仅附接到该逻辑交换机的vm在vm中被实例化。该vpc 1300被分配子网10.1.0.0/16,其可以是公共子网或私有子网,这取决于管理员如何已在公共云上配置该vpc。在该示例(以及本节中的其它示例)中,mfe全部正在以覆盖模式操作,使得vm ip地址不同于工作负载应用ip地址(即,与逻辑交换机端口相关联的ip地址)。
177.如图所示,在192.168.1.0/24子网中为每个vm分配不同的工作负载ip(分别为192.168.1.1、192.168.1.2、192.168.1.3和192.168.1.4)。当工作负载应用发送分组时,该ip地址将是该分组的报头中使用的源ip。但是,在这些vm上操作的mfe具有在10.1.0.0/16子网上的不同ip地址(分别为10.1.0.1、10.1.0.2、10.1.0.3、10.1.0.4)的vtep。因此,退出vm的分组将使用该vtep ip地址作为源ip地址进行封装(在源vm中的mfe执行逻辑处理之后),以便被发送到vpc中的其它目的地。
178.该图还图示了这四个mfe与vpc中的网关1325之间的隧道。这些隧道通过公共云提供商的底层网络(本文称为“底层”)。此外,虽然为了简单起见未在这里示出,但是在vm 1305-1320上操作的每对mfe之间创建了(通过底层网络的)隧道。
179.网关还可以向室内私有数据中心1330内的目的地发送分组(以及从其接收分组)。为了发送这些分组,网关1325使用其vtep ip(10.1.0.5)封装分组,使得目的地将把传入分组识别为逻辑网络分组。为了保护vpc 1300中的网关1325与私有数据中心1330中的目的地(例如,附接到逻辑交换机1215的vm)之间的流量,在一些实施例中,经由vpn隧道1335发送分组。在该示例中,未示出网关到外部网络的连接,因为该内容将在下面关于集中式和分布
式网络地址转换和其它服务的部分中更详细地讨论。
180.图14图示了其中逻辑交换机1210跨单个数据中心(即,同一云提供商的数据中心)内的两个单独的vpc 1400和1405延伸的示例。在这种情况下,四个vm 1410-1425具有在单个子网(192.168.1.0/24)上的相同ip地址用于其工作负载应用。但是,由于这两个vpc具有不同的子网(第一vpc被分配10.1.0.0/16并且第二vpc被分配10.2.0.0/16),因此mfe的vtep并非全部在同一个子网上。因此,第一vpc 1400中的两个vm 1410和1415上的vtep被分配ip地址10.1.0.1和10.1.0.2,而第二vpc 1405中的两个vm 1420和1425上的vtep被分配ip地址10.2.0.1和10.2.0.2。
181.网关1435和1440也在每个vpc内被实例化,并且每个具有在其相应的vpc的子网上的vtep。在其中vpc未对等的情况下,那么在两个网关之间发送的分组使用vpn连接来发送(即,vpc也可以位于单独的数据中心中)。但是,一些云提供商使得能够进行vpc的对等,在这种情况下,分组可以直接从其中一个vpc中的一个端点被发送到另一个对等vpc中的第二个端点。因此,如果两个vpc 1400和1405被对等,那么从vm 1410和1415之一发送到vm1420和1425之一的分组不需要经由vpn 1430发送。实际上,一些实施例甚至不要求通过网关1435和1440发送这些分组,而是可以通过提供商网络直接从一个vm隧道传输到另一个vm。但是,如果vpc 1400和1405没有被对等,那么这样的vpc间分组应该经由vpc内隧道从vm发送到其网关、经由vpn从第一网关发送到目的地vpc中的第二网关、以及从第二网关发送到目的地vm。
182.为了连接到私有数据中心1445(例如,到达附接到第二逻辑交换机1215的vm),网关使用vpn 1430。该vpn 1430代表用于将私有数据中心与一个或多个云提供商处的一个或多个vpc链接的各种可能的vpn配置。例如,一些实施例在每个目的地之间使用全网格vpn隧道,而其它实施例使用中心辐射(hub-and-spoke)的vpn或两者的组合。此外,不同的实施例可以使用由公共云提供商或网络控制系统或其组合(例如,如果使用vpn网格)提供的vpn。
183.图15图示了与图14的配置类似的配置,但是附接到逻辑交换机1210的vm 1510-1525跨位于两个完全不同的云提供商的数据中心的vpc 1500和1505延伸。这种情况与图14的情况的不同之处在于,通常没有在两个不同数据中心(尤其是不同云提供商的两个不同数据中心)之间对等vpc的选项,因此数据中心中的工作负载之间的任何通信将经由vpn 1530发送。如在图14的讨论中那样,一些实施例可以在多公共云配置中使用中心辐射的vpn,而其它实施例使用单独的vpn连接用于(i)每个到另一个公共云的公共云,以及(ii)每个到私有数据中心的公共云。
184.除了这些图中所示的示例之外,应该理解的是,其它配置也是可能的。例如,单个逻辑交换机可以在私有数据中心和一个或多个公共数据中心之间延伸。在图13-15的任何一个中,附接到逻辑交换机的vm中的一个或多个可以在室内数据中心内实现,而不是在公共云vpc之一中实现。
185.v.工作负载vm中的mfe配置
186.如上所述,为了使得网络控制系统能够为发送到和来自公共云中的工作负载dcn的数据流量配置分组处理规则,一些实施例将工作负载dcn中的受管理转发元件与配置mfe的本地控制代理一起安装。该mfe连接到dcn的网络接口,使得发送到和来自这些dcn中运行的工作负载应用的所有分组都根据由本地控制代理安装的配置数据通过mfe(并由mfe处
理)。
187.在本发明的不同实施例中,可以不同地配置这些mfe。例如,一些实施例以非覆盖模式配置mfe,其中工作负载应用的ip地址与dcn的网络接口的ip地址相同。在这种情况下,mfe不执行任何分组处理,而是被配置为执行微分段和/或网络安全处理,诸如分布式防火墙规则处理。在其它实施例中,mfe被配置为使得工作负载应用连接到的接口具有与用于vtep的dcn的面向外的接口不同的ip地址。在这种情况下,除了任何网络安全性或其它处理之外,mfe还根据逻辑网络配置执行分组转发。最后,管理员可能希望为已经存在的工作负载保留相同的ip地址,但是利用逻辑网络进行数据分组处理、隧道传输等。在第三种情况下,mfe在与工作负载应用单独的dcn的命名空间中进行配置。这使得工作负载应用能够连接到具有其现有ip地址的接口,并且然后使用veth对将该接口连接到其单独命名空间中的mfe,该命名空间对其vtep使用相同的ip地址。
188.a.非覆盖模式下的mfe
189.图16概念性地图示了具有以非覆盖模式配置的受管理转发元件1600的vm 1605。在该示例中,mfe是open vswitch(ovs)实例。在所有这些示例中,mfe被配置为包括两个桥接器—集成桥接器(应用工作负载经由vm的网络堆栈连接到该桥接器),以及连接到vn的虚拟网络接口控制器(vnic)的物理接口(pif)桥接器。
190.如该图所示,在vm 1605上操作的工作负载应用1610(例如,web服务器、应用服务器等)经由内部端口连接到mfe的集成桥接器1615。该内部端口与vm的网络堆栈相关联,并且因此具有如由公共云提供商提供的vm的ip地址(例如,在图13的示例中的10.1.0.0/24ip地址)。在一些实施例中,集成桥接器1615不执行转发或封装。而是,在执行任何安全处理(假设分组未被丢弃或拒绝)之后,集成桥接器1615经由接插端口自动地将所有分组转发到pif桥接器1620。
191.集成桥接器还使用实现任何网络安全性或其它非转发策略的流条目来处理从应用1610接收到的(或来自pif桥接器和发送到应用1610)的分组。例如,集成桥接器实现适用于vm 1605附接到的逻辑端口的dfw规则。在一些实施例中,这些规则可以根据源和/或目的地mac地址来指定,并且可以允许将发送到或来自这些指定的地址和/或在特定条件(例如,连接开口)下的分组丢弃、拒绝等。此外,不同的实施例可以实现日志记录、分布式加密规则(用于传出分组的加密和用于传入分组的解密两者)以及到第三方服务装置(例如,中间盒装置)的隧道传输的组合。
192.图17图示了由在非覆盖模式下操作的mfe通过vpc进行分组处理的示例,具体示出了第一工作负载应用1705将分组发送到同一vpc上的另一个工作负载应用1710。图17包括在公共数据中心中的同一vpc中操作vm的两个主机机器1715和1720。第一vm 1725在第一主机机器1715上操作,其中工作负载应用1705和mfe 1735在第一vm中执行。第二vm 1730在第二主机机器1720上操作,其中工作负载应用1710和mfe 1740在第二vm中执行。在这种情况下,两个mfe都以非覆盖模式操作。此外,主机机器1715和1720中的每一个包括它们各自的vm连接到的相应公共云转发元件1745和1750。这些公共云转发元件可以是软件虚拟交换机(并且实际上可以是与mfe 1735和1740相同类型的虚拟交换机)。但是,与mfe 1735和1740不同,网络控制系统不能访问这些转发元件,因为它们由公共云提供商控制。
193.如图所示,第一工作负载应用1705在其vm 1725上向mfe 1735发送分组1755。分组
1755包括源和目的地ip地址、各种报头(例如,tcp/udp、ip、以太网等)以及有效载荷。如本文档中所使用的,分组是指跨网络发送的以特定格式的位的集合。应该理解的是,术语分组在本文中可以用于指可以跨网络发送的各种格式化的位的集合,诸如以太网帧、ip分组、tcp段、udp数据报等。虽然下面的示例涉及分组,但是应该理解的是,本发明不应限于任何特定格式或类型的数据消息。
194.在接收到分组1755后,mfe 1735应用任何适用的安全策略(例如,防火墙规则)或已由本地控制代理(未示出)配置的其它非转发策略。假设分组未被丢弃,那么mfe 1735从连接到公共云转发元件1745的vm接口输出分组1755。假设公共云网络在主机机器之间使用隧道传输,那么公共云转发元件1745利用其自己的底层封装来封装分组,并通过物理云提供商网络发送该封装分组1760。底层封装使用第一主机机器1715的接口的ip作为其源地址,并使用目的地主机机器1720的接口的ip作为其目的地地址。
195.然后,分组1760被主机机器1720接收,并且被公共云转发元件1750解封装。转发元件1750基于其目的地地址将分组1755发送到工作负载vm 1730的接口,其中mfe 1740处理该分组。mfe 1740执行其网络安全处理,并将分组递送到工作负载应用1710。在一些实施例中,在源vm和其mfe被攻击者破坏的情况下,在源和目的地两者处的mfe执行网络安全性。
196.因为网络控制系统不提供任何转发,因此在一些实施例中,逻辑交换机不能跨越多于一个vpc(l2域限于底层vpc子网)。此外,l3转发限于使用对等或vpn在vpc内或vpc之间进行路由。但是,非覆盖模式确实允许应用继续在来自云提供商的ip地址上操作,从而促进与由云提供商提供的其它服务(诸如存储或负载平衡服务)的轻松无缝集成。南北向流量使用网关数据路径作为默认网关,在这种情况下,由云提供商提供并附接到网关的北向接口的单独路由表指向云提供商的互联网网关作为默认网关。
197.b.覆盖模式下的mfe
198.图18概念性地图示了具有以覆盖模式配置的受管理转发元件1800的vm 1805,其具有不同的ip地址用于(i)由应用使用的内部端口,以及(ii)封装要发送到同一vpc上的其它vm的分组的vtep。如图16所示,mfe 1800是配置有集成桥接器1815和pif桥接器1820的ovs实例。在vm 1805上操作的工作负载应用1810(例如,web服务器、应用服务器等)经由内部端口连接到mfe的集成桥接器1815。但是,在这种情况下,内部端口与用于与工作负载附接到的逻辑端口对应、并且因此属于与该逻辑端口相关联的逻辑交换机的子网的ip地址(例如,图13中的192.168.1.0/24地址)的网络堆栈相关联。
199.在这种情况下,集成桥接器1815对发送到工作负载应用1810和从工作负载应用1810发送的分组执行逻辑l2和/或l3处理。这可以包括逻辑拓扑中的每个逻辑转发元件的入口和出口上下文映射以及入口和出口acl,以及逻辑交换和/或路由。此外,在一些实施例中,如在非覆盖mfe的情况下,集成桥接器执行分布式防火墙、分布式加密、到第三方服务装置的隧道传输等。
200.与mfe 1600不同,mfe 1800未配置有用于在两个桥接器之间发送分组的接插端口。替代地,集成桥接器1815包括连接到pif桥接器1820上的vtep(例如,经由云提供商ip地址的第二网络堆栈)的覆盖端口。该vtep具有云提供商ip地址(例如,图13中的10.1.0.0/16地址),集成桥接器1815使用该地址来封装从vm 1805发出的分组,并且该地址由同一vpc中的其它mfe(包括网关数据路径)使用,以将工作负载应用的分组隧道传输到mfe 1800。发送
到vtep ip地址的这些分组(经由具有云提供商ip地址的vm 1805的vnic)在被递送到工作负载应用1810之前由集成桥接器1815解封装。
201.图19图示了由在覆盖模式下操作的mfe通过vpc进行分组处理的示例,具体示出了第一工作负载应用1905将分组发送到同一vpc上的另一个工作负载应用1910。图19包括在公共数据中心中的同一vpc中操作vm的两个主机机器1915和1920。第一vm 1925在第一主机机器1915上操作,其中工作负载应用1905和mfe 1935在第一vm中执行。第二vm 1930在第二主机机器1920上操作,其中工作负载应用1910和mfe 1940在第二vm中执行。在这种情况下,两个mfe都以覆盖模式操作,具有与逻辑交换机端口相关联的内部ip和与云提供商的vpc子网相关联的vtep ip。此外,主机机器1915和1920中的每一个包括它们各自的vm连接到的相应公共云转发元件1945和1950。这些公共云转发元件可以是软件虚拟交换机(并且实际上可以是与mfe 1935和1940相同类型的虚拟交换机)。但是,与mfe 1935和1940不同,网络控制系统不能访问这些转发元件,因为它们由公共云提供商控制。
202.如图所示,第一工作负载应用1905在其vm 1925上向mfe 1935发送分组1955。分组1955包括源和目的地ip地址、各种报头(例如,tcp/udp、ip、以太网等)以及有效载荷。在这种情况下,源ip地址是工作负载应用的内部ip地址(而不是vm接口ip地址)。
203.在接收到分组1955后,mfe 1935根据其由本地控制代理的配置除了任何应用安全策略(例如,防火墙规则)之外还执行逻辑转发。如果分组的目的地mac地址与正在发送的工作负载位于同一逻辑交换机上,那么通过拓扑的处理将仅包括该逻辑交换机的l2处理。如果目的地位于不同的逻辑交换机上,那么如果涉及多个路由组件的话,逻辑处理将包括源逻辑交换机的处理、至少一个分布式逻辑路由器的处理,以及目的地mac地址附接到的逻辑交换机(可能包括逻辑路由组件之间任何过渡的逻辑交换机)的处理。
204.假设分组未被丢弃,那么mfe 1935封装分组1955以便将分组隧道传输到其目的地(使用例如geneve、stt等),并从连接到公共云转发元件1945的vm接口输出该封装分组1960。如果公共云网络使用主机机器之间的隧道,那么公共云转发元件1945利用其自己的底层封装第二次封装分组,并通过物理云提供商网络发出该两次封装的分组1965。底层封装使用第一主机机器1915的接口的ip地址作为其源地址,并使用目的地主机机器1920的接口的ip地址作为其目的地地址。
205.在穿过底层(云提供商)网络之后,分组1965被主机机器1920接收,其中公共云转发元件1950移除外部(底层)封装。转发元件1950基于目的地vtep地址将一次封装的分组1960发送到工作负载vm 1930的接口,其中mfe 1940处理该分组。mfe 1940移除覆盖封装、执行任何附加的逻辑处理和网络安全处理,并将内部分组1955递送到工作负载应用1910。
206.工作负载应用还可以将分组发送到在逻辑网络上但位于vpc外部的目的地(例如,在相同数据中心的不同vpc处、在相同或不同云提供商的不同公共数据中心处、或者在租户自己的私有数据中心处)。在一些实施例中,这些分组被隧道传输到vpc内的网关,并经由vpn(或另一种安全方式)发出到另一个数据中心处的目的地。目的地可以位于同一逻辑交换机上(如上面第iv节中所示的示例),或者可以位于单独的逻辑交换机上(在这种情况下,如果需要,网关可以提供集中式路由器处理)。
207.图20图示了对于发送到vpc外部的逻辑网络目的地的分组,由以覆盖模式的mfe通过vpc进行分组处理的示例。图20包括在公共数据中心中的同一vpc中操作vm的两个主机机
器2015和2020。工作负载vm 2025在第一主机机器2015上操作,其中工作负载应用2005和mfe 2035(处于覆盖模式)在工作负载vm中执行。网关vm 2030在第二主机机器2020上操作,其中网关数据路径2010在vm上执行(还包括控制器、pcm等,由于它们不参与分组处理,因此在这里未示出)。如上所述,mfe 2035以覆盖模式运行,具有与工作负载附接到的逻辑交换机端口相关联的内部ip地址和与云提供商的vpc子网相关联的vtep ip地址。此外,主机机器2015和2020中的每一个包括它们各自的vm连接到的相应公共云转发元件2045和2050。与前面的情况一样,这些公共云转发元件可以是网络控制系统不能访问的软件虚拟交换机。
208.如图所示,工作负载应用2005在其vm 2025上将分组2040发送到mfe 2035。与先前的分组一样,该分组2040包含源和目的地ip地址(以及源和目的地mac地址)、各种报头和有效载荷。与上图一样,源ip地址是工作负载应用2005的内部ip地址(不是vm接口ip地址)。分组的目的地ip地址对应于位于vpc外部(以及同一数据中心内的对等vpc外部)的逻辑网络目的地。这可以是位于私有数据中心、不同的公共数据中心(来自相同或不同的提供商)等的dcn。如果目的地与工作负载应用在同一逻辑交换机上,那么分组2040中的目的地mac地址也是这个目的地的mac地址。另一方面,如果目的地位于不同的逻辑交换机上,那么目的地mac是工作负载的逻辑交换机连接到的逻辑路由器端口的mac。
209.在接收到分组2040后,mfe 2035根据其由本地控制代理的配置除了任何应用安全策略(例如,防火墙规则)之外还执行逻辑转发。如果分组的目的地mac地址与正在发送的工作负载位于同一逻辑交换机上,那么通过拓扑的处理将仅包括该逻辑交换机的逻辑交换处理。如果目的地在不同的逻辑交换机上,那么逻辑处理将包括(工作负载应用2005)附接到的源逻辑交换机的处理、至少一个分布式路由器的处理,以及目的地mac地址附接到的逻辑交换机的处理。在任一情况下,mfe都将目的地逻辑交换机端口识别为映射到网关vtep(因为vpc外部的所有逻辑端口都映射到网关)。
210.假设分组未被丢弃(例如,基于分布式防火墙规则),那么mfe 2035封装分组2040以便将分组隧道传输到网关(使用例如geneve、stt等),并从连接到公共云转发元件2045的vm接口输出该封装分组2055。如图所示,用于该封装的源ip地址是mfe2035的vtep的源ip地址(即,vm接口的地址),而目的地ip地址是网关数据路径2010的vtep的地址(即,用于隧道流量的网关vm接口的地址)。
211.假设公共云转发网络使用主机机器之间的隧道传输,那么公共云转发元件2045利用其自己的底层封装第二次封装分组,并通过物理云提供商网络发出该两次封装的分组2060。底层封装分别使用主机机器2015和2020的接口的ip地址作为其源和目的地ip地址。
212.在穿过底层(云提供商)网络之后,分组2065被主机机器2020接收,其中公共云转发元件2050移除底层封装。转发元件2050基于覆盖封装的目的地ip地址经由网关vm的用于隧道传输的流量的接口将仍然封装的分组2055发送到网关vm 2030。网关数据路径2010通过移除封装、识别内部分组2040的目的地逻辑端口,以及将该端口映射到目的地隧道端点来处理该分组2055。在该具体示例中,目的地映射到室内mfe(即,在租户自己的私有数据中心中)。一些实施例将其用作隧道端点,而其它实施例将分组隧道传输到用于私有数据中心的网关。如图所示,对于新封装的分组2065,源ip地址是网关vtep的地址(即,原始封装分组2055的目的地地址),而目的地是室内mfe的vtep。此外,为了到达其在私有数据中心处的目的地,封装分组2065通过安全vpn隧道发送,因为分组可能需要穿越互联网以到达目的地数
据中心。在一些实施例中,该vpn隧道可以在网关处应用,或者可以由公共云提供商提供的单独vpn网关应用。然后vpn隧道传输的分组2070被发出数据中心。
213.c.具有单个ip的覆盖模式下的mfe
214.在一些情况下,数据中心租户可能想要将他们自己的网络控制系统强加在公共数据中心中操作的现有dcn集合上,但是这样做而不修改工作负载的ip地址。为了解决这种需要,一些实施例使得公共数据中心dcn中的mfe和工作负载应用(例如,web服务器、应用服务器等)能够在dcn的不同命名空间中操作。这使得两个命名空间具有与相同ip地址相关联的独立网络堆栈(与上面在子节b中描述的其中在相同命名空间中操作的两个网络堆栈不能与相同的ip地址相关联的标准覆盖模式相反。
215.图21概念性地图示了具有以覆盖模式配置但是使用与用于vtep端口相同的ip地址用于内部端口的受管理转发元件的vm 2100。如在先前的示例中一样,mfe是配置有集成桥接器2115和pif桥接器2120的ovs实例。但是,在这种情况下,vm 2100既包括根命名空间2105又包括第二命名空间2110,第二命名空间2110被称为mfe命名空间,因为mfe桥接器在该第二命名空间内被实例化。
216.在vm 2105上操作的工作负载应用2125在根命名空间2105中执行,这是vm的用户(不是网络管理员)在登录到vm中时通常将看到的。mfe命名空间2110包括集成桥接器2115和pif桥接器2120,它们以与上述mfe 1800相同的方式操作。即,集成桥接器2115对发送到工作负载应用2125和从工作负载应用2125发送的分组执行逻辑l2和l3处理。这可以包括逻辑拓扑中的每个逻辑转发元件的出口和入口acl以及逻辑交换和/或路由。此外,如在mfe的其它模式中那样,集成桥接器2115执行分布式防火墙、分布式加密、到第三方服务装置的隧道传输等。此外,在这种情况下,没有被配置为在两个桥接器2115和2120之间发送分组的接插端口。替代地,集成桥接器2115包括连接到pif桥接器2120上的vtep的覆盖端口。
217.但是,使用两个不同的命名空间允许pif桥接器上的vtep和应用2125两者都使用来自云提供商的相同ip地址(即,与vm 2100的vnic 2130相关联的ip地址)。在两个命名空间中的每一个中运行的不同网络堆栈都被允许与相同的云提供商ip地址相关联。这两个命名空间2105和2110通过veth(虚拟网络接口)对连接,该veth对连接在两个命名空间中的每一个上配置的这些veth接口。
218.因此,当工作负载应用将分组发送到逻辑网络目的地(或者在相同的vpc中或者在不同的vpc/数据中心中)时,该分组(具有云提供商ip作为其源ip)通过veth对被发送到集成桥接器2115,集成桥接器2115对该分组执行必要的逻辑网络处理。集成桥接器2115还封装要发送到vpc上的另一个vm(或者工作负载vm或者网关vm)的这些分组。封装报头中的源ip与内部分组的源ip相同。但是,仍然使用封装,因为一些实施例的逻辑网络使用封装报头来携带附加的上下文信息(例如,关于由集成桥接器执行的逻辑处理)。类似地,(从vpc中的网关或其它mfe)发送到工作负载应用的分组将在利用相同目的地ip地址用于其内部和外部报头的pif桥接器2120处被接收。集成桥接器移除外部(封装)报头并标识任何逻辑上下文,然后通过veth对将分组递送到工作负载应用(即,递送到根命名空间中的网络堆栈)。因此,就该图与图19和图20所示的各种组件的输入和输出而言,mfe、公共云转发元件、网关等的分组处理类似于图19和20中所示的分组处理,但是mfe的内部工作方式是不同的。
219.vi.nat和其它服务
220.在上面的第v节中,分组处理示例都涉及源自公共云vpc中的工作负载dcn的东西向流量(或者发送到vpc中的另一个工作负载,或者发送到不同的数据中心但是仍然附接到逻辑网络),并专注于由在这些工作负载dcn中操作的mfe执行的不同类型的处理。但是,许多逻辑网络包括外部客户端应该可访问的工作负载。例如,典型的三层(web服务器、应用服务器、数据库服务器)设置将至少要求web服务器能够经由互联网与客户端连接。由于vpc子网通常是可以由数据中心内的不同租户的许多vpc重用(和在各种不同的数据中心处重用)的私有ip地址,因此通常使用网络地址转换(nat)来修改从内部使用的私有ip地址到公共ip地址的传出分组的源ip地址(以及对应地,传入分组的目的地ip地址)。
221.此外,当逻辑网络至少部分地在公共数据中心中实现时,到公共ip地址的实际转换可能需要由云提供商的互联网网关执行,而不是由任何受管理转发元件执行。云提供商网关将是分组的在数据中心内的最后一跳,并且虽然在数据中心内部,但是它们将需要拥有私有ip地址。但是,由于云提供商将不会分配由工作负载应用使用的内部ip地址(与逻辑交换机端口对应的地址),因此不应使用这些地址将分组发送到提供商的网关。替代地,由一些实施例的网络控制系统管理的mfe执行它们自己的nat以将内部ip地址转换为向云提供商注册的地址。
222.不同的实施例可以以不同的方式实现这种网络地址转换。一些实施例将nat应用为网关数据路径的一部分。在这种情况下,北向分组从源mfe隧道传输到网关,其中ip地址以一致的方式转换为辅助ip地址。一些实施例使用nat表,该表将每个内部工作负载ip地址映射到向云提供商注册的辅助ip地址。然后,所有这些辅助ip地址都与网关的北向接口相关联,云提供商的网关执行从这些辅助ip地址到公共ip地址的转换。在集中式的情况下,也可以在网关处应用其它网络服务,诸如服务链(向第三方服务装置发出数据分组以进行各种中间盒处理)、入侵检测、南北向防火墙、vpn、审计日志记录等。此外,当网关执行nat时,也需要在网关中执行任何负载平衡(云提供商可能无法在这种情况下执行负载平衡,因为就提供商的网关而言,所有流量都被发送到网关接口)。
223.其它实施例在源vm(传入流量的目的地vm)上操作的mfe中以分布式方式执行第一级nat。在这种情况下,对于传出分组,源mfe执行地址转换并将转换后的分组直接发送到云提供商网关,从而绕过网关。由此,源mfe区分它使用其vtep ip封装的覆盖流量和它未封装地发送到云提供商底层网络上的南北向流量。由于该流量(在两个方向上)不通过网关,因此在工作负载vm上操作的mfe处执行任何服务链、入侵检测、南北向防火墙规则、日志记录等。
224.对于负载平衡,分布式内部nat允许使用云提供商的现有负载平衡特征。可以使用单个地址(或仅少量地址),而不是使用多个公共ip地址,并且所有传入连接都被发送到该地址。云提供商的互联网网关(或特殊的负载平衡装置)执行负载平衡,以便以平衡的方式跨不同的工作负载vm(其仍然需要执行它们自己的内部nat)分发这些连接。
225.a.集中式nat
226.在集中式nat的情况下,在工作负载vm中操作的mfe以与上面第v.b节中所示相同的覆盖模式方式配置。在具有迁移的ip地址的非覆盖模式或覆盖模式中,不需要内部nat层,因为利用其发出分组的ip地址将与vm的网络接口的ip地址匹配。但是,对于覆盖模式,如上所述,nat的内部层由在源(或对于传入分组,在目的地)的vpc内的网关vm中操作的网
关数据路径执行。
227.图22概念性地图示了对于从工作负载应用发送到逻辑网络外部的目的地(例如,互联网客户端、完全单独的逻辑网络上的目的地等)的北向分组通过云提供商网络进行分组处理的示例。图22包括在公共数据中心中的同一vpc中操作vm的两个主机机器2205和2210,以及也在同一公共数据中心中操作但不在同一vpc内的公共云网关2215。工作负载vm 2220在第一主机机器2205上操作,其中工作负载应用2225和mfe 2230(处于覆盖模式)在工作负载vm中执行。网关vm 2235在第二主机机器2210上操作,其中网关数据路径2240在该vm上执行(包括这里未示出的控制器、pcm等)。如上所述,mfe 2230以覆盖模式操作,具有与工作负载附接到的逻辑交换机端口相关联的内部ip地址a和与云提供商的vpc子网相关联的vtep ip地址。此外,主机机器2205和2210中的每一个包括它们各自的vm连接到的相应公共云转发元件2245和2250。与前面的情况一样,这些公共云转发元件可以是网络控制系统不能访问的软件虚拟交换机。公共云网关2215可以作为单独的物理装置、vm或任何其它形状因子操作。该网关2215处置位于公共数据中心的vpc与公共数据中心外部的机器之间的非vpn流量。
228.如图所示,工作负载应用2225在其vm 2220上将分组2245发送到mfe 2230。与先前示例中的分组一样,该分组2245包含源和目的地ip地址(和mac地址)、各种报头和有效载荷。源ip地址a是工作负载应用2225的内部ip地址(不是vm接口ip地址),而目的地ip地址q是逻辑网络外部的目的地的ip地址。
229.此时,mfe 2230执行逻辑交换和逻辑路由器处理(假设单层逻辑路由器拓扑)并确定应该将分组发送到逻辑路由器的上行链路端口。该上行链路端口映射到网关数据路径2240,因此mfe 2230将要被隧道传输的分组2245封装到网关的vtep。mfe 2230从连接到公共云转发元件2235的vm接口输出该封装分组2250。如图所示,该封装的源ip地址是mfe的vtep的源ip地址(即,vm接口的地址),而目的地ip地址是网关数据路径2240的vtep的地址(即,用于隧道流量的网关vm接口的地址)。
230.假设公共云转发网络使用主机机器之间的隧道传输,那么公共云转发元件2235利用其自己的底层封装第二次封装分组2250,并通过物理云提供商网络发出该两次封装的分组2255。底层封装分别使用主机机器2205和2210的接口的ip地址作为其源和目的地ip地址。
231.在穿过底层网络之后,分组2255被主机机器2210接收,其中公共云转发元件2240移除底层封装。转发元件2240基于覆盖封装的目的地ip地址经由网关vm的用于隧道传输的流量的接口将仍然封装的分组2250发送到网关vm 2235。网关数据路径2240通过移除封装并识别目的地ip地址对应于其上行链路端口来处理该分组2055。
232.然后,网关数据路径2240(例如,数据路径中的集中式路由组件)确定分组需要网络地址转换,以便将分组从逻辑网络发出到其目的地q。由此,网关数据路径使用nat表来识别由公共云提供商提供的、将源地址a映射到的ip地址。当网关2240没有执行负载平衡时,一些实施例为每个工作负载应用分配一个ip地址。对于集中式nat,一些实施例不使用vm接口ip,因为传入的分组应该被引导到网关2240而不是从公共云网关2215直接引导到工作负载vm。替代地,租户将具有从公共云提供商分配的多个“辅助”ip地址,所有这些辅助ip地址都映射到网关数据路径2240的上行链路接口。在这种情况下,网关执行其nat以将分组2245
的源ip地址从a修改为b1,而目的地ip地址保持为q。
233.网关将该经过转换的分组2260输出到公共云转发元件2240,其随后封装用于公共云提供商底层隧道的分组2260,并且将封装分组2265通过云提供商网络发送到公共云网关2215。这里,公共云网关2215使用单独的nat表执行其自己的nat,该nat表将各种辅助ip地址映射到公共ip地址(例如,映射到可动态分配的弹性ip)。在这种情况下,公共云网关的nat表指定将辅助ip地址b1映射到公共ip地址c1。然后,公共云网关将该新的转换后的分组2270发送到朝其目的地q的外部网络(例如,互联网)上。
234.图23图示了当传入分组2300从源q发送到与租户的vpc相关联的公共ip地址(c1)之一时公共云网关内的处理。在该图中,分组沿着与前一个图22中示出的路径相反的路径行进。即,分组2300被公共云网关2215接收,公共云网关2215根据其nat表对目的地地址执行nat。在一些实施例中,该nat表是静态的(例如,辅助ip和公共ip之间的1:1静态映射)。
235.公共云网关将目的地ip地址c1转换为b1并将转换后的分组输出到底层上,从而将封装分组2305发送到与地址b1相关联的网关vm 2235。公共云转发元件2240移除底层封装并将该分组2310发送到网关的上行链路接口。网关数据路径2240执行其自己的内部nat处理以将辅助ip地址b1转换为新的目的地地址a。此外,网关数据路径2240执行逻辑网络处理以识别目的地地址a映射到位于mfe2220处的逻辑交换机端口,并且因此使用其自己的南向向接口作为源ip以及mfe 2220的vtep ip地址作为目的地ip来封装转换后的分组。该分组然后遵循任何vpc内分组的路径,从而由主机机器2210上的公共云转发元件2240再次封装、由主机机器2205上的公共云转发元件2235解封装、递送到mfe 2220,mfe 2220解封装覆盖封装、执行所需的任何安全处理并将分组递送到工作负载应用。
236.图24图示了对于从与工作负载应用2225相同的vpc上的不同工作负载应用发送的分组通过图22的云提供商网络的分组处理。该图包括具有网关vm 2235和公共云网关2215的主机机器2210,以及vm 2405在其上操作的主机机器2400。工作负载应用2410和mfe2415在vm 2405上执行。工作负载应用2410具有与其附接的逻辑交换机相关联的内部ip地址d,而mfe 2415的vtep具有不同的ip地址。
237.在该示例中,工作负载应用2410发送具有源地址d的分组2420。该分组遵循与图22中的分组2245类似的路径,直到它到达网关数据路径2240。该数据路径2240识别分组2245需要源nat,并且因此参考其内部nat表来确定地址d应该被映射到与ip地址a映射到的地址不同的辅助ip地址b2。网关数据路径使用与前一个示例中不同的ip地址将转换后的分组2425发出其相同的上行链路接口。因此,当转换后的分组2425到达具有源地址b2的公共云网关2215时,公共云网关2215将该源地址转换成不同的公共ip地址c2,并将分组2430发出到外部网络。
238.上面的图假设公共云提供商将允许dcn的单个接口的多个ip地址,如对于至少一些云提供商的情况那样。如果云提供商未启用这个特征,那么使用集中式nat将只能使用一个公共ip地址。在这种情况下,如果仅启动出站连接,那么可以使用多个内部ip地址,并且网关中的nat表使用有状态的转换规则来为返回流量分配正确的目的地ip地址。对于入站连接起源,可以在网关中配置基于l4端口的dnat规则,以便将流量转发到正确的应用/vm,只要不同的工作负载应用在不同的l4端口上运行即可。
239.b.分布式nat
240.在一些实施例的分布式nat的情况下,在工作负载dcn中操作的mfe也以与上面所示相同的覆盖模式方式配置,但是这些mfe也对南北向分组执行nat。因此,不需要将南北向流量发送到在vpc中操作的网关。图25概念性地图示了vm 2505,其具有以具有不同ip地址的覆盖模式配置的受管理转发元件2500,并且还针对南北向流量执行nat。mfe 2500以与图18中所示的mfe 1800类似的方式配置,其中工作负载应用2510经由具有内部ip地址的内部接口连接到集成桥接器2515,并且集成桥接器具有通过其分组被发送到pif桥接器2520上的vtep的覆盖端口。vtep具有由云提供商提供的、与vm的接口相关联的单独ip地址。
241.在这种情况下的差别在于接插端口也被配置在集成桥接器2515和pif桥接器2520之间。集成桥接器对传出分组执行逻辑处理,并且对于东西向流量(例如,当目的地被识别为对应于逻辑路由器上行链路端口以外的逻辑端口时),封装分组并将它们发出覆盖端口。另一方面,对于(映射到逻辑路由器的上行链路端口)的南北向分组,集成桥接器2515改为对这些分组执行源nat并将它们未封装地经由接插端口直接发送到pif桥接器2520(就像是在非覆盖情况下的流量的情况)。在一些实施例中,mfe还创建有状态的规则以处理连接的返回流量;在其它实施例中,因为对于所有连接仅使用单个内部ip地址到云提供商分配的ip地址的一个映射,因此不需要有状态的规则。在一些实施例中,nat地址可以与vtep ip地址相同,使得租户不需要让云提供商分配多个ip地址。在其它实施例中,两个ip地址是不同的,在这种情况下,vm或者具有多个接口或者具有用于相同接口的多个ip地址。
242.对于传入流量,pif桥接器2520识别分组是隧道流量还是来自外部源的南向流量。一些实施例识别分组是否具有与vpc中的其它vtep(包括网关)对应的有限ip地址集中的目的地ip地址,以将传入流量分类为vpc内覆盖流量。覆盖流量被发送到vtep,使得集成桥接器2515将在覆盖端口上接收流量并解封装分组,而南向流量经由接插端口被发送到集成桥接器2515。对于这种南向流量,集成桥接器2515或者基于存储的状态(例如,如果状态被存储,那么对于返回流量)或者使用其nat规则(例如,如果有状态的nat规则没有被存储,那么对于新发起的传入连接或在)执行目的地nat。
243.图26和27图示了在分布式nat设置中对于北向和南向流量通过云提供商网络进行分组处理的示例。具体而言,图26图示了从工作负载应用发送到逻辑网络外部的目的地(例如,互联网客户端、完全单独的逻辑网络上的目的地等)的北向分组的分组处理的示例。图26仅包括托管在vpc中操作的vm的单个主机机器2605。工作负载vm 2610在主机机器2605上操作,其中工作负载应用2615(具有内部ip地址a)和mfe 2620在工作负载vm中执行。如在先前的示例中一样,主机机器2605还包括公共云转发元件2625,其可以是网络控制系统不能访问的软件虚拟交换机。此外,该图示出了公共云网关2630,其可以作为单独的物理装置、vm等操作,以处置位于公共数据中心的vpc与数据中心外部的机器之间的非vpn流量。
244.如图所示,工作负载应用2615在其vm 2605上将分组2635发送到mfe 2620。该分组具有源ip地址a(与逻辑交换机端口相关联的、工作负载应用的内部ip地址)和远程外部目的地的目的地ip地址q。mfe 2620执行逻辑交换和路由器处理,并将该目的地地址映射到上行链路逻辑路由器端口。在这种情况下,mfe被配置为对发送到该逻辑端口的分组执行nat,并且因此根据其nat配置将源ip地址从a转换为n。如上所述,ip地址n可以与用于在vpc内进行隧道传输的vtep地址相同,或者它可以是也由云提供商分配的不同ip地址。
245.然后,mfe 2620将该转换后的分组2640发出到公共云转发元件2625而不进行封
装。该分组由转发元件2625封装并在底层(公共云)网络上直接发送到公共云网关2630,从而跳过在集中式nat情况下对于南北向流量所需的vpc网关。公共云网关2630具有其自己的nat表,并且在移除底层封装之后将源ip地址从n转换为m,即注册到租户的公共ip地址。
246.图27图示了经由公共云网关2630从具有ip地址q的外部源发送到工作负载应用2615的南向分组的处理。在该图中,公共云网关2630接收具有源ip地址q和目的地ip地址m的分组2705,目的地ip地址m(如上所述)是与工作负载vm 2610相关联的公共ip地址。该分组遵循图26中描述的分组的相反路径。公共云网关2630执行nat以将目的地ip地址转换为私有ip地址n,并且将分组(在提供商底层网络上)转发到vm 2610。在公共云转发元件2625移除底层封装之后,mfe 2620识别该分组是南向的、未封装的分组,并对该分组执行逻辑路由器和逻辑交换机处理。作为逻辑路由器处理的一部分,mfe 2620将目的地ip地址从n转换为a,即工作负载应用2615的ip地址。然后,mfe 2620将该分组递送到工作负载应用2615。
247.图28概念性地图示了当mfe在覆盖模式下操作并且被配置为执行分布式nat时由该mfe对工作负载vm执行以处理传出分组的处理2800。这样的mfe的示例是图25中所示的mfe 2500。应该理解的是,处理2500是概念性处理,并且mfe(尤其是基于流的mfe)可以不进行如图中所示的确定。替代地,这样的mfe将通过其流表来处理分组并根据匹配的流条目执行操作。即,处理的结果将指示要采取的动作或一组动作,而不是mfe评估关于是否采取特定动作的是/否决定。但是,处理2800表示mfe在给定不同类型的分组的情况下执行的不同操作。
248.如图所示,处理2800通过从本地工作负载应用接收(在2805处)分组开始。由于mfe正在覆盖模式下运行,因此该分组将具有内部ip地址作为其源地址(假设mfe未被破坏)。然后,该处理根据其配置(即,由其本地控制代理向下推送的配置规则)执行(在2810处)逻辑网络和安全处理。这可能包括逻辑交换机和/或逻辑路由器处理、分布式防火墙处理等。
249.处理2800确定(在2815处)分组的目的地是否与mfe在其上操作的vm在相同的vpc中。当是这种情况时,该处理封装(在2820处)分组,其中用于封装的源ip地址是本地vtep ip地址,并且目的地ip地址是vpc内的目的地mfe的vtep。在上面描述的图19中图示了该处理的示例。
250.如果目的地不在相同的vpc中,则处理2800确定(在2825处)目的地是否是外部目的地(即,该分组是否是北向分组)。如果不是这种情况,则该分组被寻址到位于不同vpc或数据中心的逻辑端口,并且该处理封装(在2830处)该分组,其中用于封装的源ip地址是本地vtep ip地址,并且目的地ip地址是vpc内的网关的vtep。也在上面描述的图20中图示了这样的处理的示例。在这些情况的任一情况下,mfe都将逻辑网络内的逻辑交换机端口(虽然不一定与本地工作负载应用在同一逻辑交换机上)识别为分组的目的地,并且因此将分组隧道传输到任一个其它本地vm或网关(在后一种情况下,使得网关可以将分组发送到其最终目的地)。
251.但是,如果目的地是外部目的地(例如,如果目的地ip地址映射到上行链路逻辑路由器端口),则该处理执行(在2835处)nat以将源ip地址从内部工作负载应用ip地址改变为由云提供商分配的ip地址。该ip地址可能与本地vtep ip地址相同,但在这种情况下,该地址用作内部分组的源ip地址(没有任何封装),而不是用作geneve、stt等中的源ip地址,隧道报头。图26中示出了该处理的示例。最后,该处理将分组发送(在2840处)到其主机机器上
的云提供商转发元件,以在云提供商的网络上发送。
252.在一些实施例中,如这里所示,使用分布式nat使得能够与外部云提供商服务(诸如存储服务)进行无缝集成。这些外部资源可以容易地确定vpc上的哪个dcn正在访问它们,并且因此使用基于身份的策略来控制对这些资源的访问。在集中式nat情况下,将使用与工作负载dcn的接口不对应的ip地址经由网关访问所有这样的资源。此外,分布式nat的使用允许与由许多云提供商提供的负载平衡服务轻松集成。
253.图29图示了在公共云网关2900中使用负载平衡以及由在工作负载vm中操作的mfe进行的分布式nat。该图图示了在vpc内操作vm的两个公共云主机机器2905和2910。具体而言,第一vm2915在第一主机机器2905上操作,并且第二vm 2920在第二主机机器2910上操作。第一vm 2915执行具有内部ip地址a的工作负载应用2925,而第二vm 2920执行具有内部ip地址b的工作负载应用2930。在该示例中,两个工作负载应用是相同外部可访问应用的实例(例如,多个web服务器实例)。此外,mfe 2935和2940分别在两个vm 2915和2920上执行,并且主机机器2905和2910分别包括公共云转发元件2945和2950。
254.公共云网关2900(或由公共云提供的以吸引vpc的南向流量的单独的负载平衡装置)接收两个分组2955和2960。这两个分组都具有目的地ip地址x(与工作负载应用2925和2930相关联的公共ip地址),但是来自不同的源q和r。因此,在公共云网关2900接收时,该网关执行负载平衡和目的地网络地址转换操作,以平衡这两个工作负载之间(以及可能另外的vm上的另外实例之间)的流量。
255.基于各种因素(ip地址和/或其它报头的散列、监视不同工作负载上的当前流量负载等),公共云网关2900为第一分组2955选择目的地ip地址y,并且为第二分组2960选择目的地ip地址z。这两个ip分别对应于vm 2915和2920的云提供商分配的vm接口,并且因此网关将分组隧道传输到两个主机机器2905和2910。假设这些是连接中的第一分组,那么网关还存储该连接和nat映射,使得该连接的任何正在进行的流量将被发送到同一工作负载应用(如果它们不是第一分组,那么在一些实施例中网关将根据先前存储的状态处理这些分组)。
256.当mfe 2935和2940接收到分组时,它们将流量识别为未封装的南向流量,并且因此对分组执行它们自己的nat。这些nat操作在第一mfe 2935处将第一分组的目的地ip地址y转换为a,并在第二mfe 2940处将第二数据分组的目的地ip地址z转换为b。
257.如果云提供商支持,那么负载平衡的这种使用还使得能够自动缩放新的工作负载vm。利用自动缩放,如果工作负载负担过重,那么云提供商自动创建运行相同应用的新实例,并且提供商的负载平衡器开始在其负载平衡决策中考虑该新实例。当该新vm出现在云提供商库存中时,pcm将识别其存在并通知网络控制系统,使得网络控制系统可以将必要的配置数据分发给新实例,如上面第ii节所述。
258.vii.分布式网络加密
259.一些实施例使得能够在公共数据中心内使用由网络控制系统管理的分布式网络加密(dne)。在一些实施例中,dne仅在相同vpc内或在对等vpc内操作的dcn之间可用,而在其它实施例中,dne在附接到逻辑网络的逻辑端口的任何两个dcn之间(包括在工作负载dcn和网关之间)可用。
260.在一些实施例中,分布式网络加密允许网络控制系统管理员为分组设置加密和/
或完整性规则。这些规则定义(i)规则将应用于的分组,以及(ii)那些分组的加密和/或完整性要求。一些实施例按照分组的源和目的地定义规则应用于的分组。可以基于ip地址或地址范围、mac地址、逻辑交换机端口、虚拟接口、l4端口号和范围等(包括其组合)来定义这些源和目的地端点。
261.此外,每个规则指定满足源和目的地特性的分组是否需要加密(可能以及鉴权)、仅需要鉴权、或需要明文(其可以用作设置以便允许广播分组)。加密需要使用密钥来加密分组的一部分或全部(例如,整个内部分组、仅l4和更高层的报头、隧道传输的分组的整个内部和外部分组等),而鉴权不加密分组但使用密钥来生成鉴权数据,目的地可以用于该鉴权数据来验证分组在传输过程中未被篡改(例如分组的散列或其一部分)。
262.为了使网络中的mfe实现dne规则,网络控制系统需要以安全的方式将密钥分发给mfe。一些实施例使用网关dcn中的dne模块,以便与网络控制系统的dne方面一起传送,并将密钥分发给在其vpc中的工作负载vm中操作的mfe。图30概念性地图示了一些实施例的这种dne规则和密钥分发系统3000,以及在公共数据中心中的mfe上实现dne规则的数据流。
263.dne规则/密钥分发系统3000包括私有数据中心内的管理平面3005、中央控制平面3010和密钥管理器3015。这些组件也可以位于公共数据中心的单独vpc(或相同vpc)中,但是通常网络管理员将希望把这些组件保持在它们自己的私有数据中心上,因为密钥管理器3015安全地存储用于在dne系统中使用的主密钥。虽然这里给出了对这些组件的操作的简要描述,但是在美国临时专利申请62/380,338中更详细地描述了票据和密钥分发处理,该专利申请通过引用并入本文。
264.上面已经关于管理平面3005和中央控制平面3010在分发网络转发和安全规则中的操作描述了管理平面3005和中央控制平面3010。与转发配置一样,当管理平面3005(例如,从配置有管理平面api的云管理平台)接收到dne规则时,它格式化该规则并将该规则传递到中央控制平面3010。中央控制平面3010对规则执行跨度计算,以便识别需要该规则的本地控制器,包括公共数据中心vpc中的任何网关控制器。
265.一些实施例的密钥管理器3015是安全存储装置,其存储要由网络控制系统3000管理的mfe使用的加密密钥。在一些实施例中,密钥管理器3015是硬件装置、在私有数据中心中以安全方式操作的vm等。在一些实施例中,密钥管理器指定用于定义可管理性的密钥组的构造和机制,并提供访问密钥的各种安全控制(例如,访问控制和鉴权)。在一些实施例中,鉴权机制包括公钥基础设施(pki)证书、用户凭证和/或共享秘密。一些实施例的密钥管理器还强制执行请求者的证明以解决恶意请求者威胁。
266.密钥管理器3015向管理平面3005注册,并获得用于管理平面3005、中央控制平面3010(即,中央控制平面集群中的一个或多个控制器)和本地控制器(包括任何网关控制器)的证书。通过使密钥管理器3015在注册时获得这些证书,网络控制系统3000避免了在本地控制器需要用于特定dne规则的密钥时的重复通信(即,用来验证请求密钥的本地控制器是有效控制器的通信)。
267.在一些实施例中,除了存储已经基于这些请求生成的密钥之外,密钥管理器3015还基于密钥请求生成密钥。如果需要对相同密钥的后续请求(例如,如果需要密钥的vm断电并重新打开,或以其它方式重新启动),那么可以使用所存储的密钥。一些实施例将密钥存储在用密钥加密密钥加密的密钥管理器3015中,该密钥加密密钥在密码保护的只读文件中
被保护并且在初始阶段期间利用来自人类管理员的输入加载到密钥管理器3015的存储器中。
268.在公共数据中心vpc内,系统3000包括具有网关控制器3025和dne模块3030的网关vm 3020,以及工作负载vm 3035。以上详细描述了网关vm 3020及其网关控制器3025,并且应该理解的是,网关vm 3020也可以执行上面在第ii节中描述的各种其它特征,诸如网关数据路径、公共云管理器等。
269.dne模块3030负责处置网关vm 3020的vpc内的任何mfe所需的任何密钥。dne模块3030与密钥管理器3015交互,以便管理其vpc中用于mfe的加密密钥。当中央控制平面3010接收到规则,该规则指定发送到vpc中操作的任何工作负载或从vpc中操作的任何工作负载发送的分组的加密和/或认证要求时,中央控制器将这些规则分发给网关控制器3035。一些实施例的加密规则包括由控制器用来从密钥管理器3015获取密钥的票据。dne模块3030或网关控制器3025使用该票据从提供加密规则的主密钥的密钥管理器3015请求密钥。dne模块3030接收主密钥并使用该密钥生成规则的会话密钥。在一些实施例中,会话密钥根据主密钥和特定于将要执行加密的两个端点的一个或多个附加参数生成。dne模块3030(例如,经由网关控制器3025)将生成的会话密钥分发到适当的端点。
270.工作负载vm 3035是在公共数据中心的相同vpc中操作的若干工作负载vm之一。vm包括本地控制代理3040,以及实际实现dne规则的mfe、工作负载应用等(它们未被示出)。
271.已经描述了系统3000的组件的操作,现在将描述图30中所示的示例数据流。如圆圈1a所示,管理平面3005将dne规则3050传递到中央控制平面3015。该dne规则3050将已通过管理平面的api作为(例如,来自网络管理员,可能经由云管理接口的)输入被接收。如上所述,dne规则3050指定(i)规则应用于哪些分组以及(ii)那些分组的加密和/或完整性要求。在一些实施例中,规则还可以包括诸如要使用的加密的类型、轮换(即,以特定方式修改)使用中的密钥的频率、是否在特定时间量之后撤销密钥等的策略。
272.中央控制平面3010接收该规则3050并确定其跨度。如果规则具有特定的源和目的地端点,那么跨度可能只是这些端点的两个第一跳mfe。另一方面,规则可以指定要加密到特定逻辑端口或来自特定逻辑端口的所有流量,在这种情况下,可能与该特定逻辑端口通信的所有端点的第一跳mfe将需要接收规则。在该示例中,至少在vm3035上操作的应用是规则的端点,因此中央控制平面确定该规则的跨度包括网关控制器3025。如圆圈1b所示,中央控制平面3010将该dne规则3050分发给网关控制器3025。网关控制器3025确定该规则在其vpc内的跨度、将工作负载vm 3035上的mfe识别为需要该规则的一个mfe(对于vpc内加密,至少一个附加端点将需要该规则,并且对于vpc外部的加密,网关vm上的数据路径将需要该规则),并将该规则3050分发给vm 3035上的本地控制代理3040,如圆圈1c所示。
273.除了规则本身之外,在一些实施例中,ccp将票据3055分发给网关控制器3025,如圆圈2所示。在一些实施例中,基于密钥标识符和安全参数索引(spi)为网关控制器生成加密密钥票据。在一些实施例中,安全参数索引识别将使用dne的连接(例如,在两个端点之间)的安全属性,诸如密钥长度、加密算法等。该票据3055充当用于从密钥管理器3015检索密钥的安全令牌。在一些实施例中,票据包括密钥标识符、本地控制器标识符、到期时间和签名。
274.在接收到票据3055后,网关控制器将票据(未示出)传递到dne模块3030,dne模块
3030将密钥请求3060发送到密钥管理器3015,如圆圈3所示。在一些实施例中,网关控制器3025实际上将密钥请求发送给密钥管理器本身。该请求包括票据或来自票据的证明网关控制器被中央控制平面授权接收密钥的信息。密钥管理器3015验证该请求,并将主密钥3065发送到网关vm 3020,如圆圈4所示。在该图中,dne模块3030接收该主密钥3065。在一些实施例中,主密钥3065被发送到网关控制器3025,网关控制器3025将密钥传递给dne模块3030。
275.dne模块3030使用主密钥在vm 3035处(以及将使用该密钥的任何其它vm处)为mfe生成会话密钥。在一些实施例中,会话密钥是主密钥的函数、与连接的两个端点和/或两个端点的vtep ip地址相关的spi,以及随机数。在一些实施例中,如果规则指定多个连接(例如,从源a到或者目的地b或者目的地c),则dne模块3030为两个端点之间的每个连接生成不同的会话密钥。即,在上面的示例中,生成两个会话密钥,一个用于a和b之间的连接,一个用于a和c之间的连接。一些实施例使用对称密钥加密,在这种情况下,相同的会话密钥被分发给连接的每个端点。如圆圈5所示,dne模块3030(或者直接或者通过网关控制器)将会话密钥3070分发给本地控制代理3040。
276.在一些实施例中,代理上的加密不是由mfe本身(即,由集成桥接器或pif桥接器)执行的。替代地,在工作负载vm上操作的dne模块与网络堆栈(即,集成桥接器和pif桥接器之间、用于vm接口的ip地址的网络堆栈)集成。网络堆栈的ipsec功能使用适当的会话密钥来加密和/或生成传出分组的完整性信息,并解密和/或鉴权传入分组。mfe中的流条目指示是否需要针对给定分组执行加密/解密和/或鉴权。
277.图31概念性地图示了用于管理公共数据中心vpc的网关中的dne密钥的一些实施例的处理3100。在一些实施例中,由vpc中的网关vm(例如,由网关vm的网关控制器和/或dne模块)执行处理3100。在一些实施例中,网关vm为它接收到的每个dne规则执行该处理或类似处理。
278.如图所示,处理3100通过从中央控制器接收(在3105处)规则开始,该规则为vpc中的至少一个逻辑端口指定dne规则。如上所述,中央控制器将网关控制器视为用于在其vpc中操作的所有工作负载的本地控制器。dne规则可能涉及vpc中两个端点之间的连接、vpc中多个端点之间的多个连接、vpc中端点与位于其它地方的逻辑网络端点之间的连接、网关数据路径与vpc中另一个端点之间的连接,或其组合。一些实施例的dne规则也要求在指定的连接的端点之间对分组进行加密和/或认证。
279.此外,处理3100从中央控制器接收(在3110处)用于在加密和/或认证处理中使用的密钥的票据。在一些实施例中,该票据由中央控制器基于密钥标识符和/或spi生成。该票据充当用于从网络加密系统的密钥管理器检索密钥的安全令牌。在一些实施例中,票据包括密钥标识符、本地控制器标识符、到期时间和签名。
280.接下来,该处理使用票据向密钥管理器发送(在3115处)对密钥的请求。一些实施例发送票据本身,而其它实施例发送从票据导出的数据。密钥管理器使用请求中的票据或其它信息来识别所需的密钥,并验证网关控制器被授权接收该密钥。
281.假设密钥管理器验证该请求,那么该处理从密钥管理器接收(在3120处)主密钥。主密钥由密钥管理器在请求时生成。然后,该处理基于接收到的主密钥计算(在3125处)一个或多个会话密钥。如果规则指定由规则管理的多个可能的连接,则一些实施例为每个这样的连接从主密钥生成不同的会话密钥。一些实施例根据主密钥、关于特定连接的两个端
点的特征(例如,vtep标签、vtep ip地址、与端点有关的spi等)和/或随机生成的数字来计算会话密钥。
282.然后,该处理将(一个或多个)会话密钥发送(在3130处)给需要该(一个或多个)密钥的任何mfe的本地控制代理(即,在每个连接的任一端处的mfe的代理)。这可能还包括在必要时将密钥发送到网关数据路径。此外,在一些实施例中,网关上的dne模块安全地存储密钥,使得如果重新启动工作负载vm或其代理并且代理需要先前分发的信息,那么可以重新分发这些密钥。
283.viii.威胁检测和处理
284.特别是对于在公共云中操作的dcn工作负载,以及在这些dcn上操作的mfe,安全性会成为问题。如果黑客获得对dcn的根(root)访问权限,那么他或她可以能够绕过网络安全策略的执行(从而发送与这些策略相悖的流量),因为安全策略是由在dcn本身中操作的mfe强制执行的,而不是在dcn在其上操作的机器的虚拟化软件中执行的。
285.受破坏的dcn上的黑客(或其它恶意用户)可能以若干不同的方式之一绕过网络安全策略。例如,用户可以(i)移除(例如,卸载)本地控制代理,(ii)断开网络接口与mfe的连接并直接在接口上运行网络堆栈,以便绕过安全策略实施,或者(iii)修改配置,使得本地控制代理不是(例如,实施安全策略的集成桥接器的)mfe的控制器,从而直接配置mfe(例如,安装新的流条目)。
286.但是,一些实施例的公共云管理器使得网络控制系统能够通过相对于公共云隔离受破坏的dcn来处置这些情况。因此,dcn连接到的公共云转发元件(例如,主机机器中的虚拟交换机)将防止受破坏的dcn发送数据流量。由受影响的dcn的vpc中的网关控制器向pcm通知受影响的dcn,并且可以使用公共云管理器api将受破坏的dcn放入到公共云的管理系统内的隔离安全组中。
287.受破坏的dcn上的本地控制代理可以检测到上面列出的第二和第三情况,并通知网关控制器。如果代理被移除,那么网关控制器将注意到它与该控制器的连接不存在。在任何这些情况下,一旦网关控制器确定dcn被破坏,它就通知pcm,使得pcm可以隔离受破坏的dcn。
288.图32概念性地图示了由pcm执行以处置受破坏的dcn的一些实施例的处理3200。如图所示,该处理从网关控制器接收(在3205处)vpc内的数据计算节点似乎被破坏的通知开始。如果恶意用户或黑客已断开网络接口与mfe的连接、添加未附接到mfe的新网络接口、或断开作为mfe的控制器的代理的连接,那么基于来自dcn上的本地控制代理的消息,可能会发生这种情况。如果代理本身已卸载或以其它方式被移除,那么网关控制器会在与代理的连接丢失时检测到错误。
289.接下来,处理3200确定(在3210处)公共云提供商的、受破坏的dcn被重新分类到其中的安全组。在一些实施例中,公共云提供商具有其托管的dcn可以被分类到其中的安全组集合,包括隔离、开放、允许封装的流量等。当dcn被隔离时,除了可能用于取回该dcn的控制的特定流量之外,该dcn将不被允许通过主机机器上的云提供商转发元件发送或接收其它流量。因此,处理3200使用(在3215处)公共云提供商的api,以便将受破坏的dcn添加到识别出的安全组(例如,隔离组)。在一些实施例中,pcm使用这些api向公共云管理系统发送指定dcn的新安全组的命令。一旦威胁已经被移除并且dcn恢复到正常工作状态,一些实施例的
pcm就发送类似命令将dcn放回到其先前的安全组中。
290.图33和34图示了识别其公共数据中心vpc中受破坏的vm的网关控制器3330以及将受破坏的vm与公共数据中心提供商隔离的其pcm 3325的示例。具体而言,图33图示了在四个阶段3305-3320上卸载代理的情况。如第一阶段所示,网关vm 3300包括网关控制器3330和pcm 3325(还包括它的其它组件),并且vpc中的vm3335执行代理3340(还包括工作负载应用和由代理控制的mfe)。在第一阶段3305中,在网关控制器3330和代理3340之间存在连接。
291.但是,在该第一阶段3305,vm被破坏并且登录到vm中的用户删除(例如,卸载)代理3340,使得vm上的mfe不能接收安全策略。但是,如第二阶段3310所示,这移除了代理和网关控制器3330之间的连接,使得网关控制器检测到代理不再操作。应当注意的是,如果代理重新启动或者在vm没有被破坏的情况下以其它方式停止,那么也可能发生这种情况,但是在这些情况下,一些实施例无论如何都要隔离该vm,直到代理恢复为止。
292.在第三阶段3315中,网关控制器3330向pcm 3325通知代理已停用。一些实施例向pcm通知特定问题(代理停用、未授权的接口等),而其它实施例仅向pcm通知特定vm被破坏。在任一情况下,第四阶段3320图示了pcm向云提供商管理系统3345发送隔离受破坏的vm的消息(例如,通过将受破坏的vm放入到隔离安全组中)。
293.虽然该示例示出了代理被完全卸载,但是如果黑客简单地修改代理的配置以从不同的控制器(即,黑客的一个控制器)接收其配置规则,则会发生类似的连接丢失。由于代理将不再被配置为从网关控制器接收配置,因此代理将断开与网关控制器的通信,从而对网关控制器看来就像代理已被删除一样。
294.图34图示了其中攻击者在四个阶段3405-3420上在受破坏的vm3400上创建新接口的情况。vm 3400具有在其上执行的代理3425,并且在与网关vm 3300相同的vpc中操作。在第一阶段3405中,已经在vm 3400上创建新接口,并且该接口被用来发送非安全数据。该接口未连接到mfe,因此vm上的应用能够直接通过网络堆栈将分组发送到该接口,而无需任何安全处理。
295.但是,在第二阶段3410中,代理检测到新接口的存在并将该接口报告给网关控制器3330。在一些实施例中,新接口将自动填充在由代理管理的数据库(例如,ovsdb数据库)中,因此代理检测到该变化。由于接口未连接到mfe,因此代理将该接口作为不受信任的接口报告给网关控制器。类似地,代理将通知网关控制器现有接口是否已改变,使得它直接从工作负载应用接收分组,而无需mfe的中间处理。
296.在第三阶段3415中,网关控制器3330向pcm 3325报告vm3400被破坏。如在先前的示例中一样,pcm向云提供商管理系统3345发送消息以隔离受破坏的vm(例如,通过将该vm置于隔离安全组中)。
297.ix.电子系统
298.上述许多特征和应用被实现为软件处理,这些软件处理被指定为记录在计算机可读存储介质(也被称为计算机可读介质)上的指令集合。当这些指令被一个或多个处理单元(例如,一个或多个处理器、处理器核心、或其它处理单元)执行时,它们使得该(一个或多个)处理单元执行在指令中指示的动作。计算机可读介质的示例包括,但不限于,cd-rom、闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括无线或通过有线连接传递的载波和电子信号。
299.在本说明书中,术语“软件”是指包括驻留在只读存储器中的固件或者可以被读入到存储器中用于被处理器处理的存储在磁存储中的应用。此外,在一些实施例中,多个软件发明可以被实现为更大程序的子部分,同时保持明显的软件发明。在一些实施例中,多个软件发明也可以被实现为单独的程序。最后,一起实现本文所描述的软件发明的单独程序的任意组合在本发明的范围内。在一些实施例中,当软件程序被安装,以在一个或多个电子系统上操作时,软件程序定义执行软件程序的操作的一个或多个特定的机器实现。
300.图7概念性地图示了实现本发明的一些实施例的电子系统3500。电子系统3500可以用于执行上述任何控制、虚拟化或操作系统应用。电子系统3500可以是计算机(例如,台式计算机、个人计算机、平板计算机、服务器计算机、大型机、刀片计算机等)、电话、pda或任何其它类型的电子设备。这样的电子系统包括用于各种其它类型的计算机可读介质的各种类型的计算机可读介质和接口。电子系统3500包括总线3505、(一个或多个)处理单元3510、系统存储器3525、只读存储器3530、永久性存储设备3535、输入设备3540和输出设备3545。
301.总线3505统一地表示通信地连接电子系统3500的许多内部设备的所有系统、外围设备和芯片组总线。例如,总线3505将(一个或多个)处理单元3510与只读存储器3530、系统存储器3525和永久性存储设备3535通信地连接。
302.(一个或多个)处理单元3510从这些各种存储器单元中检索要执行的指令和要处理的数据,以便执行本发明的处理。(一个或多个)处理单元在不同实施例中可以是单个处理器或多核处理器。
303.只读存储器(rom)3530存储由(一个或多个)处理单元3510和电子系统的其它模块所需的静态数据和指令。另一方面,永久性存储设备3535是读写存储器设备。这个设备是即使当电子系统3500关闭时也存储指令和数据的非易失性存储器单元。本发明的一些实施例使用大容量存储设备(诸如磁盘或光盘及其对应的盘驱动器)作为永久性存储设备3535。
304.其它实施例使用可移除存储设备(诸如软盘、闪存驱动器等)作为永久性存储设备。与永久性存储设备3535一样,系统存储器3525是读写存储器设备。但是,与存储设备3535不同的是,系统存储器是易失性读写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时所需的一些指令和数据。在一些实施例中,本发明的处理被存储在系统存储器3525、永久性存储设备3535和/或只读存储器3530中。(一个或多个)处理单元3510从这些各种存储器单元中检索要执行的指令和要处理的数据,以便执行一些实施例的处理。
305.总线3505还连接到输入和输出设备3540和3545。输入设备使用户能够向电子系统传达信息和选择给电子系统的命令。输入设备3540包括字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备3545显示由电子系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(crt)或液晶显示器(lcd)。一些实施例包括用作输入和输出设备两者的设备,诸如触摸屏。
306.最后,如图35所示,总线3505还通过网络适配器(未示出)将电子系统3500耦合到网络3565。以这种方式,计算机可以是计算机的网络(诸如局域网(“lan”)、广域网(“wan”)、或内联网、或网络的网络,诸如互联网)的一部分。电子系统3500的任何或全部组件可以与本发明结合使用。
307.一些实施例包括电子组件,诸如微处理器、在机器可读或计算机可读介质(可替代地称为计算机可读存储介质、机器可读介质或机器可读存储介质)中存储计算机程序指令
的存储设备和存储器。这种计算机可读介质的一些示例包括ram、rom、只读压缩盘(cd-rom)、可记录压缩盘(cd-r)、可重写压缩盘(cd-rw)、只读数字多功能盘(例如,dvd-rom,双层dvd-rom)、各种可记录/可重写dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、闪存存储器(例如,sd卡、小型sd卡、微型sd卡等)、磁和/或固态硬盘驱动器、只读和可记录盘、超密度光盘、任何其它光或磁介质、以及软盘。计算机可读介质可以存储可由至少一个处理单元执行的并且包括用于执行各种操作的指令集的计算机程序。计算机程序或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子组件、或利用解释器的微处理器执行的更高级代码的文件。
308.虽然以上讨论主要指执行软件的微处理器或多核处理器,但是一些实施例通过一个或多个集成电路来执行,诸如专用集成电路(asic)或现场可编程门阵列(fpga)。在一些实施例中,这种集成电路执行在该电路自身上存储的指令。
309.如在本说明书中所使用的,术语“计算机”、“服务器”、“处理器”、以及“存储器”都是指电子或其它技术设备。这些术语不包括人或人群。为了本说明书的目的,术语显示或正在显示意味着在电子设备上显示。如本说明书中所使用的,术语“计算机可读介质”、“多个计算机可读介质”和“机器可读介质”被完全限制为以由计算机可读的形式存储信息的、有形的、物理的对象。这些术语不包括任何无线信号、有线下载信号、以及任何其它短暂信号。
310.贯穿本说明书提到包括虚拟机(vm)的计算和网络环境。但是,虚拟机只是数据计算节点(dcn)或数据计算端节点(也被称为可寻址节点)的一个示例。dcn可以包括非虚拟化物理主机、虚拟机、在主机操作系统之上运行而不需要管理程序或单独的操作系统的容器、以及管理程序内核网络接口模块。
311.在一些实施例中,vm使用由虚拟化软件(例如,管理程序、虚拟机监视器等)虚拟化的主机的资源与在主机上其自己的客户操作系统一起操作。租户(即vm的所有者)可以选择在客户操作系统之上要操作哪些应用。另一方面,一些容器是在主机操作系统之上运行而不需要管理程序或单独的客户操作系统的构造。在一些实施例中,主机操作系统隔离不同租户的容器,并因此提供在不同容器内操作的不同应用组的操作系统级分离。这种分离类似于在管理程序虚拟化环境中提供的vm分离,并且因此可以被视为隔离在不同容器中操作的不同应用组的一种虚拟化形式。这种容器比vm更轻巧。
312.在一些实施例中,管理程序内核网络接口模块是包括具有管理程序内核网络接口和接收/传送线程的网络堆栈的非-vm dcn。管理程序内核网络接口模块的一个示例是作为vmware公司的esx管理程序的一部分的vmknic模块。
313.本领域普通技术人员将认识到的是,虽然本说明书提到vm,但是给出的示例可以是任何类型的dcn,包括物理主机、vm、非-vm容器和管理程序内核网络接口模块。事实上,在一些实施例中,示例网络可以包括不同类型的dcn的组合。
314.虽然本发明已经参考许多特定细节进行了描述,但是本领域普通技术人员将认识到,在不脱离本发明的精神的情况下,本发明可以以其它特定形式体现。此外,多个图(包括图3、4、8-10、28、31和32)概念性地示出了处理。这些处理的特定操作可能没有以与所示出和描述的确切顺序执行。特定操作可能没有在一系列连续的操作中执行,并且不同的特定操作可能在不同的实施例中执行。此外,处理可以利用若干子处理来实现,或者作为较大的宏处理的一部分来实现。因此,本领域普通技术人员将理解,本发明不受上述说明性细节的
限制,而是由所附权利要求来限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1