在网络虚拟化设备中使用客户管理的密钥提供客户VCN网络加密的机制的制作方法
未命名
09-24
阅读:66
评论:0
在网络虚拟化设备中使用客户管理的密钥提供客户vcn网络加密的机制
1.相关申请的交叉引用
2.本技术要求于2020年12月23日提交的编号为17/133,526的标题为“mechanism to provide customer vcn network encryption using customer-managed keys in network virtualization device”的美国申请的权益,该申请的全部内容通过引用并入本文。
3.本技术与2020年12月23日提交的编号为17/133,523的标题为“end-to-end network encryption from customer on-premise network to customer virtual cloud network using customer-managed keys”的美国申请相关,该申请的全部内容通过引用并入本文。
背景技术:
4.虚拟云网络(vcn)是可定制且私有的网络。与传统数据中心网络类似,vcn提供对网络环境的控制。这包括指派私有ip地址、创建子网、创建路由表和配置防火墙。单个租户可以具有多个vcn,从而提供相关资源的分组和隔离。
5.为了安全起见,可以对vcn中的数据进行加密。加密的一个目的是基于密钥将明文数据转换成无法理解的密文,这种方式很难(例如,计算上不可行)在不知道正确密钥的情况下将密文转换回其对应的明文。在对称密码系统中,相同的密钥既用于加密又用于解密相同的数据。在一些加密算法中,密钥长度可以是128位、192位或256位。在一些加密标准(例如,数据加密标准(des)算法)中,消息数据用三遍des算法加密。3des可以提供高度的消息安全性,但会带来性能损失。性能损失的量值可以取决于处理器执行加密的速度。由rsa数据安全公司(rsa data security inc.)开发的rc4算法已成为用于高速数据加密的国际标准。rc4是可变密钥长度的流密码,其以des的速度的若干倍进行操作,使得加密大批量数据传送成为可能,同时将性能影响降到最低。网络数据的加密提供数据隐私,使得未经授权方无法在明文数据通过网络时查看该明文数据。
技术实现要素:
6.本公开一般而言涉及虚拟云网络(vcn)。更具体地但不作为限制,描述了用于为vcn加密数据的技术,其中客户能够维护和管理一个或多个加密密钥,而vcn主机无权访问加密密钥。主机无法访问加密密钥可以为vcn提供额外一层的数据安全性。本文描述了各种实施例,包括方法、系统、存储可由一个或多个处理器执行的程序、代码或指令的非暂态计算机可读存储介质等。
7.在某些实施例中,网络接口卡(例如,smartnic)用于为虚拟机提供加密(诸如网络加密虚拟功能(nevf)),使得客户可以控制用于虚拟云网络的网络加密密钥。nevf包括存储器设备(例如,sram)和密码处理器(例如,密码核心)。存储器设备存储密码密钥。密码处理器使用密码密钥来加密去往和来自虚拟云网络中的虚拟机的数据。密钥管理服务用于将密
码密钥安全地传送到nevf。每个虚拟机拥有一个nevf可以使得客户能够管理用于虚拟云网络的(一个或多个)加密密钥。设备的管理员(例如,具有运行nevf的网络接口卡的服务器的主机)无权访问(一个或多个)加密密钥。
8.在某些实施例中,一种系统包括第一虚拟化引擎和第二虚拟引擎。第一虚拟引擎被配置为实例化第一虚拟机。第一虚拟化引擎包括第一存储器设备和第一密码处理器。第一存储器设备被配置为存储第一密码密钥。第一密码处理器被配置为使用第一密码密钥来加密和解密去往和来自第一虚拟机的数据。第二虚拟引擎被配置为实例化第二虚拟机。第二虚拟化引擎包括第二存储器设备和第二密码处理器。第二存储器设备被配置为存储第二密码密钥。第二密码处理器被配置为使用第二密码密钥来加密和解密去往和来自第二虚拟机的数据。第一虚拟化引擎和第二虚拟化引擎是同一设备(例如,网络接口卡)的部分。该设备的管理员无权访问第一密钥或第二密钥。
9.在某些实施例中,第一虚拟化引擎被配置为从密钥管理服务接收第一密钥和/或将第一密钥保存在第一存储器设备中;密钥管理服务为客户向设备提供第一密钥,而设备的管理员无权访问第一密钥;第一存储器设备是包括电容器和晶体管的静态随机存取存储器设备;第一虚拟化引擎和第二虚拟化引擎各自被配置为一次仅实例化一个虚拟机;第一虚拟机是第一虚拟云网络的一部分并且第二虚拟机是第二虚拟云网络的一部分;第一密码处理器被配置为为第一虚拟机提供联机数据加密;第一虚拟化引擎被配置为为第一虚拟化机提供数据分组的网络路由;第一密码密钥与第二密码密钥相同;设备是网络接口卡;第一密钥和/或第二密钥被定期地更新;第一虚拟化引擎和第二虚拟化引擎向密钥管理服务提供凭证以接收第一密钥;第一虚拟机和第二虚拟机是子网的部分;第一虚拟机和第二虚拟机是不同虚拟云网络的部分;第一密钥和第二密钥同时被刷新。
10.在还有其它实施例中,一种方法包括使用第一虚拟化引擎实例化第一虚拟机;使用第二虚拟化引擎实例化第二虚拟机;将第一密钥存储在第一虚拟化引擎的第一存储器设备中;将第二密钥存储在第二虚拟化引擎的第二存储器设备中;使用第一密码处理器来加密第一虚拟机的数据,其中第一密码处理器是第一虚拟化引擎的一部分;和/或使用第二密码处理器来加密第二虚拟引擎的数据,其中第二密码处理器是第二虚拟化引擎的一部分。第一虚拟化引擎和第二虚拟化引擎是同一设备的部分。该设备的管理员无权访问第一密钥或第二密钥。
11.参考以下说明书、权利要求和附图,前述内容连同其它特征和实施例将变得更加清楚。
附图说明
12.图1描绘了用于网络虚拟化设备的系统的一个实施例的示意图。
13.图2是多个网络虚拟化设备从密钥管理服务接收密码密钥的一个实施例的描绘。
14.图3是支持具有不同密码密钥的多个客户的网络虚拟化设备的一个实施例的描绘。
15.图4是图示用于在虚拟云网络中加密数据的过程的一个实施例的流程图。
16.图5是图示使用多个密码密钥对多个虚拟云网络进行数据加密的过程的一个实施例的流程图。
17.图6是图示根据至少一个实施例的用于将云基础设施实现为服务系统的一种模式的框图。
18.图7是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
19.图8是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
20.图9是图示根据至少一个实施例的用于将云基础设施实现为服务系统的另一种模式的框图。
21.图10是图示根据至少一个实施例的示例计算机系统的框图。
22.图11是分布式环境的高级别图,示出了根据某些实施例的由云服务提供者基础设施托管的虚拟或覆盖云网络。
23.图12描绘了根据某些实施例的cspi内的物理网络中的物理组件的简化体系架构图。
24.图13示出了根据某些实施例的cspi内的示例布置,其中主机机器连接到多个网络虚拟化设备(nvd)。
25.图14描绘了根据某些实施例的主机机器和nvd之间的连接性,用于提供i/o虚拟化以支持多租赁(tenancy)。
26.图15描绘了根据某些实施例的由cspi提供的物理网络的简化框图。
27.在附图中,相似的组件和/或特征可以具有相同的附图标记。另外,相同类型的各种组件可以通过在参考标记后面加上破折号和区分相似组件的第二标记来进行区分。如果在说明书中仅使用第一附图标记,那么该描述适用于具有相同第一附图标记的任何一个相似组件,而不管第二附图标记。
具体实施方式
28.在以下描述中,出于解释的目的,阐述了具体细节以便提供对某些实施例的透彻理解。但是,显然可以在没有这些具体细节的情况下实践各种实施例。附图和描述并非旨在限制。词语“示例性”在本文用于表示“用作示例、实例或图示”。本文描述为“示例性”的任何实施例或设计不一定被解释为优选或优于其它实施例或设计。
29.虚拟云网络(vcn)是可定制且私有的网络。主机可以为客户提供计算硬件和/或软件以设置vcn。通常,主机管理vcn的加密(如果存在的话)。客户可能不希望主机管理加密,因为客户可能担心主机的数据泄露可能危及客户数据,或者客户可能担心主机可以访问多少客户数据。这个描述涉及使用客户管理的密钥提供vcn网络加密的机制。客户管理的密钥可以分布在smartnic中。smartnic是网络接口卡(例如,网络适配器),其卸载cpu通常可能处置的处理任务。smartnic可以执行加密、解密、路由、防火墙等功能。
30.smartnic可以被用于支持具有专用密码加速器和/或sram的网络加密虚拟功能(nevf)。密码加速器可以被用于联机(in-line)分组加密。sram可以被用于存储加密密钥。指派给客户虚拟机(客户虚拟机是客户vcn的一部分)的nevf可以被用于虚拟机网络业务(traffic)加密和存储加密密钥。管理程序可以将客户虚拟机映射到nevf。可以在客户vcn实例(例如,虚拟机(vm)和/或裸机(bm))的nevf中安全地供给加密密钥。
31.在客户vcn实例之间交换的业务用在nevf中供给的加密密钥进行加密。vcn中的每个实例共享相同的加密密钥(例如,机会加密)。控制平面可以为vcn中的客户实例(vm和/或bm)供给和/或管理网络加密密钥。控制平面可以被用于认证客户虚拟功能并从密钥管理服务供给加密密钥。使用证书,密钥管理服务和nic可以安全地共享客户加密密钥。因此,客户可以(例如,使用应用程序接口和/或操作系统命令)管理网络加密密钥。在一些配置中,唯一密钥在vcn中的vm主机之间共享。每个vm主机的nevf存储密钥和/或与要使用的密钥相关联的元数据。
32.参考图1,示出了用于为虚拟云网络加密数据的系统的一个实施例的示意图。网络虚拟化设备100包括第一虚拟化引擎104-1和第二虚拟化引擎104-2。虚拟化引擎104为每个裸机或虚拟机实例化并提供虚拟网络接口卡(vnic)。虚拟化引擎104可以是网络加密虚拟功能(nevf)。网络虚拟化设备100可以是附有专用资源(例如,存储器和/或处理器)的物理卡(例如,smartnic)。在一些实施例中,网络虚拟化设备100是smarttor、网络装备或服务主机。
33.云服务提供者基础设施内分组的路由和/或转发可以由网络虚拟化设备执行。网络虚拟化设备可以实现一种或多种虚拟网络功能,诸如虚拟网络接口卡(vnic)、虚拟路由器、虚拟网络网关和网络加密虚拟功能。网络虚拟化设备是使用软件(例如,处理器执行的代码或指令)实现的虚拟对象。网络虚拟化设备是执行诸如虚拟路由器之类的虚拟功能的硬件组件(例如,虚拟路由器设备是执行实现虚拟路由器的代码的物理设备)。例如,vnic由smartnic执行;smartnic是网络虚拟化设备。在vnic由主机机器执行的情况下,主机机器是网络虚拟化设备。在一些实施例中,虚拟路由器由架顶式(tor)交换机执行(并且tor是虚拟路由器设备)。smartnic只是网络虚拟化设备的一个示例。
34.虚拟机108是计算机上的程序,它像计算机内部的独立计算机一样执行。可以使用虚拟化软件创建虚拟机。虚拟机108可以执行各种虚拟功能。
35.虚拟化引擎104包括存储器设备112和密码处理器116。存储器设备112被配置为存储密钥,诸如密码密钥。在一些实施例中,存储器设备112是包括电容器和晶体管的静态随机存取存储器(sram)设备。
36.密码处理器116被配置为使用存储在存储器设备112中的密钥来加密和/或解密去往和来自虚拟机108的数据。传输分组tx是从虚拟机108发送的数据分组。接收分组rx是发送给虚拟机108的数据分组。传输分组tx由密码处理器116加密。接收分组rx由密码处理器116解密。使用联机加密/解密对传输分组tx和/或接收分组rx进行加密/解密。在一些实施例中,虚拟化引擎104被配置为提供数据分组的网络路由(例如,虚拟化引擎104为传输分组tx提供路由数据)。
37.在所示的实施例中,虚拟化引擎104被配置为一次仅实例化一个虚拟机108。这允许每个虚拟机108有专用的加密资源(例如,存储器设备112和/或加密过程或116),这可以提高安全性。
38.在所示的实施例中,第一虚拟化引擎104-1包括第一存储器设备112-1和第一密码处理器116-1;并且第二虚拟化引擎104-2包括第二存储器设备112-2和第二密码处理器116-2。因而,第二虚拟化引擎104-2和第一虚拟化引擎104-1是同一设备的部分。虽然两个虚拟化引擎104被示为网络虚拟化设备100的部分,但是应该理解的是,多于两个的虚拟化
引擎104可以是网络虚拟化设备100的部分(例如,3、5、10、100、或更多个虚拟化引擎104可以是网络虚拟化设备100的部分)。
39.在一些实施例中,网络虚拟化设备100用于实现虚拟功能,诸如vnic、虚拟路由器和/或nevf。网络虚拟化设备100可以是服务器中的卡(例如,smartnic)。网络虚拟化设备100由主机管理(例如,拥有和/或运营)用于一个或多个客户端设置一个或多个vcn。主机是网络虚拟化设备100的管理员。密钥可以存储在存储器设备112中(例如,加密的),因此主机(例如,管理员)无权访问存储在存储器设备112中的密钥。通过无法访问密钥的主机,即使主机的安全性受到威胁,也可以确保客户端的数据安全性。
40.以太网桥120允许第一虚拟化引擎104-1经由互联网通信和/或与第二虚拟化引擎104-2通信(例如,当第一虚拟机108-1和第二虚拟机108-2是同一虚拟云网络的部分)。主机使用管理程序124在虚拟机108之间共享计算系统的资源。
41.图2是对从密钥管理服务208接收密码密钥204的多个虚拟化引擎104的一个实施例的描绘。在所示的实施例中,存在三个虚拟化引擎104。虽然示出了三个虚拟化引擎104,但是可以使用更多或更少的虚拟化引擎104。虚拟化引擎104各自实例化一个(并且在一些实施例中仅实例化一个)虚拟机108。图2中的虚拟机108是公共虚拟云网络(vcn)212的一部分。由于虚拟化引擎104是同一vcn 212的一部分,因此虚拟化引擎104各自接收相同的密钥(例如,相同的密码密钥204),这使得虚拟化引擎104能够使用加密的数据安全地彼此通信(例如,使用图1中所示的以太网桥120)。因而,第一虚拟化引擎104-1被配置为从密钥管理服务208接收密码密钥204。第一虚拟化引擎104-1将密码密钥204保存在第一存储器设备112-1中。
42.vcn控制平面216被配置为管理、监视和/或修改云基础设施资源。密钥管理服务208可以在网络虚拟化设备100的主机无法访问密码密钥204的情况下为客户端向虚拟化引擎104提供密码密钥204。通过无法访问密码密钥204的主机(例如,云服务提供者),客户端控制vcn 212的安全性。
43.为了在主机无法访问密钥的情况下将密钥放入存储器设备112,客户可以在密钥管理服务208(例如,oci的云密钥管理服务)中初始化密码密钥204和/或给予虚拟化引擎104访问它的许可。在云网络中,可以为每个资源指派身份原则(例如,oci的云身份原则),从而可以为每个资源提供凭证,以便向其它云资源认证资源。虚拟化引擎104(例如,nevf)是资源并且可以被指派身份原则。可以向密钥管理服务208认证虚拟化引擎104。虚拟化引擎104可以请求客户密钥(例如,密码密钥204)
44.虚拟化引擎104可以从密钥管理服务208请求密码密钥204(例如,使用身份原则来认证其自身以请求密钥)。密钥管理系统208可以将密钥推送(和/或更新)到虚拟化引擎104(例如,在认证虚拟化引擎(104)之后)。请求或推送密钥是在云网络的主机不将密钥供给到虚拟化引擎104(例如,进入虚拟化引擎104的sram)的情况下完成的。可以在密钥管理系统208和虚拟化引擎104之间预共享安全性协议,以便密钥管理系统可以用预共享秘密将数据路由到虚拟化引擎104以初始化虚拟化引擎104的存储器中的密钥。
45.相同的密码密钥204被分发到支持虚拟云网络212中的虚拟机108的每个虚拟化引擎104。当实例化虚拟机108时,可以将密钥204分发给虚拟引擎104。例如,当客户创建vcn 212时,可以询问客户是否要加密vcn 212(例如,客户可以选中用于加密vcn 212的方框)。
当启动虚拟机108的实例时,底层协议从密钥管理服务208去往虚拟引擎104以将密码密钥204分发到虚拟引擎104的存储器设备112。密码密钥204可以定期地(例如,每小时、每天、每周等)更新和/或由客户更新(例如,客户选择或定义更新时间表和/或选择立即更新密码密钥204)。在一些实施例中,客户生成多个密钥,并且当需要轮换到新密钥时(例如,每天在时间t),密码密钥204被更新(例如,每个虚拟引擎104在时间t到达密钥管理服务208)。新密钥发布在存储器设备112中。密钥同步(例如,自动同步)可以被用于多个主机(例如,每个虚拟化引擎104的同步计数器可以被用于在存储器设备112中发布新密钥)。在一些实施例中,密码密钥204基于某种加密方案在每个虚拟化引擎104上轮换(例如,密码密钥204被刷新)。因此,密码密钥204可以被同时推送和/或刷新到作为vcn 212的一部分的每个虚拟化引擎104或在每个虚拟化引擎104上被同时推送和/或刷新。密钥管理服务208可以与vcn 212具有单个加密关系,因此密钥管理服务208不必维护与不同设备的关系。
46.通过对数据进行加密(其中客户控制密钥),客户可以确信数据在主机的线路上被加密。在一些实施例中,客户可以使用传输层安全性(tls)隧道与主机通信。但是,tls存在缺陷并且可能存在安全性问题。通过允许客户使用密钥管理服务208来控制密钥,可以避免或减少tls的缺陷和安全性问题。在一些实施例中,tls隧道或基于预共享密钥的自定义安全性协议可以被用于nevf和密钥管理服务之间的安全通信。
47.虽然描述示出了在vcn 212级别分发和管理密码密钥204,但是可以在其它级别(诸如在子网级别)使用类似的处理和技术。例如,加密密钥可以用于vcn 212的l2或l3。
48.图3是支持具有不同密码密钥304的多个客户端的网络虚拟化设备100的一个实施例的描绘。网络虚拟化设备100包括第一虚拟化引擎104-1、第二虚拟化引擎104-2、第三虚拟化引擎104-3和第四虚拟化引擎104-4。第一虚拟化引擎104-1被配置为实例化第一虚拟机108-1。第二虚拟化引擎104-2被配置为实例化第二虚拟机108-2。第三虚拟化引擎104-3被配置为实例化第三虚拟机108-3。第四虚拟化引擎104-4被配置为实例化第四虚拟机108-4。
49.第一虚拟机108-1和第三虚拟机108-3是第一vcn 312-1的部分。第二虚拟机108-2和第四虚拟机108-4是第二vcn 312-2的部分。第一vcn 312-1用于第一客户端。第二vcn 312-2用于第二客户端,其中第二客户端与第一客户端不同。因此,一个设备上的多个nevf可以被用于支持属于不同虚拟云网络的虚拟机。
50.第一虚拟化引擎104-1和第三虚拟化引擎104-3从第一密钥管理服务208-1接收第一密码密钥304-1。第二虚拟化引擎104-2和第四虚拟化引擎104-4从第二密钥管理服务208-2接收第二密码密钥304-2。第二密码密钥304-2与第一密码密钥304-1不同。在一些实施例中,第二vcn 312-2的虚拟化引擎104从与第一vcn 312-1的虚拟化引擎104相同的密钥管理服务接收第二密码密钥304-2(例如,第二vcn 312-2的虚拟化引擎104从第一密钥管理服务208-1接收第二密码密钥304-2)。
51.第一虚拟引擎104-1将第一密码密钥304-1存储在第一存储器设备112-1中。第二虚拟引擎104-2将第二密码密钥304-2存储在第二存储器设备112-2中。类似地,第三虚拟化引擎104-3和第四虚拟化引擎104-4各自将相应的密码密钥304存储在存储器设备112中。网络虚拟化设备100的主机无权访问第一密码密钥304-1或第二密码密钥304-2。通过使每个虚拟机108具有一个虚拟化引擎104(例如,通过具有专用资源,诸如每个虚拟机108一个存
储器设备112)使得一个网络虚拟化设备100能够安全地支持多个客户的多个vcn 312。由于每个客户针对vcn 312管理他们自己的密码密钥304,因此可以安全地管理每个客户的数据。另外,主机的数据泄露不会导致vcn 312的数据泄露,从而向客户提供附加的安全信心。
52.图4是图示用于在虚拟云网络中加密数据的过程400的一个实施例的流程图。过程400开始于步骤402,其中实例化第一虚拟机。例如,第一虚拟化引擎104-1实例化第一虚拟机108-1,如图1中所示。在步骤404中,实例化第二虚拟机。例如,在图1中第二虚拟化引擎104-2实例化第二虚拟机108-2。如图1中所示,虚拟化引擎104包括存储器设备112和密码处理器116。
53.第一密钥存储在第一存储器设备中(步骤406)。例如,密码密钥204存储在第一虚拟化引擎104-1的第一存储器设备112-1中,如图2中所示。第一密钥可以从密钥管理服务检索(例如,从密钥管理服务请求或由密钥管理服务请求推送)。在一些实施例中,虚拟云网络的客户控制第一密钥,因此第一虚拟化引擎104-1的主机无权访问该密钥。
54.第二密钥存储在第二存储器设备中(步骤408)。例如,密码密钥204存储在第二虚拟化引擎104-2的第二存储器设备112-2中,如图2中所示。第二密钥可以从密钥管理服务检索(例如,从密钥管理服务请求或由密钥管理服务请求推送)。在一些实施例中,虚拟云网络的客户控制第二密钥,因此虚拟化引擎104的主机无权访问第二密钥。第二密钥可以与第一密钥相同,如图2中所示。第二密钥可以与第一密钥不同,如图3中所示。例如,第二密钥可以与第一密钥不同,因为第二虚拟机是与第一虚拟机不同的虚拟云网络的一部分。
55.在步骤410中,使用第一密钥对第一虚拟机的数据进行加密。例如,在图1中,第一密码处理器116-1对来自第一虚拟机108-1的传输数据tx进行加密。在步骤412中,使用第二密钥对第二虚拟机的数据进行加密。例如,在图1中,第二密码处理器116-2对来自图1中的第二虚拟机108-2的传输数据tx进行加密。如果第一虚拟机108-1和第二虚拟机108-2是同一虚拟云网络的部分,那么第一虚拟机108-1可以使用相同的密钥安全地向第二虚拟机108-2传输数据和/或从其接收数据(例如,参见图2)。但是,如果第一密钥与第二密钥不同,如图3中所示,那么第一虚拟机108-1不向第二虚拟机108-2发送加密数据和/或从其接收加密数据(除非在图3中在第一vcn 312-1和第二vcn 312-2之间存在某种附加布置)。
56.第一虚拟化引擎104-1和第二虚拟化引擎104-2在同一设备上(例如,服务器中同一卡的部分)。由于虚拟化引擎104仅用于实例化一个虚拟机,和/或由于虚拟化引擎具有一个或多个专用资源,因此去往和来自每个虚拟机的数据可以安全地被加密和/或解密,而无需网络虚拟化设备的主机能够访问第一密钥或第二密钥。
57.图5是图示用于使用多个密码密钥对多个虚拟云网络进行数据加密的过程500的一个实施例的流程图。过程500开始于步骤502,其中为第一客户实例化第一虚拟机集合。第一虚拟引擎集合用于实例化第一虚拟机集合。第一虚拟机集合是第一虚拟云网络的部分。在这个实施例中,集合包括两个或更多个。例如,在图3中,第一虚拟化引擎104-1和第三虚拟化引擎104-3用于实例化第一虚拟机108-1和第三虚拟机108-3;第一虚拟机108-1和第三虚拟机108-3是第一虚拟云网络312-1的部分。
58.为第二客户实例化第二虚拟机集合(步骤504)。第二虚拟引擎集合用于实例化第二虚拟机集合。第二虚拟机集合是第二虚拟云网络的部分。例如,在图3中,第二虚拟化引擎104-2和第四虚拟化引擎104-4用于实例化第二虚拟机108-2和第四虚拟机108-4;第二虚拟
机108-2和第四虚拟机108-4是第二虚拟云网络312-2的部分。
59.在步骤506中,第一密钥(例如图3中的第一密码密钥304-1)由用于实例化第一虚拟云网络的虚拟机的虚拟化引擎接收。第二密钥(例如图3中的第二密码密钥304-2)由用于实例化第二虚拟云网络的虚拟机的虚拟化引擎接收(步骤508)。可以从第一密钥管理服务接收第一密钥,并且可以从与第一密钥管理服务不同的第二密钥管理服务接收第二密钥。
60.第一密钥用于为第一客户加密数据(步骤510)。第二密钥用于为第二客户加密数据(步骤512)。主机无权访问第一密钥和/或第二密钥。
61.基础设施即服务(iaas)是一种特定类型的云计算。iaas可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在iaas模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,iaas提供商还可以提供各种服务来伴随这些基础设施组件(例如,计费、监视、日志记录、安全性、负载平衡和聚类等)。因此,由于这些服务可能是策略驱动的,因此iaas用户可以能够实现策略来驱动负载平衡,以维持应用的可用性和性能。
62.在一些情况下,iaas客户可以通过诸如互联网之类的广域网(wan)访问资源和服务,并且可以使用云提供商的服务来安装应用堆栈的剩余元素。例如,用户可以登录到iaas平台以创建虚拟机(vm)、在每个vm上安装操作系统(os)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶、甚至将企业软件安装到该vm中。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用问题、监视性能、管理灾难恢复等。
63.在大多数情况下,云计算模型将使用云提供商的参与。云提供商可以但不一定是专门提供(例如,供应、出租、销售)iaas的第三方服务。实体也可能选择部署私有云,从而成为其自己的基础设施服务提供商。
64.在一些示例中,iaas部署是将新应用或应用的新版本放置到准备好的应用服务器等上的处理。它还可以包括准备服务器(例如,安装库、守护进程等)的处理。这通常由云提供商管理,位于管理程序层(例如,服务器、存储装置、网络硬件和虚拟化)之下。因此,客户可以负责处理(os)、中间件和/或(例如,在(例如可以按需启动的)自助服务虚拟机等上的)应用部署。
65.在一些示例中,iaas供给可以指获取计算机或虚拟主机以供使用,甚至在它们上安装所需的库或服务。大多数情况下,部署不包括供给,并且供给可能需要被首先执行。
66.在一些情况下,iaas供给存在两个不同的问题。首先,在任何东西运行之前供给初始基础设施集合存在最初的挑战。其次,一旦所有东西已被供给,就存在演进现有基础设施(例如,添加新服务、更改服务、移除服务等)的挑战。在一些情况下,可以通过启用以声明方式定义基础设施的配置来解决这两个挑战。换句话说,基础设施(例如,需要哪些组件以及它们如何交互)可以由一个或多个配置文件来定义。因此,基础设施的总体拓扑(例如,哪些资源依赖于哪些资源,以及它们如何协同工作)可以以声明的方式描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。
67.在一些示例中,基础设施可以具有许多互连的元素。例如,可能存在一个或多个虚拟私有云(vpc)(例如,可配置和/或共享计算资源的潜在按需池),也称为核心网络。在一些示例中,还可以供给一个或多个安全性组规则以定义将如何设置网络的安全性以及一个或多个虚拟机(vm)。也可以供给其它基础设施元素,诸如负载平衡器、数据库等。随着期望和/
或添加越来越多的基础设施元素,基础设施可以逐步演进。
68.在一些情况下,可以采用连续部署技术来使得能够跨各种虚拟计算环境来部署基础设施代码。此外,所描述的技术可以使得能够在这些环境内进行基础设施管理。在一些示例中,服务团队可以编写期望部署到一个或多个但通常是许多不同的生产环境(例如,跨各种不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,必须首先设置将在其上部署代码的基础设施。在一些情况下,供给可以手动完成,可以利用供给工具来供给资源,和/或一旦供给基础设施就可以利用部署工具来部署代码。
69.图6是图示根据至少一个实施例的iaas体系架构的示例模式的框图600。服务运营商602可以通信地耦合到可以包括虚拟云网络(vcn)606和安全主机子网608的安全主机租赁604。在一些示例中,服务运营商602可以使用一个或多个客户端计算设备(客户端计算设备可以是便携式手持设备(例如,蜂窝电话、计算平板、个人数字助理(pda))或可穿戴设备(例如,google头戴式显示器)),运行软件(诸如microsoft windows)和/或各种移动操作系统(诸如ios、windows phone、android、blackberry 8、palm os等),并且支持互联网、电子邮件、短消息服务(sms)、或其它通信协议。可替代地,客户端计算设备可以是通用个人计算机,包括例如运行各种版本的microsoftapple和/或linux操作系统的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商业上可获得的或类unix操作系统(包括但不限于各种gnu/linux操作系统(诸如例如google chrome os))中的任何操作系统的工作站计算机。替代地或附加地,客户端计算设备可以是任何其它电子设备,诸如瘦客户端计算机、支持互联网的游戏系统(例如,具有或不具有手势输入设备的microsoft xbox游戏控制台)、和/或能够通过可以访问vcn 606和/或互联网的网络进行通信的个人消息传递设备。
70.vcn 606可以包括本地对等网关(lpg)610,该vcn 606可以经由包含在安全壳(ssh)vcn 612中的lpg 610通信地耦合到ssh vcn 612。ssh vcn 612可以包括ssh子网614,并且ssh vcn 612可以经由包含在控制平面vcn 616中的lpg 610通信地耦合到控制平面vcn 616。此外,ssh vcn 612可以经由lpg 610通信地耦合到数据平面vcn 618。控制平面vcn 616和数据平面vcn 618可以包含在可以由iaas提供商拥有和/或操作的服务租赁619中。
71.控制平面vcn 616可以包括充当外围网络(例如,公司内部网络和外部网络之间的公司网络的部分)的控制平面非军事区(dmz)层620。基于dmz的服务器可以承担有限责任并有助于控制安全性违规。此外,dmz层620可以包括一个或多个负载平衡器(lb)子网622、可以包括(一个或多个)应用(app)子网626的控制平面应用层624、可以包括(一个或多个)数据库(db)子网630(例如,(一个或多个)前端db子网和/或(一个或多个)后端db子网)的控制平面数据层628。包含在控制平面dmz层620中的(一个或多个)lb子网622可以通信地耦合到包含在控制平面应用层624中的(一个或多个)应用子网626和可以包含在控制平面vcn 616中的互联网网关634,并且(一个或多个)应用子网626可以通信地耦合到包含在控制平面数据层628中的(一个或多个)db子网630以及服务网关636和网络地址转换(nat)网关638。控制平面vcn 616可以包括服务网关636和nat网关638。
72.控制平面vcn 616可以包括数据平面镜像应用层640,其可以包括(一个或多个)应用子网626。包含在数据平面镜像应用层640中的(一个或多个)应用子网626可以包括可以执行计算实例644的虚拟网络接口控制器(vnic)642。计算实例644可以将数据平面镜像应用层640的(一个或多个)应用子网626通信地耦合到可以包含在数据平面应用层646中的(一个或多个)应用子网626。
73.数据平面vcn 618可以包括数据平面应用层646、数据平面dmz层648和数据平面数据层650。数据平面dmz层648可以包括(一个或多个)lb子网622,其可以通信地耦合到数据平面应用层646的(一个或多个)应用子网626和数据平面vcn 618的互联网网关634。(一个或多个)应用子网626可以通信地耦合到数据平面vcn 618的服务网关636和数据平面vcn 618的nat网关638。数据平面数据层650还可以包括可以通信地耦合到数据平面应用层646的(一个或多个)应用子网626的(一个或多个)db子网630。
74.控制平面vcn 616和数据平面vcn 618的互联网网关634可以通信地耦合到元数据管理服务652,该元数据管理服务652可以通信地耦合到公共互联网654。公共互联网654可以通信地耦合到控制平面vcn 616和数据平面vcn 618的nat网关638。控制平面vcn 616和数据平面vcn 618的服务网关636可以通信地耦合到云服务656。
75.在一些示例中,控制平面vcn 616或数据平面vcn 618的服务网关636可以对云服务656进行应用编程接口(api)调用,而无需通过公共互联网654。从服务网关636到云服务656的api调用可以是单向的:服务网关636可以对云服务656进行api调用,并且云服务656可以将请求的数据发送到服务网关636。但是,云服务656可以不发起对服务网关636的api调用。
76.在一些示例中,安全主机租赁604可以直接连接到服务租赁619,服务租赁619否则可以被隔离。安全主机子网608可以通过lpg 610与ssh子网614通信,lpg 610可以使得能够在否则隔离的系统上进行双向通信。将安全主机子网608连接到ssh子网614可以使安全主机子网608访问服务租赁619内的其它实体。
77.控制平面vcn 616可以允许服务租赁619的用户设置或以其它方式供给期望资源。在控制平面vcn 616中供给的期望资源可以在数据平面vcn 618中部署或以其它方式使用。在一些示例中,控制平面vcn 616可以与数据平面vcn 618隔离,并且控制平面vcn 616的数据平面镜像应用层640可以经由vnic 642与数据平面vcn 618的数据平面应用层646通信,vnic 642可以包含在数据平面镜像应用层640和数据平面应用层646中。
78.在一些示例中,系统的用户或客户可以通过可以将请求传送到元数据管理服务652的公共互联网654来做出请求,例如创建、读取、更新或删除(crud)操作。元数据管理服务652可以通过互联网网关634将请求传送到控制平面vcn 616。请求可以由包含在控制平面dmz层620中的(一个或多个)lb子网622接收。(一个或多个)lb子网622可以确定请求是有效的,并且响应于该确定,(一个或多个)lb子网622可以将请求传输到包含在控制平面应用层624中的(一个或多个)应用子网626。如果请求被验证并且使用对公共互联网654的调用,那么对公共互联网654的调用可以被传输到可以对公共互联网654进行调用的nat网关638。请求可能期望存储的存储器可以存储在(一个或多个)db子网630中。
79.在一些示例中,数据平面镜像应用层640可以促进控制平面vcn 616和数据平面vcn 618之间的直接通信。例如,可能期望对包含在数据平面vcn 618中的资源应用对配置
的更改、更新或其它适当的修改。经由vnic 642,控制平面vcn 616可以直接与包含在数据平面vcn 618中的资源通信,并且从而可以执行对这些资源的配置的更改、更新或其它适当的修改。
80.在一些实施例中,控制平面vcn 616和数据平面vcn 618可以包含在服务租赁619中。在这种情况下,系统的用户或客户可能不拥有或操作控制平面vcn 616或数据平面vcn 618。替代地,iaas提供商可以拥有或操作控制平面vcn 616和数据平面vcn 618,这两种平面都可以包含在服务租赁619中。该实施例可以使得能够隔离可能阻止用户或客户与其它用户或其它客户的资源进行交互的网络。此外,该实施例可以允许系统的用户或客户私自存储数据库,而无需依赖可能不具有期望安全级别的公共互联网654以进行存储。
81.在其它实施例中,包含在控制平面vcn 616中的(一个或多个)lb子网622可以被配置为从服务网关636接收信号。在这个实施例中,控制平面vcn 616和数据平面vcn 618可以被配置为由iaas提供商的客户调用而无需调用公共互联网654。iaas提供商的客户可能期望这个实施例,因为客户使用的(一个或多个)数据库可以由iaas提供商控制并且可以存储在服务租赁619上,服务租赁619可能与公共互联网654隔离。
82.图7是图示根据至少一个实施例的iaas体系架构的另一个示例模式的框图700。服务运营商702(例如,图6的服务运营商602)可以通信地耦合到安全主机租赁704(例如,图6的安全主机租赁604),该安全主机租赁704可以包括虚拟云网络(vcn)706(例如,图6的vcn 606)和安全主机子网708(例如,图6的安全主机子网608)。vcn 706可以包括本地对等网关(lpg)710(例如,图6的lpg 610),该vcn 706可以经由包含在安全壳(ssh)vcn 712(例如,图6的ssh vcn 612)中的lpg 610通信地耦合到ssh vcn 712。ssh vcn 712可以包括ssh子网714(例如,图6的ssh子网614),并且ssh vcn 712可以经由包含在控制平面vcn 716(例如,图6的控制平面vcn 616)中的lpg 710通信地耦合到控制平面vcn 716。控制平面vcn 716可以包含在服务租赁716(例如,图6的服务租赁619)中,并且数据平面vcn 718(例如,图6的数据平面vcn 618)可以包含在可能由系统的用户或客户拥有或操作的客户租赁721中。
83.控制平面vcn 716可以包括控制平面dmz层720(例如,图6的控制平面dmz层620),其可以包括(一个或多个)lb子网722(例如,图6的(一个或多个)lb子网622)、可以包括(一个或多个)应用子网726(例如,图6的(一个或多个)应用子网626)的控制平面应用层724(例如,图6的控制平面应用层624)、可以包括(一个或多个)数据库(db)子网730(例如,类似于图6的(一个或多个)db子网630)的控制平面数据层728(例如,图6的控制平面数据层628)。包含在控制平面dmz层720中的(一个或多个)lb子网722可以通信地耦合到包含在控制平面应用层724中的(一个或多个)应用子网726和可以包含在控制平面vcn 716中的互联网网关734(例如,图6的互联网网关634),并且(一个或多个)应用子网726可以通信地耦合到包含在控制平面数据层728中的(一个或多个)db子网730以及服务网关736(例如,图6的服务网关)和网络地址转换(nat)网关738(例如,图6的nat网关638)。控制平面vcn 716可以包括服务网关736和nat网关738。
84.控制平面vcn 716可以包括可以包括(一个或多个)应用子网726的数据平面镜像应用层740(例如,图6的数据平面镜像应用层640)。包含在数据平面镜像应用层740中的(一个或多个)应用子网726可以包括可以执行计算实例744(例如,类似于图6的计算实例644)的虚拟网络接口控制器(vnic)742(例如,642的vnic)。计算实例744可以促进数据平面镜像
应用层740的(一个或多个)应用子网726和可以包含在数据平面应用层746(例如,图6的数据平面应用层646)中的(一个或多个)应用子网726之间的经由包含在数据平面镜像应用层740中的vnic 742以及包含在数据平面应用层746中的vnic 742的通信。
85.包含在控制平面vcn 716中的互联网网关734可以通信地耦合到元数据管理服务752(例如,图6的元数据管理服务652),该元数据管理服务752可以通信地耦合到公共互联网754(例如,图6的公共互联网654)。公共互联网754可以通信地耦合到包含在控制平面vcn 716中的nat网关738。包含在控制平面vcn 716中的服务网关736可以通信地耦合到云服务756(例如,图6的云服务656)。
86.在一些示例中,数据平面vcn 718可以包含在客户租赁721中。在这种情况下,iaas提供商可以为每个客户提供控制平面vcn 716,并且iaas提供商可以为每个客户设置包含在服务租赁719中的唯一计算实例744。每个计算实例744可以允许包含在服务租赁719中的控制平面vcn 716和包含在客户租赁721中的数据平面vcn 718之间的通信。计算实例744可以允许在包含在服务租赁719中的控制平面vcn 716中供给的资源被部署或以其它方式用于包含在客户租赁721中的数据平面vcn 718中。
87.在其它示例中,iaas提供商的客户可以具有存在于客户租赁721中的数据库。在这个示例中,控制平面vcn 716可以包括数据平面镜像应用层740,该数据平面镜像应用层740可以包括(一个或多个)应用子网726。数据平面镜像应用层740可以驻留在数据平面vcn718中,但数据平面镜像应用层740可能不在数据平面vcn 718中。换句话说,数据平面镜像应用层740可以访问客户租赁721,但是数据平面镜像应用层740可能不存在于数据平面vcn 718中或者由iaas提供商的客户拥有或操作。数据平面镜像应用层740可以被配置为对数据平面vcn 718进行调用,但可以不被配置为对包含在控制平面vcn 716中的任何实体进行调用。客户可能期望在数据平面vcn 718中部署或以其它方式使用在控制平面vcn 716中供给的资源,并且数据平面镜像应用层740可以促进客户的期望部署或资源的其它使用。
88.在一些实施例中,iaas提供商的客户可以将过滤器应用到数据平面vcn 718。在这个实施例中,客户可以确定数据平面vcn 718可以访问什么,并且客户可以限制从数据平面vcn 718对公共互联网754的访问。iaas提供商可能无法应用过滤器或以其它方式控制数据平面vcn 718对任何外部网络或数据库的访问。客户将过滤器和控制应用到包含在客户租赁721中的数据平面vcn 718上可以帮助将数据平面vcn 718与其它客户和公共互联网754隔离开。
89.在一些实施例中,云服务756可以由服务网关736调用以访问公共互联网754、控制平面vcn 716或数据平面vcn 718上可能不存在的服务。云服务756与控制平面vcn 716或数据平面vcn 718之间的连接可以不是实时的或连续的。云服务756可以存在于由iaas提供商拥有或操作的不同网络上。云服务756可以被配置为接收来自服务网关736的调用并且可以被配置为不接收来自公共互联网754的调用。一些云服务756可以与其它云服务756隔离,并且控制平面vcn 716可以与可能与控制平面vcn 716不在同一区域的云服务756隔离。例如,控制平面vcn 716可能位于“区域1”,并且云服务“部署6”可能位于区域1和“区域2”。如果包含在位于区域1中的控制平面vcn 716中的服务网关736对部署6进行调用,那么该调用可以被传输到区域1中的部署6。在这个示例中,控制平面vcn 716或区域1中的部署6可能不与区域2中的部署6通信地耦合或以其它方式通信。
90.图8是图示根据至少一个实施例的iaas体系架构的另一个示例模式的框图800。服务运营商802(例如,图6的服务运营商602)可以通信地耦合到安全主机租赁804(例如,图6的安全主机租赁604),该安全主机租赁804可以包括虚拟云网络(vcn)806(例如,图6的vcn 606)和安全主机子网808(例如,图6的安全主机子网608)。vcn 806可以包括lpg 810(例如,图6的lpg 610),该vcn 806可以经由包含在ssh vcn 812(例如,图6的ssh vcn 612)中的lpg 810通信地耦合到ssh vcn 812。ssh vcn 812可以包括ssh子网814(例如,图6的ssh子网614),并且ssh vcn 812可以经由包含在控制平面vcn 816(例如,图6的控制平面vcn 616)中的lpg 810通信地耦合到控制平面vcn 816并且经由包含在数据平面vcn 818(例如,图6的数据平面618)中的lpg 810通信地耦合到数据平面vcn 818。控制平面vcn 816和数据平面vcn 818可以包含在服务租赁819(例如,图6的服务租赁619)中。
91.控制平面vcn 816可以包括可以包括(一个或多个)负载平衡器(lb)子网822(例如,图6的(一个或多个)lb子网622)的控制平面dmz层820(例如,图6的控制平面dmz层620)、可以包括(一个或多个)应用子网826(例如,类似于图6的(一个或多个)应用子网626)的控制平面应用层824(例如,图6的控制平面应用层624)、可以包括(一个或多个)db子网830的控制平面数据层828(例如,图6的控制平面数据层628)。包含在控制平面dmz层820中的(一个或多个)lb子网822可以通信地耦合到包含在控制平面应用层824中的(一个或多个)应用子网826和可以包含在控制平面vcn 816中的互联网网关834(例如,图6的互联网网关634),并且(一个或多个)应用子网826可以通信地耦合到包含在控制平面数据层828中的(一个或多个)db子网830以及服务网关836(例如,图6的服务网关)和网络地址转换(nat)网关838(例如,图6的nat网关638)。控制平面vcn 816可以包括服务网关836和nat网关838。
92.数据平面vcn 818可以包括数据平面应用层846(例如,图6的数据平面应用层646)、数据平面dmz层848(例如,图6的数据平面dmz层648),以及数据平面数据层850(例如,图6的数据平面数据层650)。数据平面dmz层848可以包括可以通信地耦合到数据平面应用层846的(一个或多个)可信应用子网860和(一个或多个)不可信应用子网862以及包含在数据平面vcn 818中的互联网网关834的(一个或多个)lb子网822。(一个或多个)可信应用子网860可以通信地耦合到包含在数据平面vcn 818中的服务网关836、包含在数据平面vcn 818中的nat网关838、以及包含在数据平面数据层850中的(一个或多个)db子网830。(一个或多个)不可信应用子网862可以通信地耦合到包含在数据平面vcn 818中的服务网关836和包含在数据平面数据层850中的(一个或多个)db子网830。数据平面数据层850可以包括可以通信地耦合到包含在数据平面vcn 818中的服务网关836的(一个或多个)db子网830。
93.(一个或多个)不可信应用子网862可以包括可以通信地耦合到租户虚拟机(vm)866(1)-(n)的一个或多个主vnic 864(1)-(n)。每个租户vm 866(1)-(n)可以通信地耦合到可以包含在相应容器出口vcn 868(1)-(n)中的相应应用子网867(1)-(n),该相应容器出口vcn 868(1)-(n)可以包含在相应客户租赁870(1)-(n)中。相应辅vnic 872(1)-(n)可以促进包含在数据平面vcn 818中的(一个或多个)不可信应用子网862与包含在容器出口vcn 868(1)-(n)中的应用子网之间的通信。每个容器出口vcn 868(1)-(n)可以包括nat网关838,该nat网关838可以通信地耦合到公共互联网854(例如,图6的公共互联网654)。
94.包含在控制平面vcn 816中以及包含在数据平面vcn 818中的互联网网关834可以通信地耦合到元数据管理服务852(例如,图6的元数据管理系统652),该元数据管理服务
616)中的lpg 910通信地耦合到控制平面vcn 916并且经由包含在数据平面vcn 918(例如,图6的数据平面618)中的lpg 910通信地耦合到数据平面vcn 918。控制平面vcn 916和数据平面vcn 918可以包含在服务租赁919(例如,图6的服务租赁619)中。
101.控制平面vcn 916可以包括可以包括(一个或多个)lb子网922(例如,图6的(一个或多个)lb子网622)的控制平面dmz层920(例如,图6的控制平面dmz层620)、可以包括(一个或多个)应用子网926(例如,图6的(一个或多个)应用子网626)的控制平面应用层924(例如,图6的控制平面应用层624)、可以包括(一个或多个)db子网930(例如,图8的(一个或多个)db子网830)的控制平面数据层928(例如,图6的控制平面数据层628)。包含在控制平面dmz层920中的(一个或多个)lb子网922可以通信地耦合到包含在控制平面应用层924中的(一个或多个)应用子网926和可以包含在控制平面vcn 916中的互联网网关934(例如,图6的互联网网关634),并且(一个或多个)应用子网926可以通信地耦合到包含在控制平面数据层928中的(一个或多个)db子网930以及服务网关936(例如,图6的服务网关)和网络地址转换(nat)网关938(例如,图6的nat网关638)。控制平面vcn 916可以包括服务网关936和nat网关938。
102.数据平面vcn 918可以包括数据平面应用层946(例如,图6的数据平面应用层646)、数据平面dmz层948(例如,图6的数据平面dmz层648))、以及数据平面数据层950(例如,图6的数据平面数据层650)。数据平面dmz层948可以包括可以通信地耦合到数据平面应用层946的(一个或多个)可信应用子网960(例如,图8的(一个或多个)可信应用子网860)和(一个或多个)不可信应用子网962(例如,图8的(一个或多个)不可信应用子网862)以及包含在数据平面vcn 918中的互联网网关934的(一个或多个)lb子网922。(一个或多个)可信应用子网960可以通信地耦合到包含在数据平面vcn 918中的服务网关936、包含在数据平面vcn 918中的nat网关938以及包含在数据平面数据层950中的(一个或多个)db子网930。(一个或多个)不可信应用子网962可以通信地耦合到包含在数据平面vcn 918中的服务网关936和包含在数据平面数据层950中的(一个或多个)db子网930。数据平面数据层950可以包括可以通信地耦合到包含在数据平面vcn 918中的服务网关936的(一个或多个)db子网930。
103.(一个或多个)不可信应用子网962可以包括可以通信地耦合到驻留在(一个或多个)不可信应用子网962内的租户虚拟机(vm)966(1)-(n)的主vnic 964(1)-(n)。每个租户vm 966(1)-(n)可以运行相应容器967(1)-(n)中的代码,并且可通信地耦合到可以包含在数据平面应用层946中的应用子网926,该数据平面应用层946可以包含在容器出口vcn 968中。相应辅vnic 972(1)-(n)可以促进包含在数据平面vcn 918中的(一个或多个)不可信应用子网962和包含在容器出口vcn 968中的应用子网之间的通信。容器出口vcn可以包括可以通信地耦合到公共互联网954(例如,图6的公共互联网654)的nat网关938。
104.包含在控制平面vcn 916中以及包含在数据平面vcn 918中的互联网网关934可以通信地耦合到元数据管理服务952(例如,图6的元数据管理系统652),该元数据管理服务952可以通信地耦合到公共互联网954。公共互联网954可以通信地耦合到包含在控制平面vcn 916中以及包含在数据平面vcn 918中的nat网关938。包含在控制平面vcn 916中以及包含在数据平面vcn 918中的服务网关936可以通信地耦合到云服务956。
105.在一些示例中,图9的框图900的体系架构所示的模式可以被认为是图8的框图800
的体系架构所示的模式的例外,并且在iaas提供商不能直接与客户通信(例如,断开连接的区域)的情况下,这种模式可能是iaas提供商的客户所期望的。客户可以实时访问每个客户的包含在vm 966(1)-(n)中的相应容器967(1)-(n)。容器967(1)-(n)可以被配置为对包含在数据平面应用层946的(一个或多个)应用子网926中的相应辅vnic 972(1)-(n)进行调用,该数据平面应用层946可以包含在容器出口vcn 968中。辅vnic 972(1)-(n)可以将调用传输到nat网关938,该nat网关938可以将调用传输到公共互联网954。在这个示例中,可以由客户实时访问的容器967(1)-(n)可以与控制平面vcn 916隔离,并且可以与包含在数据平面vcn 918中的其它实体隔离。容器967(1)-(n)也可以与来自其它客户的资源隔离。
106.在其它示例中,客户可以使用容器967(1)-(n)来调用云服务956。在这个示例中,客户可以运行容器967(1)-(n)中的从云服务956请求服务的代码。容器967(1)-(n)可以将该请求传输到辅vnic 972(1)-(n),该辅vnic 972(1)-(n)可以将请求传输到nat网关,该nat网关可以将请求传输到公共互联网954。公共互联网954可以经由互联网网关934将请求传输到包含在控制平面vcn 916中的(一个或多个)lb子网922。响应于确定请求有效,(一个或多个)lb子网可以将请求传输到(一个或多个)应用子网926,该(一个或多个)应用子网926可以经由服务网关936将请求传输到云服务956。
107.应当认识到的是,各图中描绘的iaas体系架构600、700、800、900可以具有除所描绘的组件之外的其它组件。另外,各图中所示的实施例仅仅是可以结合本公开的实施例的云基础设施系统的一些示例。在一些其它实施例中,iaas系统可以具有比各图中所示更多或更少的组件、可以组合两个或更多个组件,或者可以具有不同的组件布置或配置。
108.在某些实施例中,本文描述的iaas系统可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式交付给客户的应用套件、中间件和数据库服务产品。此类iaas系统的示例是本受让方提供的oracle云基础设施(oci)。
109.图10图示了其中可以实现本公开的各种实施例的示例计算机系统1000。系统1000可以用于实现上述任何计算机系统。如图所示,计算机系统1000包括经由总线子系统1002与多个外围子系统通信的处理单元1004。这些外围子系统可以包括处理加速单元1006、i/o子系统1008、存储子系统1018和通信子系统1024。存储子系统1018包括有形计算机可读存储介质1022和系统存储器1010。
110.总线子系统1002提供用于让计算机系统1000的各种部件和子系统按意图彼此通信的机制。虽然总线子系统1002被示意性地示出为单条总线,但是总线子系统的替代实施例可以利用多条总线。总线子系统1002可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(isa)总线、微通道体系架构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)局部总线和外围部件互连(pci)总线,其可以被实现为按ieee p1386.1标准制造的mezzanine总线。
111.可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1004控制计算机系统1000的操作。一个或多个处理器可以被包括在处理单元1004中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元1004可以被实现为一个或多个独立的处理单元1032和/或1034,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元1004也可以被实现为通过将两个双核处理器集成到单个芯片中形成
的四核处理单元。
112.在各种实施例中,处理单元1004可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器1004中和/或存储子系统1018中。通过适当的编程,(一个或多个)处理器1004可以提供上述各种功能。计算机系统1000可以附加地包括处理加速单元1006,其可以包括数字信号处理器(dsp)、专用处理器,等等。
113.i/o子系统1008可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括例如运动感测和/或手势识别设备,诸如microsoft运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为去往输入设备(例如,google)的输入的google眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,导航器)交互的语音识别感测设备。
114.用户接口输入设备也可以包括但不限于三维(3d)鼠标、操纵杆或指向棒、游戏面板和绘图板、以及音频/视频设备,诸如扬声器、数码相机、数码摄录机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3d扫描仪、3d打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括例如医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括例如音频输入设备,诸如midi键盘、数字乐器等。
115.用户接口输出设备可以包括显示子系统、指示灯,或者诸如音频输出设备的非可视显示器等。显示子系统可以是阴极射线管(crt)、诸如使用液晶显示器(lcd)或等离子显示器的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用意在包括用于从计算机系统1000向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备、以及调制解调器。
116.计算机系统1000可以包括包含软件元件、被示为当前位于系统存储器1010内的存储子系统1018。系统存储器1010可以存储在处理单元1004上可执行且可加载的程序指令,以及在这些程序的执行期间所产生的数据。
117.取决于计算机系统1000的配置和类型,系统存储器1010可以是易失性的(诸如随机存取存储器(ram))和/或非易失性的(诸如只读存储器(rom)、闪存存储器等)。ram通常包含可被处理单元1004立即访问和/或目前正被处理单元1004操作和执行的数据和/或程序模块。在一些实施方案中,系统存储器1010可以包括多种不同类型的存储器,诸如静态随机存取存储器(sram)或动态随机存取存储器(dram)。在一些实施方案中,包含有助于在诸如启动期间在计算机系统1000内的元件之间传送信息的基本例程的基本输入/输出系统
(bios)通常可以被存储在rom中。作为示例而非限制,系统存储器1010也示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理系统(rdbms)等的应用程序1012、程序数据1014、以及操作系统1016。作为示例,操作系统1016可以包括各种版本的microsoftapple和/或linux操作系统、各种可商业获得的或类unix操作系统(包括但不限于各种gnu/linux操作系统、googleos等)和/或诸如ios、phone、os、10os和os操作系统的移动操作系统。
118.存储子系统1018也可以提供用于存储提供一些实施例的功能的基本编程和数据构造的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子系统1018中。这些软件模块或指令可以被处理单元1004执行。存储子系统1018也可以提供用于存储根据本公开使用的数据的储存库。
119.存储子系统1000也可以包括可被进一步连接到计算机可读存储介质1022的计算机可读存储介质读取器1020。与系统存储器1010一起,并且可选地与其相结合,计算机可读存储介质1022可以全面地表示用于临时和/或更持久地包含、存储、传输和检索计算机可读信息的远程、本地、固定和/或可移除的存储设备加存储介质。
120.包含代码或代码的部分的计算机可读存储介质1022也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于:以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除的介质。这可以包括有形的计算机可读存储介质,诸如ram、rom、电可擦除可编程rom(eeprom)、闪存存储器或其它存储器技术、cd-rom、数字多功能盘(dvd)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输、或者可以用于传输期望信息并且可以被计算系统1000访问的任何其它介质。
121.举例来说,计算机可读存储介质1022可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如cd rom、dvd和blu-盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质1022可以包括但不限于:驱动器、闪存卡、通用串行总线(usb)闪存驱动器、安全数字(sd)卡、dvd盘、数字视频带等。计算机可读存储介质1022也可以包括基于非易失性存储器的固态驱动器(ssd)(诸如基于闪存存储器的ssd、企业闪存驱动器、固态rom等)、基于易失性存储器的ssd(诸如基于固态ram、动态ram、静态ram、dram的ssd)、磁阻ram(mram)ssd、以及使用基于dram的ssd和基于闪存存储器的ssd的组合的混合ssd。盘驱动器及其关联的计算机可读介质可以为计算机系统1000提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
122.通信子系统1024提供到其它计算机系统和网络的接口。通信子系统1024用作用于从其它系统接收数据和从计算机系统1000向其它系统传输数据的接口。例如,通信子系统1024可以使计算机系统1000能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统1024可以包括用于访问无线语音和/或数据网络的射频(rf)收发器部件(例如,使用蜂窝电话技术、诸如3g、4g或edge(用于全球演进的增强型数据速率)的先进数据网络技
术、wifi(ieee 802.11系列标准)、或其它移动通信技术、或其任何组合)、全球定位系统(gps)接收器部件和/或其它部件。在一些实施例中,通信子系统1024可以提供有线网络连接(例如,以太网),作为无线接口的附加或者替代。
123.在一些实施例中,通信子系统1024也可以代表可以使用计算机系统1000的一个或多个用户接收结构化和/或非结构化的数据馈送1026、事件流1028、事件更新1030等形式的输入通信。
124.举例来说,通信子系统1024可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送1026,诸如馈送、更新、诸如丰富站点摘要(rss)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
125.此外,通信子系统1024也可以被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1028和/或事件更新1030。生成连续数据的应用的示例可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
126.通信子系统1024也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送1026、事件流1028、事件更新1030等,该一个或多个数据库可以与耦合到计算机系统1000的一个或多个流式传输数据源计算机进行通信。
127.计算机系统1000可以是各种类型之一,包括手持便携式设备(例如,蜂窝电话、计算平板电脑、pda)、可穿戴设备(例如,glass头戴式显示器)、pc、工作站、大型机、信息站、服务器机架、或任何其它数据处理系统。
128.由于计算机和网络的不断变化的本质,在图中绘出的计算机系统1000的描述仅仅旨在作为具体的示例。具有比图中绘出的系统更多或更少部件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元素可以用硬件、固件、软件(包括小应用程序(applets))或组合来实现。另外,也可以采用到诸如网络输入/输出设备之类的其它计算设备的连接。基于本文提供的公开内容和教导,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
129.术语云服务一般用于指由云服务提供商(csp)使用由csp提供的系统和基础设施(云基础设施)按需(例如,经由订阅模型)向用户或客户提供的服务。通常,构成csp的基础设施的服务器和系统与客户自己的本地部署的服务器和系统是分开的。因此,客户可以自身利用由csp提供的云服务,而无需为服务购买单独的硬件和软件资源。云服务被设计为向订阅客户提供对应用和计算资源的简单、可扩展的访问,而无需客户投资获得用于提供服务的基础设施。
130.存在若干云服务提供商供应各种类型的云服务。存在各种不同类型或模型的云服务,包括软件即服务(saas)、平台即服务(paas)、基础设施即服务(iaas)等。
131.客户可以订阅由csp提供的一个或多个云服务。客户可以是任何实体,诸如个人、组织、企业等。当客户订阅或注册由csp提供的服务时,将为该客户创建租赁或账户。然后,客户可以经由这个账户访问与该账户相关联的订阅的一个或多个云资源。
132.如上所述,基础设施即服务(iaas)是一种特定类型的云计算服务。在iaas模型中,csp提供基础设施(称为云服务提供商基础设施或cspi),这些基础设施可以被客户使用来
构建他们自己的可定制网络并部署客户资源。因此,客户的资源和网络由csp提供的基础设施托管在分布式环境中。这与传统计算不同,在传统计算中,在传统计算中,客户的资源和网络由客户提供的基础设施托管。
133.cspi可以包括形成物理网络的互连的高性能计算资源,包括各种主机机器、存储器资源和网络资源,该物理网络也被称为基板网络或底层网络。cspi中的资源可以散布在一个或多个数据中心上,该一个或多个数据中心可以在地理上散布在一个或多个地理地区上。虚拟化软件可以由这些物理资源执行以提供虚拟化的分布式环境。虚拟化在物理网络上创建覆盖网络(也称为基于软件的网络、软件定义的网络或虚拟网络)。cspi物理网络为在物理网络之上创建一个或多个覆盖或虚拟网络提供了底层基础。虚拟或覆盖网络可以包括一个或多个虚拟云网络(vcn)。虚拟网络是使用软件虚拟化技术实现的(例如,管理程序、由网络虚拟化设备(nvd)(例如,smartnic)执行的功能、架顶式(tor)交换机、实现由nvd执行的一个或多个功能的智能tor、以及其它机制)以创建可以在物理网络之上运行的网络抽象的层。虚拟网络可以采用多种形式,包括对等网络、ip网络等。虚拟网络通常是层3ip网络或者层2vlan。这种虚拟或覆盖联网的方法常常被称为虚拟或覆盖层3联网。为虚拟网络开发的协议的示例包括ip-in-ip(或通用路由封装(gre))、虚拟可扩展lan(vxlan—ietf rfc 7348)、虚拟专用网络(vpn)(例如,mpls层3虚拟专用网络(rfc4364))、vmware的nsx、geneve(通用网络虚拟化封装)等。
134.对于iaas,由csp提供的基础设施(cspi)可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在iaas模型中,云计算服务提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,iaas提供商还可以供应各种服务来伴随这些基础设施组件(例如,计费、监视、日志记录、安全性、负载平衡和聚类等)。因此,由于这些服务可以是策略驱动的,因此iaas用户可以能够实现策略来驱动负载平衡以维持应用可用性和性能。cspi提供基础设施和互补云服务的集合,这使得客户能够在高度可用的被托管的分布式环境中构建和运行广泛的应用和服务。cspi在可从各种联网位置(诸如从客户的本地部署网络)安全访问的灵活的虚拟网络中供应高性能计算资源和能力以及存储容量。当客户订阅或注册由csp提供的iaas服务时,为该客户创建的租赁是cspi内的安全且隔离的分区,客户可以在其中创建、组织和管理他们的云资源。
135.客户可以使用由cspi提供的计算、存储器和联网资源来构建他们自己的虚拟网络。可以在这些虚拟网络上部署一个或多个客户资源或工作负载,诸如计算实例。例如,客户可以使用由cspi提供的资源来构建一个或多个可定制且私有的虚拟网络,称为虚拟云网络(vcn)。客户可以在客户vcn上部署一个或多个客户资源,诸如计算实例。计算实例可以采用虚拟机、裸机实例等形式。因此,cspi提供基础设施和互补云服务的集合,这使得客户能够在高度可用的虚拟托管环境中构建和运行广泛的应用和服务。客户不管理或控制由cspi提供的底层物理资源,但可以控制操作系统、存储装置和已部署的应用;并且可能对所选择的联网组件(例如,防火墙)进行有限的控制。
136.csp可以提供控制台,该控制台使得客户和网络管理员能够使用cspi资源来配置、访问和管理部署在云中的资源。在某些实施例中,控制台提供可以被用于访问和管理cspi的基于web的用户界面。在某些实施方式中,控制台是由csp提供的基于web的应用。
137.cspi可以支持单租赁或多租赁体系架构。在单租赁体系架构中,软件(例如,应用、数据库)或硬件组件(例如,主机机器或服务器)服务于单个客户或租户。在多租赁体系架构中,软件或硬件组件服务于多个客户或租户。因此,在多租赁体系架构中,cspi资源在多个客户或租户之间共享。在多租赁情况下,在cspi内采取预防措施并实施保护措施,以确保每个租户的数据都是隔离的并且对其他租户保持不可见。
138.在物理网络中,网络端点(“端点”)是指连接到物理网络并与其所连接的网络来回通信的计算设备或系统。物理网络中的网络端点可以连接到局域网(lan)、广域网(wan)或其它类型的物理网络。物理网络中传统端点的示例包括调制解调器、集线器、桥接器、交换机、路由器和其它联网设备、物理计算机(或主机机器)等。物理网络中的每个物理设备都有可以被用于与设备通信的固定网络地址。这个固定网络地址可以是层2地址(例如,mac地址)、固定的层3地址(例如,ip地址)等。在虚拟化环境或虚拟网络中,端点可以包括各种虚拟端点,诸如由物理网络的组件托管(例如,由物理主机机器托管)的虚拟机。虚拟网络中的这些端点由覆盖地址寻址,其中覆盖地址诸如覆盖层2地址(例如,覆盖mac地址)和覆盖层3地址(例如,覆盖ip地址)。网络覆盖通过允许网络管理者使用软件管理(例如,经由实现用于虚拟网络的控制平面的软件)在与网络端点相关联的覆盖地址周围移动来实现灵活性。因而,与物理网络不同,在虚拟网络中,可以使用网络管理软件将覆盖地址(例如,覆盖ip地址)从一个端点移动到另一个端点。由于虚拟网络构建在物理网络之上,因此虚拟网络中组件之间的通信涉及虚拟网络和底层物理网络两者。为了促进此类通信,cspi的组件被配置为学习和存储将虚拟网络中的覆盖地址映射到基板网络中的实际物理地址的映射,反之亦然。然后使用这些映射来促进通信。客户业务被封装以促进在虚拟网络中的路由。
139.因而,物理地址(例如,物理ip地址)与物理网络中的组件相关联,并且覆盖地址(例如,覆盖ip地址)与虚拟网络中的实体相关联。物理ip地址和覆盖ip地址两者都是真实ip地址的类型。这些与虚拟ip地址是分开的,其中虚拟ip地址映射到多个真实ip地址。虚拟ip地址提供虚拟ip地址与多个真实ip地址之间的一对多映射。
140.云基础设施或cspi在物理上托管在世界上一个或多个地区的一个或多个数据中心中。cspi可以包括物理或基板网络中的组件和位于构建在物理网络组件之上的虚拟网络中的虚拟化组件(例如,虚拟网络、计算实例、虚拟机等)。在某些实施例中,cspi在领域(realm)、地区(region)和可用性域(availability domain)中被组织和托管。地区通常是包含一个或多个数据中心的局部化的地理区域。地区一般彼此独立并且可以相隔很远,例如,跨越国家甚至大陆。例如,第一个地区可以在澳大利亚,另一个在日本,又一个在印度,等等。cspi资源在地区之间划分,使得每个地区都有自己独立的cspi资源子集。每个地区可以提供核心基础设施服务和资源的集合,诸如计算资源(例如,裸机服务器、虚拟机、容器和相关基础设施等);存储资源(例如,块卷存储装置、文件存储装置、对象存储装置、归档存储装置);联网资源(例如,虚拟云网络(vcn)、负载平衡资源、与本地部署网络的连接)、数据库资源;边缘联网资源(例如,dns);以及访问管理和监视资源等。每个地区一般都有多条路径将其连接到领域中的其它地区。
141.一般而言,应用被部署在它被最频繁使用的地区中(即,部署在与该地区相关联的基础设施上),因为使用附近的资源比使用远处的资源更快。应用也可以出于各种原因而部署在不同的地区,诸如冗余以减轻地区范围内事件(诸如大型天气系统或地震)的风险,以
满足法律管辖区、税域和其它商业或社会标准等的不同要求。
142.地区内的数据中心可以被进一步组织和细分为可用性域(ad)。可用性域可以与位于地区内的一个或多个数据中心对应。地区可以由一个或多个可用性域组成。在这种分布式环境中,cspi资源是特定于地区的(诸如虚拟云网络(vcn)),或者是特定于可用性域的(诸如计算实例)。
143.地区内的ad彼此隔离,具有容错能力,并且被配置为使得它们极不可能同时发生故障。这是通过ad不共享关键基础设施资源(诸如联网、物理线缆、线缆路径、线缆入口点等)来实现的,使得地区内的一个ad处的故障不太可能影响同一地区内其它ad的可用性。同一地区内的ad可以通过低时延、高带宽网络彼此连接,这使得为其它网络(例如,互联网、客户的本地部署网络等)提供高可用性连接并且在多个ad中构建复制系统以实现高可用性和灾难恢复成为可能。云服务使用多个ad来确保高可用性并防止资源故障。随着iaas提供商提供的基础设施的增长,可以添加更多地区和ad以及附加的容量。可用性域之间的业务通常是加密的。
144.在某些实施例中,地区被分组为领域。领域是地区的逻辑集合。领域彼此隔离并且不共享任何数据。同一领域中的地区可以彼此通信,但不同领域中的地区不能通信。客户与csp的租赁或账户存在于单个领域中,并且可以散布在属于该领域的一个或多个地区中。通常,当客户订阅iaas服务时,会在领域内客户指定的地区(称为“主(home)”地区)中为该客户创建租赁或账户。客户可以将客户的租赁扩展到领域内的一个或多个其它地区。客户无法访问不在客户的租赁所在领域中的地区。
145.iaas提供商可以提供多个领域,每个领域迎合客户或用户的特定集合。例如,可以为商业客户提供商业领域。作为另一个示例,可以为特定国家为该国家内的客户提供领域。作为又一个示例,可以为政府等提供政府领域。例如,政府领域可以迎合特定政府并且可以具有比商业领域更高的安全性级别。例如,oracle云基础设施(oracle cloud infrastructure,oci)目前为商业地区提供领域,并且为政府云地区提供两个领域(例如,fedramp授权的和il5授权的)。
146.在某些实施例中,ad可以被细分成一个或多个故障域。故障域是ad内的基础设施资源的分组,以提供反亲和性。故障域允许计算实例的分布,使得这些实例不位于单个ad内的相同物理硬件上。这被称为反亲和性。故障域是指共享单点故障的硬件组件(计算机、交换机等)的集合。计算池在逻辑上被划分为故障域。因此,影响一个故障域的硬件故障或计算硬件维护事件不影响其它故障域中的实例。用于每个ad的故障域的数量可以因实施例而异。例如,在某些实施例中,每个ad包含三个故障域。故障域充当ad内的逻辑数据中心。
147.当客户订阅iaas服务时,来自cspi的资源被供应给客户并与客户的租赁相关联。客户可以使用这些供应的资源来构建私有网络并在这些网络上部署资源。由cspi在云中托管的客户网络被称为虚拟云网络(vcn)。客户可以使用为客户分配的cspi资源来设置一个或多个虚拟云网络(vcn)。vcn是虚拟或软件定义的私有网络。部署在客户的vcn中的客户资源可以包括计算实例(例如,虚拟机、裸机实例)和其它资源。这些计算实例可以表示各种客户工作负载,诸如应用、负载平衡器、数据库等。部署在vcn上的计算实例可以通过公共网络(诸如互联网)与公共可访问端点(“公共端点”)、与同一vcn或其它vcn(例如,客户的其它vcn或不属于该客户的vcn)中的其它实例、与客户的本地部署数据中心或网络、以及与服务
端点和其它类型的端点进行通信。
148.csp可以使用cspi来提供各种服务。在一些情况下,cspi的客户本身可以像服务提供商一样起作用并使用cspi资源来提供服务。服务提供商可以暴露服务端点,该服务端点由标识信息(例如,ip地址、dns名称和端口)表征。客户的资源(例如,计算实例)可以通过访问由服务针对特定服务暴露的服务端点来消耗该特定服务。这些服务端点一般是用户经由公共通信网络(诸如互联网)使用与端点相关联的公共ip地址可公共访问的端点。可公共访问的网络端点有时也称为公共端点。
149.在某些实施例中,服务提供商可以经由用于服务的端点(有时称为服务端点)来暴露服务。服务的客户然后可以使用这个服务端点来访问服务。在某些实施方式中,为服务提供的服务端点可以由打算消耗该服务的多个客户访问。在其它实施方式中,可以为客户提供专用服务端点,使得只有该客户可以使用该专用服务端点来访问服务。
150.在某些实施例中,当创建vcn时,它与私有覆盖无类域间路由(cidr)地址空间相关联,该地址空间是指派给vcn的一系列私有覆盖ip地址(例如,10.0/16)。vcn包括相关联的子网、路由表和网关。vcn驻留在单个地区内,但可以跨越该区域的可用性域中的一个或多个或全部。网关是为vcn配置的虚拟接口并且启用去往vcn或从cvn到vcn外部的一个或多个端点的业务的通信。可以为vcn配置一种或多种不同类型的网关,以启用去往和来自不同类型端点的通信。
151.vcn可以被细分为一个或多个子网络,诸如一个或多个子网。因此,子网是可以在vcn内创建的配置的单元或细分。vcn可以具有一个或多个子网。vcn内的每个子网都与连续范围的覆盖ip地址(例如,10.0.0.0/24和10.0.1.0/24)相关联,这些ip地址不与该vcn中的其它子网重叠并且表示vcn的地址空间内的地址空间子集。
152.每个计算实例都与虚拟网络接口卡(vnic)相关联,这使得计算实例能够参与vcn的子网。vnic是物理网络接口卡(nic)的逻辑表示。一般而言,vnic是实体(例如,计算实例、服务)与虚拟网络之间的接口。vnic存在于子网中,具有一个或多个相关联的ip地址,以及相关联的安全性规则或策略。vnic相当于交换机上的层2端口。vnic附接到计算实例和vcn内的子网。与计算实例相关联的vnic使得计算实例能够成为vcn的子网的一部分,并且使得计算实例能够与和计算实例位于同一子网上的端点、与vcn中的不同子网中的端点、或者与vcn外部的端点进行通信(例如,发送和接收分组)。因此,与计算实例相关联的vnic确定计算实例如何与vcn内部和外部的端点连接。当创建计算实例并将其添加到vcn内的子网时,创建用于计算实例的vnic并将其与该计算实例相关联。对于包括计算实例的集合的子网,该子网包含与计算实例的该集合对应的vnic,每个vnic附接到计算机实例的该集合内的计算实例。
153.经由与计算实例相关联的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地址的地址。
154.在某些实施例中,除了私有覆盖ip地址之外,计算实例还可以可选地被指派附加的覆盖ip地址,诸如例如在公共子网中的情况下的一个或多个公共ip地址。这些多个地址在同一个vnic上或者在与计算实例相关联的多个vnic上被指派。但是,每个实例具有主vnic,该主vnic是在实例启动期间创建的并且与指派给该实例的覆盖私有ip地址相关联—这个主vnic无法被移除。称为辅vnic的附加vnic可以添加到与主vnic相同的可用性域中的现有实例。所有vnic都在与该实例相同的可用性域中。辅vnic可以位于与主vnic相同的vcn中的子网中,或者位于同一vcn或不同vcn中的不同子网中。
155.如果计算实例在公共子网中,那么可以可选地为其指派公共ip地址。在创建子网时,可以将子网指定为公共子网或者私有子网。私有子网意味着子网中的资源(例如,计算实例)和相关联的vnic不能具有公共覆盖ip地址。公共子网意味着子网中的资源和相关联的vnic可以具有公共ip地址。客户可以指定子网存在于单个可用性域中,或者跨地区或领域中的多个可用性域存在。
156.如上所述,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地址。
157.在一些其它实施例中,vcn内的每个子网可以具有其自己的相关联的vr,该vr可由子网使用与vr相关联的保留或默认ip地址进行寻址。例如,保留或默认的ip地址可以是与该子网相关联的ip地址范围中的第一个ip地址。子网中的vnic可以使用这个默认或保留的ip地址与和子网相关联的vr进行通信(例如,发送和接收分组)。在这种实施例中,vr是该子网的入口/出口点。与vcn内的子网相关联的vr可以与和vcn内的其它子网相关联的其它vr进行通信。vr还可以与和vcn相关联的网关进行通信。子网的vr功能在为子网中的vnic执行vnic功能的一个或多个nvd上运行或由该一个或多个nvd执行。
158.可以为vcn配置路由表、安全性规则和dhcp选项。路由表是用于vcn的虚拟路由表并且包括通过网关或特殊配置的实例将业务从vcn内的子网路由到vcn外的目的地的规则。可以定制vcn的路由表以控制分组如何转发/路由到vcn和从vcn转发/路由。dhcp选项是指在实例启动时自动提供给实例的配置信息。
159.为vcn配置的安全性规则表示用于vcn的覆盖防火墙规则。安全性规则可以包括入
口和出口规则,并指定允许进出vcn实例内的业务的类型(例如,基于协议和端口)。客户可以选择给定规则是有状态的还是无状态的。例如,客户可以通过用源cidr0.0.0.0/0和目的地tcp端口22设置有状态入口规则来允许来自任何地方的传入ssh业务到实例的集合。安全性规则可以使用网络安全性组或安全性列表来实现。网络安全性组由仅适用于该组中的资源的安全性规则的集合组成。另一方面,安全性列表包括适用于使用该安全性列表的任何子网中的所有资源的规则。vcn可以设置有带有默认安全性规则的默认安全性列表。为vcn配置的dhcp选项提供配置信息,该配置信息在实例启动时自动被提供给vcn中的实例。
160.在某些实施例中,用于vcn的配置信息由vcn控制平面确定和存储。例如,用于vcn的配置信息可以包括关于以下的信息:与vcn相关联的地址范围、vcn内的子网和相关联的信息、与vcn相关联的一个或多个vr、vcn中的计算实例和相关联的vnic、执行与vcn相关联的各种虚拟化网络功能(例如,vnic、vr、网关)的nvd、用于vcn的状态信息以及其它vcn相关信息。在某些实施例中,vcn分发服务向nvd发布由vcn控制平面或其部分存储的配置信息。分发的信息可以被用于更新由nvd存储和使用的信息(例如,转发表、路由表等),以将分组转发到vcn中的计算实例或从计算实例转发分组。
161.在某些实施例中,vcn和子网的创建由vcn控制平面(cp)处置并且计算实例的启动由计算控制平面处置。计算控制平面负责为计算实例分配物理资源,然后调用vcn控制平面来创建vnic并将其附接到计算实例。vcn cp还将vcn数据映射发送到被配置为执行分组转发和路由功能的vcn数据平面。
162.客户可以使用由cspi托管的资源创建一个或多个vcn。部署在客户vcn上的计算实例可以与不同的端点进行通信。这些端点可以包括由cspi托管的端点和cspi外部的端点。
163.图11、图12、图13、图14和图15中描绘了用于使用cspi实现基于云的服务的各种不同体系架构,并且在下文中进行描述。图11是分布式环境1100的高级别图,示出了根据某些实施例的由cspi托管的覆盖或客户vcn。图11中描绘的分布式环境包括覆盖网络中的多个组件。图11中描绘的分布式环境1100仅仅是个示例,并且不旨在不适当地限制要求保护的实施例的范围。许多变化、替代和修改是可能的。例如,在一些实施方式中,图11中描绘的分布式环境可以具有比图11中所示的系统或组件更多或更少的系统或组件,可以组合两个或更多个系统,或者可以具有不同的系统配置或布置。
164.如图11中描绘的示例中所示,分布式环境1100包括提供服务和资源的cspi 1101,客户可以订阅并使用这些服务和资源来构建他们的虚拟云网络(vcn)。在某些实施例中,cspi 1101向订阅客户供应iaas服务。cspi 1101内的数据中心可以被组织到一个或多个地区。图11中示出了一个示例地区“地区us”1102。客户已经为地区1102配置了客户vcn 1104。客户可以在vcn 1104上部署各种计算实例,其中计算实例可以包括虚拟机或裸机实例。实例的示例包括应用、数据库、负载平衡器等。
165.在图11中描绘的实施例中,客户vcn 1104包括两个子网,即,“子网-1”和“子网-2”,每个子网具有其自己的cidr ip地址范围。在图11中,子网-1的覆盖ip地址范围是10.0/16,并且子网-2的地址范围是10.1/16。vcn虚拟路由器1105表示用于vcn的逻辑网关,它启用vcn 1104的子网之间以及与vcn外部的其它端点的通信。vcn vr 1105被配置为在vcn 1104中的vnic与和vcn 1104相关联的网关之间路由业务。vcn vr 1105为vcn 1104的每个子网提供端口。例如,vr 1105可以为子网-1提供具有ip地址10.0.0.1的端口并为子网-2提
供具有ip地址10.1.0.1的端口。
166.可以在每个子网上部署多个计算实例,其中计算实例可以是虚拟机实例和/或裸机实例。子网中的计算实例可以由cspi 1101内的一个或多个主机机器托管。计算实例经由与计算实例相关联的vnic参与子网。例如,如图11中所示,计算实例c1经由与计算实例相关联的vnic成为子网-1的一部分。同样,计算实例c2经由与c2相关联的vnic成为子网-1的一部分。以类似的方式,多个计算实例(可以是虚拟机实例或裸机实例)可以是子网-1的一部分。经由其相关联的vnic,每个计算实例都被指派私有覆盖ip地址和mac地址。例如,在图11中,计算实例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 1105的默认路由,该ip地址是用于子网-1的vcn vr 1105的端口的ip地址。
167.子网-2上可以部署有多个计算实例,包括虚拟机实例和/或裸机实例。例如,如图11中所示,计算实例d1和d2经由与相应计算实例相关联的vnic成为子网-2的部分。在图11中所描绘的实施例中,计算实例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 1105的默认路由,该ip地址是用于子网-2的vcn vr 1105的端口的ip地址。
168.vcn a 1104还可以包括一个或多个负载平衡器。例如,可以为子网提供负载平衡器,并且可以将负载平衡器配置为跨子网上的多个计算实例的负载平衡业务。还可以提供负载平衡器以在vcn中跨子网对业务进行负载平衡。
169.部署在vcn 1104上的特定计算实例可以与各种不同的端点通信。这些端点可以包括由cspi 1200托管的端点和cspi 1200外部的端点。由cspi 1101托管的端点可以包括:与特定计算实例位于同一子网上的端点(例如,子网-1中两个计算实例之间的通信);位于不同子网上但位于同一vcn内的端点(例如,子网-1中的计算实例与子网-2中的计算实例之间的通信);同一地区中不同vcn中的端点(例如,子网-1中的计算实例与同一地区中的vcn 1106或1110中的端点之间的通信,子网-1中的计算实例与同一地区中服务网络1110中的端点之间的通信);或不同地区中的vcn中的端点(例如,子网-1中的计算实例与不同地区中的vcn 1108中的端点之间的通信)。由cspi 1101托管的子网中的计算实例也可以与不由cspi 1101托管(即,在cspi 1101外部)的端点进行通信。这些外部端点包括客户的本地部署网络1116中的端点、其它远程云托管网络1118内的端点、经由公共网络(诸如互联网)可访问的公共端点1114及其它端点。
170.使用与源计算实例和目的地计算实例相关联的vnic促进同一子网上的计算实例之间的通信。例如,子网-1中的计算实例c1可能想要将分组发送到子网-1中的计算实例c2。对于源自源计算实例且其目的地是同一子网中的另一个计算实例的分组,该分组首先由与源计算实例相关联的vnic处理。由与源计算实例相关联的vnic执行的处理可以包括根据分组报头确定分组的目的地信息、识别为与源计算实例相关联的vnic配置的任何策略(例如,安全性列表)、确定用于分组的下一跳、根据需要执行任何分组封装/解封装功能,然后将分组转发/路由到下一跳,目的是促进分组到其预期目的地的通信。当目的地计算实例与源计算实例位于同一子网中时,与源计算实例相关联的vnic被配置为识别与目的地计算实例相
关联的vnic并将分组转发到该vnic进行处理。然后执行与目的地计算实例相关联的vnic并将分组转发到目的地计算实例。
171.对于要从子网中的计算实例传送到同一vcn中不同子网中的端点的分组,通过与源和目的地计算实例相关联的vnic以及vcn vr来促进通信。例如,如果图11中子网-1中的计算实例c1想要将分组发送到子网-2中的计算实例d1,那么该分组首先由与计算实例c1相关联的vnic处理。与计算实例c1相关联的vnic被配置为使用默认路由或vcn vr的端口10.0.0.1将分组路由到vcn vr 1105。vcn vr 1105被配置为使用端口10.1.0.1将分组路由到子网-2。然后,与d1相关联的vnic接收并处理分组并且vnic将分组转发到计算实例d1。
172.对于要从vcn 1104中的计算实例传送到vcn 1104外部的端点的分组,通信由与源计算实例相关联的vnic、vcn vr 1105和与vcn 1104相关联的网关促进。一种或多种类型的网关可以与vcn 1104相关联。网关是vcn和另一个端点之间的接口,其中该另一个端点在vcn外部。网关是层3/ip层概念并且使得vcn能够与vcn外部的端点进行通信。因此,网关促进vcn与其它vcn或网络之间的业务流动。可以为vcn配置各种不同类型的网关以促进与不同类型的端点的不同类型的通信。取决于网关,通信可以通过公共网络(例如,互联网)或通过私有网络进行。各种通信协议可以用于这些通信。
173.例如,计算实例c1可能想要与vcn 1104外部的端点通信。分组可以首先由与源计算实例c1相关联的vnic处理。vnic处理确定分组的目的地在c1的子网-1外部。与c1相关联的vnic可以将分组转发到用于vcn 1104的vcn vr 1105。vcn vr 1105然后处理分组,并且作为处理的一部分,基于分组的目的地来确定与vcn 1104相关联的特定网关作为分组的下一跳。然后,vcn vr 1105可以将分组转发到特定的识别出的网关。例如,如果目的地是客户的本地部署网络内的端点,那么分组可以由vcn vr 1105转发到为vcn 1104配置的动态路由网关(drg)网关1122。分组然后可以从网关转发到下一跳,以促进分组到其最终预期目的地的传送。
174.可以为vcn配置各种不同类型的网关。可以为vcn配置的网关的示例在图11中描绘并且在下文进行描述。如图11中描绘的实施例中所示,动态路由网关(drg)1122可以添加到客户vcn 1104或与客户vcn 1104相关联,并为客户vcn 1104与另一个端点之间的私有网络业务通信提供路径,其中该另一个端点可以是客户的本地部署网络1116、cspi 1101的不同地区中的vcn 1108、或者不由cspi 1101托管的其它远程云网络1118。客户本地部署网络1116可以是使用客户的资源构建的客户网络或客户数据中心。对客户本地部署网络1116的访问一般是非常受限的。对于同时具有客户本地部署网络1116和由cspi 1101在云中部署或托管的一个或多个vcn 1104的客户,客户可能想要他们的本地部署网络1116和他们的基于云的vcn 1104能够彼此通信。这使客户能够构建扩展的混合环境,包括由cspi 1101托管的客户的vcn 1104和他们的本地部署网络1116。drg 1122实现这种通信。为了实现此类通信,设置通信信道1124,其中信道的一个端点位于客户本地部署网络1116中,而另一个端点位于cspi 1101中并连接到客户vcn 1104。通信信道1124可以通过公共通信网络(诸如互联网)或私有通信网络。可以使用各种不同的通信协议,诸如公共通信网络(诸如互联网)上的ipsec vpn技术、使用私有网络而非公共网络的oracle的fastconnect技术等。客户本地部署网络1116中形成通信信道1124的一个端点的设备或装备被称为客户本地装备(cpe),诸如图11中描绘的cpe 1126。在cspi 1101侧,端点可以是执行drg 1122的主机机器。
175.在某些实施例中,可以将远程对等连接(rpc)添加到drg,这允许客户将一个vcn与不同地区中的另一个vcn对等。使用这种rpc,客户vcn 1104可以使用drg 1122与另一个地区中的vcn 1108连接。drg 1122还可以被用于与不由cspi 1101托管的其它远程云网络1118(诸如microsoft azure云、亚马逊aws云等)进行通信。
176.如图11中所示,可以为客户vcn 1104配置互联网网关(igw)1120,其使vcn 1104上的计算实例能够与通过公共网络(诸如互联网)可访问的公共端点1114通信。igw 1120是将vcn连接到诸如互联网之类的公共网络的网关。igw 1120使vcn(诸如vcn 1104)内的公共子网(其中公共子网中的资源具有公共覆盖ip地址)能够直接访问公共网络1114(诸如互联网)上的公共端点1112。使用igw 1120,可以从vcn 1104内的子网或从互联网发起连接。
177.可以为客户的vcn 1104配置网络地址转换(nat)网关1128,并使客户的vcn中不具有专用公共覆盖ip地址的云资源能够访问互联网,并且在不暴露这些资源的情况下这样做以指引传入的互联网连接(例如,l4-l7连接)。这使vcn内的私有子网(诸如vcn 1104中的私有子网-1)能够私有访问互联网上的公共端点。在nat网关中,只能从私有子网发起到公共互联网的连接,而不能从互联网发起到私有子网的连接。
178.在某些实施例中,可以为客户vcn 1104配置服务网关(sgw)1126,并为vcn 1104和服务网络1110中支持的服务端点之间的私有网络业务提供路径。在某些实施例中,服务网络1110可以由csp提供并且可以提供各种服务。这种服务网络的示例是oracle的服务网络,它提供可供客户使用的各种服务。例如,客户vcn 1104的私有子网中的计算实例(例如,数据库系统)可以将数据备份到服务端点(例如,对象存储装置(object storage)),而无需公共ip地址或访问互联网。在某些实施例中,vcn可以仅具有一个sgw,并且连接只能从vcn内的子网发起,而不能从服务网络1110发起。如果vcn与另一个vcn对等,那么另一个vcn中的资源通常不能访问sgw。用fastconnect或vpn connect连接到vcn的本地部署网络中的资源也可以使用为该vcn配置的服务网关。
179.在某些实施方式中,sgw 1126使用服务无类域间路由(cidr)标签的概念,该标签是表示用于感兴趣的服务或服务组的所有地区性公共ip地址范围的字符串。客户在他们配置sgw和相关路由规则以控制去往服务的业务时使用服务cidr标签。如果服务的公共ip地址在未来发生改变,那么客户可以在配置安全性规则时可选地使用服务cidr标签,而无需调整安全性规则。
180.本地对等网关(lpg)1132是可以添加到客户vcn 1104并使vcn 1104能够与同一地区中的另一个vcn对等的网关。对等是指vcn使用私有ip地址进行通信,业务无需穿过公共网络(诸如互联网)或无需通过客户的本地部署网络1116路由业务。在优选实施例中,vcn对于它建立的每个对等体具有单独的lpg。本地对等或vcn对等是用于在不同应用或基础设施管理功能之间建立网络连接性的常见做法。
181.服务提供商(诸如服务网络1110中的服务的提供商)可以使用不同的访问模型提供对服务的访问。根据公共访问模型,服务可以作为可由客户vcn中的计算实例经由公共网络(诸如互联网)可公共访问的公共端点暴露,和/或可以经由sgw 1126来私有访问。根据特定的私有访问模型,服务可作为客户的vcn中的私有子网中的私有ip端点进行访问。这被称为私有端点(pe)访问并且使服务提供商能够将其服务作为客户的私有网络中的实例暴露。私有端点资源表示客户的vcn内的服务。每个pe在客户的vcn中由客户选择的子网中表现为
vnic(称为pe-vnic,具有一个或多个私有ip)。因此,pe提供了使用vnic在私有客户vcn子网中呈现服务的方式。由于端点作为vnic暴露,因此与vnic相关联的所有特征(诸如路由规则、安全性列表等)现在都可用于pe vnic。
182.服务提供商可以注册他们的服务以启用通过pe的访问。提供商可以将策略与服务相关联,这限制了服务对客户租赁的可见性。提供商可以在单个虚拟ip地址(vip)下注册多个服务,尤其是对于多租户服务。可以存在表示相同服务的多个这样的私有端点(在多个vcn中)。
183.私有子网中的计算实例然后可以使用pe vnic的私有ip地址或服务dns名称来访问服务。客户vcn中的计算实例可以通过将业务发送到客户vcn中的pe的私有ip地址来访问该服务。私有访问网关(pagw)1130是可以附接到服务提供商vcn(例如,服务网络1110中的vcn)的网关资源,该服务提供商vcn充当来自/去往客户子网私有端点的所有业务的入口/出口点。pagw 1130使提供商能够在不利用其内部ip地址资源的情况下扩展pe连接的数量。提供商只需要为在单个vcn中注册的任何数量的服务配置一个pagw。提供商可以将服务表示为一个或多个客户的多个vcn中的私有端点。从客户的角度来看,代替附接到客户的实例,pe vnic看起来附接到客户希望与之交互的服务。去往私有端点的业务经由pagw 1130路由到服务。这些被称为客户到服务私有连接(c2s连接)。
184.通过允许业务流经fastconnect/ipsec链路和客户vcn中的私有端点,pe概念还可以被用于将对于服务的私有访问扩展到客户的本地部署网络和数据中心。通过允许业务在lpg 1132和客户的vcn中的pe之间流动,还可以将对于服务的私有访问扩展到客户的对等vcn。
185.客户可以在子网级别控制vcn中的路由,因此客户可以指定客户的vcn(诸如vcn 1104)中的哪些子网使用每个网关。vcn的路由表被用于决定是否允许业务通过特定网关离开vcn。例如,在特定实例中,用于客户vcn 1104内的公共子网的路由表可以通过igw 1120发送非本地业务。用于同一客户vcn 1104内的私有子网的路由表可以通过sgw 1126发送以csp服务为目的地的业务。所有剩余业务可以经由nat网关1128发送。路由表仅控制离开vcn的业务。
186.与vcn相关联的安全性列表被用于控制经由入站连接经由网关进入vcn的业务。子网中的所有资源都使用相同的路由表和安全性列表。安全性列表可以被用于控制允许进出vcn的子网中的实例的特定类型的业务。安全性列表规则可以包括入口(入站)和出口(出站)规则。例如,入口规则可以指定允许的源地址范围,而出口规则可以指定允许的目的地地址范围。安全性规则可以指定特定的协议(例如,tcp、icmp)、特定的端口(例如,用于ssh的22、用于windows rdp的3389)等。在某些实施方式中,实例的操作系统可以强制执行其自己的符合安全性列表规则的防火墙规则。规则可以是有状态的(例如,跟踪连接并自动允许响应,而无需针对响应业务的明确安全性列表规则)或无状态的。
187.来自客户vcn的访问(即,通过部署在vcn 1104上的资源或计算实例)可以被分类为公共访问、私有访问或专用访问。公共访问是指使用公共ip地址或nat来访问公共端点的访问模型。私有访问使vcn 1104中具有私有ip地址的客户工作负载(例如,私有子网中的资源)能够访问服务,而无需穿过诸如互联网之类的公共网络。在某些实施例中,cspi 1101使具有私有ip地址的客户vcn工作负载能够使用服务网关访问服务(的公共服务端点)。因此,
服务网关通过在客户的vcn和驻留在客户的私有网络外部的服务的公共端点之间建立虚拟链路来供应私有访问模型。
188.此外,cspi可以使用诸如fastconnect公开对等之类的技术供应专用公共访问,其中客户本地部署实例可以使用fastconnect连接来访问客户vcn中的一个或多个服务,而无需穿过公共网络(诸如互联网)。cspi还可以使用fastconnect私有对等来供应专用私有访问,其中具有私有ip地址的客户本地部署实例可以使用fastconnect连接访问客户的vcn工作负载。fastconnect是对使用公共互联网将客户的本地部署网络连接到cspi及其服务的网络连接性替代方案。与基于互联网的连接相比,fastconnect提供了简单、灵活且经济的方式来创建具有更高带宽选项的专用和私有连接以及更可靠和一致的联网体验。
189.图11和上面的伴随描述描述了示例虚拟网络中的各种虚拟化组件。如上所述,虚拟网络构建在底层物理或基板网络上。图12描绘了根据某些实施例的为虚拟网络提供底层的cspi 1200内的物理网络中的物理组件的简化体系架构图。如图所示,cspi 1200提供分布式环境,包括由云服务提供商(csp)提供的组件和资源(例如,计算、存储器和联网资源)。这些组件和资源被用于向订阅客户(即,已订阅由csp提供的一个或多个服务的客户)提供云服务(例如,iaas服务)。基于客户订阅的服务,为客户供应cspi 1200的资源(例如,计算、存储器和联网资源)的子集。然后,客户可以使用由cspi 1200提供的物理计算、存储器和联网资源构建其自己的基于云的(即,cspi托管的)可定制且私有的虚拟网络。如前面所指示的,这些客户网络被称为虚拟云网络(vcn)。客户可以在这些客户vcn上部署一个或多个客户资源,诸如计算实例。计算实例可以是虚拟机、裸机实例等形式。cspi 1200提供基础设施和互补云服务的集合,这使客户能够在高度可用的托管环境中构建和运行广泛的应用和服务。
190.在图12中描绘的示例实施例中,cspi 1200的物理组件包括一个或多个物理主机机器或物理服务器(例如,1202、1206、1208)、网络虚拟化设备(nvd)(例如,1210、1212)、架顶式(tor)交换机(例如,1214、1216)和物理网络(例如,1218)、以及物理网络1218中的交换机。物理主机机器或服务器可以托管和执行参与vcn的一个或多个子网的各种计算实例。计算实例可以包括虚拟机实例和裸机实例。例如,图11中描绘的各种计算实例可以由图12中描绘的物理主机机器托管。vcn中的虚拟机计算实例可以由一个主机机器或多个不同的主机机器执行。物理主机机器也可以托管虚拟主机机器、基于容器的主机或功能等。图11中描绘的vnic和vcn vr可以由图12中描绘的nvd执行。图11中描绘的网关可以由图12中描绘的主机机器和/或由nvd执行。
191.主机机器或服务器可以执行在主机机器上创建和启用虚拟化环境的管理程序(也称为虚拟机监视器或vmm)。虚拟化或虚拟化环境促进了基于云的计算。一个或多个计算实例可以由主机机器上的管理程序在该主机机器上创建、执行和管理。主机机器上的管理程序使主机机器的物理计算资源(例如,计算、存储器和联网资源)能够在由主机机器执行的各种计算实例之间共享。
192.例如,如图12中所描绘的,主机机器1202和1208分别执行管理程序1260和1266。这些管理程序可以使用软件、固件或硬件或其组合来实现。通常,管理程序是位于主机机器的操作系统(os)之上的进程或软件层,os进而在主机机器的硬件处理器上执行。管理程序通过使主机机器的物理计算资源(例如,诸如处理器/核之类的处理资源、存储器资源、联网资
源)能够在由主机机器执行的各种虚拟机计算实例之间共享来提供虚拟化环境。例如,在图12中,管理程序1260可以位于主机机器1202的os之上并使主机机器1202的计算资源(例如,处理、存储器和联网资源)能够在由主机机器1202执行的计算实例(例如,虚拟机)之间共享。虚拟机可以具有其自己的操作系统(称为访客操作系统),其可以与主机机器的os相同或不同。由主机机器执行的虚拟机的操作系统可以与由同一主机机器执行的另一个虚拟机的操作系统相同或不同。因此,管理程序使多个操作系统能够彼此一起执行,同时共享主机机器的相同计算资源。图12中描绘的主机机器可以具有相同或不同类型的管理程序。
193.计算实例可以是虚拟机实例或裸机实例。在图12中,主机机器1202上的计算实例1268和主机机器1208上的计算实例1274是虚拟机实例的示例。主机机器1206是提供给客户的裸机实例的示例。
194.在某些情况下,可以向单个客户供应整个主机机器,并且由该主机机器托管的全部一个或多个计算实例(或者虚拟机或者裸机实例)都属于该同一客户。在其它情况下,主机机器可以在多个客户(即,多个租户)之间共享。在这种多租赁场景中,主机机器可以托管属于不同客户的虚拟机计算实例。这些计算实例可以是不同客户的不同vcn的成员。在某些实施例中,裸机计算实例由没有管理程序的裸机服务器托管。当供应裸机计算实例时,单个客户或租户维护对托管该裸机实例的主机机器的物理cpu、存储器和网络接口的控制,并且主机机器不与其他客户或租户共享。
195.如前所述,作为vcn的一部分的每个计算实例都与使该计算实例能够成为vcn的子网的成员的vnic相关联。与计算实例相关联的vnic促进去往和来自计算实例的分组或帧的通信。vnic在创建计算实例时与该计算实例相关联。在某些实施例中,对于由主机机器执行的计算实例,与该计算实例相关联的vnic由连接到主机机器的nvd执行。例如,在图12中,主机机器1202执行与vnic 1276相关联的虚拟机计算实例1268,并且vnic 1276由连接到主机机器1202的nvd 1210执行。作为另一个示例,由主机机器1206托管的裸机实例1272与由连接到主机机器1206的nvd 1212执行的vnic 1280相关联。作为又一个示例,vnic 1284与由主机机器1208执行的计算实例1274相关联,并且vnic 1284由连接到主机机器1208的nvd 1212执行。
196.对于由主机机器托管的计算实例,连接到该主机机器的nvd还执行与计算实例是其成员的vcn对应的vcn vr。例如,在图12中描绘的实施例中,nvd 1210执行与计算实例1268是其成员的vcn对应的vcn vr 1277。nvd 1212还可以执行与vcn对应的一个或多个vcn vr 1283,该vcn与由主机机器1206和1208托管的计算实例对应。
197.主机机器可以包括使主机机器能够连接到其它设备的一个或多个网络接口卡(nic)。主机机器上的nic可以提供使主机机器能够通信地连接到另一个设备的一个或多个端口(或接口)。例如,主机机器可以使用在主机机器上和nvd上提供的一个或多个端口(或接口)连接到nvd。主机机器也可以连接到其它设备(诸如另一个主机机器)。
198.例如,在图12中,主机机器1202使用链路1220连接到nvd 1210,链路1220在由主机机器1202的nic 1232提供的端口1234与nvd 1210的端口1236之间延伸。主机机器1206使用链路1224连接到nvd 1212,链路1224在由主机机器1206的nic 1244提供的端口1246与nvd 1212的端口1248之间延伸。主机机器1208使用链路1226连接到nvd 1212,链路1226在由主机机器1208的nic 1250提供的端口1252与nvd 1212的端口1254之间延伸。
199.nvd进而经由通信链路连接到架顶式(tor)交换机,这些交换机连接到物理网络1218(也称为交换机架构)。在某些实施例中,主机机器和nvd之间以及nvd和tor交换机之间的链路是以太网链路。例如,在图12中,nvd 1210和1212分别使用链路1228和1230连接到tor交换机1214和1216。在某些实施例中,链路1220、1224、1226、1228和1230是以太网链路。连接到tor的主机机器和nvd的集合有时称为机架(rack)。
200.物理网络1218提供使tor交换机能够彼此通信的通信架构。物理网络1218可以是多层网络。在某些实施方式中,物理网络1218是交换机的多层clos网络,其中tor交换机1214和1216表示多层和多节点物理交换网络1218的叶级节点。不同的clos网络配置是可能的,包括但不限于2层网络、3层网络、4层网络、5层网络和一般的“n”层网络。clos网络的示例在图15中描绘并在下面进行描述。
201.主机机器和nvd之间可能存在各种不同的连接配置,诸如一对一配置、多对一配置、一对多配置等。在一对一配置实施方式中,每个主机机器连接到自己单独的nvd。例如,在图12中,主机机器1202经由主机机器1202的nic 1232连接到nvd 1210。在多对一配置中,多个主机机器连接到一个nvd。例如,在图12中,主机机器1206和1208分别经由nic 1244和1250连接到同一个nvd 1212。
202.在一对多配置中,一个主机机器连接到多个nvd。图13示出了cspi 1300内的示例,其中主机机器连接到多个nvd。如图13中所示,主机机器1302包括网络接口卡(nic)1304,其包括多个端口1306和1308。主机机器1300经由端口1306和链路1320连接到第一nvd 1310,并经由端口1308和链路1322连接到第二nvd 1312。端口1306和1308可以是以太网端口并且主机机器1302与nvd 1310和1312之间的链路1320和1322可以是以太网链路。nvd 1310进而连接到第一tor交换机1314并且nvd 1312连接到第二tor交换机1316。nvd 1310和1312之间以及tor交换机1314和1316之间的链路可以是以太网链路。tor交换机1314和1316表示多层物理网络1318中的层0交换设备。
203.图13中描绘的布置提供了物理交换机网络1318与主机机器1302之间的两条单独的物理网络路径:第一条路径穿过tor交换机1314到nvd 1310再到主机机器1302,并且第二条路径穿过tor交换机1316到nvd 1312再到主机机器1302。单独的路径提供了主机机器1302的增强的可用性(称为高可用性)。如果以下中的一者出现问题:路径(例如,路径之一中的链路断开)或设备(例如,特定nvd未运行),那么另一条路径可以被用于去往/来自主机机器1302的通信。
204.在图13中描绘的配置中,主机机器使用由主机机器的nic提供的两个不同端口连接到两个不同的nvd。在其它实施例中,主机机器可以包括使主机机器能够连接到多个nvd的多个nic。
205.返回参考图12,nvd是执行一个或多个网络和/或存储虚拟化功能的物理设备或组件。nvd可以是具有一个或多个处理单元(例如,cpu、网络处理单元(npu)、fpga、分组处理流水线等)、存储器(包括高速缓存)和端口的任何设备。各种虚拟化功能可以由nvd的一个或多个处理单元执行的软件/固件来执行。
206.nvd可以以各种不同的形式实现。例如,在某些实施例中,nvd被实现为称为smartnic的接口卡或具有板载嵌入式处理器的智能nic。smartnic是独立于主机机器上的nic的设备。在图12中,nvd 1210和1212可以被实现为分别连接到主机机器1202以及主机机
器1206和1208的smartnic。
207.但是,smartnic只是nvd实施方式的一个示例。各种其它实施方式是可能的。例如,在一些其它实施方式中,nvd或由nvd执行的一个或多个功能可以结合到一个或多个主机机器、一个或多个tor交换机以及cspi 1200的其它组件中或由其执行。例如,nvd可以在主机机器中实施,其中由nvd执行的功能由主机机器执行。作为另一个示例,nvd可以是tor交换机的一部分,或者tor交换机可以被配置为执行由nvd执行的功能,这使tor交换机能够执行用于公共云的各种复杂分组转换。执行nvd的功能的tor有时被称为智能tor。在向客户供应虚拟机(vm)实例而非裸机(bm)实例的另外其它实施方式中,由nvd执行的功能可以在主机机器的管理程序内部实现。在一些其它实施方式中,nvd的功能中的一些功能可以被卸载到运行在一组主机机器上的集中式服务。
208.在某些实施例中,诸如当实现为如图12中所示的smartnic时,nvd可以包括使其能够连接到一个或多个主机机器以及一个或多个tor交换机的多个物理端口。nvd上的端口可以被分类为面向主机的端口(也称为“南端口”),或者面向网络或面向tor的端口(也称为“北端口”)。nvd的面向主机的端口是用于将nvd连接到主机机器的端口。图12中面向主机的端口的示例包括nvd 1210上的端口1236以及nvd 1212上的端口1248和1254。nvd的面向网络的端口是用于将nvd连接到tor交换机的端口。图12中面向网络的端口的示例包括nvd 1210上的端口1256和nvd 1212上的端口1258。如图12中所示,nvd 1210使用从nvd 1210的端口1256延伸到tor交换机1214的链路1228连接到tor交换机1214。类似地,nvd 1212使用从nvd 1212的端口1258延伸到tor交换机1216的链路1230连接到tor交换机1216。
209.nvd经由面向主机的端口从主机机器接收分组和帧(例如,由主机机器托管的计算实例生成的分组和帧),并且在执行必要的分组处理之后,可以经由nvd的面向网络的端口将分组和帧转发到tor交换机。nvd可以经由nvd的面向网络的端口从tor交换机接收分组和帧,并且在执行必要的分组处理之后,可以经由nvd的面向主机的端口将分组和帧转发到主机机器。
210.在某些实施例中,在nvd和tor交换机之间可以存在多个端口和相关联的链路。可以聚合这些端口和链路以形成多个端口或链路的链路聚合体组(称为lag)。链路聚合允许将两个端点之间(例如,nvd和tor交换机之间)的多条物理链路视为单条逻辑链路。给定lag中的所有物理链路都可以以相同的速度在全双工模式下操作。lag有助于增加两个端点之间的连接的带宽和可靠性。如果lag中的物理链路中的一条物理链路发生故障,那么业务将动态且透明地重新指派到lag中的其它物理链路中的一条物理链路。聚合的物理链路比每条单独的链路递送更高的带宽。与lag相关联的多个端口被视为单个逻辑端口。业务可以在lag的多条物理链路之间进行负载平衡。可以在两个端点之间配置一个或多个lag。这两个端点可以位于nvd和tor交换机之间、主机机器和nvd之间,等等。
211.nvd实现或执行网络虚拟化功能。这些功能由nvd执行的软件/固件执行。网络虚拟化功能的示例包括但不限于:分组封装和解封装功能;用于创建vcn网络的功能;用于实现网络策略的功能,诸如vcn安全性列表(防火墙)功能;促进分组去往vcn中的计算实例和来自该计算实例的路由和转发的功能等。在某些实施例中,在接收到分组后,nvd被配置为执行分组处理流水线用于处理分组并确定如何转发或路由分组。作为这个分组处理流水线的一部分,nvd可以执行与覆盖网络相关联的一个或多个虚拟功能,诸如执行与vcn中的计算
实例相关联的vnic、执行与vcn相关联的虚拟路由器(vr)、分组的封装和解封装以促进虚拟网络中的转发或路由、某些网关(例如,本地对等网关)的执行、安全性列表的实施、网络安全组、网络地址转换(nat)功能(例如,逐个主机地将公共ip转换为私有ip)、节流功能和其它功能。
212.在某些实施例中,nvd中的分组处理数据路径可以包括多个分组流水线,每个分组流水线由一系列分组变换级(stage)组成。在某些实施方式中,在接收到分组后,分组被解析并分类到单个流水线。然后以线性方式处理分组,一个级接一个级,直到分组被丢弃或者通过nvd的接口被发送出去为止。这些级提供基本的功能性分组处理构建块(例如,验证报头、强制执行节流、插入新的层2报头、强制执行l4防火墙、vcn封装/解封装等),以便可以通过组合现有级来构建新的流水线,并且可以通过创建新级并将它们插入现有流水线来添加新的功能。
213.nvd可以执行与vcn的控制平面和数据平面对应的控制平面功能和数据平面功能两者。控制平面功能包括用于配置控制数据如何转发的网络的功能(例如,设置路由和路由表、配置vnic等)。在某些实施例中,提供了vcn控制平面,它集中计算所有覆盖到基板映射并将它们发布到nvd和虚拟网络边缘设备(诸如各种网关,诸如drg、sgw、igw等)。防火墙规则也可以使用相同的机制发布。在某些实施例中,nvd仅获得与该nvd相关的映射。数据平面功能包括基于使用控制平面设置的配置来实际路由/转发分组的功能。vcn数据平面是通过在客户的网络分组穿过基板网络之前对其进行封装来实现的。封装/解封装功能在nvd上实现。在某些实施例中,nvd被配置为拦截进出主机机器的所有网络分组并执行网络虚拟化功能。
214.如上面所指示的,nvd执行各种虚拟化功能,包括vnic和vcn vr。nvd可以执行与连接到vnic的一个或多个主机机器托管的计算实例相关联的vnic。例如,如图12中所描绘的,nvd 1210执行与由连接到nvd 1210的主机机器1202托管的计算实例1268相关联的vnic 1276的功能。作为另一个示例,nvd 1212执行与由主机机器1206托管的裸机计算实例1272相关联的vnic 1280,并执行与由主机机器1208托管的计算实例1274相关联的vnic 1284。主机机器可以托管属于不同vcn(属于不同客户)的计算实例,并且连接到主机机器的nvd可以执行与计算实例对应的vnic(即,执行vnic相关功能)。
215.nvd还执行与计算实例的vcn对应的vcn虚拟路由器。例如,在图12中描绘的实施例中,nvd 1210执行与计算实例1268所属的vcn对应的vcn vr 1277。nvd 1212执行与由主机机器1206和1208托管的计算实例所属的一个或多个vcn对应的一个或多个vcn vr 1283。在某些实施例中,与该vcn对应的vcn vr由连接到托管属于该vcn的至少一个计算实例的主机机器的所有nvd执行。如果主机机器托管属于不同vcn的计算实例,那么连接到该主机机器的nvd可以执行与这些不同vcn对应的vcn vr。
216.除了vnic和vcn vr之外,nvd还可以执行各种软件(例如,守护进程)并且包括一个或多个硬件组件,这些组件促进由nvd执行的各种网络虚拟化功能。为了简单起见,这些各种组件被分组在一起作为图12中所示的“分组处理组件”。例如,nvd 1210包括分组处理组件1286并且nvd 1212包括分组处理组件1288。例如,用于nvd的分组处理组件可以包括分组处理器,该分组处理器被配置为与nvd的端口和硬件接口进行交互以监视由nvd接收和使用nvd传送的所有分组并存储网络信息。网络信息例如可以包括识别由nvd处置的不同网络流
的网络流信息和每个流信息(例如,每个流统计信息)。在某些实施例中,网络流信息可以以每个vnic为基础进行存储。分组处理器可以执行逐分组的操纵以及实现有状态的nat和l4防火墙(fw)。作为另一个示例,分组处理组件可以包括被配置为将由nvd存储的信息复制到一个或多个不同的复制目标存储库的复制代理。作为又一个示例,分组处理组件可以包括被配置为执行nvd的日志记录功能的日志记录代理。分组处理组件还可以包括用于监视nvd的性能和健康状况并且还可能监视连接到nvd的其它组件的状态和健康状况的软件。
217.图11示出了示例虚拟或覆盖网络的组件,包括vcn、vcn内的子网、部署在子网上的计算实例、与计算实例相关联的vnic、用于vcn的vr、以及为vcn配置的网关的集合。图11中描绘的覆盖组件可以由图12中描绘的物理组件中的一个或多个组件执行或托管。例如,vcn中的计算实例可以由图12中描绘的一个或多个主机机器执行或托管。对于由主机机器托管的计算实例,与该计算实例相关联的vnic通常由连接到该主机机器的nvd执行(即,vnic功能由连接到该主机机器的nvd提供)。用于vcn的vcn vr功能由连接到托管或执行作为该vcn的一部分的计算实例的主机机器的所有nvd执行。与vcn相关联的网关可以由一种或多种不同类型的nvd执行。例如,某些网关可以由smartnic执行,而其它网关可以由一个或多个主机机器或nvd的其它实施方式执行。
218.如上所述,客户vcn中的计算实例可以与各种不同的端点进行通信,其中端点可以与源计算实例在同一子网内、与源计算实例在不同子网中但在同一vcn内,或者与位于源计算实例的vcn外部的端点进行通信。使用与计算实例相关联的vnic、vcn vr以及与vcn相关联的网关来促进这些通信。
219.对于vcn中同一子网上的两个计算实例之间的通信,使用与源和目的地计算实例相关联的vnic促进通信。源和目的地计算实例可以由同一主机机器或不同主机机器托管。源自源计算实例的分组可以从托管源计算实例的主机机器转发到连接到该主机机器的nvd。在nvd上,使用分组处理流水线处理分组,这可以包括与源计算实例相关联的vnic的执行。由于用于分组的目的地端点位于同一子网内,因此与源计算实例相关联的vnic的执行导致分组被转发到执行与目的地计算实例相关联的vnic的nvd,然后nvd处理分组并将其转发到目的地计算实例。与源和目的地计算实例相关联的vnic可以在同一nvd上执行(例如,在源和目的地计算实例两者由同一个主机机器托管的情况下)或在不同nvd上执行(例如,在源和目的地计算实例由连接到不同nvd的不同主机机器托管的情况下)。vnic可以使用由nvd存储的路由/转发表来确定分组的下一跳。
220.对于要从子网中的计算实例传送到同一vcn中不同子网中的端点的分组,源自源计算实例的分组从托管源计算实例的主机机器传送到连接到该主机机器的nvd。在nvd上,使用分组处理流水线处理分组,这可以包括一个或多个vnic以及与vcn相关联的vr的执行。例如,作为分组处理流水线的一部分,nvd执行或调用与和源计算实例相关联的vnic的功能(也称为执行vnic)。由vnic执行的功能可以包括查看分组上的vlan标记。由于分组的目的地在子网外部,因此接下来由nvd调用和执行vcn vr功能。然后,vcn vr将分组路由到执行与目的地计算实例相关联的vnic的nvd。与目的地计算实例相关联的vnic然后处理分组并将分组转发到目的地计算实例。与源和目的地计算实例相关联的vnic可以在同一nvd上执行(例如,在源和目的地计算实例两者由同一主机机器托管的情况下)或在不同nvd上执行(例如,在源和目的地计算实例由连接到不同nvd的不同主机机器托管的情况下)。
221.如果用于分组的目的地在源计算实例的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实施方式。然后,分组由网关处理并转发到下一跳,这促进将分组传送到其预期的目的地端点。例如,在图12中描绘的实施例中,源自计算实例1268的分组可以通过链路1220(使用nic 1232)从主机机器1202传送到nvd 1210。在nvd 1210上,调用vnic 1276,因为它是与源计算实例1268相关联的vnic。vnic 1276被配置为检查分组中封装的信息,并确定用于转发分组的下一跳,目的是促进将分组传送到其预期的目的地端点,然后将分组转发到所确定的下一跳。
222.部署在vcn上的计算实例可以与各种不同端点进行通信。这些端点可以包括由cspi 1200托管的端点和cspi 1200外部的端点。由cspi 1200托管的端点可以包括同一vcn或其它vcn中的实例,这些vcn可以是客户的vcn,或者是不属于客户的vcn。由cspi 1200托管的端点之间的通信可以通过物理网络1218执行。计算实例还可以与不由cspi 1200托管的端点或在cspi 1200外部的端点进行通信。这些端点的示例包括客户的本地部署网络或数据中心内的端点,或者通过公共网络(诸如互联网)可访问的公共端点。与cspi 1200外部的端点的通信可以使用各种通信协议通过公共网络(例如,互联网)(图12中未示出)或私有网络(图12中未示出)来执行。
223.图12中描绘的cspi 1200的体系架构仅仅是示例并且不旨在限制。在替代实施例中,变化、替代方案和修改是可能的。例如,在一些实施方式中,cspi 1200可以具有比图12中所示的系统或组件更多或更少的系统或组件,可以组合两个或更多个系统,或者可以具有不同的系统配置或布置。图12中描绘的系统、子系统和其它组件可以在由相应系统的一个或多个处理单元(例如,处理器、核)执行的软件(例如,代码、指令、程序)中实现、使用硬件实现、或根据其组合实现。软件可以存储在非暂态存储介质上(例如,存储器设备上)。
224.图14描绘了根据某些实施例的主机机器和nvd之间的连接,用于提供i/o虚拟化以支持多租赁。如图14中所描绘的,主机机器1402执行提供虚拟化环境的管理程序1404。主机机器1402执行两个虚拟机实例:属于客户/租户#1的vm1 1406和属于客户/租户#2的vm2 1408。主机机器1402包括经由链路1414连接到nvd 1412的物理nic 1410。每个计算实例都附接到由nvd 1412执行的vnic。在图14中的实施例中,vm1 1406附接到vnic-vm1 1420并且vm21408附接到vnic-vm2 1422。
225.如图14中所示,nic 1410包括两个逻辑nic:逻辑nic a 1416和逻辑nic b 1418。每个虚拟机附接到其自己的逻辑nic并被配置为与其自己的逻辑nic一起工作。例如,vm1 1406附接到逻辑nic a 1416并且vm2 1408附接到逻辑nic b 1418。虽然主机机器1402仅包括由多个租户共享的一个物理nic 1410,但由于逻辑nic,每个租户的虚拟机都相信他们具有自己的主机机器和nic。
226.在某些实施例中,每个逻辑nic被指派有其自己的vlan id。因此,特定的vlan id被指派给用于租户#1的逻辑nic a 1416,并且分离的vlan id被指派给用于租户#2的逻辑
nic b 1418。当分组从vm1 1406传送时,由管理程序将指派给租户#1的标记(tag)附接到分组,然后分组通过链路1414从主机机器1402传送到nvd 1412。以类似的方式,当分组从vm2 1408被传送时,指派给租户#2的标记由管理程序附接到分组,然后分组通过链路1414从主机机器1402传送到nvd 1412。因而,从主机机器1402传送到nvd 1412的分组1424具有识别特定租户和相关联的vm的相关联的标记1426。在nvd上,对于从主机机器1402接收到的分组1424,与该分组相关联的标记1426被用于确定分组是由vnic-vm1 1420还是由vnic-vm21422处理。分组随后由对应的vnic处理。图14中描述的配置使每个租户的计算实例能够相信他们拥有其自己的主机机器和nic。图14中描绘的设置提供了用于支持多租赁的i/o虚拟化。
227.图15描绘了根据某些实施例的物理网络1500的简化框图。图15中描绘的实施例被结构化为clos网络。clos网络是特定类型的网络拓扑,其被设计为提供连接冗余性,同时维持高对分带宽和最大资源利用率。clos网络是一种无阻塞、多级或多层交换网络,其中级数或层数可以是二、三、四、五等。图15中描绘的实施例是3层网络,包括层1、层2和层3。tor交换机1504表示clos网络中的层0交换机。一个或多个nvd连接到tor交换机。层0交换机也被称为物理网络的边缘设备。层0交换机连接到也称为叶交换机的层1交换机。在图15中描绘的实施例中,“n”个层0tor交换机的集合连接到“n”个层1交换机的集合并且一起形成群聚(pod)。群聚中的每个层0交换机都互连到该群聚中的所有层1交换机,但群聚之间没有交换机的连接。在某些实施方式中,两个群聚被称为块(block)。每个块由“n”个层2交换机(有时称为主干交换机)的集合提供服务或连接到该交换机的集合。物理网络拓扑中可以存在若干个块。层2交换机进而连接到“n”个层3交换机(有时称为超级主干交换机)。物理网络1500之上的分组的通信通常使用一种或多种层3通信协议来执行。通常,物理网络的所有层(tor层除外)都是n向冗余的,因此允许高可用性。可以为群聚和块指定策略,以控制交换机在物理网络中彼此的可见性,从而启用物理网络的伸缩(scale)。
228.clos网络的特征是从一个层0交换机到达另一个层0交换机(或从连接到层0交换机的nvd到达连接到层0交换机的另一个nvd)的最大跳数是固定的。例如,在3层clos网络中,分组从一个nvd到达另一个nvd最多需要七跳,其中源和目标nvd连接到clos网络的叶层。同样,在4层clos网络中,分组从一个nvd到达另一个nvd最多需要九跳,其中源和目标nvd连接到clos网络的叶层。因此,clos网络体系架构在整个网络中维持一致的时延,这对于数据中心内部和数据中心之间的通信是重要的。clos拓扑在水平上伸缩并且具有成本效益。通过在各个层添加更多交换机(例如,更多叶交换机和骨干交换机)以及通过增加相邻层的交换机之间的链路数量,可以轻松增加网络的带宽/吞吐量容量。
229.在某些实施例中,cspi内的每个资源都被指派唯一标识符(称为云标识符(cid))。这个标识符作为资源的信息的一部分包括在内并且可以用于(例如经由控制台或通过api)管理资源。用于cid的示例语法是:
230.ocidl.<resourcetype》.<realm》.[region][.futureuse].<uniqueid》
[0231]
其中,
[0232]
ocid1:指示cid的版本的文字串;
[0233]
resource type:资源的类型(例如,实例、卷、vcn、子网、用户、组等);
[0234]
realm:资源所在的领域。示例值为用于商业领域的“c1”、用于政府云领域的“c2”、
或者用于联邦政府云领域的“c3”等。每个领域可以有其自己的域名;
[0235]
region:资源所在的地区。如果该地区不适用于该资源,那么这个部分可能为空;
[0236]
future use:保留以备将来使用。
[0237]
unique id:id的唯一部分。格式可以因资源或服务的类型而异。
[0238]
虽然已经描述了本公开的具体实施例,但是各种修改、变更、替代构造和等效形式也包含在本公开的范围内。本公开的实施例不限于在某些特定数据处理环境内操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用特定系列的事务和步骤描述了本公开的实施例,但是本领域技术人员应该清楚本公开的范围不限于所描述系列的事务和步骤。上述实施例的各种特征和方面可以单独或联合使用。
[0239]
另外,虽然已经使用硬件和软件的特定组合描述了本公开的实施例,但是应当认识到硬件和软件的其它组合也在本公开的范围内。本公开的实施例可以仅用硬件、或仅用软件、或使用它们的组合来实现。本文描述的各种处理可以以任何组合在相同的处理器或在不同的处理器上实现。因而,在组件或模块被描述为被配置为执行某些操作的情况下,可以通过例如设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作、或通过其任何组合来完成这样的配置。处理可以使用多种技术进行通信,包括但不限于用于进程间通信的常规技术,并且不同的进程对可以使用不同的技术,或者同一进程对可以在不同时间使用不同的技术。
[0240]
因而,说明书和附图被认为是说明性的而不是限制性的意义。但是,在不脱离权利要求中阐述的更广泛的精神和范围的情况下,显然可以对其进行添加、减少、删除和其它修改和改变。因此,虽然已经描述了具体的公开实施例,但这些并不旨在进行限制。各种修改和等效形式都在以下权利要求的范围内。
[0241]
在描述所公开的实施例的上下文中(尤其在以下权利要求的上下文中)使用术语“一”和“一个”和“该”以及类似的指称应被解释为涵盖单数和复数两者,除非本文另有指示或与上下文明显矛盾。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”应被解释为部分或全部包含在内、附接到或连接在一起,即使中间存在一些东西。除非本文另有指示,否则本文中的值范围的描述仅旨在用作单独引用落入该范围内的每个单独值的简略方法,并且每个单独值被并入说明书中,就好像它在本文中单独描述一样。除非本文另有指示或与上下文明显矛盾,否则本文描述的所有方法都可以以任何合适的顺序执行。除非另有声明,否则本文提供的任何和全部示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本公开的实施例并且不对本公开的范围构成限制。说明书中的任何语言都不应被解释为指示任何未要求保护的元素对于本公开的实践是必不可少的。
[0242]
除非另有明确说明,否则析取(disjunctive)语言(诸如短语“x、y或z中的至少一个”)旨在在上下文中被理解为用作一般地表示项目、术语等可以是x、y或z中的一者或者是它们的任何组合(例如,x、y和/或z)。因此,这种析取语言通常不旨在也不应暗示某些实施例需要x中的至少一个、y中的至少一个或z中的至少一个各自存在。
[0243]
本文描述了本公开的优选实施例,包括已知用于实施本公开的最佳模式。这些优选实施例的变型对于本领域普通技术人员在阅读上述描述后会变得显而易见。普通技术人员应该能够适当地采用这样的变型并且可以以不同于本文具体描述的方式来实践本公开。
因而,本公开包括在适用法律允许的情况下对所附权利要求中记载的主题的所有修改和等效形式。此外,除非在本文中另有指示,否则本公开包括上述元素在其所有可能的变型中的任何组合。
[0244]
本文引用的所有参考文献(包括出版物、专利申请和专利)均以相同的程度通过引用并入本文,就好像指示每个参考文献单独且具体地通过引用并入并且在本文中全文阐述一样。
[0245]
在前述的说明书中,本公开的各方面参考其具体实施例进行了描述,但本领域技术人员将认识到的是,本公开不限于此。上述公开的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的环境和应用之外的任何数量的环境和应用中被使用。因而,本说明书和附图应当被认为是说明性而不是限制性的。
技术特征:
1.一种系统,包括:第一虚拟化引擎,被配置为实例化第一虚拟机,第一虚拟化引擎包括:第一存储器设备,被配置为存储第一密钥,其中第一密钥是密码密钥;以及第一密码处理器,被配置为使用第一密钥来加密和/或解密去往和/或来自第一虚拟机的数据;第二虚拟化引擎,被配置为实例化第二虚拟机,第二虚拟化引擎包括:第二存储器设备,被配置为存储第二密钥,其中第二密钥是密码密钥;以及第二密码处理器,被配置为使用第二密钥来加密和/或解密去往和/或来自第二虚拟机的数据,其中:第一虚拟化引擎和第二虚拟化引擎是设备的部分;以及该设备的主机无权访问第一密钥和第二密钥。2.如权利要求1所述的系统,其中第一虚拟化引擎被配置为从密钥管理服务接收第一密钥并将第一密钥保存在第一存储器设备中。3.如权利要求2所述的系统,其中密钥管理服务为客户向设备提供第一密钥,而该设备的主机无权访问第一密钥。4.如权利要求1或2中的任一项所述的系统,其中第一虚拟化引擎向密钥管理服务提供凭证以接收第一密钥。5.如权利要求1至4中的任一项所述的系统,其中第一存储器设备是包括电容器和晶体管的静态随机存取存储器设备。6.如权利要求1至5中的任一项所述的系统,其中第一虚拟化引擎和第二虚拟化引擎各自被配置为一次仅实例化一个虚拟机。7.如权利要求1至6中的任一项所述的系统,其中第一虚拟机是第一虚拟云网络的一部分,并且第二虚拟机是第二虚拟云网络的一部分。8.如权利要求1至7中的任一项所述的系统,其中第一密码处理器被配置为为第一虚拟机提供联机数据加密。9.如权利要求1至8中的任一项所述的系统,其中第一虚拟化引擎被配置为为第一虚拟化机提供数据分组的网络路由。10.如权利要求1至9中的任一项所述的系统,其中第一密钥与第二密钥相同。11.如权利要求1至10中的任一项所述的系统,其中所述设备是网络接口卡。12.如权利要求1至11中的任一项所述的系统,其中第一密钥被定期地更新。13.如权利要求1至12中的任一项所述的系统,其中第一虚拟机和第二虚拟机是子网的部分。14.如权利要求1至12中的任一项所述的系统,其中第一虚拟机和第二虚拟机是不同虚拟云网络的部分。15.如权利要求1至14中的任一项所述的系统,其中第一密钥和第二密钥同时被刷新。16.一种方法,包括:使用第一虚拟化引擎实例化第一虚拟机;使用第二虚拟化引擎实例化第二虚拟机;将第一密钥存储在第一虚拟化引擎的第一存储器设备中;
将第二密钥存储在第二虚拟化引擎的第二存储器设备中;使用第一密码处理器和第一密钥来加密第一虚拟机的数据,其中第一密码处理器是第一虚拟化引擎的一部分;使用第二密码处理器和第二密钥来加密第二虚拟引擎的数据,其中:第二密码处理器是第二虚拟化引擎的一部分;第一虚拟化引擎和第二虚拟化引擎是设备的部分;以及该设备的主机无权访问第一密钥或第二密钥。17.如权利要求16所述的方法,其中第一密钥与第二密钥不同。18.如权利要求16或17中的任一项所述的方法,其中第一存储器设备被配置为存储仅用于第一虚拟机的密钥。19.一种非暂态计算机可读存储器,存储能够由一个或多个处理器执行的多条指令,所述多条指令包括当由所述一个或多个处理器执行时使得所述一个或多个处理器执行包括以下的处理的指令:使用第一虚拟化引擎实例化第一虚拟机;使用第二虚拟化引擎实例化第二虚拟机;将第一密钥存储在第一虚拟化引擎的第一存储器设备中;将第二密钥存储在第二虚拟化引擎的第二存储器设备中;使用第一密码处理器和第一密钥来加密第一虚拟机的数据,其中第一密码处理器是第一虚拟化引擎的一部分;使用第二密码处理器和第二密钥来加密第二虚拟引擎的数据,其中:第二密码处理器是第二虚拟化引擎的一部分;第一虚拟化引擎和第二虚拟化引擎是设备的部分;以及该设备的主机无权访问第一密钥或第二密钥。20.如权利要求19所述的非暂态计算机可读存储器,其中所述多条指令还包括当由所述一个或多个处理器执行时使得所述一个或多个处理器执行包括以下的处理的指令:将密码密钥存储在第一虚拟化引擎的存储器设备中。
技术总结
网络接口卡(诸如SmartNIC)用于为虚拟机提供加密(诸如网络加密虚拟功能(NEVF)),使得客户可以控制虚拟云网络中的网络密钥。NEVF包括存储器设备(例如,SRAM)和密码处理器(例如,密码核)。存储器设备存储密码密钥。密码处理器使用密码密钥来加密去往和来自虚拟云网络中的虚拟机的数据。密钥管理系统可以用于将密码密钥安全地传送到NEVF。每个虚拟机拥有一个NEVF可以使得客户能够管理用于虚拟云网络的密码密钥。密码密钥。密码密钥。
技术研发人员:N
受保护的技术使用者:甲骨文国际公司
技术研发日:2021.12.16
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:终端以及无线通信方法与流程 下一篇:表达载体组合物的制作方法