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

使云基础设施中高速缓存的流信息失效的制作方法

2023-10-07 16:14:53 来源:中国专利 TAG:

使云基础设施中高速缓存的流信息失效
1.相关申请的交叉引用
2.本国际专利申请要求于2021年4月22日提交的标题为“invalidating cached flow information in a cloud infrastructure”的美国专利申请no.17/237,750的优先权,该专利申请要求于2021年2月13日提交的美国临时申请no.63/149,276的权益,其全部内容出于所有目的通过引用并入本文。


背景技术:

3.云基础设施,诸如oracle云基础设施(oci),可以提供云服务的集合,使得订阅这些服务的实体(例如,企业)能够在高度可用的云托管的环境中构建和运行广泛的应用和服务。订阅实体被称为云服务提供商的客户。云基础设施可以在在物理底层网络之上运行并且可从企业的本地网络安全地访问的灵活覆盖虚拟网络中提供高性能计算、存储和网络能力。诸如oci之类的云基础设施一般允许客户以管理其内部部署工作负载的相同方式管理基于云的工作负载。因此,组织可以通过与其内部部署网络相同的控制、隔离、安全性和可预测性能来获得云的所有优势。
4.虚拟联网是云基础设施和云应用的基础,因为虚拟联网使得能够访问、连接、保护和修改云资源。虚拟联网支持跨不同物理位置的多个计算机、虚拟机(vm)、虚拟服务器或其它设备之间的通信。物理联网通过布线和其它硬件连接计算机系统,而虚拟联网则使用软件管理通过互联网连接不同物理位置的计算机和服务器。虚拟联网使用传统网络组件,诸如网络交换机、路由器和适配器,的虚拟化版本,从而允许更高效的路由以及更轻松的网络配置和重新配置。


技术实现要素:

5.本公开一般而言涉及管理支持云环境中端点之间的分组流的配置信息的分发。配置信息一般包括策略、规则、映射、路由和用于发送和/或接收分组的其它类型的信息。该分发可以优化存储器使用与带宽之间的平衡。特别地,配置信息可以由网络接口服务存储,该网络接口服务以集中方式支持虚拟网络中的计算实例之间的连接。配置信息的相关子集(本文中称为流信息)还可以本地存储在提供计算实例到网络接口服务和虚拟网络的接口的网络虚拟化设备上。当网络虚拟化设备上本地不存在流信息以支持分组流向端点时,可以将分组发送到网络接口服务,然后网络接口服务对其进行处理并将其发送到端点。否则,流信息在网络虚拟化设备处用于处理这个分组并将其发送到端点,而不经由网络接口服务发送它。以这种方式,不是将整套配置信息存储在网络虚拟化设备上(这样会使用相对大量的存储器并且限制网络虚拟化设备可以支持的接口的密度),而仅相关的子集被本地存储和用于分组流,从而节省存储器空间(这进而允许网络虚拟化设备上相对较高的接口密度)和带宽(例如,通过不经由网络接口服务将分组发送到端点)。
6.已经采用的术语和表达被用作描述性术语而不是限制性的,并且在使用这些术语和表达时无意排除示出和描述的特征或其部分的任何等同形式。但是,应当认识到的是,在
要求保护的系统和方法的范围内,各种修改是可能的。因此,应当理解的是,虽然已经通过示例和可选特征具体公开了本系统和方法,但是本领域技术人员应当认识到本文公开的概念的修改和变化,并且这样的修改和变化被认为在由所附权利要求限定的系统和方法的范围内。
7.本概述并不旨在识别要求保护的主题的关键或基本特征,也不旨在单独用于确定要求保护的主题的范围。应当通过参考本公开的整个说明书的适当部分、任何或所有附图以及每项权利要求来理解主题。
8.通过参考以下说明书、权利要求书和附图,前述内容以及其它特征和实施例将变得更加明显。
附图说明
9.下面参考附图详细描述说明性示例。
10.图1是分布式环境的高级图,示出了根据某些实施例的由云服务提供者基础设施托管的虚拟或覆盖云网络。
11.图2描绘了根据某些实施例的cspi内的物理网络中的物理组件的简化体系架构图。
12.图3示出了根据某些实施例的cspi内的示例布置,其中主机机器连接到多个网络虚拟化设备(nvd)。
13.图4描绘了根据某些实施例的主机机器和nvd之间的连接性,用于提供i/o虚拟化以支持多租赁(tenancy)。
14.图5描绘了根据某些实施例的由cspi提供的物理网络的简化框图。
15.图6图示了根据某些实施例的支持基于高速缓存的配置信息的分组流的网络体系架构的示例。
16.图7图示了根据某些实施例的支持基于非高速缓存的配置信息的分组流的网络体系架构的示例。
17.图8图示了根据某些实施例的支持基于高速缓存的流信息和非高速缓存的配置信息的分组流的网络体系架构的示例。
18.图9图示了根据某些实施例的导致高速缓存的流信息的出站分组流的示例。
19.图10图示了根据某些实施例的基于高速缓存的流信息的出站分组流的示例。
20.图11图示了根据某些实施例的导致高速缓存的流信息的入站分组流的示例。
21.图12图示了根据某些实施例的基于高速缓存的流信息的入站分组流的示例。
22.图13图示了根据某些实施例的使高速缓存的流信息失效并更新其的示例。
23.图14图示了根据某些实施例的使高速缓存的流信息失效并更新其的另一个示例。
24.图15图示了根据某些实施例的用于发送导致高速缓存的流信息的分组的方法的示例。
25.图16图示了根据某些实施例的用于接收导致高速缓存的流信息的分组的方法的示例。
26.图17图示了根据某些实施例的用于生成和发送流信息的方法的示例。
27.图18图示了根据某些实施例的用于使高速缓存的流信息失效并更新其的方法的
示例。
28.图19图示了根据某些实施例的用于使高速缓存的流信息失效并更新其的方法的另一个示例。
29.图20图示了根据某些实施例的用于使高速缓存的流信息失效并更新其的方法的另一个示例。
30.图21是图示根据至少一个实施例的用于将云基础设施实现为服务系统的一种模式的框图。
31.图22是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
32.图23是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
33.图24是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
34.图25是图示根据至少一个实施例的示例计算机系统的框图。
具体实施方式
35.示例虚拟联网体系架构
36.术语云服务一般用于指由云服务提供者(csp)使用由csp提供的系统和基础设施(云基础设施)按需(例如,经由订阅模型)向用户或客户提供的服务。通常,构成cs p的基础设施的服务器和系统与客户自己的内部部署服务器和系统是分开的。因此,客户可以利用由csp提供的云服务,而无需为服务购买单独的硬件和软件资源。云服务被设计为为订阅客户提供对应用和计算资源的简单、可扩展的访问,而无需客户投资购买用于提供服务的基础设施。
37.有几个云服务提供者提供各种类型的云服务。有各种不同类型或模型的云服务,包括软件即服务(saas)、平台即服务(paas)、基础设施即服务(iaas)等。
38.客户可以订阅由csp提供的一项或多项云服务。客户可以是任何实体,诸如个人、组织、企业等。当客户订阅或注册由csp提供的服务时,将为该客户创建租赁或账户。然后,客户可以经由这个账户访问与该账户相关联的订阅的一个或多个云资源。
39.如上所述,基础设施即服务(iaas)是一种特定类型的云计算服务。在iaas模型中,csp提供基础设施(称为云服务提供者基础设施或cspi),这些基础设施可以被客户使用来构建他们自己的可定制网络并部署客户资源。因此,客户的资源和网络由csp提供的基础设施托管在分布式环境中。这与传统计算不同,在传统计算中,客户的资源和网络由客户提供的基础设施托管。
40.cspi可以包括形成物理网络的互连的高性能计算资源,包括各种主机机器、存储器资源和网络资源,该物理网络也被称为基底网络或底层网络。cspi中的资源可以散布在一个或多个数据中心上,这些数据中心可以在地理上散布在一个或多个地理地区上。虚拟化软件可以由这些物理资源执行以提供虚拟化的分布式环境。虚拟化在物理网络上创建覆盖网络(也称为基于软件的网络、软件定义的网络或虚拟网络)。cspi物理网络为在物理网络之上创建一个或多个覆盖或虚拟网络提供了底层基础。物理网络(或基底网络或底层网
络)包括物理网络设备,诸如物理交换机、路由器、计算机和主机机器等。覆盖网络是运行在物理基底网络之上的逻辑(或虚拟)网络。给定的物理网络可以支持一个或多个覆盖网络。覆盖网络通常使用封装技术来区分属于不同覆盖网络的流量。虚拟或覆盖网络也称为虚拟云网络(vcn)。虚拟网络是使用软件虚拟化技术实现的(例如,管理程序、由网络虚拟化设备(nvd)(例如,智能网卡)实现的虚拟化功能、架顶式(tor)交换机、实现由nvd执行的一个或多个功能的智能tor,以及其它机制)以创建可以在物理网络之上运行的网络抽象的层。虚拟网络可以采用多种形式,包括对等网络、ip网络等。虚拟网络通常是或者层3ip网络或者层2vlan。这种虚拟或覆盖联网的方法常常被称为虚拟或覆盖层3网络。为虚拟网络开发的协议的示例包括ip-in-ip(或通用路由封装(gre))、虚拟可扩展局域网(vxlan—ietf rfc7348)、虚拟专用网络(vpn)(例如,mpls层3虚拟专用网络(rfc4364))、vmware的nsx、geneve(通用网络虚拟化封装)等。
41.对于iaas,由csp提供的基础设施(cspi)可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在iaas模型中,云计算服务提供者可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,iaas提供者还可以供应各种服务来伴随那些基础设施组件(例如,计费、监视、日志记录、安全性、负载平衡和聚类等)。因此,由于这些服务可以是策略驱动的,因此iaas用户可以能够实现策略来驱动负载平衡以维持应用可用性和性能。cspi提供基础设施和互补云服务的集合,这些使客户能够在高度可用的被托管的分布式环境中构建和运行广泛的应用和服务。cspi在可从各种联网位置(诸如从客户的内部部署网络)安全访问的灵活的虚拟网络中提供高性能计算资源和能力以及存储容量。当客户订阅或注册由csp提供的iaas服务时,为该客户创建的租赁是cspi内的安全且隔离的分区,客户可以在其中创建、组织和管理他们的云资源。
42.客户可以使用由cspi提供的计算、存储器和联网资源构建他们自己的虚拟网络。可以在这些虚拟网络上部署一个或多个客户资源或工作负载,诸如计算实例。例如,客户可以使用由cspi提供的资源来构建一个或多个可定制且私有的虚拟网络,称为虚拟云网络(vcn)。客户可以在客户vcn上部署一个或多个客户资源,诸如计算实例。计算实例可以采用虚拟机、裸机实例等形式。因此,cspi提供基础设施和互补云服务的集合,这些使客户能够在高度可用的虚拟被托管环境中构建和运行广泛的应用和服务。客户不管理或控制由cspi提供的底层物理资源,但可以控制操作系统、存储装置和已部署的应用;并且可能对所选择的联网组件(例如,防火墙)进行有限的控制。
43.csp可以提供控制台,其使客户和网络管理员能够使用cspi资源来配置、访问和管理部署在云中的资源。在某些实施例中,控制台提供可以被用于访问和管理cspi的基于web的用户界面。在某些实施方式中,控制台是由csp提供的基于web的应用。
44.cspi可以支持单租赁或多租赁体系架构。在单租赁体系架构中,软件(例如,应用、数据库)或硬件组件(例如,主机机器或服务器)服务于单个客户或租户。在多租赁体系架构中,软件或硬件组件服务于多个客户或租户。因此,在多租赁体系架构中,cspi资源在多个客户或租户之间共享。在多租赁情况下,在cspi中采取预防措施并实施保护措施,以确保每个租户的数据都是隔离的并且对其他租户保持不可见。
45.在物理网络中,网络端点(“端点”)是指连接到物理网络并与其所连接的网络来回
通信的计算设备或系统。物理网络中的网络端点可以连接到局域网(lan)、广域网(wan)或其它类型的物理网络。物理网络中传统端点的示例包括调制解调器、集线器、桥接器、交换机、路由器和其它联网设备、物理计算机(或主机机器)等。物理网络中的每个物理设备都有可以被用于与设备通信的固定网络地址。这个固定网络地址可以是层2地址(例如,mac地址)、固定的层3地址(例如,ip地址)等。在虚拟化的环境或虚拟网络中,端点可以包括各种虚拟端点,诸如由物理网络的组件托管(例如,由物理主机机器托管)的虚拟机。虚拟网络中的这些端点由覆盖地址寻址,诸如覆盖层2地址(例如,覆盖mac地址)和覆盖层3地址(例如,覆盖ip地址)。网络覆盖通过允许网络管理者使用软件管理(例如,经由实现用于虚拟网络的控制平面的软件)在与网络端点相关联的覆盖地址周围移动来实现灵活性。因而,与物理网络不同,在虚拟网络中,可以使用网络管理软件将覆盖地址(例如,覆盖ip地址)从一个端点移动到另一个端点。由于虚拟网络建立在物理网络之上,因此虚拟网络中组件之间的通信涉及虚拟网络和底层物理网络二者。为了促进此类通信,cspi的组件被配置为学习和存储将虚拟网络中的覆盖地址映射到基底网络中的实际物理地址的映射,反之亦然。然后使用这些映射来促进通信。客户流量被封装以促进在虚拟网络中的路由。
46.因而,物理地址(例如,物理ip地址)与物理网络中的组件相关联,并且覆盖地址(例如,覆盖ip地址)与虚拟或覆盖网络中的实体相关联。物理ip地址是与基底或物理网络中的物理设备(例如,网络设备)相关联的ip地址。例如,每个nvd都有相关联的物理ip地址。覆盖ip地址是与覆盖网络中的实体相关联的覆盖地址,诸如与客户的虚拟云网络(vcn)中的计算实例相关联的覆盖地址。两个不同的客户或租户(每个客户或租户都有自己的私有vcn)可以潜在地在其vcn中使用相同的覆盖ip地址,而无需彼此了解。物理ip地址和覆盖ip地址都是真实ip地址的类型。这些地址与虚拟ip地址是分开的。虚拟ip地址通常是表示或映射到多个真实ip地址的单个ip地址。虚拟ip地址提供虚拟ip地址与多个真实ip地址之间的一对多映射。例如,负载平衡器可以使用vip来映射或表示多个服务器,每个服务器都有自己的真实ip地址。
47.云基础设施或cspi在物理上托管在世界上一个或多个地区的一个或多个数据中心中。cspi可以包括物理或基底网络中的组件和位于建立在物理网络组件之上的虚拟网络中的虚拟化的组件(例如,虚拟网络、计算实例、虚拟机等)。在某些实施例中,cspi在领域、地区和可用性域中被组织和托管。地区通常是包含一个或多个数据中心的局部化的地理区域。地区一般彼此独立并且可以相隔很远,例如,跨越国家甚至大陆。例如,第一个地区可以在澳大利亚,另一个在日本,另一个在印度,等等。cspi资源在地区之间划分,使得每个地区都有自己独立的cspi资源子集。每个地区可以提供核心基础设施服务和资源的集合,诸如计算资源(例如,裸机服务器、虚拟机、容器和相关基础设施等);存储资源(例如,块卷存储装置、文件存储装置、对象存储装置、归档存储装置);联网资源(例如,虚拟云网络(vcn)、负载平衡资源、与内部部署网络的连接)、数据库资源;边缘联网资源(例如,dns);以及访问管理和监视资源等。每个地区一般都有多条路径将其连接到领域中的其它地区。
48.一般而言,应用被部署在它被最频繁使用的地区中(即,部署在与该地区相关联的基础设施上),因为使用附近的资源比使用远处的资源更快。应用也可以出于各种原因而部署在不同的地区,诸如冗余以减轻地区范围内事件(诸如大型天气系统或地震)的风险,以满足法律管辖区、税域和其它商业或社会标准等的不同要求。
49.地区内的数据中心可以被进一步组织和细分为可用性域(ad)。可用性域可以与位于地区内的一个或多个数据中心对应。地区可以由一个或多个可用性域组成。在这种分布式环境中,cspi资源或者是特定于地区的,诸如虚拟云网络(vcn),或者是特定于可用性域的,诸如计算实例。
50.地区内的ad彼此隔离,具有容错能力,并且被配置为使得它们极不可能同时发生故障。这是通过ad不共享关键基础设施资源(诸如联网、物理电缆、电缆路径、电缆入口点等)来实现的,使得地区内的一个ad处的故障不太可能影响同一地区内其它ad的可用性。同一地区内的ad可以通过低时延、高带宽网络彼此连接,这使得为其它网络(例如,互联网、客户的内部部署网络等)提供高可用性连接并且在多个ad中构建复制系统以实现高可用性和灾难恢复成为可能。云服务使用多个ad来确保高可用性并防止资源故障。随着iaas提供者提供的基础设施的增长,可以添加更多地区和ad以及附加的容量。可用性域之间的流量通常是加密的。
51.在某些实施例中,地区被分组为领域。领域是地区的逻辑集合。领域彼此隔离并且不共享任何数据。同一领域中的地区可以彼此通信,但不同领域中的地区不能。客户与csp的租赁或账户存在于单个领域中,并且可以散布在属于该领域的一个或多个地区中。通常,当客户订阅iaas服务时,会在领域内客户指定的地区(称为“主”地区)中为该客户创建租赁或账户。客户可以将客户的租赁扩展到领域内的一个或多个其它地区。客户无法访问不在客户的租赁所在领域中的地区。
52.iaas提供者可以提供多个领域,每个领域迎合客户或用户的特定集合。例如,可以为商业客户提供商业领域。作为另一个示例,可以为特定国家为那个国家内的客户提供领域。作为又一个示例,可以为政府等提供政府领域。例如,政府领域可以迎合特定政府并且可以具有比商业领域更高的安全性级别。例如,oracle云基础设施(oracle cloud infrastructure,oci)目前为商业地区提供领域,并且为政府云地区提供两个领域(例如,fedramp授权的和il5授权的)。
53.在某些实施例中,ad可以被细分成一个或多个故障域。故障域是ad内的基础设施资源的分组,以提供反亲和性。故障域允许计算实例的分布,使得这些实例不位于单个ad内的相同物理硬件上。这被称为反亲和性。故障域是指共享单点故障的硬件组件(计算机、交换机等)的集合。计算池在逻辑上被划分为故障域。因此,影响一个故障域的硬件故障或计算硬件维护事件不影响其它故障域中的实例。取决于实施例,用于每个ad的故障域的数量可以有所不同。例如,在某些实施例中,每个ad包含三个故障域。故障域充当ad内的逻辑数据中心。
54.当客户订阅iaas服务时,来自cspi的资源被供应给客户并与客户的租赁相关联。客户可以使用这些供应的资源来构建私有网络并在这些网络上部署资源。由cspi在云中托管的客户网络被称为虚拟云网络(vcn)。客户可以使用为客户分配的cspi资源来设置一个或多个虚拟云网络(vcn)。vcn是虚拟或软件定义的私有网络。部署在客户的vcn中的客户资源可以包括计算实例(例如,虚拟机、裸机实例)和其它资源。这些计算实例可以表示各种客户工作负载,诸如应用、负载平衡器、数据库等。部署在vcn上的计算实例可以通过公共网络(诸如互联网)与公共可访问端点(“公共端点”)、与同一vcn或其它vcn(例如,客户的其它vcn或不属于该客户的vcn)中的其它实例、与客户的内部部署数据中心或网络以及与服务
端点和其它类型的端点通信。
55.csp可以使用cspi来提供各种服务。在一些情况下,cspi的客户本身可以像服务提供者一样起作用并使用cspi资源提供服务。服务提供者可以暴露服务端点,该服务端点以标识信息(例如,ip地址、dns名称和端口)为特征。客户的资源(例如,计算实例)可以通过访问由服务为特定服务暴露的服务端点来使用该特定服务。这些服务端点一般是用户可经由公共通信网络(诸如互联网)使用与端点相关联的公共ip地址公开访问的端点。可公开访问的网络端点有时也称为公共端点。
56.在某些实施例中,服务提供者可以经由用于服务的端点(有时称为服务端点)来暴露服务。服务的客户然后可以使用这个服务端点来访问服务。在某些实施方式中,为服务提供的服务端点可以由打算消费该服务的多个客户访问。在其它实施方式中,可以为客户提供专用服务端点,使得只有该客户可以使用该专用服务端点来访问服务。
57.在某些实施例中,当创建vcn时,它与私有覆盖无类域间路由(cidr)地址空间相关联,该地址空间是指派给vcn的一系列私有覆盖ip地址(例如,10.0/16)。vcn包括相关联的子网、路由表和网关。vcn驻留在单个地区内,但可以跨越该区域的可用性域中的一个或多个或所有。网关是为vcn配置的虚拟接口并且启用vcn与vcn外部的一个或多个端点之间的流量的通信。可以为vcn配置一种或多种不同类型的网关,以启用去往和来自不同类型端点的通信。
58.vcn可以被细分为一个或多个子网络,诸如一个或多个子网。因此,子网是可以在vcn内创建的配置的单元或细分。vcn可以有一个或多个子网。vcn内的每个子网都与连续范围的覆盖ip地址(例如,10.0.0.0/24和10.0.1.0/24)相关联,这些ip地址不与该vcn中的其它子网重叠并且表示vcn的地址空间内的地址空间子集。
59.每个计算实例都与虚拟网络接口卡(vnic)相关联,这使得计算实例能够参与vcn的子网。vnic是物理网络接口卡(nic)的逻辑表示。一般而言,vnic是实体(例如,计算实例、服务)与虚拟网络之间的接口。vnic存在于子网中,具有一个或多个相关联的ip地址,以及相关联的安全性规则或策略。vnic相当于交换机上的层2端口。vnic附接到计算实例和vcn内的子网。与计算实例相关联的vnic使计算实例成为vcn的子网的一部分,并且使计算实例能够与和计算实例位于同一子网上的端点、与vcn中的不同子网中的端点或与vcn外部的端点通信(例如,发送和接收分组)。因此,与计算实例相关联的vnic确定计算实例如何与vcn内部和外部的端点连接。当创建计算实例并将其添加到vcn内的子网时,创建用于计算实例的vnic并将其与该计算实例相关联。对于包括计算实例的集合的子网,该子网包含与计算实例的该集合对应的vnic,每个vnic附接到计算机实例的该集合内的计算实例。
60.经由与计算实例相关联的vnic为每个计算实例指派私有覆盖ip地址。这个私有覆盖网络ip地址在创建计算实例时指派给与计算实例相关联的vnic并被用于路由去往和来自计算实例的流量。给定子网中的所有vnic都使用相同的路由表、安全性列表和dhcp选项。如上所述,vcn内的每个子网都与连续范围的覆盖ip地址(例如,10.0.0.0/24和10.0.1.0/24)相关联,这些ip地址不与该vcn中的其它子网重叠并且表示vcn的地址空间内的地址空间子集。对于vcn的特定子网上的vnic,指派给该vnic的私有覆盖ip地址是来自为子网分配的连续范围的覆盖ip地址的地址。
61.在某些实施例中,除了私有覆盖ip地址之外,计算实例还可以可选地被指派附加
的覆盖ip地址,诸如例如如果在公共子网中,那么是一个或多个公共ip地址。这多个地址或者在同一个vnic上或者在与计算实例相关联的多个vnic上指派。但是,每个实例具有主vnic,它是在实例启动期间创建的并且与指派给该实例的覆盖私有ip地址相关联—这个主vnic无法被删除。称为辅助vnic的附加vnic可以添加到与主vnic相同的可用性域中的现有实例。所有vnic都在与该实例相同的可用性域中。辅助vnic可以位于与主vnic相同的vcn中的子网中,或者位于同一vcn或不同vcn中的不同子网中。
62.如果计算实例在公共子网中,那么可以可选地为其指派公共ip地址。在创建子网时,可以将子网指定为或者公共子网或者私有子网。私有子网意味着子网中的资源(例如,计算实例)和相关联的vnic不能具有公共覆盖ip地址。公共子网意味着子网中的资源和相关联的vnic可以具有公共ip地址。客户可以指定子网存在于单个可用性域中或跨地区或领域中的多个可用性域。
63.如上所述,vcn可以被细分成一个或多个子网。在某些实施例中,为vcn配置的虚拟路由器(vr)(称为vcn vr或简称为vr)使得vcn的子网之间能够通信。对于vcn内的子网,vr表示用于该子网的逻辑网关,它使该子网(即,该子网上的计算实例)能够与vcn内其它子网上的端点以及vcn外的其它端点通信。vcn vr是逻辑实体,其被配置为在vcn中的vnic和与vcn相关联的虚拟网关(“网关”)之间路由流量。下文关于图1进一步描述网关。vcn vr是层3/ip层概念。在一个实施例中,对于vcn存在一个vcn vr,其中vcn vr具有潜在不受限制数量的由ip地址寻址的端口,vcn的每个子网有一个端口。以这种方式,vcn vr对于vcn vr所附接到的vcn中的每个子网具有不同的ip地址。vr还连接到为vcn配置的各种网关。在某些实施例中,用于子网的覆盖ip地址范围中的特定覆盖ip地址被保留用于该子网的vcn vr的端口。例如,考虑vcn有两个子网,相关联的地址范围分别是10.0/16和10.1/16。对于地址范围为10.0/16的vcn中的第一个子网,这个范围内的地址被保留用于该子网的vcn vr的端口。在一些情况下,范围内的第一个ip地址可以被保留用于vcn vr。例如,对于覆盖ip地址范围为10.0/16的子网,可以为该子网的vcn vr的端口保留ip地址10.0.0.1。对于地址范围为10.1/16的同一vcn中的第二个子网,vcn vr可以具有用于ip地址为10.1.0.1的第二个子网的端口。vcn vr对于vcn中的每个子网具有不同的ip地址。
64.在一些其它实施例中,vcn内的每个子网可以具有其自己的相关联的vr,该vr可由子网使用与vr相关联的保留或默认ip地址寻址。例如,保留或默认ip地址可以是与该子网相关联的ip地址范围中的第一个ip地址。子网中的vnic可以使用这个默认或保留ip地址与与子网相关联的vr通信(例如,发送和接收分组)。在这种实施例中,vr是该子网的入口/出口点。与vcn内的子网相关联的vr可以与和vcn内的其它子网相关联的其它vr通信。vr还可以与和vcn相关联的网关通信。子网的vr功能在为子网中的vnic执行vnic功能的一个或多个nvd上运行或由其执行。
65.可以为vcn配置路由表、安全性规则和dhcp选项。路由表是用于vcn的虚拟路由表并且包括通过网关或特殊配置的实例将流量从vcn内的子网路由到vcn外的目的地的规则。可以定制vcn的路由表以控制分组如何转发/路由到vcn和从vcn路由。dhcp选项是指在实例启动时自动提供给实例的配置信息。
66.为vcn配置的安全性规则表示用于vcn的覆盖防火墙规则。安全性规则可以包括入口和出口规则,并指定允许进出vcn实例的流量的类型(例如,基于协议和端口)。客户可以
选择给定规则是有状态的还是无状态的。例如,客户可以通过用源cidr0.0.0.0/0和目的地tcp端口22设置有状态入口规则来允许来自任何地方的传入ssh流量到实例的集合。安全性规则可以使用网络安全性组或安全性列表来实现。网络安全性组由仅适用于该组中的资源的安全性规则的集合组成。另一方面,安全性列表包括适用于使用该安全性列表的任何子网中的所有资源的规则。可以为vcn提供带有默认安全性规则的默认安全性列表。为vcn配置的dhcp选项提供在实例启动时自动提供给vcn中的实例的配置信息。
67.在某些实施例中,用于vcn的配置信息由vcn控制平面确定和存储。例如,用于vcn的配置信息可以包括关于以下的信息:与vcn相关联的地址范围、vcn内的子网和相关联的信息、与vcn相关联的一个或多个vr、vcn中的计算实例和相关联的vnic、执行与vcn相关联的各种虚拟化网络功能的nvd(例如,vnic、vr、网关)、用于vcn的状态信息以及其它vcn相关信息。在某些实施例中,vcn分发服务向nvd发布由vcn控制平面或其部分存储的配置信息。分发的信息可以被用于更新由nvd存储和使用的信息(例如,转发表、路由表等),以将分组转发到vcn中的计算实例或从计算实例转发分组。
68.在某些实施例中,vcn和子网的创建由vcn控制平面(cp)处置并且计算实例的启动由计算控制平面处置。计算控制平面负责为计算实例分配物理资源,然后调用vcn控制平面来创建vnic并将其附接到计算实例。vcn cp还将vcn数据映射发送到被配置为执行分组转发和路由功能的vcn数据平面。在某些实施例中,vcn cp提供负责向vcn数据平面提供更新的分发服务。vcn控制平面的示例也在图21、图22、图23和图24中描绘(参见参考标记2116、2216、2316和2416)并在下面进行描述。
69.客户可以使用由cspi托管的资源创建一个或多个vcn。部署在客户vcn上的计算实例可以与不同的端点通信。这些端点可以包括由cspi托管的端点和cspi外部的端点。
70.图1、图2、图3、图4、图5、图21、图22、图23和图25中描绘了用于使用cspi实现基于云的服务的各种不同体系架构,并且在下文中进行描述。图1是分布式环境100的高级图,示出了根据某些实施例的由cspi托管的覆盖或客户vcn。图1中描绘的分布式环境包括覆盖网络中的多个组件。图1中描绘的分布式环境100仅仅是个示例,并且不旨在不当地限制要求保护的实施例的范围。许多变化、替代和修改是可能的。例如,在一些实施方式中,图1中描绘的分布式环境可以具有比图1中所示的那些更多或更少的系统或组件,可以组合两个或更多个系统,或者可以具有不同的系统配置或布置。
71.如图1中描绘的示例中所示,分布式环境100包括提供服务和资源的cspi 101,客户可以订阅并使用这些服务和资源来构建他们的虚拟云网络(vcn)。在某些实施例中,cspi 101向订阅客户提供iaas服务。cspi 101内的数据中心可以被组织到一个或多个地区。图1中示出了一个示例地区“地区us”102。客户已经为地区102配置了客户vcn 104。客户可以在vcn 104上部署各种计算实例,其中计算实例可以包括虚拟机或裸机实例。实例的示例包括应用、数据库、负载平衡器等。
72.在图1中描绘的实施例中,客户vcn 104包括两个子网,即,“子网-1”和“子网-2”,每个子网具有其自己的cidr ip地址范围。在图1中,子网-1的覆盖ip地址范围是10.0/16,并且子网-2的地址范围是10.1/16。vcn虚拟路由器105表示用于vcn的逻辑网关,它启用vcn 104的子网之间以及与vcn外部的其它端点的通信。vcn vr 105被配置为在vcn104中的vnic和与vcn104相关联的网关之间路由流量。vcn vr 105为vcn104的每个子网提供端口。例如,
vr 105可以为子网-1提供具有ip地址10.0.0.1的端口并为子网-2提供具有ip地址10.1.0.1的端口。
73.可以在每个子网上部署多个计算实例,其中计算实例可以是虚拟机实例和/或裸机实例。子网中的计算实例可以由cspi 101内的一个或多个主机机器托管。计算实例经由与计算实例相关联的vnic参与子网。例如,如图1中所示,计算实例c1经由与计算实例相关联的vnic成为子网-1的一部分。同样,计算实例c2经由与c2相关联的vnic成为子网-1的一部分。以类似的方式,多个计算实例(可以是虚拟机实例或裸机实例)可以是子网-1的一部分。经由其相关联的vnic,每个计算实例都被指派私有覆盖ip地址和mac地址。例如,在图1中,计算实例c1的覆盖ip地址为10.0.0.2,mac地址为m1,而计算实例c2的私有覆盖ip地址为10.0.0.3,mac地址为m2。子网-1中的每个计算实例(包括计算实例c1和c2)都有到使用ip地址10.0.0.1的vcn vr 105的默认路由,该地址是用于子网-1的vcn vr 105的端口的ip地址。
74.子网-2上可以部署多个计算实例,包括虚拟机实例和/或裸机实例。例如,如图1中所示,计算实例d1和d2经由与相应计算实例相关联的vnic成为子网-2的一部分。在图1中所示的实施例中,计算实例d1的覆盖ip地址为10.1.0.2,mac地址为mm1,而计算实例d2的私有覆盖ip地址为10.1.0.3,mac地址为mm2。子网-2中的每个计算实例(包括计算实例d1和d2)都有到使用ip地址10.1.0.1的vcn vr 105的默认路由,该地址是用于子网-2的vcn vr 105的端口的ip地址。
75.vcn a 104还可以包括一个或多个负载平衡器。例如,可以为子网提供负载平衡器,并且可以将负载平衡器配置为跨子网上的多个计算实例负载平衡流量。还可以提供负载平衡器以在vcn中跨子网负载平衡流量。
76.部署在vcn 104上的特定计算实例可以与各种不同的端点通信。这些端点可以包括由cspi 200托管的端点和cspi 200外部的端点。由cspi 101托管的端点可以包括:与特定计算实例位于同一子网上的端点(例如,子网-1中两个计算实例之间的通信);位于不同子网上但位于同一vcn内的端点(例如,子网-1中的计算实例与子网-2中的计算实例之间的通信);同一地区中不同vcn中的端点(例如,子网-1中的计算实例与同一地区106或110中的vcn中的端点之间的通信,子网-1中的计算实例与同一地区中服务网点110中的端点之间的通信);或不同地区中的vcn中的端点(例如,子网-1中的计算实例与不同地区108中的vcn中的端点之间的通信)。由cspi 101托管的子网中的计算实例也可以与不由cspi 101托管(即,在cspi 101外部)的端点通信。这些外部端点包括客户的内部部署网络116中的端点、其它远程云托管网络118中的端点、可经由公共网络(诸如互联网)访问的公共端点114及其它端点。
77.使用与源计算实例和目的地计算实例相关联的vnic促进同一子网上的计算实例之间的通信。例如,子网-1中的计算实例c1可能想要将分组发送到子网-1中的计算实例c2。对于源自源计算实例且其目的地是同一子网中的另一个计算实例的分组,该分组首先由与源计算实例相关联的vnic处理。由与源计算实例相关联的vnic执行的处理可以包括从分组报头确定分组的目的地信息、识别为与源计算实例相关联的vnic配置的任何策略(例如,安全性列表)、确定用于分组的下一跳、根据需要执行任何分组封装/解封装功能,然后将分组转发/路由到下一跳,目的是促进分组到其预期目的地的通信。当目的地计算实例与源计算
实例位于同一子网中时,与源计算实例相关联的vnic被配置为识别与目的地计算实例相关联的vnic并将分组转发到该vnic进行处理。然后执行与目的地计算实例相关联的vnic并将分组转发到目的地计算实例。
78.对于要从子网中的计算实例传送到同一vcn中不同子网中的端点的分组,通过与源和目的地计算实例相关联的vnic以及vcn vr来促进通信。例如,如果图1中子网-1中的计算实例c1想要将分组发送到子网-2中的计算实例d1,那么该分组首先由与计算实例c1相关联的vnic处理。与计算实例c1相关联的vnic被配置为使用默认路由或vcn vr的端口10.0.0.1将分组路由到vcn vr 105。vcn vr 105被配置为使用端口10.1.0.1将分组路由到子网-2。然后,与d1相关联的vnic接收并处理分组并且vnic将分组转发到计算实例d1。
79.对于要从vcn 104中的计算实例传送到vcn 104外部的端点的分组,通信由与源计算实例相关联的vnic、vcn vr 105和与vcn 104相关联的网关促进。一种或多种类型的网关可以与vcn 104相关联。网关是vcn和另一个端点之间的接口,其中该另一个端点在vcn外部。网关是层3/ip层概念并且使vcn能够与vcn外部的端点通信。因此,网关促进vcn与其它vcn或网络之间的流量流动。可以为vcn配置各种不同类型的网关以促进与不同类型的端点的不同类型的通信。取决于网关,通信可以通过公共网络(例如,互联网)或通过私有网络进行。各种通信协议可以用于这些通信。
80.例如,计算实例c1可能想要与vcn 104外部的端点通信。分组可以首先由与源计算实例c1相关联的vnic处理。vnic处理确定分组的目的地在c1的子网-1外部。与c1相关联的vnic可以将分组转发到用于vcn 104的vcn vr 105。vcn vr 105然后处理分组,并且作为处理的一部分,基于分组的目的地,确定与vcn 104相关联的特定网关作为用于分组的下一跳。然后,vcn vr 105可以将分组转发到特定的识别出的网关。例如,如果目的地是客户的内部部署网络内的端点,那么分组可以由vcn vr 105转发到为vcn104配置的动态路由网关(drg)网关122。分组然后可以从网关转发到下一跳,以促进分组到其最终预期目的地的传送。
81.可以为vcn配置各种不同类型的网关。可以为vcn配置的网关的示例在图1中描绘并且在下文进行描述。与vcn相关联的网关的示例也在图21、图22、图23和图24中描绘(例如,通过附图标记2134、2136、2138、2234、2236、2238、2334、2336、2338、2434、2436和2438引用的网关)并且如下所述。如图1中描绘的实施例中所示,动态路由网关(drg)122可以添加到客户vcn 104或与客户vcn 104相关联,并为客户vcn 104与另一个端点之间的私有网络流量通信提供路径,其中该另一个端点可以是客户的内部部署网络116、cspi 101的不同地区中的vcn 108,或者不是由cspi 101托管的其它远程云网络118。客户内部部署网络116可以是使用客户的资源构建的客户网络或客户数据中心。对客户内部部署网络116的访问一般是非常受限的。对于同时具有客户内部部署网络116和由cspi 101在云中部署或托管的一个或多个vcn 104的客户,客户可能想要他们的内部部署网络116和他们的基于云的vcn 104能够彼此沟通。这使客户能够构建扩展的混合环境,包括由cspi 101托管的客户的vcn 104和他们的内部部署网络116。drg 122启用这种此通信。为了启用此类通信,设置通信通道124,其中信道的一个端点位于客户内部部署网络116中,而另一个端点位于cspi 101中并连接到客户vcn 104。通信信道124可以通过公共通信网络(诸如互联网)或私有通信网络。可以使用各种不同的通信协议,诸如公共通信网络(诸如互联网)上的ipsec vpn技术、
使用私有网络而不是公共网络的oracle的fastconnect技术等。客户内部部署网络116中形成通信信道124的一个端点的设备或装备被称为客户现场装备(cpe),诸如图1中描绘的cpe 126。在cspi 101侧,端点可以是执行drg 122的主机机器。
82.在某些实施例中,可以将远程对等连接(rpc)添加到drg,这允许客户将一个vcn与不同地区中的另一个vcn对等。使用这种rpc,客户vcn 104可以使用drg 122与另一个地区中的vcn 108连接。drg 122还可以被用于与不由cspi 101托管的其它远程云网络118(诸如microsoft azure云、亚马逊aws云等)通信。
83.如图1中所示,可以为客户vcn 104配置互联网网关(igw)120,其使vcn 104上的计算实例能够与可通过公共网络(诸如互联网)访问的公共端点114通信。igw 120是将vcn连接到诸如互联网之类的公共网络的网关。igw 120使vcn(诸如vcn 104)内的公共子网(其中公共子网中的资源具有公共覆盖ip地址)能够直接访问公共网络114(诸如互联网)上的公共端点112。使用igw 120,可以从vcn 104内的子网或从互联网发起连接。
84.可以为客户的vcn 104配置网络地址转换(nat)网关128,并使客户的vcn中没有专用公共覆盖ip地址的云资源能够访问互联网,并且在不暴露那些资源的情况下这样做以指引传入的互联网连接(例如,l4-l7连接)。这使vcn内的私有子网(诸如vcn 104中的私有子网-1)能够私有访问互联网上的公共端点。在nat网关中,只能从私有子网发起到公共互联网的连接,而不能从互联网发起到私有子网的连接。
85.在某些实施例中,可以为客户vcn 104配置服务网关(sgw)126,并为vcn 104和服务网络110中支持的服务端点之间的私有网络流量提供路径。在某些实施例中,服务网络110可以由csp提供并且可以提供各种服务。这种服务网络的示例是oracle的服务网络,它提供可供客户使用的各种服务。例如,客户vcn 104的私有子网中的计算实例(例如,数据库系统)可以将数据备份到服务端点(例如,对象存储装置,object storage),而无需公共ip地址或访问互联网。在某些实施例中,vcn可以只有一个sgw,并且连接只能从vcn内的子网发起,而不能从服务网络110发起。如果vcn与另一个对等,那么另一个vcn中的资源通常不能访问sgw。用fastconnect或vpn connect连接到vcn的内部部署网络中的资源也可以使用为该vcn配置的服务网关。
86.在某些实施方式中,sgw 126使用服务无类域间路由(cidr)标签的概念,该标签是表示用于感兴趣的服务或服务组的所有地区性公共ip地址范围的字符串。客户在他们配置sgw和相关路由规则以控制到服务的流量时使用服务cidr标签。如果服务的公共ip地址在未来发生改变,那么客户可以在配置安全性规则时可选地使用它,而无需调整它们。
87.本地对等网关(lpg)132是可以添加到客户vcn 104并使vcn 104能够与同一地区中的另一个vcn对等的网关。对等是指vcn使用私有ip地址进行通信,流量无需穿过公共网络(诸如互联网)或无需通过客户的内部部署网络116路由流量。在优选实施例中,vcn对于它建立的每个对等体具有单独lpg。本地对等或vcn对等是用于在不同应用或基础设施管理功能之间建立网络连接性的常见做法。
88.服务提供者(诸如服务网络110中的服务的提供者)可以使用不同的访问模型提供对服务的访问。根据公共访问模型,服务可以作为可由客户vcn中的计算实例经由公共网络(诸如互联网)公开访问的公共端点暴露,和/或可以经由sgw 126私有访问。根据特定的私有访问模型,服务可作为客户的vcn中的私有子网中的私有ip端点进行访问。这被称为私有
端点(pe)访问并且使服务提供者能够将其服务作为客户的私有网络中的实例暴露。私有端点资源表示客户的vcn内的服务。每个pe在客户的vcn中由客户选择的子网中表现为vnic(称为pe-vnic,具有一个或多个私有ip)。因此,pe提供了使用vnic在私有客户vcn子网中呈现服务的方式。由于端点作为vnic暴露,因此与vnic相关联的所有特征(诸如路由规则、安全性列表等)现在都可以用于pe vnic。
89.服务提供者可以注册他们的服务以启用通过pe的访问。提供者可以将策略与服务相关联,这限制了服务对客户租赁的可见性。提供者可以在单个虚拟ip地址(vip)下注册多个服务,尤其是对于多租户服务。可以有表示相同服务的多个这样的私有端点(在多个vcn中)。
90.私有子网中的计算实例然后可以使用pe vnic的私有ip地址或服务dns名称来访问服务。客户vcn中的计算实例可以通过将流量发送到客户vcn中的pe的私有ip地址来访问该服务。私有访问网关(pagw)130是可以附接到服务提供者vcn(例如,服务网络110中的vcn)的网关资源,该服务提供者vcn充当来自/去往客户子网私有端点的所有流量的入口/出口点。pagw 130使提供者能够在不利用其内部ip地址资源的情况下扩展pe连接的数量。提供者只需要为在单个vcn中注册的任何数量的服务配置一个pagw。提供者可以将服务表示为一个或多个客户的多个vcn中的私有端点。从客户的角度来看,pe vnic不是附接到客户的实例,而是看起来附接到客户希望与之交互的服务。去往私有端点的流量经由pagw 130路由到服务。这些被称为客户到服务私有连接(c2s连接)。
91.通过允许流量流经fastconnect/ipsec链接和客户vcn中的私有端点,pe概念还可以被用于将用于服务的私有访问扩展到客户的内部署网络和数据中心。通过允许流量在lpg 132和客户的vcn中的pe之间流动,还可以将服务的私有访问扩展到客户的对等vcn。
92.客户可以在子网级别控制vcn中的路由,因此客户可以指定客户的vcn(诸如vcn 104)中的哪些子网使用每个网关。vcn的路由表被用于决定是否允许流量通过特定网关离开vcn。例如,在特定实例中,用于客户vcn 104内的公共子网的路由表可以通过igw120发送非本地流量。用于同一客户vcn 104内的私有子网的路由表可以通过sgw 126发送以csp服务为目的地的流量。所有剩余流量可以经由nat网关128发送。路由表仅控制流出vcn的流量。
93.与vcn相关联的安全性列表被用于控制经由入站连接经由网关进入vcn的流量。子网中的所有资源都使用相同的路由表和安全性列表。安全性列表可以被用于控制允许进出vcn的子网中的实例的特定类型的流量。安全性列表规则可以包括入口(入站)和出口(出站)规则。例如,入口规则可以指定允许的源地址范围,而出口规则可以指定允许的目的地地址范围。安全性规则可以指定特定的协议(例如,tcp、icmp)、特定的端口(例如,用于ssh的22、用于windows rdp的3389)等。在某些实施方式中,实例的操作系统可以强制执行自己的符合安全性列表规则的防火墙规则。规则可以是有状态的(例如,跟踪连接并自动允许响应,而没有针对响应流量的明确安全性列表规则)或无状态的。
94.来自客户vcn的访问(即,通过部署在vcn 104上的资源或计算实例)可以被分类为公开访问、私有访问或专用访问。公开访问是指使用公共ip地址或nat来访问公共端点的访问模型。私有访问使vcn 104中具有私有ip地址的客户工作负载(例如,私有子网中的资源)能够访问服务,而无需穿越诸如互联网之类的公共网络。在某些实施例中,cspi 101使具有
私有ip地址的客户vcn工作负载能够使用服务网关访问服务(的公共服务端点)。因此,服务网关通过在客户的vcn和驻留在客户的私有网络外部的服务的公共端点之间建立虚拟链接来提供私有访问模型。
95.此外,cspi可以使用诸如fastconnect公开对等之类的技术提供专用公开访问,其中客户内部部署实例可以使用fastconnect连接访问客户vcn中的一个或多个服务,而无需遍历诸如互联网之类的公共网络。cspi还可以使用fastconnect私有对等提供专用私有访问,其中具有私有ip地址的客户内部部署实例可以使用fastconnect连接访问客户的vcn工作负载。fastconnect是对使用公共互联网将客户的内部部署网络连接到cspi及其服务的网络连接性替代方案。与基于互联网的连接相比,fastconnect提供了简单、灵活且经济的方式来创建具有更高带宽选项的专用和私有连接以及更可靠和一致的网络体验。
96.图1和上面的伴随描述描述了示例虚拟网络中的各种虚拟化的组件。如上所述,虚拟网络建立在底层物理或基底网络上。图2描绘了根据某些实施例的为虚拟网络提供底层的cspi 200内的物理网络中的物理组件的简化体系架构图。如图所示,cspi 200提供分布式环境,包括由云服务提供者(csp)提供的组件和资源(例如,计算、存储器和网络资源)。这些组件和资源被用于向订阅客户(即,已订阅由csp提供的一个或多个服务的客户)提供云服务(例如,iaas服务)。基于客户订阅的服务,为客户供应cspi 200的资源的子集(例如,计算、存储器和网络资源)。然后,客户可以使用由cspi 200提供的物理计算、存储器和联网资源构建其自己的基于云的(即,cspi托管的)可定制且私有虚拟网络。如前面所指示的,这些客户网络被称为虚拟云网络(vcn)。客户可以在这些客户vcn上部署一个或多个客户资源,诸如计算实例。计算实例可以是虚拟机、裸机实例等形式。cspi 200提供基础设施和互补云服务的集合,这使客户能够在高度可用的托管环境中构建和运行广泛的应用和服务。
97.在图2中描绘的示例实施例中,cspi 200的物理组件包括一个或多个物理主机机器或物理服务器(例如,202、206、208)、网络虚拟化设备(nvd)(例如,210、212)、架顶式(tor)交换机(例如,214、216)和物理网络(例如,218),以及物理网络218中的交换机。物理主机机器或服务器可以托管和执行参与vcn的一个或多个子网的各种计算实例。计算实例可以包括虚拟机实例和裸机实例。例如,图1中描绘的各种计算实例可以由图2中描绘的物理主机机器托管。vcn中的虚拟机计算实例可以由一个主机机器或多个不同的主机机器执行。物理主机机器也可以托管虚拟主机机器、基于容器的主机或功能等。图1中描绘的vnic和vcn vr可以由图2中描绘的nvd执行。图1中描绘的网关可以由图2中描述的主机机器和/或nvd执行。
98.主机机器或服务器可以执行在主机机器上创建和启用虚拟化的环境的管理程序(也称为虚拟机监视器或vmm)。虚拟化或虚拟化的环境促进了基于云的计算。一个或多个计算实例可以由主机机器上的管理程序在该主机机器上创建、执行和管理。主机机器上的管理程序使主机机器的物理计算资源(例如,计算、存储器和网络资源)能够在由主机机器执行的各种计算实例之间共享。
99.例如,如图2中所描绘的,主机机器202和208分别执行管理程序260和266。这些管理程序可以使用软件、固件或硬件或其组合来实现。通常,管理程序是位于主机机器的操作系统(os)之上的进程或软件层,os进而在主机机器的硬件处理器上执行。管理程序通过使主机机器的物理计算资源(例如,诸如处理器/核心之类的处理资源、存储器资源、网络资
源)能够在由主机机器执行的各种虚拟机计算实例之间共享来提供虚拟化的环境。例如,在图2中,管理程序260可以位于主机机器202的os之上并使主机机器202的计算资源(例如,处理、存储器和网络资源)能够在由主机机器202执行的计算实例(例如,虚拟机)之间共享。虚拟机可以具有其自己的操作系统(称为访客操作系统),其可以与主机机器的os相同或不同。由主机机器执行的虚拟机的操作系统可以与由同一主机机器执行的另一个虚拟机的操作系统相同或不同。因此,管理程序使多个操作系统能够被同时执行,同时共享主机机器的相同计算资源。图2中描绘的主机机器可以具有相同或不同类型的管理程序。
100.计算实例可以是虚拟机实例或裸机实例。在图2中,主机机器202上的计算实例268和主机机器208上的计算实例274是虚拟机实例的示例。主机机器206是提供给客户的裸机实例的示例。
101.在某些情况下,可以向单个客户供应整个主机机器,并且由该主机机器托管的一个或多个计算实例(或者虚拟机或者裸机实例)所有都属于同一客户。在其它情况下,主机机器可以在多个客户(即,多个租户)之间共享。在这种多租赁场景中,主机机器可以托管属于不同客户的虚拟机计算实例。这些计算实例可以是不同客户的不同vcn的成员。在某些实施例中,裸机计算实例由没有管理程序的裸机服务器托管。当供应裸机计算实例时,单个客户或租户维护对托管该裸机实例的主机机器的物理cpu、存储器和网络接口的控制,并且主机机器不与其他客户或租户共享。
102.如前所述,作为vcn的一部分的每个计算实例都与使该计算实例能够成为vcn的子网的成员的vnic相关联。与计算实例相关联的vnic促进去往和来自计算实例的分组或帧的通信。vnic在创建计算实例时与该计算实例相关联。在某些实施例中,对于由主机机器执行的计算实例,与该计算实例相关联的vnic由连接到主机机器的nvd执行。例如,在图2中,主机机器202执行与vnic276相关联的虚拟机计算实例268,并且vnic276由连接到主机机器202的nvd210执行。作为另一个示例,由主机机器206托管的裸机实例272与由连接到主机机器206的nvd212执行的vnic280相关联。作为又一个示例,vnic284与由主机机器208执行的计算实例274相关联,并且vnic284由连接到主机机器208的nvd212执行。
103.对于由主机机器托管的计算实例,连接到该主机机器的nvd还执行与计算实例是其成员的vcn对应的vcn vr。例如,在图2中描绘的实施例中,nvd 210执行与计算实例268是其成员的vcn对应的vcn vr 277。nvd 212还可以执行与vcn对应的一个或多个vcn vr 283,该vcn与由主机机器206和208托管的计算实例对应。
104.主机机器可以包括使主机机器能够连接到其它设备的一个或多个网络接口卡(nic)。主机机器上的nic可以提供使主机机器能够通信连接到另一个设备的一个或多个端口(或接口)。例如,主机机器可以使用在主机机器上和nvd上提供的一个或多个端口(或接口)连接到nvd。主机机器也可以连接到其它设备(诸如另一个主机机器)。
105.例如,在图2中,主机机器202使用链路220连接到nvd 210,链路220在由主机机器202的nic 232提供的端口234与nvd 210的端口236之间延伸。主机机器206使用链路224连接到nvd 212,链路224在由主机机器206的nic 244提供的端口246与nvd 212的端口248之间延伸。主机机器208使用链路226连接到nvd 212,链路226在由主机机器208的nic 250提供的端口252与nvd 212的端口254之间延伸。
106.nvd进而经由通信链路连接到架顶式(tor)交换机,这些交换机连接到物理网络
218(也称为交换机架构)。在某些实施例中,主机机器和nvd之间以及nvd和tor交换机之间的链路是以太网链路。例如,在图2中,nvd210和212分别使用链路228和230连接到tor交换机214和216。在某些实施例中,链路220、224、226、228和230是以太网链路。连接到tor的主机机器和nvd的集合有时称为机架(rack)。
107.物理网络218提供使tor交换机能够彼此通信的通信架构。物理网络218可以是多层网络。在某些实施方式中,物理网络218是交换机的多层clos网络,其中tor交换机214和216表示多层和多节点物理交换网络218的叶级节点。不同的clos网络配置是可能的,包括但不限于2层网络、3层网络、4层网络、5层网络和一般的“n”层网络。clos网络的示例在图5中描绘并在下面进行描述。
108.主机机器和nvd之间可能存在各种不同的连接配置,诸如一对一配置、多对一配置、一对多配置等。在一对一配置实施方式中,每个主机机器连接到自己单独的nvd。例如,在图2中,主机机器202经由主机机器202的nic232连接到nvd210。在多对一配置中,多个主机机器连接到一个nvd。例如,在图2中,主机机器206和208分别经由nic244和250连接到同一个nvd212。
109.在一对多配置中,一个主机机器连接到多个nvd。图3示出了cspi300内的示例,其中主机机器连接到多个nvd。如图3中所示,主机机器302包括网络接口卡(nic)304,其包括多个端口306和308。主机机器300经由端口306和链路320连接到第一nvd310,并经由端口308和链路322连接到第二nvd312。端口306和308可以是以太网端口并且主机机器302与nvd310和312之间的链路320和322可以是以太网链路。nvd310进而连接到第一tor交换机314并且nvd312连接到第二tor交换机316。nvd310和312与tor交换机314和316之间的链路可以是以太网链路。tor交换机314和316表示多层物理网络318中的层0交换设备。
110.图3中描绘的布置提供了两条单独的物理网络路径,从物理交换机网络318到主机机器302:第一条路径穿过tor交换机314到nvd 310再到主机机器302,第二条路径穿过tor交换机316到nvd312再到主机机器302。单独的路径提供了主机机器302的增强的可用性(称为高可用性)。如果路径(例如,路径之一中的链路断开)或设备(例如,特定nvd未运行)之一出现问题,那么另一条路径可以被用于与主机机器302之间的通信。
111.在图3中描绘的配置中,主机机器使用由主机机器的nic提供的两个不同端口连接到两个不同的nvd。在其它实施例中,主机机器可以包括使主机机器能够连接到多个nvd的多个nic。
112.返回去参考图2,nvd是执行一个或多个网络和/或存储虚拟化功能的物理设备或组件。nvd可以是具有一个或多个处理单元(例如,cpu、网络处理单元(npu)、fpga、分组处理管线等)、存储器(包括高速缓存)和端口的任何设备。各种虚拟化功能可以由nvd的一个或多个处理单元执行的软件/固件来执行。
113.nvd可以以各种不同的形式实现。例如,在某些实施例中,nvd被实现为称为smartnic的接口卡或具有板载嵌入式处理器的智能nic。smartnic是独立于主机机器上的nic的设备。在图2中,nvd210和212可以被实现为分别连接到主机机器202以及主机机器206和208的smartnic。
114.但是,smartnic只是nvd实施方式的一个示例。各种其它实施方式是可能的。例如,在一些其它实施方式中,nvd或由nvd执行的一个或多个功能可以结合到一个或多个主机机
器、一个或多个tor交换机以及cspi 200的其它组件中或由其执行。例如,nvd可以在主机机器中实施,其中由nvd执行的功能由主机机器执行。作为另一个示例,nvd可以是tor交换机的一部分,或者tor交换机可以被配置为执行由nvd执行的功能,这使tor交换机能够执行用于公共云的各种复杂分组转换。执行nvd的功能的tor有时被称为智能tor。在向客户提供虚拟机(vm)实例而非裸机(bm)实例的其它实施方式中,由nvd执行的功能可以在主机机器的管理程序内部实现。在一些其它实施方式中,nvd的功能中的一些可以卸载到在一组主机机器上运行的集中式服务。
115.在某些实施例中,诸如当实现为如图2中所示的smartnic时,nvd可以包括使其能够连接到一个或多个主机机器以及一个或多个tor交换机的多个物理端口。nvd上的端口可以被分类为面向主机的端口(也称为“南端口”)或面向网络或面向tor的端口(也称为“北端口”)。nvd的面向主机的端口是用于将nvd连接到主机机器的端口。图2中面向主机的端口的示例包括nvd210上的端口236以及nvd212上的端口248和254。nvd的面向网络的端口是用于将nvd连接到tor交换机的端口。图2中面向网络的端口的示例包括nvd 210上的端口256和nvd212上的端口258。如图2中所示,nvd 210使用从nvd 210的端口256延伸到tor交换机214的链路228连接到tor交换机214。类似地,nvd212使用从nvd212的端口258延伸到tor交换机216的链路230连接到tor交换机216。
116.nvd经由面向主机的端口从主机机器接收分组和帧(例如,由主机机器托管的计算实例生成的分组和帧),并且在执行必要的分组处理之后,可以经由nvd的面向网络的端口将分组和帧转发到tor交换机。nvd可以经由nvd的面向网络的端口从tor交换机接收分组和帧,并且在执行必要的分组处理之后,可以经由nvd的面向主机的端口将分组和帧转发到主机机器。
117.在某些实施例中,在nvd和tor交换机之间可以有多个端口和相关联的链路。可以聚合这些端口和链路以形成多个端口或链路的链路聚合体组(称为lag)。链路聚合允许将两个端点之间(例如,nvd和tor交换机之间)的多条物理链路视为单条逻辑链路。给定lag中的所有物理链路都可以以相同的速度在全双工模式下操作。lag有助于增加两个端点之间的连接的带宽和可靠性。如果lag中的物理链路之一发生故障,那么流量将动态且透明地重新指派到lag中的其它物理链路之一。聚合的物理链路比每条单独的链路递送更高的带宽。与lag相关联的多个端口被视为单个逻辑端口。流量可以在lag的多条物理链路之间进行负载平衡。可以在两个端点之间配置一个或多个lag。这两个端点可以位于nvd和tor交换机之间、主机机器和nvd之间,等等。
118.nvd实现或执行网络虚拟化功能。这些功能由nvd执行的软件/固件执行。网络虚拟化功能的示例包括但不限于:分组封装和解封装功能;用于创建vcn网络的功能;用于实现网络策略的功能,诸如vcn安全性列表(防火墙)功能性;促进分组路由和转发到vcn中的计算实例和从该计算实例转发的功能;等等。在某些实施例中,在接收到分组后,nvd被配置为执行分组处理流水线以处理分组并确定如何转发或路由分组。作为这个分组处理管线的一部分,nvd可以执行与覆盖网络相关联的一个或多个虚拟功能,诸如执行与vcn中的计算机实例相关联的vnic、执行与vcn相关联的虚拟路由器(vr)、分组的封装和解封装以促进虚拟网络中的转发或路由、某些网关(例如,本地对等网关)的执行、安全性列表的实施方式、网络安全组、网络地址转换(nat)功能性(例如,逐个主机地将公共ip转换到私有ip)、节流功
能和其它功能。
119.在某些实施例中,nvd中的分组处理数据路径可以包括多个分组管线,每个管线由一系列分组变换级组成。在某些实施方式中,在接收到分组后,分组被解析并分类到单个管线。然后以线性方式处理分组,一个级接一个级,直到分组或者被丢弃或者通过nvd的接口发送出去。这些级提供基本的功能性分组处理构建块(例如,验证报头、强制执行节流、插入新的层2报头、强制执行l4防火墙、vcn封装/解封装等),以便可以通过组合现有级来构建新的管线,并且可以通过创建新级并将它们插入现有管线来添加新的功能性。
120.nvd可以执行与vcn的控制平面和数据平面对应的控制平面和数据平面功能。vcn控制平面的示例也在图21、图22、图23和图24中描绘(参见参考标记2116、2216、2316和2416)并在下文中描述。vcn数据平面的示例在图21、图22、图23和图24中描绘(参见参考标记2118、2218、2318和2418)并在下文中描述。控制平面功能包括用于配置控制数据如何被转发的网络的功能(例如,设置路由和路由表、配置vnic等)。在某些实施例中,提供了vcn控制平面,它集中计算所有覆盖到基底映射并将它们发布到nvd和虚拟网络边缘设备(诸如各种网关,诸如drg、sgw、igw等)。防火墙规则也可以使用相同的机制发布。在某些实施例中,nvd仅获得与该nvd相关的映射。数据平面功能包括基于使用控制平面设置的配置来实际路由/转发分组的功能。vcn数据平面是通过在客户的网络分组穿过基底网络之前对其进行封装来实现的。封装/解封装功能性在nvd上实现。在某些实施例中,nvd被配置为拦截进出主机机器的所有网络分组并执行网络虚拟化功能。
121.如上面所指示的,nvd执行各种虚拟化功能,包括vnic和vcn vr。nvd可以执行与连接到vnic的一个或多个主机机器托管的计算实例相关联的vnic。例如,如图2中所描绘的,nvd 210执行与由连接到nvd 210的主机机器202托管的计算实例268相关联的vnic276的功能性。作为另一个示例,nvd212执行与由主机机器206托管的裸机计算实例272相关联的vnic280,并执行与由主机机器208托管的计算实例274相关联的vnic284。主机机器可以托管属于不同vcn(属于不同客户)的计算实例,并且连接到主机机器的nvd可以执行与计算实例对应的vnic(即,执行vnic相关功能性)。
122.nvd还执行与计算实例的vcn对应的vcn虚拟路由器。例如,在图2中描绘的实施例中,nvd 210执行与计算实例268所属的vcn对应的vcn vr 277。nvd 212执行与由主机机器206和208托管的计算实例所属的一个或多个vcn对应的一个或多个vcn vr 283。在某些实施例中,与该vcn对应的vcn vr由连接到托管属于该vcn的至少一个计算实例的主机机器的所有nvd执行。如果主机机器托管属于不同vcn的计算实例,那么连接到该主机机器的nvd可以执行与那些不同vcn对应的vcn vr。
123.除了vnic和vcn vr之外,nvd还可以执行各种软件(例如,守护进程)并且包括一个或多个硬件组件,这些组件促进由nvd执行的各种网络虚拟化功能。为了简单起见,这些各种组件被分组在一起作为图2中所示的“分组处理组件”。例如,nvd 210包括分组处理组件286并且nvd212包括分组处理组件288。例如,用于nvd的分组处理组件可以包括分组处理器,该分组处理器被配置为与nvd的端口和硬件接口交互以监视由nvd接收和使用nvd传送的所有分组并存储网络信息。网络信息例如可以包括识别由nvd处置的不同网络流的网络流信息和每个流信息(例如,每个流统计信息)。在某些实施例中,网络流信息可以以每个vnic为基础来存储。分组处理器可以执行逐分组的操纵以及实现有状态的nat和l4防火墙
(fw)。作为另一个示例,分组处理组件可以包括被配置为将由nvd存储的信息复制到一个或多个不同的复制目标存储库的复制代理。作为又一个示例,分组处理组件可以包括被配置为执行nvd的日志记录功能的日志记录代理。分组处理组件还可以包括用于监视nvd的性能和健康状况并且还可能监视连接到nvd的其它组件的状态和健康状况的软件。
124.图1示出了示例虚拟或覆盖网络的组件,包括vcn、vcn内的子网、部署在子网上的计算实例、与计算实例相关联的vnic、用于vcn的vr以及为vcn配置的网关的集合。图1中描绘的覆盖组件可以由图2中描绘的物理组件中的一个或多个执行或托管。例如,vcn中的计算实例可以由图2中描绘的一个或多个主机机器执行或托管。对于由主机机器托管的计算实例,与该计算实例相关联的vnic通常由连接到该主机机器的nvd执行(即,vnic功能性由连接到该主机机器的nvd提供)。用于vcn的vcn vr功能由连接到托管或执行作为该vcn的一部分的计算实例的主机机器的所有nvd执行。与vcn相关联的网关可以由一种或多种不同类型的nvd执行。例如,某些网关可以由smartnic执行,而其它网关可以由一个或多个主机机器或nvd的其它实施方式执行。
125.如上所述,客户vcn中的计算实例可以与各种不同的端点通信,其中端点可以与源计算实例在同一子网内、在不同子网中但与源计算实例在同一vcn内,或者与位于源计算实例的vcn外部的端点通信。使用与计算实例相关联的vnic、vcn vr以及与vcn相关联的网关来促进这些通信。
126.对于vcn中同一子网上的两个计算实例之间的通信,使用与源和目的地计算实例相关联的vnic促进通信。源和目的地计算实例可以由同一主机机器或不同的主机机器托管。源自源计算实例的分组可以从托管源计算实例的主机机器转发到连接到该主机机器的nvd。在nvd上,使用分组处理管线处理分组,这可以包括与源计算实例相关联的vnic的执行。由于用于分组的目的地端点位于同一子网内,因此与源计算实例相关联的vnic的执行导致分组被转发到执行与目的地计算实例相关联的vnic的nvd,然后nvd处理分组并将其转发到目的地计算实例。与源和目的地计算实例相关联的vnic可以在同一个nvd上执行(例如,当源和目的地计算实例由同一个主机机器托管时)或在不同的nvd上执行(例如,当源和目的地计算实例由连接到不同nvd的不同主机机器托管时)。vnic可以使用由nvd存储的路由/转发表来确定用于分组的下一跳。
127.对于要从子网中的计算实例传送到同一vcn中不同子网中的端点的分组,源自源计算实例的分组从托管源计算实例的主机机器传送到连接到该主机机器的nvd。在nvd上,使用分组处理管线处理分组,这可以包括一个或多个vnic以及与vcn相关联的vr的执行。例如,作为分组处理管线的一部分,nvd执行或调用与和源计算实例相关联的vnic的功能性(也称为执行vnic)。由vnic执行的功能性可以包括查看分组上的vlan标记。由于分组的目的地在子网外部,因此接下来由nvd调用和执行vcn vr功能性。然后,vcn vr将分组路由到执行与目的地计算实例相关联的vnic的nvd。与目的地计算实例相关联的vnic然后处理分组并将分组转发到目的地计算实例。与源和目的地计算实例相关联的vnic可以在同一个nvd上执行(例如,当源和目的地计算实例由同一个主机机器托管时)或在不同的nvd上执行(例如,当源和目的地计算实例由连接到不同nvd的不同主机机器托管时)。
128.如果用于分组的目的地在源计算实例的vcn外部,那么源自源计算实例的分组从托管源计算实例的主机机器传送到连接到该主机机器的nvd。nvd执行与源计算实例相关联
的vnic。由于分组的目的地端点在vcn外部,因此分组随后由用于该vcn的vcn vr处理。nvd调用vcn vr功能性,这会导致分组被转发到执行与vcn相关联的适当网关的nvd。例如,如果目的地是客户的内部部署网络内的端点,那么分组可以由vcn vr转发到执行为vcn配置的drg网关的nvd。vcn vr可以在与执行与源计算实例相关联的vnic的nvd相同的nvd上执行,或者由不同的nvd执行。网关可以由nvd执行,nvd可以是smartnic、主机机器或其它nvd实施方式。然后,分组由网关处理并转发到下一跳,该下一跳促进将分组传送到其预期的目的地端点。例如,在图2中描绘的实施例中,源自计算实例268的分组可以通过链路220(使用nic 232)从主机机器202传送到nvd 210。在nvd 210上,调用vnic 276,因为它是与源计算实例268相关联的vnic。vnic 276被配置为检查分组中封装的信息,并确定用于转发分组的下一跳,目的是促进将分组传送到其预期的目的地端点,然后将分组转发到确定的下一跳。
129.部署在vcn上的计算实例可以与各种不同端点通信。这些端点可以包括由cspi 200托管的端点和cspi 200外部的端点。由cspi 200托管的端点可以包括同一vcn或其它vcn中的实例,这些vcn可以是客户的vcn,或者是不属于客户的vcn。由cspi 200托管的端点之间的通信可以通过物理网络218执行。计算实例还可以与不由cspi 200托管或在cspi 200外部的端点通信。这些端点的示例包括客户的内部部署网络内的端点或数据中心,或可通过公共网络(诸如互联网)访问的公共端点。与cspi 200外部的端点的通信可以使用各种通信协议通过公共网络(例如,互联网)(图2中未示出)或专用网络(图2中未示出)来执行。
130.图2中描绘的cspi 200的体系架构仅仅是示例并且不旨在限制。在替代实施例中,变化、替代方案和修改是可能的。例如,在一些实施方式中,cspi 200可以具有比图2中所示的系统或组件更多或更少的系统或组件,可以组合两个或更多个系统,或者可以具有不同的系统配置或布置。图2中描绘的系统、子系统和其它组件可以在由相应系统的一个或多个处理单元(例如,处理器、核心)执行的软件(例如,代码、指令、程序)中、使用硬件或其组合实现。软件可以存储在非暂态存储介质上(例如,存储器设备上)。
131.图4描绘了根据某些实施例的主机机器和nvd之间的连接,用于提供i/o虚拟化以支持多租赁。如图4中所描绘的,主机机器402执行提供虚拟化的环境的管理程序404。主机机器402执行两个虚拟机实例,属于客户/租户#1的vm1 406和属于客户/租户#2的vm2408。主机机器402包括经由链路414连接到nvd 412的物理nic 410。每个计算实例都附接到由nvd 412执行的vnic。在图4中的实施例中,vm1 406附接到vnic-vm1 420并且vm2 408附接到vnic-vm2 422。
132.如图4中所示,nic 410包括两个逻辑nic,逻辑nic a 416和逻辑nic b 418。每个虚拟机附接到其自己的逻辑nic并被配置为与其自己的逻辑nic一起工作。例如,vm1 406附接到逻辑nic a 416并且vm2 408附接到逻辑nic b 418。虽然主机机器402仅包括由多个租户共享的一个物理nic 410,但由于逻辑nic,因此每个租户的虚拟机相信他们有自己的主机机器和网卡。
133.在某些实施例中,每个逻辑nic被指派有其自己的vlan id。因此,特定的vlan id被指派给用于租户#1的逻辑nic a 416,并且分离的vlan id被指派给用于租户#2的逻辑nic b 418。当分组从vm1 406传送时,由管理程序将指派给租户#1的标签附加到分组,然后分组通过链路414从主机机器402传送到nvd 412。以类似的方式,当分组从vm2 408被传送时,指派给租户#2的标签由管理程序附加到分组,然后分组通过链路414从主机机器402传
送到nvd 412。因而,从主机机器402传送到nvd 412的分组424具有识别特定租户和相关联的vm的相关联的标签426。在nvd上,对于从主机机器402接收到的分组424,与该分组相关联的标签426被用于确定分组是由vnic-vm1 420还是由vnic-vm2 422处理。分组随后由对应的vnic处理。图4中描述的配置使每个租户的计算实例能够相信他们拥有自己的主机机器和nic。图4中描述的设置提供了i/o虚拟化以支持多租赁。
134.图5描绘了根据某些实施例的物理网络500的简化框图。图5中描绘的实施例被结构化为clos网络。clos网络是特定类型的网络拓扑,被设计为提供连接冗余性,同时维持高对分带宽和最大资源利用率。clos网络是一种无阻塞、多级或多层交换网络,其中级数或层数可以是二、三、四、五等。图5中描绘的实施例是3层网络,包括层1、层2和层3。tor交换机504表示clos网络中的层0交换机。一个或多个nvd连接到tor交换机。层0交换机也被称为物理网络的边缘设备。层0交换机连接到也称为叶交换机的层1交换机。在图5中描绘的实施例中,“n”个层0tor交换机的集合连接到“n”个层1交换机的集合并形成群聚(pod)。群聚中的每个层0交换机都互连到该群聚中的所有层1交换机,但群聚之间没有交换机的连接性。在某些实施方式中,两个群聚被称为块。每个块由“n”个层2交换机(有时称为主干交换机)的集合提供服务或连接到这些交换机。物理网络拓扑中可以有几个块。层2交换机进而连接到“n”个层3交换机(有时称为超级主干交换机)。物理网络500之上的分组的通信通常使用一种或多种层3通信协议来执行。通常,物理网络的所有层(tor层除外)都是n向冗余的,因此允许高可用性。可以为群聚和块指定策略,以控制交换机在物理网络中彼此的可见性,从而启用物理网络的扩展(scale)。
135.clos网络的特征是从一个层0交换机到另一个层0交换机(或从连接到层0交换机的nvd到连接到层0交换机的另一个nvd)的最大跳数是固定的。例如,在3层clos网络中,分组从一个nvd到达另一个nvd最多需要七跳,其中源和目标nvd连接到clos网络的叶层。同样,在4层clos网络中,分组从一个nvd到达另一个nvd最多需要九跳,其中源和目标nvd连接到clos网络的叶层。因此,clos网络体系架构在整个网络中维持一致的时延,这对于数据中心内部和数据中心之间的通信是重要的。clos拓扑可水平扩展且具有成本效益。通过在各个层添加更多交换机(例如,更多叶交换机和骨干交换机)以及通过增加相邻层的交换机之间的链路数量,可以轻松增加网络的带宽/吞吐量容量。
136.在某些实施例中,cspi内的每个资源都被指派称为云标识符(cid)的唯一标识符。这个标识符作为资源的信息的一部分包括在内并且可以被用于管理资源,例如,经由控制台或通过api。用于cid的示例语法是:
137.ocid1.《resource type》.《realm》.[region][.future use].《unique id》
[0138]
其中,
[0139]
ocid1:指示cid的版本的文字串;
[0140]
resource type:资源的类型(例如,实例、卷、vcn、子网、用户、组等);
[0141]
realm:资源所在的领域。示例值为用于商业领域的“c1”、用于政府云领域的“c2”或用于联邦政府云领域的“c3”等。每个领域可以有其自己的域名;
[0142]
region:资源所在的地区。如果该地区不适用于该资源,那么这个部分可能为空;
[0143]
future use:保留以备将来使用。
[0144]
uniqueid:id的唯一部分。格式可以因资源或服务的类型而异。
[0145]
基于高速缓存和非高速缓存的配置信息的分组流
[0146]
图6图示了根据某些实施例的支持基于高速缓存的配置信息的分组流的网络体系架构的示例。网络体系架构至少部分地表示csp的云基础设施。如图所示,网络体系架构包括主机机器660、nvd 670、基底网络680和主机机器690。
[0147]
一般而言,主机机器660托管一个或多个计算实例,诸如客户的计算实例662,并且与nvd 670连接。连接可以是以太网链路。除其它虚拟功能外,nvd 670还托管一个或多个vnic,包括附接到计算实例662的vnic 672。通常,vnic可以与单个计算实例相关联,并且可以向计算实例提供虚拟网络接口功能。虚拟网络接口功能包括提供到虚拟网络的接口(例如,计算实例662到虚拟网络682的接口)。nvd 670还经由交换机(例如,支持以太网链路的架顶(tor)交换机)与基底网络680连接。基底网络680还与主机机器690连接,其中连接可以经由另一个nvd(为了简单起见,在图6中未示出)。主机机器690可以托管一个或多个计算实例,包括端点692。计算实例662可以与端点692通信,诸如通过经由vnic 672在虚拟网络682上发送和接收分组(并且同样,经由与端点692附接的vnic,为了简单起见,在图6中也未示出)。虚拟网络682可以是覆盖在基底网络680之上的基于软件的或软件定义的网络。如虚线方框所示,客户的vcn 600可以包括计算实例662、vnic 672和端点692(但是端点692有可能不是vcn 600的一部分)。
[0148]
在示例中,来自和去往主机机器660的计算实例的分组流可以取决于存储在nvd 670的存储器中的配置信息674。配置信息674可以包括安全性策略(例如,基于用于入站和/或出站流量的防火墙规则的策略)、路由规则、覆盖到基底ip地址映射、路由表以及发送和/或接收分组的其它类型的信息中的任何一个或全部。在示例中,配置信息674可以包括多个集合,其中每个集合针对vnic被高速缓存、与对应的计算实例相关联,并且特定于到这个计算实例的出站或入站分组流所需的信息。在这个示例中,当计算实例662发送分组时,主机机器660将这个分组转发到nvd 670。进而,vnic 672查找可应用的配置信息以进行处理(例如,应用规则、更新分组的报头等)并在虚拟网络682上发送经处理的分组。在虚拟网络682上发送它涉及nvd 670以对vnic 672和计算实例662透明的方式在基底网络680上进一步处理和发送该分组。最终,分组被端点692接收。相反,去往计算实例662的分组首先由nvd 670接收,由vnic 672基于适用的配置信息进行处理,然后从nvd 670发送到主机机器660以到达计算实例662。
[0149]
如上所述,图6的网络体系架构可能需要在nvd 670处存储和维护大量配置信息。另外,nvd 670托管的vnic还使用nvd 670的处理和存储器资源。因而,nvd 670上的vnic的密度(例如,nvd 670可以托管的vnic的数量)可以相对有限。
[0150]
图7图示了根据某些实施例的支持基于非高速缓存的配置信息的分组流的网络体系架构的示例。这个网络体系架构一般而言会增加每个nvd的vnic密度,但会影响网络带宽。不是由nvd存储配置信息,而是nvd托管精简版本的vnic(称为微型vnic),并且配置信息由提供集中式网络接口服务的网络接口服务存储。如图所示,网络体系架构包括主机机器710、nvd 720、服务器群730、基底网络740和主机机器750。
[0151]
一般而言,主机机器710托管一个或多个计算实例,诸如客户的计算实例712,并且与nvd 720连接。连接可以是以太网链路。除了其它虚拟功能之外,nvd 720还托管一个或多个vnic,包括附接到计算实例712的vnic 722。与图6的nvd 670上托管的vnic不同,nvd 670
上托管的vnic可以是微型vnic。通常,微型vnic比vnic更容易实现,附接到计算实例,可以不使用配置信息来处理分组,而是可以被配置为经由nvd 720直接向服务器群730上的网络接口服务732发送计算实例的出站分组,并且可以被配置为经由nvd 720直接向计算实例发送入站分组。nvd 720与服务器群730连接(例如,经由隧道或某种其它对等机制)。
[0152]
服务器群730可以是为一个或多个客户托管网络接口服务732的一组或一群服务器或主机机器。网络接口服务732提供用于计算机实例之间的连接性的网络接口功能。在一个示例中,网络接口服务732可以是vnic即服务(vnicaas)。例如,网络接口服务732包括多个vnic,包括与微型vnic 722相关联的vnic 734。为清楚起见,这些vnic可以被称为服务vnic(与微型vnic相对)。通常,服务vnic可以与多个微型vnic相关联,每个微型vnic进而与单个计算实例关联。换句话说,服务vnic可以通过其对应的微型vnic与多个计算实例相关联,并且可以为这些计算实例提供虚拟网络接口功能。虚拟网络接口功能包括提供计算实例到虚拟网络的接口(例如,计算实例712到虚拟网络742的接口)。
[0153]
服务器群730经由一组交换机与基底网络740连接。基底网络740还与主机机器750连接,其中连接可以经由另一个nvd、服务器群730和/或另一个服务器群(为简单起见在图7中未示出)。主机机器750可以托管一个或多个计算实例,包括端点752。计算实例712可以与端点752通信,诸如通过经由微型vnic 722和服务vnic 734(并且同样经由与端点752附接的nvic或一对与端点752附接的微型vnic和服务vnic,为简单起见,在图7中也未示出)在虚拟网络742上发送和接收分组。虚拟网络742可以是覆盖在基底网络740之上的基于软件的或软件定义的网络。如虚线框所示,客户的vcn 760可以包括计算实例712、微型vnic 722、服务vnic 734和端点752(但是端点752可能不是vcn 760的一部分)。
[0154]
在示例中,来自和去往主机机器710的计算实例的分组流可以取决于由网络接口服务732存储的配置信息736。配置信息736可以包括安全性策略(例如,基于用于入站和/或出站流量的防火墙规则的策略)、路由规则、覆盖到基底ip地址映射、路由表以及发送和/或接收分组的其它类型的信息中的任何一个或全部。在示例中,配置信息736可以包括多个集合,其中每个集合针对服务vnic、微型vnic和/或计算实例被高速缓存。在这个示例中,当计算实例712发送分组时,主机机器710将这个分组转发到nvd 720。进而,微型vnic 722经由nvd 720将分组发送到网络接口服务732。服务器群730通过隧道从nvd 670接收分组并将其转发到网络接口服务732。网络接口服务732选择服务vnic 734来进一步处理该分组。进而,服务vnic 734查找适用的配置信息以进行处理(例如,应用规则、更新分组的报头等)并在虚拟网络742上发送经处理的分组。在虚拟网络742上发送它涉及服务器群730以对服务vnic 734、微型vnic 722和计算实例712透明的方式在基底网络740上发送分组。最终,该分组被端点752接收。相反,去往计算实例712的分组由服务vnic 734基于适用的配置信息进行处理,经由服务器群730和nvd720发送到微型vnic 722,然后经由nvd 720和主机机器710从微型vnic 722发送到计算实例712。
[0155]
如本文上面所述,图7的网络体系架构可能需要来自和去往主机机器710的分组流经网络接口服务732。这个流会影响网络带宽,尤其是随着分组数量的增加。
[0156]
图8图示了根据某些实施例的基于高速缓存的流信息和非高速缓存的配置信息支持分组流的网络体系架构的示例。在此,网络体系架构可以优化存储器使用(以及nvd上的vnic密度)与网络带宽之间的平衡。在示例中,网络接口服务可以维护可用于管理分组流的
配置信息。nvd还可以托管vnic并且仅存储配置信息的相关子集,在本文中称为流信息。这个子集可以是直接从虚拟网络发送和/或接收分组所需的最少量或减少量的配置信息,而不需要利用网络接口服务。仅当这个子集不可用或过时时,分组流才需要涉及网络接口服务。如图所示,网络体系架构包括主机机器810、nvd 820、服务器群830、基底网络840和主机机器850。
[0157]
一般而言,主机机器810托管一个或多个计算实例,诸如客户的计算实例812,并且与nvd 820连接。连接可以是以太网链路。除了其它虚拟功能之外,nvd 820还托管一个或多个vnic,包括附接到计算实例812的vnic 822。nvd 820还存储可由此类vnic使用以在一个或多个虚拟网络(诸如虚拟网络842)上发送和/或接收分组的流信息824。nvd 820与服务器群830连接(例如,经由隧道或某种其它对等机制)。nvd 820还与基底网络840连接(例如,经由tor交换机)。
[0158]
服务器群830可以是为一个或多个客户托管网络接口服务832的一组或一群服务器或主机机器。网络接口服务832提供用于计算机实例之间的连接性的网络接口功能。在一个示例中,网络接口服务832可以是vnicaas。例如,网络接口服务832包括多个服务vnic,包括与vnic 822和计算实例812相关联的服务vnic 834。这些服务vnic依赖于由网络接口服务832存储的配置信息836来处理和发送分组。
[0159]
服务器群830经由一组交换机与基底网络840连接。基底网络840还与主机机器850连接,其中连接可以经由另一个nvd、服务器群830和/或另一个服务器群(为简单起见在图8中未示出)。主机机器850可以托管一个或多个计算实例,包括端点852。计算实例812可以与端点852通信,诸如通过经由vnic 822和/或服务vnic 834(并且同样经由与端点852附接的vnic和/或另一个服务vnic,为简单起见,在图8中也未示出)在虚拟网络842上发送和接收分组。虚拟网络842可以是覆盖在基底网络840之上的基于软件的或软件定义的网络。如虚线框所示,客户的vcn 860可以包括计算实例812、vnic 822、服务vnic 834和端点852(但是端点852可能不是vcn 860的一部分)。
[0160]
在示例中,来自和去往主机机器810的计算实例的分组流可以取决于由网络接口服务832存储的配置信息836和由nvd 820存储的流信息824。配置信息836可以包括安全性策略(例如,基于用于入站和/或出站流量的防火墙规则的策略)、路由规则、覆盖到基底ip地址映射、路由表以及发送和/或接收分组的其它类型的信息中的任何一个或全部。相比之下,流信息824可以包括配置信息836的子集,其中这个子集是经由nvd 820处理和管理分组的流所需的最小量或减少量的配置信息。例如,流信息824包括一个或多个安全性策略、一个或多个覆盖到基底ip地址映射、一个或多个路由表和/或其一个或多个其概要中的任何一个或组合。流信息824可以细化到特定分辨率,诸如细化到分组类型(例如,可以指示适用于特定分组类型的重写规则),或者可以通用到更高分辨率级别(例如,可以适用于多种分组类型,并且指示例如在给定特定防火墙规则的情况下如何处理分组)。一般而言,流信息824的量小于配置信息836的量,因为流信息824特定于来自和/去往与nvd 820连接的主机机器810的一个或多个计算实例的分组流,而配置信息836适用于去往和/或来自托管在大量主机机器上的大量计算实例的分组流。在示例中,配置信息836可以包括多个集合,其中每个集合针对服务vnic、附接到计算实例的vnic和/或计算实例而被高速缓存。同样在这个示例中,流信息824可以包括多个集合,其中每个集合针对附接到计算实例的vnic和/或计
算实例而被高速缓存。
[0161]
为了说明,考虑两个场景。在第一个场景中,计算实例812将分组发送到端点852,其中流信息824可用于支持这种传输。在这个场景中,分组由vnic 822在虚拟网络842上直接发送(如上面的点线所示),并且相应地,直接由nvd 820在基底网络840上发送(如下面的实线所示)。在第二个替代场景中,流信息824不可用。在这种情况下,分组由服务vnic 834在虚拟网络842上处理和发送(如下面的点线所示),并且相应地,由服务器群830在基底网络840上处理和发送(如上面的实线所示)。
[0162]
在第一个场景中,当计算实例812发送分组时,主机机器810将这个分组转发到nvd 820。进而,vnic 822查找要处理的适用流信息(例如,应用规则、更新分组的报头等)并且在虚拟网络842上发送经处理的分组。在虚拟网络842上发送它涉及nvd 820以对vnic 822和计算实例812透明的方式在基底网络840上进一步处理和发送该分组。最终,该分组被端点852接收。
[0163]
在第二个场景中,当计算实例812发送分组时,主机机器810将这个分组转发到nvd 820。进而,vnic 822确定没有流信息可用于处理这个分组,并且代替地,经由nvd 820将该分组发送到网络接口服务832。服务器群830通过隧道从nvd 820接收分组并将其转发到网络接口服务832。网络接口服务832选择服务vnic 834来进一步处理该分组。进而,服务vnic 834查找适用配置信息以进行处理(例如,应用规则、更新分组的报头等)并且在虚拟网络842上发送经处理的分组。在虚拟网络842上发送它涉及服务器群830以对服务vnic 834、vnic 822和计算实例812透明的方式在基底网络840上发送分组。最终,分组被端点852接收。
[0164]
如上文所述,并且相对于图6的网络体系架构,nvd 820存储更少量的配置信息(例如,流信息824),从而允许更高密度的vnic。相对于图7的网络体系架构,分组流仅在需要时(例如,当没有流信息可用时)涉及网络接口服务832,从而减少带宽负担。生成、分发、更新流信息以及管理分组流的各方面将在接下来的附图中进一步描述。
[0165]
如上文所描述的,虚拟网络上的分组的流不仅涉及覆盖资源,而且还包括通过托管覆盖资源的硬件资源在基底网络上的对应分组流。在接下来的附图中并且为了清楚和简洁起见,当描述虚拟网络上的分组流时,可以省略关于基底网络上的分组流的细节,并且这些细节通过参考以上描述来暗示。
[0166]
图9图示了根据某些实施例的导致高速缓存的流信息的出站分组流的示例。托管vnic 912的nvd 910与托管网络接口服务922的服务器群920连接。最初,nvd 910不存储允许vnic 912直接在虚拟网络上发送分组的流信息。代替地,经由网络接口服务922(例如,经由特定服务vnic)在虚拟网络上间接发送分组。随后,nvd 910从网络接口服务922接收并存储适用的流信息,从而允许vnic 912从该点直接在虚拟网络上发送分组,如图10中进一步描述的。nvd 910、vnic 912、服务器群920和网络接口服务922分别是nvd 820、vnic 822、服务器群830和网络接口服务832的示例。在图9中,圆圈中所示的数字是指事件的序列。
[0167]
在示例中,vnic 912从例如vnic 912所附接的计算实例接收分组,其中这个分组将在虚拟网络上发送(例如,是出站分组)。给定分组中的报头信息,vnic 912查找nvd 910的高速缓存914以确定高速缓存的流信息是否可用于处理该分组。这种查找可以使用源信息、目的地信息、源子网、目的地子网、分组类型等的n元组匹配。该查找导致高速缓存未命
中。因而,vnic 912将分组发送到网络接口服务922。进而,给定配置信息924,网络接口服务922处理分组(例如,应用规则、重写报头信息、执行封装等)并且在基底网络上发送经处理的分组。此外,网络接口服务922生成包括流信息和与流信息相关联的版本信息的高速缓存条目。流信息可以是用于在基底编号上发送分组的特定配置信息的子集。例如,流信息包括安全性策略、覆盖到基底ip地址映射或路由规则中的至少一个。版本信息可以指示流信息或流信息的部分的当前版本。例如,版本信息是流信息的当前版本的指示符或者流信息的每部分的当前版本(例如,安全性策略的当前版本、覆盖到基底ip地址映射的当前版本,以及路由规则的当前版本)的指示符。版本信息可用于使高速缓存条目失效,如接下来的图进一步讨论的。网络接口服务922将高速缓存条目发送到nvd 910。进而,nvd 910将来自接收到的高速缓存条目的流信息916和版本信息918存储为高速缓存914中的条目。
[0168]
图10图示了根据某些实施例的基于高速缓存的流信息的出站分组流的示例。图10的示例是图9的示例的延续。托管vnic 1012的nvd 1010与托管网络接口服务1022的服务器群1020连接。nvd 1010在高速缓存1014中存储流信息1016和版本信息1018。相比之下,网络接口服务1022存储配置信息1024。nvd 1010、vnic 1012、高速缓存1014、流信息1016、版本信息1018、服务器群1020、网络接口服务1022和配置信息1024分别是nvd 910、vnic 912、高速缓存914、流信息916、版本信息918、服务器群920、网络接口服务922和配置信息924的示例。
[0169]
在示例中,vnic 1012从例如vnic 1012与其附接的计算实例接收分组,其中这个分组将在虚拟网络上发送(例如,是出站分组)。给定分组中的报头信息,vnic 1012查找高速缓存1014以确定高速缓存的流信息是否可用于处理该分组。查找导致高速缓存命中流信息1016。版本信息1018指示流信息1016有效。因而,vnic 1012直接在虚拟网络上发送分组,而不需要经由网络接口服务1022发送它。
[0170]
图11图示了根据某些实施例的导致高速缓存的流信息的入站分组流的示例。图9描述了基于出站流量的流生成和高速缓存流信息,而图11的示例描述了基于入站流量的流的这个过程。托管vnic 1112的nvd 1110与托管网络接口服务1122的服务器群1120连接。最初,nvd 1110不存储允许vnic 1112直接从虚拟网络接收分组的流信息,如图12中进一步描述的。代替地,该分组由网络接口服务1122进一步处理(例如,经由特定服务vnic)。随后,nvd 1110从网络接口服务1122接收经处理的分组并存储适用的流信息,从而允许vnic 1112直接在虚拟网络上发送分组。nvd 1110、vnic 1112、服务器群1120和网络接口服务1122分别是nvd 820、vnic 822、服务器群830和网络接口服务832的示例。
[0171]
在示例中,vnic 1112在虚拟网络上接收入站分组。给定分组中的报头信息,vnic 1112查找nvd 1110的高速缓存1114以确定高速缓存的流信息是否可用于处理该分组。查找导致高速缓存未命中。因而,vnic 1112将分组发送到网络接口服务1122。进而,给定配置信息1124,网络接口服务1122处理分组(例如,应用规则、重写报头信息、执行封装等)并将经处理的分组发送回vnic 1112,vnic 1112然后将其发送到vnic 1112与其附接的计算实例。此外,网络接口服务1122生成包括流信息和与流信息相关联的版本信息的高速缓存条目。流信息可以是用于在基底网络上发送分组的特定配置信息的子集。例如,流信息包括安全性策略、覆盖到基底ip地址映射或路由规则中的至少一个。版本信息可以指示流信息或流信息的部分的当前版本。例如,版本信息是流信息的当前版本的指示符或者流信息的每部
分的当前版本的指示符(例如,安全性策略的当前版本、覆盖到基底ip地址映射的当前版本,以及路由规则的当前版本)。版本信息可用于使高速缓存条目失效,如接下来的图进一步讨论的。网络接口服务1122将高速缓存条目发送到nvd 1110。进而,nvd 1110将来自接收到的高速缓存条目的流信息1116和版本信息1118存储为高速缓存1114中的条目。
[0172]
如上文结合图11所描述的,接收方nvd(例如,nvd 1110)基于入站流量来高速缓存流信息。可以存在变化。例如,在从vnic接收到分组后,网络接口服务将相关流信息发送到接收方nvd和发送方nvd以便在那里高速缓存。例如,并且参考图9和图11,假设发送方nvd是nvd 910并且接收方nvd是nvd 1110。在vnic 912发送分组时(例如,经由发送方nvd 910),网络接口服务(例如,网络接口服务922或1122)更新发送方nvd 910和接收方nvd 1110两者。
[0173]
此外,并且如结合图9和图11所描述的,在高速缓存未命中时,分组被发送到网络接口服务,从而触发网络接口服务发送包括所需流信息的高速缓存条目。这里也可以存在变化。例如,流信息可以包括在由网络接口服务发送到nvd的分组的报头中,或者包括在从发送方nvd发送到接收方nvd的分组的报头中。在网络接口服务更新接收方nvd和发送方nvd两者的情况下,各种流信息可以包括在不同的分组中(例如,流信息包括在发送到接收方nvd的分组中并且流信息包括在发送到发送方nvd的响应分组中)。在一种示例变型中,发送方nvd将流信息包括在接收方nvd的报头中以供接收方nvd随后使用。在这个示例中,接收方nvd可以没有入口安全性策略。代替地,签名可以包括在报头中并由接收方nvd用来认证流信息是由授权实体发送的。
[0174]
图12图示了根据某些实施例的基于高速缓存的流信息的入站分组流的示例。图12的示例从图11的示例继续。托管vnic 1212的nvd 1210与托管网络接口服务1222的服务器群1220连接。nvd 1210在高速缓存1214中存储流信息1216和版本信息1218。相比之下,网络接口服务1222存储配置信息1224。nvd 1210、vnic 1212、高速缓存1214、流信息1216、版本信息1218、服务器群1220、网络接口服务1222和配置信息1224是分别是nvd 1110、vnic 1112、高速缓存1114、流信息1116、版本信息1118、服务器群1120、网络接口服务1122和配置信息1124的示例。
[0175]
在示例中,vnic 1212在虚拟网络上接收入站分组。给定分组中的报头信息,vnic 1212查找高速缓存1214以确定高速缓存的流信息是否可用于处理该分组。查找导致高速缓存命中流信息1216。版本信息1218指示流信息1216有效。因而,vnic 1212将分组发送到vnic 1212与其附接的计算实例,而不需要将这个分组发送到网络接口服务1222以进行进一步处理。
[0176]
图13图示了根据某些实施例的使高速缓存的流信息失效并更新其的示例。在这个示例中,失效可以由网络接口服务来管理,并且更新可以遵循主动策略(例如,通过实现推送机制,将更新后的流信息发送到相关vnic)。可替代地,更新可以遵循被动策略(例如,通过实现拉机制,其中根据来自vnic的更新请求将更新后的流信息发送到vnic)。托管vnic 1312的nvd 1310与托管网络接口服务1322的服务器群1320连接。网络接口服务1322与控制平面1330连接。客户的计算设备(现在在图13中示出)可以与控制平面1330连接(例如,应用编程接口(api)调用)并且更新客户的vcn的配置。更新会导致可用于管理分组的流的配置信息的改变。
[0177]
在示例中,网络接口服务1322存储配置信息1324和与配置信息1324相关联的版本信息1326。配置信息1324可以包括多个部分(例如,安全性策略、覆盖到基底ip地址映射、路由规则)。版本信息1326可以包括整个配置信息1324的当前版本的指示符和/或配置信息1324的每部分的当前版本(例如,安全性策略的当前版本、覆盖到基底ip地址映射的当前版本,以及路由规则的当前版本)的指示符。为了解释清楚,接下来的段落描述使用配置信息1324的每部分的版本指示符。但是,如果一个版本指示符用于整个配置信息1324,那么该过程类似地适用。
[0178]
网络接口服务1322向控制平面1330发送更新请求,请求对配置信息1324的更新。例如,更新请求可以包括填充有版本指示符的向量时钟。控制平面1330确定哪些版本指示符是过时的。如果它们都没有过时,那么不需要对配置信息1324进行更新。否则,如果版本指示符过时,那么配置信息1324的对应部分过时,并且控制平面1330发送具有更新后的版本指示符的替换配置信息部分。例如,如果安全性策略的版本指示符指示其仍然是最新版本,但是覆盖到基底ip地址映射的版本指示符是过时的,那么控制平面1330仅发送更新后的覆盖到基底ip地址映射及其更新后的版本指示符。
[0179]
进而,网络接口服务1322从控制平面1330接收更新。网络接口服务1322跟踪使用与过时的(一个或多个)配置信息部分对应的(一个或多个)流信息部分的(一个或多个)vnic,生成更新后的(一个或多个)流信息部分和对应的版本指示符,并且向托管(一个或多个)vnic的(一个或多个)nvd推送更新后的(一个或多个)流信息部分和(一个或多个)对应的版本指示符。例如,nvd 1310接收更新后的流信息1316和更新后的版本信息1318并将其存储在其高速缓存1314中以供vnic 1312使用。
[0180]
如上所述,可以替代地使用被动策略。在此,网络接口服务1322不是将更新推送到(一个或多个)nvd,而是通知受影响的vnic它们的流信息(或其部分)已过时并且仅在请求时发送更新。例如,在接收到流信息1316(或其部分)已经过时的通知时,vnic 1312可以向网络接口服务1322请求对其的更新。作为响应,网络接口服务1322发送更新后的流信息(或其部分)和对应的版本信息。
[0181]
图14图示了根据某些实施例的使高速缓存的流信息失效并更新其的另一个示例。在这个示例中,失效可以由nvd管理,并且更新可以遵循主动策略(例如,通过在接收对其应用流信息的分组之前请求更新)。可替代地,更新可以遵循被动策略(例如,通过将分组发送到网络接口服务以进行进一步处理并随后接收更新后的流信息)。托管vnic 1412的nvd 1410与托管网络接口服务1422的服务器群1420连接。网络接口服务1422与控制平面1430连接。客户的计算设备(现在在图14中示出)可以与控制平面1430连接并更新客户的vcn的配置。更新会导致可用于管理分组的流的配置信息的改变。
[0182]
在示例中,nvd 1410在高速缓存1414中存储流信息1416和与流信息1416相关联的版本信息1418。流信息1416可以包括多个部分(例如,安全性策略、覆盖到基底ip地址映射、路由规则)。版本信息1418可以包括整个流信息1416的当前版本的指示符和/或流信息1416的每部分的当前版本(例如,安全性策略的当前版本、覆盖到基底ip地址映射的当前版本,以及路由规则的当前版本)的指示符。为了解释清楚起见,接下来的段落描述使用流信息1416的每部分的版本指示符。但是,如果一个版本指示符用于整个流信息1416,那么该过程类似地适用。
[0183]
nvd 1410向控制平面1430发送更新请求,请求对流信息1416的更新。例如,更新请求可以包括填充有版本指示符的向量时钟。控制平面1430确定哪些版本指示符是过时的。如果它们都没有过时,那么不需要对流信息1416进行更新。否则,如果版本指示符过时,那么流信息1416的对应部分过时,并且控制平面1430向nvd 1410发送指示更新可用的通知。这个通知可以指示流信息1416的哪个(哪些)部分是过时的。
[0184]
在被动策略中,nvd 1410不立即更新流信息1416。代替地,vnic 1412接收分组并确定流信息1416应用于其(例如,基于高速缓存命中)。vnic还确定版本信息1418过时(例如,根据来自控制平面1430的通知,流信息1416的(一个或多个)部分过时)。可替代地,在接收到通知时,nvd 1410使高速缓存的流信息1416失效,使得当执行高速缓存查找时,查找导致高速缓存未命中。在两种情况下,vnic 1412将分组发送到网络接口服务1422以便在那里进行进一步处理。这个分组传输表示被动更新请求。网络接口服务1422通过使用具有最新版本信息1426(其可以以与图13类似的方式从控制平面1430更新)的配置信息1424来处理分组。另外,网络接口服务1422向nvd 1410发送更新,其中该更新包括更新后的流信息(例如,整个流信息,而不是其部分)和对应的版本指示符。进而,nvd 1410用更新后的(一个或多个)流信息部分和(一个或多个)对应的版本指示符替换现有的流信息1416(或其(一个或多个)过时的部分)和版本信息1418(或(一个或多个)过时的版本指示符)。
[0185]
例如,在流信息1416中仅覆盖到基底ip映射是过时的。nvd 1410从控制平面1430接收指示相应版本指示符过时的通知。接下来,vnic 1412将分组发送到网络接口服务1422,否则该分组将直接在虚拟网络上发送。作为响应,网络接口服务1422发送更新后的流信息和对应的版本指示符。nvd 1410分别用更新后的覆盖到基底ip地址映射和对应的版本指示符来替换流信息1416中过时的覆盖到基底ip地址映射和版本信息1418中的对应版本指示符。
[0186]
如上所述,可以替代地使用主动策略。在此,nvd 1410可以自动向网络接口服务1422发送更新请求,而不是将分组发送到网络接口服务1422然后接收回更新。这个请求可以指示流信息1416的哪些部分是过时的并且网络接口服务1422可以仅发送更新后的部分。可替代地,不做出这样的指示并且网络接口服务1422可以发送整个流信息。
[0187]
图15-20图示了用于分发配置信息和管理分组流的方法的示例。方法的操作可以由包括nvd和/或网络服务接口的系统执行。用于执行操作的指令中的一些或全部可以被实现为硬件电路系统和/或被存储为系统的非暂态计算机可读介质上的计算机可读指令。在被实现时,指令表示包括电路系统或可由系统的处理器执行的代码的模块。此类指令的使用将系统配置为执行本文描述的特定操作。每个电路系统或代码与(一个或多个)相关处理器相结合表示用于执行(一个或多个)相应操作的手段。虽然以特定次序示出了操作,但是应当理解的是,特定次序不是必需的,并且一个或多个操作可以被省略、跳过、并行执行和/或重新排序。
[0188]
图15图示了根据某些实施例的用于发送导致高速缓存的流信息的分组的方法的示例。在此,该分组是要在虚拟网络上发送的出站分组。在示例中,该方法包括操作1502,其中在nvd上托管的vnic接收分组。分组可以从vnic与其附接的计算实例发送。在操作1504处,vnic确定流信息是否从nvd的存储器可用于处理分组。例如,vnic基于来自分组的报头的信息执行高速缓存查找。如果查找导致高速缓存命中,那么流信息可用。在这种情况下,
操作1510在操作1504之后。否则,操作1520在操作1504之后。在操作1510处,vnic直接在虚拟网络上发送分组。例如,vnic根据流信息处理分组,然后在虚拟网络上发送经处理的分组(例如,带有更新后的报头信息)。在虚拟网络上发送可以包括nvd进一步处理分组以在基底基底网络上传输。在操作1520处,没有流信息可用于(例如,没有被高速缓存)在nvd处本地处理分组。代替地,vnic将分组发送到存储可用于处理分组的配置信息的网络接口服务。在操作1522处,nvd接收流信息。这个流信息可以是网络接口服务(例如,托管于其上的服务vnic)用于在虚拟网络上处理和发送分组的配置信息的子集。此外,可以接收与流信息相关联的版本信息。在操作1524处,nvd将流信息和版本信息(如果适用)存储在存储器中(例如,作为高速缓存条目)。可以重复该流程以在虚拟网络上发送附加分组,其中附加分组是从计算实例接收的。
[0189]
图16图示了根据某些实施例的用于接收导致高速缓存的流信息的分组的方法的示例。在此,分组是在虚拟网络上接收的入站分组。在示例中,该方法包括操作1602,其中托管在nvd上的vnic接收分组。分组可以从虚拟网络上的端点发送,并以vnic与其附接的计算实例为目的地。在操作1604处,vnic确定流信息是否从nvd的存储器可用于处理分组。例如,vnic基于来自分组的报头的信息执行高速缓存查找。如果查找导致高速缓存命中,那么流信息可用。在这种情况下,操作1610在操作1604之后。否则,操作1620在操作1604之后。在操作1610处,vnic直接在计算机实例上发送分组。例如,vnic根据流信息处理分组,然后将经处理的分组(例如,具有更新后的报头信息)经由nvd和计算实例的主机机器发送到计算实例。在操作1620处,没有流信息可用于(例如,未高速缓存)在nvd处本地处理分组。代替地,vnic将分组发送到存储可用于处理分组的配置信息的网络接口服务。在操作1622处,nvd接收由网络接口服务处理的返回的分组以及流信息。这个流信息可以是网络接口服务(例如,托管于其上的服务vnic)用来处理分组的配置信息的子集。此外,可以接收与流信息相关联的版本信息。在操作1624处,nvd将流信息和版本信息(如果适用)存储在存储器中(例如,作为高速缓存条目)。接收到的分组也被直接发送到计算实例,如从操作1624到操作1610的循环所示。可以重复该流程以将附加分组发送到计算实例,其中附加分组是在虚拟网络上接收的。
[0190]
图17图示了根据某些实施例的用于生成和发送流信息的方法的示例。在此,该方法可以由网络接口服务实现。在示例中,该方法包括操作1702,其中网络接口服务接收分组。在示例中,分组是源自计算实例并且要在虚拟网络上发送的出站分组。在另一个示例中,分组是在虚拟网络上接收并且以计算实例为目的地的入站分组。在这两个示例中,网络接口服务都可以经由托管vnic的nvd从vnic接收分组,其中nvd不存储允许vnic处理分组的流信息(高速缓存的)。在操作1704处,网络接口服务(例如,托管在其上的服务vnic)确定用于处理分组的配置信息。这个确定可以基于分组的报头信息。在操作1706处,网络接口服务(例如,服务vnic)基于配置信息发送分组。返回去参考第一示例,服务vnic根据配置信息处理分组,并在虚拟网络上发送经处理的分组。在第二示例中,服务vnic也根据配置信息处理分组,并且代替地将经处理的分组发送到nvd的vnic。在操作1708处,网络接口服务生成流信息。例如,流信息是配置信息的子集,并且允许nvd的vnic在本地处理相同类型或相似的分组。这个流信息可以与最新的配置信息对应并且可以与版本信息相关联。在操作1710处,网络接口服务将流信息发送到nvd。此外,版本信息还可以被发送到nvd。
[0191]
图18图示了根据某些实施例的用于使高速缓存的流信息失效并更新其的方法的示例。在此,该方法可以由托管vnic的nvd实现。在示例中,该方法包括操作1802,其中vnic接收分组。在示例中,分组是源自计算实例并且要在虚拟网络上发送的出站分组。在另一个示例中,分组是在虚拟网络上接收并且以计算实例为目的地的入站分组。在操作1804处,vnic确定流信息是否过时,其中流信息可从nvd的存储器获得以处理分组。例如,vnic确定流信息的版本信息是否过时(或者流信息的一部分的版本指示符是否过时)。这个确定可以包括向控制平面发送向量时钟并接收关于更新后的版本信息的通知。虽然操作1804被示为在操作1802之后,但是操作1804可以独立于操作1804被执行,其中在接收分组之前使高速缓存的流信息失效。如果流信息未过时,那么操作1810在操作1804之后。否则,操作1820在操作1804之后。在操作1810处,vnic在出站流量的情况下在虚拟网络上直接发送分组,或者在入站流量的情况下将分组直接发送到计算实例。在操作1820处,没有有效的流信息可用于在nvd本地处理分组。代替地,vnic将分组发送到存储可用于处理分组的配置信息的网络接口服务。在操作1822处,nvd接收流信息(以及在入站流量的情况下的分组)。这个流信息可以是网络接口服务(例如,托管于其上的服务vnic)用来在覆盖基底上处理和发送分组或将分组发送回vnic的配置信息的子集。此外,可以接收与流信息相关联的版本信息。在操作1824处,nvd将流信息和版本信息(如果适用)存储在存储器中(例如,作为高速缓存条目)。可以重复该流以发送附加分组,其中附加分组是从计算实例或从虚拟网络接收的。
[0192]
图19图示了根据某些实施例的用于使高速缓存的流信息失效并更新其的方法的另一个示例。在此,该方法可以由网络接口服务实现。在示例中,该方法包括操作1902,其中网络接口服务确定配置信息过时。例如,网络接口服务确定配置信息的版本信息过时(或者流信息的一部分的版本指示符过时)。这个确定可以包括向控制平面发送向量时钟并接收关于更新后的版本信息的通知和/或接收更新后的配置信息(或其更新后的部分)。在操作1904处,网络接口服务基于来自控制平面的更新来确定需要被更新的vnic。例如,网络接口服务针对nvd上的每个vnic跟踪对应的配置信息以及与其相关联的版本信息。如果更新影响用于vnic的配置信息,那么网络接口服务确定要更新这个vnic。在操作1906处,网络接口服务将更新后的流信息以及可选地版本信息发送到受影响的vnic。可以将更新后的流信息生成为更新后的配置信息的子集。可以推送整个更新后的流信息,或者可替代地,可以仅推送其(一个或多个)更新后的部分以及(一个或多个)最新版本指示符。
[0193]
图20图示了根据某些实施例的用于使高速缓存的流信息失效并更新其的方法的另一个示例。在此,该方法可以由网络接口服务实现,并遵循被动策略来完成更新。在示例中,该方法包括操作2002,其中网络接口服务确定配置信息过时,类似于操作1902。在操作2004处,网络接口服务确定需要更新vnic,类似于操作1904。在操作2006处,网络接口服务向vnic指示其流信息过时(或其(一个或多个)部分过时)。例如,可以发送通知,从而导致对应高速缓存的条目失效。在操作2008处,网络接口服务从vnic接收分组。该分组可以是入站分组或出站分组。在操作2010处,网络接口服务使用更新后的配置信息来处理和发送分组。在出站流量的情况下,分组在虚拟网络上发送(例如,经由服务vnic)。在入站流量的情况下,分组将被发送回vnic。在操作2012处,网络接口服务将更新后的流信息以及可选地版本信息发送到vnic。可以将更新后的流信息生成为更新后的配置信息的子集。可以发送整个更新后的流信息,或者可替代地,可以仅发送其(一个或多个)更新后的部分以及(一个或多
个)最新版本指示符。
[0194]
示例基础设施即服务体系架构
[0195]
如以上所指出的,基础设施即服务(iaas)是一种特定类型的云计算。iaas可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在iaas模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,iaas提供商还可以提供各种服务来伴随这些基础设施组件(例如,计费、监视、记录日志、安全性、负载平衡和聚类等)。因此,由于这些服务可能是策略驱动的,因此iaas用户可以能够实现策略来驱动负载平衡,以维持应用的可用性和性能。
[0196]
在一些情况下,iaas客户可以通过诸如互联网之类的广域网(wan)访问资源和服务,并且可以使用云提供商的服务来安装应用栈的剩余元素。例如,用户可以登录到iaas平台以创建虚拟机(vm)、在每个vm上安装操作系统(os)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶,甚至将企业软件安装到那个vm中。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用问题、监视性能、管理灾难恢复等。
[0197]
在大多数情况下,云计算模型将需要云提供商的参与。云提供商可以但不一定是专门提供(例如,供应、出租、销售)iaas的第三方服务。实体也可能选择部署私有云,从而成为其自己的基础设施服务提供商。
[0198]
在一些示例中,iaas部署是将新应用或应用的新版本放置到准备好的应用服务器等上的处理。它还可以包括准备服务器(例如,安装库、守护进程等)的处理。这通常由云提供商管理,位于管理程序层之下(例如,服务器、存储装置、网络硬件和虚拟化)。因此,客户可以负责处理(os)、中间件和/或应用部署(例如,在(例如,可以按需启动的)自助服务虚拟机等上)。
[0199]
在一些示例中,iaas供给可以指获取计算机或虚拟主机以供使用,甚至在它们上安装所需的库或服务。大多数情况下,部署不包括供给,并且供给可能需要被首先执行。
[0200]
在一些情况下,iaas供给存在两个不同的挑战。首先,在任何东西运行之前供给初始基础设施集存在最初的挑战。其次,一旦所有东西已被供给,就存在演进现有基础设施(例如,添加新服务、更改服务、移除服务等)的挑战。在一些情况下,可以通过启用以声明方式定义基础设施的配置来解决这两个挑战。换句话说,基础设施(例如,需要哪些组件以及它们如何交互)可以由一个或多个配置文件来定义。因此,基础设施的总体拓扑(例如,哪些资源依赖于哪些资源,以及它们如何协同工作)可以以声明的方式描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。
[0201]
在一些示例中,基础设施可以具有许多互连的元件。例如,可能存在一个或多个虚拟私有云(vpc)(例如,可配置和/或共享计算资源的潜在按需池),也称为核心网络。在一些示例中,还可以供给一个或多个安全性组规则以定义如何设置网络的安全性以及一个或多个虚拟机(vm)。也可以供给其它基础设施元素,诸如负载平衡器、数据库等。随着期望和/或添加越来越多的基础设施元素,基础设施可以逐步演进。
[0202]
在一些情况下,可以采用连续部署技术来使得能够跨各种虚拟计算环境部署基础设施代码。此外,所描述的技术可以使得能够在这些环境内进行基础设施管理。在一些示例中,服务团队可以编写期望部署到一个或多个但通常是许多不同的生产环境(例如,跨各种
不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,必须首先设置将在其上部署代码的基础设施。在一些情况下,供给可以手动完成,可以利用供给工具供给资源,和/或一旦供给基础设施就可以利用部署工具部署代码。
[0203]
图21是图示根据至少一个实施例的iaas体系架构的示例模式的框图2100。服务运营商2102可以通信地耦合到可以包括虚拟云网络(vcn)2106和安全主机子网2108的安全主机租赁2104。在一些示例中,服务运营商2102可以使用一个或多个客户端计算设备,其可以是便携式手持设备(例如,蜂窝电话、计算平板、个人数字助理(pda))或可穿戴设备(例如,google头戴式显示器)、运行软件(诸如microsoft windows)和/或各种移动操作系统(诸如ios、windows phone、android、blackberry 8、palm os等),并且支持互联网、电子邮件、短消息服务(sms)、或其它通信协议。替代地,客户端计算设备可以是通用个人计算机,包括例如运行各种版本的microsoftapple和/或linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商业上可获得的或类unix操作系统,包括但不限于各种gnu/linux操作系统(诸如例如google chrome os)中的任何一种的工作站计算机。替代地或附加地,客户端计算设备可以是任何其它电子设备,诸如瘦客户端计算机、支持互联网的游戏系统(例如,具有或不具有手势输入设备的microsoft xbox游戏控制台),和/或能够通过可以访问vcn 2106和/或互联网的网络进行通信的个人消息传递设备。
[0204]
vcn 2106可以包括本地对等网关(lpg)2110,其可以经由包含在ssh vcn 2112中的lpg 2110通信地耦合到安全壳(ssh)vcn 2112。ssh vcn 2112可以包括ssh子网2114,并且ssh vcn 2112可以经由包含在控制平面vcn 2116中的lpg 2110通信地耦合到控制平面vcn 2116。此外,ssh vcn 2112可以经由lpg 2110通信地耦合到数据平面vcn 2118。控制平面vcn 2116和数据平面vcn 2118可以包含在可以由iaas提供商拥有和/或操作的服务租赁2119中。
[0205]
控制平面vcn 2116可以包括充当外围网络(例如,公司内部网和外部网络之间的公司网络的部分)的控制平面非军事区(dmz)层2120。基于dmz的服务器可以承担有限责任并有助于控制漏洞。此外,dmz层2120可以包括一个或多个负载平衡器(lb)子网2122、可以包括(一个或多个)应用子网2126的控制平面应用层2124、可以包括(一个或多个)数据库(db)子网2130(例如,(一个或多个)前端db子网和/或(一个或多个)后端db子网)的控制平面数据层2128。控制平面dmz层2120中包含的(一个或多个)lb子网2122可以通信地耦合到控制平面应用层2124中包含的(一个或多个)应用子网2126以及可以包含在控制平面vcn 2116中的互联网网关2134,并且(一个或多个)应用子网2126可以通信地耦合到控制平面数据层2128中包含的(一个或多个)db子网2130以及服务网关2136和网络地址翻译(nat)网关2138。控制平面vcn 2116可以包括服务网关2136和nat网关2138。
[0206]
控制平面vcn 2116可以包括数据平面镜像应用层2140,其可以包括(一个或多个)应用子网2126。数据平面镜像应用层2140中包含的(一个或多个)应用子网2126可以包括可以执行计算实例2144的虚拟网络接口控制器(vnic)2142。计算实例2144可以将数据平面镜像应用层2140的应用子网2126通信地耦合到可以包含在数据平面应用层2146中的(一个或
多个)应用子网2126。
[0207]
数据平面vcn 2118可以包括数据平面应用层2146、数据平面dmz层2148和数据平面数据层2150。数据平面dmz层2148可以包括(一个或多个)lb子网2122,其可以通信地耦合到数据平面应用层2146的(一个或多个)应用子网2126和数据平面vcn 2118的互联网网关2134。(一个或多个)应用子网2126可以通信地耦合到数据平面vcn 2118的服务网关2136和数据平面vcn 2118的nat网关2138。数据平面数据层2150还可以包括可以通信地耦合到数据平面应用层2146的(一个或多个)应用子网2126的(一个或多个)db子网2130。
[0208]
控制平面vcn 2116和数据平面vcn 2118的互联网网关2134可以通信地耦合到元数据管理服务2152,元数据管理服务2152可以通信地耦合到公共互联网2154。公共互联网2154可以通信地耦合到控制平面vcn 2116和数据平面vcn 2118的nat网关2138。控制平面vcn 2116和数据平面vcn 2118的服务网关2136可以通信地耦合到云服务2156。
[0209]
在一些示例中,控制平面vcn 2116或数据平面vcn 2118的服务网关2136可以在不经过公共互联网2154的情况下对云服务2156进行应用编程接口(api)调用。从服务网关2136对云服务2156的api调用可以是单向的:服务网关2136可以对云服务2156进行api调用,并且云服务2156可以将所请求的数据发送到服务网关2136。但是,云服务2156可以不发起对服务网关2136的api调用。
[0210]
在一些示例中,安全主机租赁2104可以直接连接到服务租赁2119,否则服务租赁2119可以被隔离。安全主机子网2108可以通过lpg 2110与ssh子网2114通信,lpg 2110可以启用在原本隔离的系统上的双向通信。将安全主机子网2108连接到ssh子网2114可以给予安全主机子网2108对服务租赁2119内的其它实体的访问。
[0211]
控制平面vcn 2116可以允许服务租赁2119的用户设置或以其它方式供应期望的资源。在控制平面vcn 2116中提供的期望资源可以在数据平面vcn 2118中部署或以其它方式使用。在一些示例中,控制平面vcn 2116可以与数据平面vcn 2118隔离,并且控制平面vcn 2116的数据平面镜像应用层2140可以经由vnic 2142与数据平面vcn 2118的数据平面应用层2146通信,vnic 2142可以包含在数据平面镜像应用层2140和数据平面应用层2146中。
[0212]
在一些示例中,系统的用户或客户可以通过公共互联网2154发出请求,例如创建、读取、更新或删除(crud)操作,公共互联网2154可以将请求传送到元数据管理服务2152。元数据管理服务2152可以通过互联网网关2134将该请求传送到控制平面vcn 2116。该请求可以由控制平面dmz层2120中包含的(一个或多个)lb子网2122接收。(一个或多个)lb子网2122可以确定该请求有效,并且响应于这个确定,(一个或多个)lb子网2122可以将该请求发送到控制平面应用层2124中包含的(一个或多个)应用子网2126。如果该请求有效并且要求对公共互联网2154的调用,那么对公共互联网2154的调用可以被传输到可以向公共互联网2154进行调用的nat网关2138。请求可能期望存储的存储器可以存储在(一个或多个)db子网2130中。
[0213]
在一些示例中,数据平面镜像应用层2140可以促进控制平面vcn 2116和数据平面vcn 2118之间的直接通信。例如,可能期望将对配置的改变、更新或其它合适的修改应用于数据平面vcn 2118中包含的资源。经由vnic 2142,控制平面vcn 2116可以直接与数据平面vcn 2118中包含的资源通信,并且由此可以对数据平面vcn 2118中包含的资源执行对配置
的改变、更新或其它合适的修改。
[0214]
在一些实施例中,控制平面vcn 2116和数据平面vcn 2118可以包含在服务租赁2119中。在这种情况下,系统的用户或客户可能不拥有或操作控制平面vcn 2116或数据平面vcn 2118。代替地,iaas提供商可以拥有或操作控制平面vcn 2116和数据平面vcn 2118,这两者都可以包含在服务租赁2119中。这个实施例可以启用网络的隔离,这可以防止用户或客户与其他用户或其他客户的资源交互。而且,这个实施例可以允许系统的用户或客户私密地存储数据库,而不需要依赖公共互联网2154来进行存储,公共互联网2154可能不具有期望的安全性级别。
[0215]
在其它实施例中,控制平面vcn 2116中包含的(一个或多个)lb子网2122可以被配置为从服务网关2136接收信号。在这个实施例中,控制平面vcn 2116和数据平面vcn 2118可以被配置为由iaas提供商的客户调用,而不需要调用公共互联网2154。iaas提供商的客户可能期望这个实施例,因为客户使用的(一个或多个)数据库可以由iaas提供商控制并且可以存储在服务租赁2119上,该服务租赁2119可以与公共互联网2154隔离。
[0216]
图22是图示根据至少一个实施例的iaas体系架构的另一个示例模式的框图2200。服务运营商2202(例如,图21的服务运营商2102)可以通信地耦合到安全主机租赁2204(例如,图21的安全主机租赁2104),该安全主机租赁2204可以包括虚拟云网络(vcn)2206(例如,图21的vcn 2106)和安全主机子网2208(例如,图21的安全主机子网2108)。vcn 2206可以包括本地对等网关(lpg)2210(例如,图21的lpg 2110),该lpg 2210可以经由包含在安全外壳(ssh)vcn 2212(例如,图21的ssh vcn 2112)中的lpg 2210通信地耦合到ssh vcn 2212。ssh vcn 2212可以包括ssh子网2214(例如,图21的ssh子网2114),并且ssh vcn 2212可以经由包含在控制平面vcn 2216中的lpg 2210通信地耦合到控制平面vcn 2216(例如,图21的控制平面vcn 2116)。控制平面vcn 2216可以包含在服务租赁2219(例如,图21的服务租赁2119)中,并且数据平面vcn 2218(例如,图21的数据平面vcn 2118)可以包含在可以由系统的用户或客户拥有或操作的客户租赁2221中。
[0217]
控制平面vcn 2216可以包括能包括(一个或多个)lb子网2222(例如,图21的(一个或多个)lb子网2122)的控制平面dmz层2220(例如,图21的控制平面dmz层2120)、可以包括(一个或多个)应用子网2226(例如,图21的(一个或多个)应用子网2126)的控制平面应用层2224(例如,图21的控制平面应用层2124)、可以包括(一个或多个)数据库(db)子网2230(例如,类似于图21的(一个或多个)db子网2130)的控制平面数据层2228(例如,图21的控制平面数据层2128)。包含在控制平面dmz层2220中的(一个或多个)lb子网2222可以通信地耦合到包含在控制平面应用层2224中的(一个或多个)应用子网2226和可以包含在控制平面vcn 2216中的互联网网关2234(例如,图21的互联网网关2134),并且(一个或多个)应用子网2226可以通信地耦合到包含在控制平面数据层2228中的(一个或多个)db子网2230以及服务网关2236(例如,图21的服务网关)和网络地址转换(nat)网关2238(例如,图21的nat网关2038)。控制平面vcn 2216可以包括服务网关2236和nat网关2238。
[0218]
控制平面vcn 2216可以包括数据平面镜像应用层2240(例如,图21的数据平面镜像应用层2140),其可以包括(一个或多个)应用子网2226。包含在数据平面镜像应用层2240中的(一个或多个)应用子网2226可以包括虚拟网络接口控制器(vnic)2242(例如,2142的vnic),其可以执行计算实例2244(例如,类似于图21的计算实例2144)。计算实例2244可以
2216或区域1中的部署21可能不与区域2中的部署21通信地耦合或以其它方式通信。
[0224]
图23是图示根据至少一个实施例的iaas体系架构的另一个示例模式的框图2300。服务运营商2302(例如,图21的服务运营商2102)可以通信地耦合到安全主机租赁2304(例如,图21的安全主机租赁2104),该安全主机租赁2304可以包括虚拟云网络(vcn)2306(例如,图21的vcn 2106)和安全主机子网2308(例如,图21的安全主机子网2108)。vcn 2306可以包括lpg 2310(例如,图21的lpg 2110),其可以经由包含在ssh vcn 2312中的lpg 2310通信地耦合到ssh vcn 2312(例如,图21的ssh vcn 2112)。ssh vcn 2312可以包括ssh子网2314(例如,图21的ssh子网2114),并且ssh vcn 2312可以经由包含在控制平面vcn 2316中的lpg 2310通信地耦合到控制平面vcn 2316(例如,图21的控制平面vcn 2116)并且经由包含在数据平面vcn 2318中的lpg 2310耦合到数据平面vcn 2318(例如,图21的数据平面2118)。控制平面vcn 2316和数据平面vcn 2318可以包含在服务租赁2319(例如,图21的服务租赁2119)中。
[0225]
控制平面vcn 2316可以包括能包括(一个或多个)负载平衡器(lb)子网2322(例如,图21的(一个或多个)lb子网2122)的控制平面dmz层2320(例如,图21的控制平面dmz层2120)、可以包括(一个或多个)应用子网2326(例如,类似于图21的(一个或多个)应用子网2126)的控制平面应用层2324(例如,图21的控制平面应用层2124)、可以包括(一个或多个)db子网2330的控制平面数据层2328(例如,图21的控制平面数据层2128)。包含在控制平面dmz层2320中的(一个或多个)lb子网2322可以通信地耦合到包含在控制平面应用层2324中的(一个或多个)应用子网2326和可以包含在控制平面vcn 2316中的互联网网关2334(例如,图21的互联网网关2134),并且(一个或多个)应用子网2326可以通信地耦合到包含在控制平面数据层2328中的(一个或多个)db子网2330以及服务网关2336(例如,图21的服务网关)和网络地址转换(nat)网关2338(例如,图21的nat网关2138)。控制平面vcn 2316可以包括服务网关2336和nat网关2338。
[0226]
数据平面vcn 2318可以包括数据平面应用层2346(例如,图21的数据平面应用层2146)、数据平面dmz层2348(例如,图21的数据平面dmz层2148),以及数据平面数据层2350(例如,图21的数据平面数据层2150)。数据平面dmz层2348可以包括可以通信地耦合到数据平面应用层2346的(一个或多个)可信应用子网2360和(一个或多个)不可信应用子网2362以及包含在数据平面vcn 2318中的互联网网关2334的(一个或多个)lb子网2322。(一个或多个)可信应用子网2360可以通信地耦合到包含在数据平面vcn 2318中的服务网关2336、包含在数据平面vcn 2318中的nat网关2338以及包含在数据平面数据层2350中的(一个或多个)db子网2330。(一个或多个)不可信应用子网2362可以通信地耦合到包含在数据平面vcn 2318中的服务网关2336和包含在数据平面数据层2350中的(一个或多个)db子网2330。数据平面数据层2350可以包括可以通信地耦合到包含在数据平面vcn 2318中的服务网关2336的(一个或多个)db子网2330。
[0227]
(一个或多个)不可信应用子网2362可以包括可以通信地耦合到租户虚拟机(vm)2366(1)-(n)的一个或多个主vnic 2364(1)-(n)。每个租户vm 2366(1)-(n)可以通信地耦合到可以包含在相应容器出口vcn 2368(1)-(n)中的相应应用子网2367(1)-(n),相应容器出口vcn 2368(1)-(n)可以包含在相应客户租赁2370(1)-(n)中。相应的辅助vnic 2372(1)-(n)可以促进数据平面vcn 2318中包含的(一个或多个)不可信应用子网2362与容器出
口vcn 2368(1)-(n)中包含的应用子网之间的通信。每个容器出口vcn 2368(1)-(n)可以包括nat网关2338,该nat网关2338可以通信地耦合到公共互联网2354(例如,图21的公共互联网2154)。
[0228]
包含在控制平面vcn 2316中并且包含在数据平面vcn 2318中的互联网网关2334可以通信地耦合到元数据管理服务2352(例如,图21的元数据管理系统2152),该元数据管理服务2352可以通信地耦合到公共互联网2354。公共互联网2354可以通信地耦合到包含在控制平面vcn 2316中并且包含在数据平面vcn 2318中的nat网关2338。包含在控制平面vcn 2316中和包含在数据平面vcn 2318中的服务网关2336可以通信地耦合到云服务2356。
[0229]
在一些实施例中,数据平面vcn 2318可以与客户租赁2370集成。在一些情况下,诸如在执行代码时可能期望支持的情况下,这种集成对于iaas提供商的客户可能是有用的或期望的。客户可能提供可能具有破坏性、可能与其它客户资源通信或可能以其它方式导致非期望效果的代码来运行。作为对此的响应,iaas提供商可以确定是否运行由客户给与iaas提供商的代码。
[0230]
在一些示例中,iaas提供商的客户可以向iaas提供商授予临时网络访问,并请求附加到数据平面层应用2146的功能。运行该功能的代码可以在vm 2366(1)-(n)中执行,并且该代码可以不被配置为在数据平面vcn 2318上的其它任何地方运行。每个vm 2366(1)-(n)可以连接到一个客户租赁2370。包含在vm 2366(1)-(n)中的相应容器2371(1)-(n)可以被配置为运行代码。在这种情况下,可以存在双重隔离(例如,容器2371(1)-(n)运行代码,其中容器2371(1)-(n)可能至少包含在(一个或多个)不可信应用子网2362中包含的vm 2366(1)-(n)中),这可以帮助防止不正确的或以其它方式非期望的代码损坏iaas提供商的网络或损坏不同客户的网络。容器2371(1)-(n)可以通信地耦合到客户租赁2370并且可以被配置为传输或接收来自客户租赁2370的数据。容器2371(1)-(n)可以不被配置为从数据平面vcn 2318中的任何其它实体传输或接收数据。在运行代码完成后,iaas提供商可以终止或以其它方式处置容器2371(1)-(n)。
[0231]
在一些实施例中,(一个或多个)可信应用子网2360可以运行可以由iaas提供商拥有或操作的代码。在这个实施例中,(一个或多个)可信应用子网2360可以通信地耦合到(一个或多个)db子网2330并且被配置为在(一个或多个)db子网2330中执行crud操作。(一个或多个)不可信应用子网2362可以通信地耦合到(一个或多个)db子网2330,但是在这个实施例中,(一个或多个)不可信应用子网可以被配置为在(一个或多个)db子网2330中执行读取操作。可以包含在每个客户的vm 2366(1)-(n)中并且可以运行来自客户的代码的容器2371(1)-(n)可以不与(一个或多个)db子网2330通信地耦合。
[0232]
在其它实施例中,控制平面vcn 2316和数据平面vcn 2318可以不直接通信地耦合。在这个实施例中,控制平面vcn 2316和数据平面vcn 2318之间可能没有直接通信。但是,通信可以通过至少一种方法间接发生。lpg 2310可以由iaas提供商建立,其可以促进控制平面vcn 2316和数据平面vcn 2318之间的通信。在另一个示例中,控制平面vcn 2316或数据平面vcn 2318可以经由服务网关2336调用云服务2356。例如,从控制平面vcn 2316对云服务2356的调用可以包括对可以与数据平面vcn 2318通信的服务的请求。
[0233]
图24是图示根据至少一个实施例的iaas体系架构的另一个示例模式的框图2400。服务运营商2402(例如,图21的服务运营商2102)可以通信地耦合到安全主机租赁2404(例
如,图21的安全主机租赁2104),该安全主机租赁2404可以包括虚拟云网络(vcn)2406(例如,图21的vcn 2106)和安全主机子网2408(例如,图21的安全主机子网2108)。vcn 2406可以包括lpg 2410(例如,图21的lpg 2110),该lpg 2410可以经由包含在ssh vcn 2412(例如,图21的ssh vcn 2112)中的lpg 2410通信地耦合到ssh vcn 2412。ssh vcn 2412可以包括ssh子网2414(例如,图21的ssh子网2114),并且ssh vcn 2412可以经由包含在控制平面vcn 2416中的lpg 2410通信地耦合到控制平面vcn 2416(例如,图21的控制平面vcn 2116)并且经由包含在数据平面vcn 2418中的lpg 2410耦合到数据平面vcn 2418(例如,图21的数据平面2118)。控制平面vcn 2416和数据平面vcn 2418可以包含在服务租赁2419(例如,图21的服务租赁2119)中。
[0234]
控制平面vcn 2416可以包括能包括(一个或多个)lb子网2422(例如,图21的(一个或多个)lb子网2122)的控制平面dmz层2420(例如,图21的控制平面dmz层2120)、可以包括(一个或多个)应用子网2426(例如,图21的(一个或多个)应用子网2126)的控制平面应用层2424(例如,图21的控制平面应用层2124)、可以包括(一个或多个)db子网2430(例如,图21的(一个或多个)db子网2130)的控制平面数据层2428(例如,图21的控制平面数据层2128)。包含在控制平面dmz层2420中的(一个或多个)lb子网2422可以通信地耦合到包含在控制平面应用层2424中的(一个或多个)应用子网2426和可以包含在控制平面vcn 2416中的互联网网关2434(例如,图21的互联网网关2134),并且(一个或多个)应用子网2426可以通信地耦合到包含在控制平面数据层2428中的(一个或多个)db子网2430以及服务网关2436(例如,图21的服务网关)和网络地址转换(nat)网关2438(例如,图21的nat网关2138)。控制平面vcn 2416可以包括服务网关2436和nat网关2438。
[0235]
数据平面vcn 2418可以包括数据平面应用层2446(例如,图21的数据平面应用层2146)、数据平面dmz层2448(例如,图21的数据平面dmz层2148)),以及数据平面数据层2450(例如,图21的数据平面数据层2150)。数据平面dmz层2448可以包括的(一个或多个)lb子网2422,lb子网2422可以通信地耦合到数据平面应用层2446的(一个或多个)可信应用子网2460(例如,图23的(一个或多个)可信应用子网2360)和(一个或多个)不可信应用子网2462(例如,图23的(一个或多个)不可信应用子网2362)以及包含在数据平面vcn 2418中的互联网网关2434。(一个或多个)可信应用子网2460可以通信地耦合到包含在数据平面vcn 2418中的服务网关2436、包含在数据平面vcn 2418中的nat网关2438以及包含在数据平面数据层2450中的(一个或多个)db子网2430。(一个或多个)不可信应用子网2462可以通信地耦合到包含在数据平面vcn 2418中的服务网关2436和包含在数据平面数据层2450中的(一个或多个)db子网2430。数据平面数据层2450可以包括可以通信地耦合到包含在数据平面vcn 2418中的服务网关2436的(一个或多个)db子网2430。
[0236]
(一个或多个)不可信应用子网2462可以包括可以通信地耦合到驻留在(一个或多个)不可信应用子网2462内的租户虚拟机(vm)2466(1)-(n)的主vnic 2464(1)-(n)。每个租户vm 2466(1)-(n)可以在相应的容器2467(1)-(n)中运行代码,并且可通信地耦合到可以包含在容器出口vcn 2468中包含的数据平面应用层2446中的应用子网2426。相应的辅助vnic 2472(1)-(n)可以促进包含在数据平面vcn 2418中的(一个或多个)不可信应用子网2462和包含在容器出口vcn 2468中的应用子网之间的通信。容器出口vcn可以包括可以通信地耦合到公共互联网2454(例如,图21的公共互联网2154)的nat网关2438。
[0237]
包含在控制平面vcn 2416中和包含在数据平面vcn 2418中的互联网网关2434可以通信地耦合到元数据管理服务2452(例如,图21的元数据管理系统2152),该元数据管理服务2452可以通信地耦合到公共互联网2454。公共互联网2454可以通信地耦合到包含在控制平面vcn 2416中并且包含在数据平面vcn 2418中的nat网关2438。包含在控制平面vcn 2416中并且包含在数据平面vcn 2418中的服务网关2436可以通信地耦合到云服务2456。
[0238]
在一些示例中,图24的框图2400的体系架构所示的模式可以被认为是图23的框图2300的体系架构所示的模式的例外,并且如果iaas提供商不能直接与客户通信(例如,断开连接的区域),那么这种模式可能是iaas提供商的客户所期望的。客户可以实时访问每个客户的vm 2466(1)-(n)中包含的相应容器2467(1)-(n)。容器2467(1)-(n)可以被配置为对包含在数据平面应用层2446的(一个或多个)应用子网2426中的相应辅助vnic 2472(1)-(n)进行调用,该数据平面应用层2446可以包含在容器出口vcn 2468中。辅助vnic 2472(1)-(n)可以将调用传输到nat网关2438,nat网关2438可以将调用传输到公共互联网2454。在这个示例中,可以由客户实时访问的容器2467(1)-(n)可以与控制平面vcn 2416隔离,并且可以与数据平面vcn 2418中包含的其它实体隔离。容器2467(1)-(n)也可以与来自其它客户的资源隔离。
[0239]
在其它示例中,客户可以使用容器2467(1)-(n)来调用云服务2456。在这个示例中,客户可以运行容器2467(1)-(n)中从云服务2456请求服务的代码。容器2467(1)-(n)可以将该请求传输到辅助vnic 2472(1)-(n),辅助vnic 2472(1)-(n)可以将请求传输到nat网关,该nat网关可以将请求传输到公共互联网2454。公共互联网2454可以经由互联网网关2434将请求传输到包含在控制平面vcn 2416中的(一个或多个)lb子网2422。响应于确定请求有效,(一个或多个)lb子网可以将请求传输到(一个或多个)应用子网2426,该(一个或多个)应用子网2426可以经由服务网关2436将请求传输到云服务2456。
[0240]
应当认识到的是,各图中描绘的iaas体系架构2100、2200、2300、2400可以具有除所描绘的那些之外的其它组件。另外,各图中所示的实施例仅仅是可以结合本公开的实施例的云基础设施系统的一些示例。在一些其它实施例中,iaas系统可以具有比各图中所示更多或更少的组件、可以组合两个或更多个组件,或者可以具有不同的配置或组件布置。
[0241]
在某些实施例中,本文描述的iaas系统可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式交付给客户的应用套件、中间件和数据库服务产品。此类iaas系统的示例是本受让人提供的oracle云基础设施(oci)。
[0242]
图25图示了其中可以实现各种实施例的示例计算机系统2500。系统2500可以用于实现上述任何计算机系统。如图所示,计算机系统2500包括经由总线子系统2502与多个外围子系统通信的处理单元2504。这些外围子系统可以包括处理加速单元2506、i/o子系统2508、存储子系统2518和通信子系统2524。存储子系统2518包括有形计算机可读存储介质2522和系统存储器2510。
[0243]
总线子系统2502提供用于让计算机系统2500的各种部件和子系统按意图彼此通信的机制。虽然总线子系统2502被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统2502可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(isa)总线、微通道体系架构(mca)总线、增强
型isa(eisa)总线、视频电子标准协会(vesa)局部总线和外围部件互连(pci)总线,其可以被实现为按ieee p1386.1标准制造的mezzanine总线。
[0244]
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元2504控制计算机系统2500的操作。一个或多个处理器可以被包括在处理单元2504中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元2504可以被实现为一个或多个独立的处理单元2532和/或2534,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元2504也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
[0245]
在各种实施例中,处理单元2504可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器2504中和/或存储子系统2518中。通过适当的编程,(一个或多个)处理器2504可以提供上述各种功能。计算机系统2500可以附加地包括处理加速单元2506,其可以包括数字信号处理器(dsp)、专用处理器,等等。
[0246]
i/o子系统2508可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势识别设备,诸如的microsoft运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如的microsoft360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为到输入设备(例如,google)中的输入的google眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,导航器)交互的语音识别感测设备。
[0247]
用户接口输入设备也可以包括但不限于三维(3d)鼠标、操纵杆或指向棒、游戏面板和绘图板,以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3d扫描仪、3d打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括,例如,诸如midi键盘、数字乐器等的音频输入设备。
[0248]
用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器,等等。显示子系统可以是阴极射线管(crt)、诸如使用液晶显示器(lcd)或等离子显示器的平板设备、投影设备、触摸屏,等等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统2500向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括,但不限于,可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备,以及调制解调器。
[0249]
计算机系统2500可以包括包含软件元件、被示为当前位于系统存储器2510中的存储子系统2518。系统存储器2510可以存储可加载并且可在处理单元2504上执行的程序指
令,以及在这些程序的执行期间所产生的数据。
[0250]
取决于计算机系统2500的配置和类型,系统存储器2510可以是易失性的(诸如随机存取存储器(ram))和/或非易失性的(诸如只读存储器(rom)、闪存存储器,等等)。ram通常包含可被处理单元2504立即访问和/或目前正被处理单元2504操作和执行的数据和/或程序模块。在一些实现中,系统存储器2510可以包括多种不同类型的存储器,例如静态随机存取存储器(sram)或动态随机存取存储器(dram)。在一些实现中,诸如包含有助于在启动期间在计算机系统2500的元件之间传送信息的基本例程的基本输入/输出系统(bios),通常可以被存储在rom中。作为示例,但不是限制,系统存储器2510也示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理系统(rdbms)等的应用程序2512,程序数据2514,以及操作系统2516。作为示例,操作系统2516可以包括各种版本的microsoftapple和/或linux操作系统、各种可商业获得的或类unix操作系统(包括但不限于各种gnu/linux操作系统、google操作系统等)和/或诸如ios、phone、os、25os和os操作系统的移动操作系统。
[0251]
存储子系统2518也可以提供用于存储提供一些实施例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统2518中。这些软件模块或指令可以被处理单元2504执行。存储子系统2518也可以提供用于存储根据本公开被使用的数据的储存库。
[0252]
存储子系统2500也可以包括可被进一步连接到计算机可读存储介质2522的计算机可读存储介质读取器2520。与系统存储器2510一起并且,可选地,与其相结合,计算机可读存储介质2522可以全面地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移除存储设备加存储介质。
[0253]
包含代码或代码的部分的计算机可读存储介质2522也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。这可以包括有形的计算机可读存储介质,诸如ram、rom、电可擦除可编程rom(eeprom)、闪存存储器或其它存储器技术、cd-rom、数字多功能盘(dvd)或其它光学储存器、磁带盒、磁带、磁盘储存器或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以被用来发送期望信息并且可以被计算系统2500访问的任何其它介质。
[0254]
举例来说,计算机可读存储介质2522可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如cd rom、dvd和blu-盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质2522可以包括,但不限于,驱动器、闪存卡、通用串行总线(usb)闪存驱动器、安全数字(sd)卡、dvd盘、数字音频带,等等。计算机可读存储介质2522也可以包括基于非易失性存储器的固态驱动器(ssd)(诸如基于闪存存储器的ssd、企业闪存驱动器、固态rom等)、基于易失性存储器的ssd(诸如固态ram、动态ram、静态ram)、基于dram的ssd,磁阻ram(mram)ssd,以及使用基于dram和闪存存储器的ssd的组合的混合
ssd。盘驱动器及其关联的计算机可读介质可以为计算机系统2500提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
[0255]
通信子系统2524提供到其它计算机系统和网络的接口。通信子系统2524用作用于从其它系统接收数据和从计算机系统2500向其它系统发送数据的接口。例如,通信子系统2524可以使计算机系统2500能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统2524可以包括用于访问无线语音和/或数据网络的射频(rf)收发器部件(例如,使用蜂窝电话技术,诸如3g、4g或edge(用于全球演进的增强型数据速率)的先进数据网络技术,wifi(ieee 802.11系列标准),或其它移动通信技术,或其任意组合)、全球定位系统(gps)接收器部件和/或其它部件。在一些实施例中,作为无线接口的附加或者替代,通信子系统2324可以提供有线网络连接(例如,以太网)。
[0256]
在一些实施例中,通信子系统2524也可以代表可以使用计算机系统2500的一个或多个用户接收结构化和/或非结构化数据馈送2526、事件流2528、事件更新2530等形式的输入通信。
[0257]
举例来说,通信子系统2524可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送2526,诸如馈送、更新、诸如丰富站点摘要(rss)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
[0258]
此外,通信子系统2524也可以被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流2528和/或事件更新2530。产生连续数据的应用的示例可以包括,例如,传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视,等等。
[0259]
通信子系统2524也可以被配置为向一个或多个数据库输出结构化和/或非结构化数据馈送2526、事件流2528、事件更新2530,等等,这一个或多个数据库可以与耦合到计算机系统2500的一个或多个流式数据源计算机通信。
[0260]
计算机系统2500可以是各种类型之一,包括手持便携式设备(例如,蜂窝电话、计算平板电脑、pda)、可穿戴设备(例如,glass头戴式显示器)、pc、工作站、大型机、信息站、服务器机架、或任何其它数据处理系统。
[0261]
在前面的描述中,出于解释的目的,阐述了具体细节以提供对本公开的示例的透彻理解。但是,显而易见的是,可以在没有这些具体细节的情况下实践各种示例。随后的描述仅提供示例,并不旨在限制本公开的范围、适用性或配置。更确切地说,示例的后续描述将为本领域技术人员提供实现示例的使能描述。应当理解的是,在不脱离如所附权利要求中阐述的本公开的精神和范围的情况下,可以对元件的功能和布置进行各种改变。附图和描述并非旨在限制性的。电路、系统、网络、过程和其它组件可以框图形式示为组件,以免不必要的细节模糊示例。在其它情况下,可以在没有不必要的细节的情况下示出众所周知的电路、过程、算法、结构和技术,以避免模糊示例。本文公开的教导还可以应用于各种类型的应用,诸如移动应用、非移动应用、桌面应用、网络应用、企业应用等。另外,本公开的教导不限于特定的操作环境(例如,操作系统、设备、平台等),而是代替地可以应用于多个不同的操作环境。
[0262]
而且,应该注意的是,个别示例可以被描述为过程,其被描述为流程图、流图、数据流图、结构图或框图。虽然流程图可以将操作描述为顺序过程,但是许多操作可以并行或并
发地执行。此外,可以重新排列操作的次序。过程在其操作完成时终止,但过程可以具有图中未包括的附加步骤。过程可以与方法、函数、过程、子例程、子程序等对应。当过程与函数对应时,它的终止可以与函数返回到调用函数或主函数对应。
[0263]
词语“示例”和“示例性”在本文中用于表示“用作示例、实例或说明”。本文描述为“示例性”或“示例”的任何实施例或设计不一定被解释为比其它实施例或设计优选或有利。
[0264]
术语“机器可读存储介质”或“计算机可读存储介质”包括但不限于便携式或非便携式存储设备、光学存储设备以及能够存储、包含、或携带(一个或多个)指令和/或数据的各种其它介质。机器可读存储介质或计算机可读存储介质可以包括其中可以存储数据并且不包括无线地或通过有线连接传播的载波和/或暂态电子信号的非暂态介质。非暂态介质的示例可以包括但不限于磁盘或带、诸如压缩盘(cd)或数字通用盘(dvd)之类的光学存储介质、闪存,或存储器或存储其设备。计算机程序产品可以包括代码和/或机器可执行指令,它们可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类,或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的手段传递、转发或传输,包括存储器共享、消息传递、令牌传递、网络传输等。
[0265]
此外,示例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当以软件、固件、中间件或微代码实现时,执行必要任务的程序代码或代码段(例如,计算机程序产品)可以存储在机器可读介质中。(一个或多个)处理器可以执行必要的任务。其中一些图中描绘的系统可以以各种配置提供。在一些示例中,系统可以被配置为分布式系统,其中系统的一个或多个组件分布在云计算系统中的一个或多个网络上。在组件被描述为“被配置为”执行某些操作的情况下,这种配置可以通过例如设计电子电路或其它硬件以执行操作、通过编程或控制电子电路(例如,微处理器或其它合适的电子电路)以执行操作或其任何组合来完成。
[0266]
虽然已经描述了本公开的具体实施例,但是各种修改、变更、替代构造和等效形式也包含在本公开的范围内。本公开的实施例不限于在某些特定数据处理环境内操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用特定系列的事务和步骤描述了本公开的实施例,但是本领域技术人员应该清楚本公开的范围不限于所描述系列的事务和步骤。上述实施例的各种特征和方面可以单独或联合使用。
[0267]
另外,虽然已经使用硬件和软件的特定组合描述了本公开的实施例,但是应当认识到硬件和软件的其它组合也在本公开的范围内。本公开的实施例可以仅用硬件、或仅用软件、或使用它们的组合来实现。本文描述的各种处理可以以任何组合在相同的处理器或在不同的处理器上实现。因而,在组件或模块被描述为被配置为执行某些操作的情况下,可以通过例如设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作,或其任何组合来完成这样的配置。处理可以使用多种技术进行通信,包括但不限于用于处理间通信的常规技术,并且不同的处理对可以使用不同的技术,或者同一对处理可以在不同时间使用不同的技术。
[0268]
因而,说明书和附图被认为是说明性的而不是限制性的。但是,显然可以对其进行添加、减少、删除和其它修改和改变而不背离权利要求中阐述的更广泛的精神和范围。因此,虽然已经描述了具体的公开实施例,但这些并不旨在进行限制。各种修改和等效形式都
在以下权利要求的范围内。
[0269]
在描述所公开的实施例的上下文中(尤其在以下权利要求的上下文中)使用术语“一”和“一个”和“该”以及类似的指称要被解释为涵盖单数和复数,除非本文另有指示或与上下文明显矛盾。除非另有说明,否则术语“包括”、“具有”、“包含(including)”和“包含(containing)”要被解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”应被解释为部分或全部包含在、附加到或连接在一起,即使中间存在一些东西。除非本文另有指示,否则本文中值范围的列举仅旨在用作个别引用落入该范围内的每个单独值的速记方法,并且每个单独值被并入说明书中,就好像它在本文中个别列举一样。除非本文另有指示或与上下文明显矛盾,否则本文所述的所有方法都可以以任何合适的顺序执行。本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例并且不对本公开的范围构成限制,除非另有声明。说明书中的任何语言都不应被解释为指示任何未要求保护的元素对于本公开的实践是必不可少的。
[0270]
析取语言,诸如短语“x、y或z中的至少一个”,除非另有明确说明,否则旨在在一般用于表示项目、术语等的上下文中理解,可以是x、y或z,或它们的任何组合(例如,x、y和/或z)。因此,这种析取语言通常不旨在也不应暗示某些实施例需要x中的至少一个、y中的至少一个或z中的至少一个各自存在。
[0271]
可以考虑以下条款来描述本公开的实施例的示例:
[0272]
条款1.一种系统,包括:服务器的集合,与基底网络连接并托管网络接口服务;网络虚拟化设备,托管虚拟网络接口卡并与基底网络连接;以及主机机器,与网络虚拟化设备连接并托管来自客户的虚拟网络的计算实例,其中网络接口服务被配置为:存储关于虚拟网络的配置的配置信息;存储关于配置信息的版本信息;确定虚拟网络接口卡与配置信息的至少一部分相关联;基于版本信息确定配置信息的至少所述部分过时;以及向网络虚拟化设备发送至少所述部分过时的指示。
[0273]
条款2.条款1的系统,其中配置信息的所述部分包括用于由虚拟网络接口卡在虚拟网络上发送分组的流信息,并且其中虚拟网络接口卡被配置为存储流信息。
[0274]
条款3.条款2的系统,其中配置信息包括用于一个或多个分组流的安全性策略、覆盖到基底互联网协议(ip)地址映射和路由规则,并且其中流信息包括安全性策略、覆盖到基底ip地址映射或路由规则中的至少一项。
[0275]
条款4.条款1-3中的任一项的系统,其中配置信息包括多个部分,并且其中网络接口服务还被配置为:针对所述多个部分中的每个部分,存储所述部分的版本的指示符;以及基于所存储的版本的指示符确定与虚拟网络接口卡相关联的部分的版本已过时。
[0276]
条款5.条款4的系统,其中网络接口服务还被配置为:向网络虚拟化设备发送所述部分的更新后的版本和更新后的版本的指示符,其中该指示包括更新后的版本和更新后的版本的指示符。
[0277]
条款6.条款4的系统,其中网络接口服务还被配置为:从网络虚拟化设备接收对与虚拟网络接口卡相关联的部分的更新后的版本的请求,其中指示向网络虚拟化设备通知更新后的版本可用;以及响应于该请求而向网络虚拟化设备发送更新后的版本。
[0278]
条款7.条款4的系统,其中网络接口服务还被配置为:向控制平面发送版本信息;以及从控制平面接收与虚拟网络接口卡相关联的部分的更新后的版本以及更新后的版本
的指示符。
[0279]
条款8.条款7的系统,其中发送版本信息包括发送填充有形成配置信息的所述多个部分中的每个部分的版本的指示符的向量时钟。
[0280]
条款9.一种方法,包括:由网络虚拟化设备存储关于客户的虚拟网络的配置的配置信息的至少一部分,该网络虚拟化设备托管用于客户的计算实例到虚拟网络的虚拟网络接口卡并与基底网络连接;由网络虚拟化设备存储关于配置信息的所述部分的版本信息;由网络虚拟化设备基于与控制平面的关于版本信息的通信来确定所述部分已过时;由网络虚拟化设备从控制平面或网络接口服务接收所述部分的更新后的版本,网络接口服务托管在与基底网络连接的服务器的集合上;以及由网络虚拟化设备将所述部分替换为更新后的版本。
[0281]
条款10.条款9的方法,还包括:由网络虚拟化设备向控制平面发送版本信息;以及由网络虚拟化设备从控制平面接收所述部分已过时的指示。
[0282]
条款11.条款10的方法,其中发送版本信息包括发送向量时钟,该向量时钟包括配置信息的所述部分的版本指示符和其它部分的版本指示符,其中所述部分和其它部分形成流信息以通过虚拟网络接口卡在虚拟网络上发送分组,并且其中接收指示包括接收所述部分的更新后的版本指示符。
[0283]
条款12.条款9-11中的任一项的方法,还包括:由网络虚拟化设备向网络接口服务发送接收更新后的版本的请求;由网络虚拟化设备基于请求从网络接口服务接收更新后的版本;以及由网络虚拟化设备基于更新后的版本发送分组。
[0284]
条款13.条款12的方法,其中响应于从控制平面接收到配置信息的所述部分已过时的指示并且在从计算实例接收分组之前,将请求发送到网络接口服务。
[0285]
条款14.条款9-13中的任一项的方法,还包括:由网络虚拟化设备从计算实例的主机机器接收分组;由网络虚拟化设备基于配置信息的所述部分已过时向网络接口服务发送分组;以及由网络虚拟化设备基于该分组从网络接口服务接收更新后的版本。
[0286]
条款15.一个或多个非暂态计算机可读指令,指令在网络虚拟化设备上执行时使网络虚拟化设备执行操作,包括:存储关于客户的虚拟网络的配置的配置信息的至少一部分,网络虚拟化设备托管用于客户的计算实例到虚拟网络的虚拟网络接口卡并与基底网络连接;存储关于配置信息的所述部分的版本信息;基于与控制平面的关于版本信息的通信来确定所述部分已过时;从控制平面或网络接口服务接收所述部分的更新后的版本,网络接口服务托管在与基底网络连接的服务器的集合上;以及将所述部分替换为更新后的版本。
[0287]
条款16.条款15的一个或多个非暂态计算机可读指令,其中操作还包括从网络接口服务接收配置信息的所述部分和版本信息,其中所述部分和版本信息被存储在与虚拟网络接口卡相关联的高速缓存中。
[0288]
条款17.条款15-16中的任一项的一个或多个非暂态计算机可读指令,其中配置信息包括形成流信息以通过虚拟网络接口卡发送分组的多个部分,并且其中操作还包括从网络接口服务接收并存储所述多个部分中的每个部分以及对应的版本指示符。
[0289]
条款18.条款17的一个或多个非暂态计算机可读指令,其中操作还包括:从计算实例的主机机器接收分组;基于与控制平面的通信确定流信息包括至少一个过时的部分;以
及基于流信息包括至少一个过时的部分而向虚拟网络接口卡发送分组。
[0290]
条款19.条款18的一个或多个非暂态计算机可读指令,其中操作还包括:响应于发送分组,从虚拟网络接口卡接收所述至少一个过时的部分的更新后的版本。
[0291]
条款20.条款17的一个或多个非暂态计算机可读指令,其中配置信息包括用于一个或多个分组流的安全性策略、覆盖到基底互联网协议(ip)地址映射以及路由规则,并且其中流信息包括安全性策略、覆盖到基底ip地址映射或路由规则中的至少一项。
[0292]
本文描述了本公开的优选实施例,包括已知用于实施本公开的最佳模式。那些优选实施例的变型对于本领域普通技术人员在阅读上述描述后会变得显而易见。普通技术人员应该能够适当地采用这样的变型并且可以以不同于本文具体描述的方式来实践本公开。因而,本公开包括在适用法律允许的情况下对所附权利要求中记载的主题的所有修改和等效形式。此外,除非在本文中另有指示,否则本公开包括在其所有可能的变化中的上述元素的任何组合。
[0293]
本文引用的所有参考文献,包括出版物、专利申请和专利,均以相同的程度通过引用并入本文,就好像每个参考文献个别且具体地指示通过引用并入并在本文中全文阐述一样。
[0294]
在前述的说明书中,本公开的各方面参考其具体实施例进行了描述,但本领域技术人员将认识到的是,本公开不限于此。上述公开的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些之外的任何数量的环境和应用中被使用。因而,本说明书和附图应当被认为是说明性而不是限制性的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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