CN116686277A - 用于可扩展多租户rdma流量的基于类的排队 - Google Patents

用于可扩展多租户rdma流量的基于类的排队 Download PDF

Info

Publication number
CN116686277A
CN116686277A CN202180088648.7A CN202180088648A CN116686277A CN 116686277 A CN116686277 A CN 116686277A CN 202180088648 A CN202180088648 A CN 202180088648A CN 116686277 A CN116686277 A CN 116686277A
Authority
CN
China
Prior art keywords
packet
rdma
vcn
network
packets
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180088648.7A
Other languages
English (en)
Inventor
S·N·希林卡尔
D·D·贝克尔
J·S·布拉尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/166,922 external-priority patent/US12010173B2/en
Application filed by Oracle International Corp filed Critical Oracle International Corp
Priority claimed from PCT/US2021/025459 external-priority patent/WO2022146466A1/en
Publication of CN116686277A publication Critical patent/CN116686277A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

描述了用于数据联网的技术和装置。在一个示例中,一种对远程直接存储器访问(RDMA)分组进行排队的方法包括接收具有第一服务质量(QoS)数据字段的第一RDMA分组;基于第一QoS数据字段的值,将第一RDMA分组排入多个队列中的第一队列;接收具有第二QoS数据字段的第二RDMA分组;基于第二QoS数据字段的值,将第二RDMA分组排入所述多个队列中的第二队列,第二队列与第一队列不同。

Description

用于可扩展多租户RDMA流量的基于类的排队
相关申请的交叉引用
本申请要求于2020年12月30日提交的标题为“CLOUD SCALE MULTI-TENANCY FORRDMA OVER CONVERGED ETHERNET(RoCE)”的第63/132,417号美国临时申请、于2021年2月2日提交的标题为“CLOUD SCALE MULTI-TENANCY FOR RDMA OVER CONVERGED ETHERNET(RoCE)”的第17/165,877号美国非临时申请,以及于2021年2月3日提交的标题为“CLASS-BASED QUEUEING FOR SCALABLE MULTI-TENANT RDMA TRAFFIC”的第17/166,922号美国非临时申请的优先权,所述申请出于所有目的通过引用整体并入本文。
背景技术
融合以太网上的RDMA(RoCE)是允许通过无损以太网网络进行远程直接存储器访问(RDMA)的网络协议。RoCE通过在以太网上封装InfiniBand(IB)传输分组来实现这一点。通常,RoCE涉及具有专用RDMA队列和专用VLAN的层2网络。但是,层2网络无法扩展且性能不佳,因为它们缺乏更具可扩展性和高性能的层3网络中存在的关键特性和特点。因此,现有的公共云实施方式无法使用RoCE协议提供数据传送。
发明内容
本公开一般而言涉及数据联网。更具体地,描述了使层2流量能够使用层3协议在层3网络上传送的技术。在某些实施例中,本文描述的技术使远程直接存储器访问(RDMA)流量(例如,融合以太网上的RDMA(RoCE)流量)能够通过共享的层3物理网络或使用层3路由协议的交换机架构从多租户主机机器(即,托管属于不同租户或客户的计算实例的主机机器)上的计算实例传送到另一个多租户主机机器上的计算实例。这种通信也可以可选地包括其它流量(例如,TCP和/或UDP流量)。客户或租户体验到通信发生在专用的层2网络上,而通信实际上发生在使用层3路由协议的共享(即,在多个客户或租户之间共享)层3网络上。本文描述了各种实施例,包括方法、***、存储可由一个或多个处理器执行的程序、代码或指令的非暂态计算机可读存储介质等。
在某些实施例中,一种数据联网的方法包括由联网设备接收具有第一服务质量(QoS)数据字段的第一RDMA分组;基于第一QoS数据字段的值,将第一RDMA分组排入多个队列中的第一队列;由联网设备接收具有第二QoS数据字段的第二RDMA分组;以及基于第二QoS数据字段的值,将第二RDMA分组排入多个队列中的第二队列,第二队列与第一队列不同。该方法还可以包括在多个队列之中根据第一权重从第一队列检索第一RDMA分组,并从第二队列检索第二RDMA分组。第一权重可以是加权循环方案。附加地或可替代地,多个队列可以包括控制队列,并且该方法还可以包括由联网设备从控制队列中检索多个控制分组,其中检索多个控制分组比检索第一RDMA分组和检索第二RDMA分组具有严格的优先级。在这种情况下,多个队列可以包括多个RDMA队列,其包括第一队列和第二队列,并且控制队列可以被配置为具有比多个RDMA队列中的任何队列低的带宽。多个控制分组可以包括网络控制协议分组或拥塞通知分组中的至少一个。
在如上所述的方法中,第一QoS数据字段可以是第一RDMA分组的互联网协议(IP)报头的差分服务代码点(DSCP)数据字段。第一和第二RDMA分组中的每一个可以是RoCEv2分组;可替代地,第一和第二RDMA分组中的每一个可以是根据覆盖封装协议(例如,VxLAN、NVGRE、GENEVE、STT和MPLS之中的一种)格式化的层3封装的分组,并且该方法还可以包括解封装第一RDMA分组以获得第一解封装的RDMA分组,以及将拥塞指示信息从第一RDMA分组的至少一个外部报头复制到第一解封装的RDMA分组。上述任一种方法还可以包括接收多个RDMA分组,多个RDMA分组中的每一个具有对应的QoS数据字段;对于多个RDMA分组中的每一个,基于RDMA分组的QoS数据字段的值将RDMA分组排入多个队列中的队列;从多个队列中检索多个RDMA分组,其中多个RDMA分组包括多个分组流,并且其中该方法还包括根据每流等价多路径方案路由多个分组流。
在又一些实施例中,描述了用于RDMA流量的基于类的排队的技术(例如,在层3网络中),其可以被用于在云规模的网络架构中维持基于类的分离,使得特定队列中的RDMA流量不会影响其它队列中的RDMA流量。根据某些实施例,***可以被实现为包括用于传输不同类和来自不同租户的RDMA流量的共享架构,其中从一个RDMA网络接口控制器(NIC)到另一个NIC的跨越共享架构的路径中的每个设备包括专用于不同类的RDMA流量的多个队列。
根据某些实施例,一种对RDMA分组进行排队的方法包括由联网设备接收多个RDMA分组。多个RDMA分组中的每个RDMA分组包括服务质量(QoS)数据字段,并且对于多个RDMA分组中的每个RDMA分组,QoS数据字段具有指示服务的类的QoS值RDMA分组位于多个QoS值之中。该方法还包括由联网设备在多个RDMA队列之间分发多个RDMA分组。根据多个QoS值到多个RDMA队列的第一映射来执行分发。这种方法还包括由联网设备在多个RDMA队列之中根据第一权重从多个RDMA队列中检索多个RDMA分组。检索到的多个RDMA分组可以包括多个分组流,在这种情况下,示例还可以包括根据每流等价多路径方案来路由检索到的多个RDMA分组的多个分组流。多个RDMA分组中的每个RDMA分组可以是RoCEv2分组,或者多个RDMA分组中的每个RDMA分组可以是根据覆盖封装协议(例如,VxLAN、NVGRE、GENEVE、STT或MPLS)格式化的层3封装分组。
在进一步的示例中,分发包括响应于确定多个RDMA分组中的第一RDMA分组的QoS数据字段具有第一QoS值而将第一RDMA分组存储到多个RDMA队列中的第一RDMA队列;以及,响应于确定多个RDMA分组中的第二RDMA分组的QoS数据字段具有第二QoS值而将第二RDMA分组存储到多个RDMA队列中的第二RDMA队列,其中第二QoS值与第一QoS值不同。
根据某些实施例,另一种对RDMA分组进行排队的方法还包括由联网设备从控制队列中检索多个控制分组,其中检索多个控制分组比检索多个RDMA分组具有严格的优先级。在这种情况下,控制队列可以被配置为具有比多个RDMA队列中的任何一个更低的带宽。可替代地或附加地,多个控制分组可以包括至少一个网络控制协议分组(例如,BGP分组)和/或至少一个拥塞通知分组(CNP分组)。
根据某些实施例,联网设备(例如,叶交换机或主干交换机)可以被配置为包括多个RDMA队列,并且处理电路***耦合到多个RDMA队列并且被配置为接收多个RDMA分组,其中多个RDMA分组中的每个RDMA分组包括服务质量(QoS)数据字段;根据多个QoS值到多个RDMA队列的第一映射在多个RDMA队列之间分发多个RDMA分组;在多个RDMA队列之中根据第一权重从多个RDMA队列中检索多个RDMA分组。对于多个RDMA分组中的每个RDMA分组,QoS数据字段具有指示RDMA分组的服务类并且在多个QoS值之中的值。
在又一些实施例中,描述了用于封装的远程直接存储器访问(RDMA)流量的基于类的标记的技术,该技术可以被用于在云规模(例如,在层3传输期间)维持跨网络架构的一致的基于类的分离,以便特定队列中的RDMA流量不会影响其它队列中的RDMA流量。根据某些实施例,***可以被实现为包括用于传输不同类且来自不同租户的RDMA流量的共享架构,其中从一个RDMA网络接口控制器(NIC)到另一个NIC的跨共享架构的路径中的每个设备包括专用于不同类的RDMA流量的多个队列。本文描述了各种发明性实施例,包括方法、***、存储可由一个或多个处理器执行的程序代码、指令等的非暂态计算机可读存储介质。
根据某些实施例,一种数据联网方法包括由联网设备接收多个RDMA分组。多个RDMA分组中的每个RDMA分组包括服务质量(QoS)数据字段,该数据字段具有指示RDMA分组的服务类的QoS值。多个RDMA分组包括QoS数据字段具有第一QoS值的RDMA分组和QoS数据字段具有与第一QoS值不同的第二QoS值的RDMA分组。该方法还包括,对于多个RDMA分组中的每一个,封装RDMA分组以产生多个层3封装的分组中的对应一个,该对应的层3封装的分组具有至少一个外部报头。对于多个RDMA分组中的每一个,RDMA分组的封装包括将对应的层3封装的分组的至少一个外部报头添加到RDMA分组。对于多个层3封装的分组中的每一个,层3封装的分组的至少一个外部报头的QoS数据字段采用基于对应RDMA分组的QoS数据字段的QoS值的QoS值。对于多个层3封装的分组中的每个层3封装的分组,至少一个外部报头可以包括基于对应RDMA分组的VLAN ID的虚拟网络标识字段。在这种情况下,多个RDMA分组可以包括各自具有第一VLAN ID的RDMA分组(一些分组可能具有与其它分组不同的QoS值),以及各自具有与第一VLAN ID不同的第二VLAN ID的RDMA分组。可替代地或附加地,多个层3封装的分组中的至少一个层3封装的分组可以包括第一VLAN标签和与第一VLAN标签不同的第二VLAN标签。
对于多个层3封装的分组中的每一个,封装的分组的至少一个外部报头可以包括具有目的地端口号4791(例如,RoCEv2保留的UDP端口)的用户数据报协议(UDP)报头。可替代地或附加地,层3封装的分组的至少一个外部报头可以包括具有目的地IP地址的互联网协议(IP)报头,该目的地IP地址与对应RDMA分组的目的地介质访问控制(MAC)地址相关联。
对于多个RDMA分组中的每个RDMA分组,RDMA分组的QoS数据字段可以是RDMA分组的IP报头的DSCP数据字段。在这种情况下,对于多个层3封装的分组中的每一个,层3封装的分组的至少一个外部报头的QoS数据字段中的QoS值可以等于对应RDMA分组的QoS数据字段中的QoS值。可替代地,对于多个RDMA分组中的每个RDMA分组,RDMA分组的QoS数据字段可以是VLAN标签的IEEE 802.1p数据字段。在这种情况下,封装RDMA分组可以包括从RDMA分组的QoS数据字段的QoS值和QoS值的映射中获得用于对应层3封装的分组的至少一个外部报头的QoS数据字段的QoS值,并将获得的QoS值存储到该层3封装的分组的至少一个外部报头的QoS数据字段中。
根据某些实施例,进一步的数据联网方法还包括,对于多个层3封装的分组中的至少一个层3封装的分组中的每一个,将拥塞指示信息从对应的RDMA分组复制到在层3封装的分组的至少一个外部报头。可替代地或附加地,数据联网的方法还可以包括解封装第二多个层3封装的分组中的每一个以获得多个解封装的RDMA分组中的对应一个。对于多个解封装的RDMA分组中的至少一个,解封装可以包括将拥塞指示信息从对应的层3封装的分组的至少一个外部报头复制到解封装的RDMA分组。
根据某些实施例,一种非暂态计算机可读存储器可以存储可由一个或多个处理器执行的多条指令,该多条指令包括当由一个或多个处理器执行时使一个或多个处理器执行上述方法中的任何一个的指令。
根据某些实施例,一种***可以包括一个或多个处理器,以及耦合到一个或多个处理器的存储器。存储器可以存储可由一个或多个处理器执行的多条指令,该多条指令包括当由一个或多个处理器执行时使一个或多个处理器执行上述方法中的任何一个的指令。
参考以下说明书、权利要求和附图,前述内容连同其它特征和实施例将变得更加清楚。
附图说明
图1是分布式环境的高级图,示出了根据某些实施例的由云服务提供者基础设施托管的虚拟或覆盖云网络。
图2描绘了根据某些实施例的CSPI内的物理网络中的物理组件的简化体系架构图。
图3示出了根据某些实施例的CSPI内的示例布置,其中主机机器连接到多个网络虚拟化设备(NVD)。
图4描绘了根据某些实施例的主机机器和NVD之间的连接性,用于提供I/O虚拟化以支持多租赁(tenancy)。
图5描绘了根据某些实施例的由CSPI提供的物理网络的简化框图。
图6示出了根据某些实施例的用于数据联网的分布式云环境的示例。
图7A-7C示出了描绘根据某些实施例的用于使用层3路由协议通过共享的层3交换机架构执行从多租户源主机机器上的源计算实例到多租户目的地主机机器上的目的地计算实例的RDMA数据传送的处理的简化流程图。
图8A示出了根据融合以太网上的RDMA(RoCEv2)协议的版本2的RDMA分组格式。
图8B示出了根据某些实施例的VLAN标记的RoCEv2分组的格式。
图8C示出了根据某些实施例的Q-in-Q标记的RoCEv2分组的格式。
图9A示出了互联网协议(IP)报头的格式。
图9B和9C示出了根据某些实施例的多个队列的实施方式。
图10示出了根据某些实施例的VxLAN分组的格式。
图11是图示根据至少一个实施例的用于将云基础设施实现为服务***的一种模式的框图。
图12是图示根据至少一个实施例的用于将云基础设施实现为服务***的另一种模式的框图。
图13是图示根据至少一个实施例的用于将云基础设施实现为服务***的另一种模式的框图。
图14是图示根据至少一个实施例的用于将云基础设施实现为服务***的另一种模式的框图。
图15是图示根据至少一个实施例的示例计算机***的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了具体细节以便提供对某些实施例的透彻理解。但是,显然可以在没有这些具体细节的情况下实践各种实施例。附图和描述并非旨在限制。词语“示例性”在本文用于表示“用作示例、实例或图示”。本文描述为“示例性”的任何实施例或设计不一定被解释为优选或优于其它实施例或设计。
本公开一般而言涉及联网,并且更具体地涉及使层2流量能够使用层3协议在层3网络上传送的技术。在某些实施例中,本文描述的技术使融合以太网上的RDMA(RoCE)流量能够使用层3路由协议在共享的层3物理网络或交换机架构上从多租户主机机器(即,托管属于不同租户或客户的计算实例的主机机器)上的计算实例传送到另一个多租户主机机器上的计算实例。客户或租户体验到通信发生在专用的层2网络上,而通信实际上发生在使用层3路由协议的共享(即,在多个客户或租户之间共享)层3网络上。
还公开了使可以识别租户的VLAN识别信息(例如,VLAN ID)能够在RoCE分组的层2报头中指定的技术(例如,VLAN ID被包括在添加到RoCE分组的802.1Q标签中)以及用于映射到包括在层3覆盖封装协议包装器中的信息的VLAN识别信息,当分组通过交换机架构时,该包装器被添加到802.1Q标记的RoCE层2分组。将VLAN识别信息(或租户信息)映射到层3封装包装器的字段使得来自不同租户的流量之间的区别对层3交换机架构中的联网络可见。联网设备可以使用这个信息来隔离属于不同客户或租户的流量。
公开了使与层2RDMA分组(例如,RoCE分组)相关联的QoS信息能够从传送数据的源主机机器端到端地一直沿着交换机架构保存并传送到数据要被传送到的目的地主机机器的技术。通过将那个信息编码到层3覆盖封装协议包装器中,编码在层2RoCE分组中的QoS信息对于交换机架构中的联网设备可见,当分组进入交换机架构时,该包装器由处置由主机(例如,入口架顶式(TOR)交换机)发送的流量的初始交换机添加到802.1Q标记的RoCE分组。将QoS信息映射(例如,复制)到封装包装器中使交换机架构中的联网设备能够使用层3路由协议并根据与每个分组相关联的QoS信息通过交换机架构路由RoCE流量。
还公开了使交换机架构中的任何联网设备能够基于每个分组用信号通知拥塞的技术。当分组从连接到源主机机器的TOR交换机(“入口TOR交换机”)通过交换机架构行进到连接到目的地主机机器的TOR交换机(“出口TOR交换机”)时,这个拥塞信息保存在分组中。在连接到目的地主机机器的TOR交换机上,来自层3封装包装器的拥塞信息被翻译(例如,复制)到RoCE分组报头(例如,翻译成RoCE分组的IP报头中的ECN位)并因此被保存并可供目的地主机机器使用。然后目的地主机机器可以通过发送拥塞通知分组来响应拥塞信息(例如,向源主机机器指示拥塞,以便它可以例如相应地降低其传输速率)。
在典型的计算环境中,当数据在两个计算机之间交换时,被传送的数据被计算机执行的网络协议堆栈软件复制多次。这被称为多副本问题。此外,OS内核和计算机的CPU参与这些通信,因为网络堆栈(例如,TCP堆栈)是内核固有的。这在数据传送中引入了显著的时延,一些应用无法容忍的时延。
远程直接存储器访问(RDMA)是一种直接存储器访问机制,它使得能够在计算机或服务器的应用存储器之间移动数据,而不涉及计算机的CPU(CPU旁路)或操作***(OS内核旁路)。这种机制允许高吞吐量、高数据传送率和低时延联网。RDMA通过使计算机上的网络适配器或网络接口卡(NIC)能够将数据从线路直接传送到计算机的应用存储器或将数据从计算机的应用存储器直接传送到线路来支持零副本联网,从而消除了在应用存储器和计算机的操作***中的数据缓冲区之间复制数据的需要。此类传送几乎不需要CPU或高速缓存完成任何工作,并且避免了计算机的上下文切换,并且传送可以与其它***操作继续并行进行。RDMA对于高性能计算(HPC)和要求低延迟的应用非常有用。
融合以太网上的RDMA(RoCE)是一种网络协议,该协议允许通过无损以太网网络进行远程直接存储器访问(RDMA)。RoCE通过在以太网上封装InfiniBand(IB)传输分组来实现这一点。通常,RoCE涉及专用RDMA队列和专用VLAN,以及层2网络的使用。但是,层2网络无法扩展且性能不佳,因为它们缺乏更具可扩展性和高性能的层3网络中存在的关键特性和特点。例如,层2网络:不支持网络架构中数据生产者(例如,源)和数据消费者(例如,目的地)之间的多条路径;层2环路有问题;存在层2帧的泛洪问题;在地址方案中缺乏对层次结构的支持(例如,层2没有CIDR、前缀和子网的概念);有大量广播流量的问题;缺乏允许通告网络连接性的控制协议(例如,层2缺乏类似于BGP、RIP或IS-IS的协议);缺乏故障排除协议和工具(例如,层2缺乏诸如ICMP或Traceroute之类的工具);等等。
当前有两个版本的RoCE协议—RoCEv1和RoCEv2。RoCEv2,也称为“可路由RoCE”,在文档InfiniBandTM Architecture Specification Release 1.2.1 Annex A17:RoCEv2”(InfiniBand Trade Association,Beaverton,OR,2014年9月2日)中定义。RoCEv2使用用户数据报协议(UDP)作为传输协议。遗憾的是,UDP缺乏TCP提供的复杂的拥塞控制和拥塞控制机制。因此,RoCEv2存在以下问题:网络活锁(例如,进程正在改变状态、帧移动但帧不前进);网络死锁(例如,由于循环资源依赖性,进程一直处于等待状态);队头(HOL)阻塞(例如,无法转发队列头部的分组阻止其后面的分组);受害流(例如,非拥塞节点之间经由拥塞交换机的流);不公平(例如,高带宽流增加了其它流的时延);以及由于无损流量(诸如RDMA)消耗缓冲区而对有损流量(诸如TCP)造成的不利影响。
成功的RoCEv2实施方式通常还要求专用于RDMA流量的网络路径和VLAN。此外,作为协议的RoCEv2依赖于层2优先级流量控制(PFC)、显式拥塞通知(ECN)或PFC和ECN的组合来实现某种类似的拥塞管理,但这些方案在实践中常常不足。PFC支持多达八个独立的流量类并允许接收器通过向发送器发送PAUSE帧来请求发送器暂停指定类的流量。遗憾的是,PFC容易出现PAUSE帧风暴(例如,过多的PAUSE帧影响到沿着流量源的整条路径上指定类的所有流量),这会导致网络完全死锁。此外,PFC PAUSE帧不允许多租户操作,因为PAUSE使得发送器暂停指定类的所有流量的传输—虽然PFC最多提供八个流量类,但租户的数量可以是其大于八的许多倍。
本文中公开的实施例包括用于在公共云的规模上实现多租户融合以太网上的RDMA(RoCE)的***、方法和装置。例如,环境可以扩展到跨越数百、数千或更多主机的超大型网络。本文公开的此类实施例包括用于在避免队头阻塞的同时并且在维持用于RDMA应用的高性能、低时延和无损操作的同时支持公共云中的多租户RoCE流量的技术。同时,所公开的技术也可以被实现为支持使用TCP/IP或UDP作为它们的传输协议的常规非RDMA应用。这些技术可以应用于所有标准速度的具有RoCE能力的以太网网络接口,包括例如25G、40G、100G、400G和800G。
如本文所公开的用于在云中缩放RoCE的技术可以包括以下各方面中的一个或多个:为每个客户提供用于他们的流量的VLAN或VLAN的集合;允许主机使用802.1q-in-802.1q为给定客户隔离客户之间和跨不同应用的流量(例如,分组可以有两个802.1Q标签:公开VLAN标签和私有VLAN标签);将每个VLAN映射到ToR上的VxLAN VNI,并为每个客户及其每个VLAN指派唯一的VxLAN VNI;使用VxLAN覆盖在层3网络之上携带客户的层2流量;使用EVPN(以太网VPN)跨底层层3网络(基层)携带MAC地址信息。
实施例可以如本文描述的那样被实现以支持多个RDMA应用(例如,云服务、高性能计算(HPC)和/或数据库应用),每个应用具有多个流量类。可以通过使用网络QoS流量类的概念隔离它们的流量来提供此类支持,其中为具有关键任务流量的不同流量类分配专用的RDMA队列集合。这种使用RDMA队列的隔离可以确保特定队列(例如,特定队列的拥塞)不会影响另一个队列。此类技术可以被用于支持多个RDMA租户(也称为“公共云客户”),使得Clos架构中的队列配置对最终客户主机(云客户)是透明的。网络可以被配置为将从客户主机接收到的DSCP标记映射到用于网络队列的正确设置,从而将主机QoS策略(配置)与架构QoS策略(配置)解耦。客户可以使用DSCP流量类(也称为DSCP代码点)和/或802.1p流量类来表示他们的性能期望。这些DSCP和802.1p类以提供主机QoS配置与Clos架构QoS配置的解耦的方式映射到Clos网络中的QoS队列。
为了通过Clos架构传达QoS队列信息以及ECN标记,可能要求确保QoS队列信息跨多个网络域被携带:例如,从层2端口到主机,从层3端口到另一个交换机,或从VxLAN虚拟层2端口到另一个交换机上的另一个VxLAN接口。这种QoS队列信息的跨域传输可以包括跨这些不同网络域携带和执行QoS标记和ECN位标记,如本文所述。
示例虚拟联网体系架构
术语云服务一般用于指由云服务提供者(CSP)使用由CSP提供的***和基础设施(云基础设施)按需(例如,经由订阅模型)向用户或客户提供的服务。通常,构成CSP基础设施的服务器和***与客户自己的内部部署服务器和***是分开的。因此,客户可以利用由CSP提供的云服务,而无需为服务购买单独的硬件和软件资源。云服务被设计为为订阅客户提供对应用和计算资源的简单、可扩展的访问,而无需客户投资购买用于提供服务的基础设施。
有几个云服务提供者提供各种类型的云服务。有各种不同类型或模型的云服务,包括软件即服务(SaaS)、平台即服务(PaaS)、基础设施即服务(IaaS)等。
客户可以订阅由CSP提供的一项或多项云服务。客户可以是任何实体,诸如个人、组织、企业等。当客户订阅或注册由CSP提供的服务时,将为该客户创建租赁或账户。然后,客户可以经由这个账户访问与该账户相关联的订阅的一个或多个云资源。
如上所述,基础设施即服务(IaaS)是一种特定类型的云计算服务。在IaaS模型中,CSP提供基础设施(称为云服务提供者基础设施或CSPI),这些基础设施可以被客户使用来构建他们自己的可定制网络并部署客户资源。因此,客户的资源和网络由CSP提供的基础设施托管在分布式环境中。这与传统计算不同,在传统计算中,在传统计算中,客户的资源和网络由客户提供的基础设施托管。
CSPI可以包括形成物理网络的互连的高性能计算资源,包括各种主机机器、存储器资源和网络资源,该物理网络也被称为基板网络或底层网络。CSPI中的资源可以散布在一个或多个数据中心上,这些数据中心可以在地理上散布在一个或多个地理地区上。虚拟化软件可以由这些物理资源执行以提供虚拟化的分布式环境。虚拟化在物理网络上创建覆盖网络(也称为基于软件的网络、软件定义的网络或虚拟网络)。CSPI物理网络为在物理网络之上创建一个或多个覆盖或虚拟网络提供了底层基础。虚拟或覆盖网络可以包括一个或多个虚拟云网络(VCN)。虚拟网络是使用软件虚拟化技术实现的(例如,管理程序、由网络虚拟化设备(NVD)(例如,smartNIC)执行的功能、架顶式(TOR)交换机、实现由NVD执行的一个或多个功能的智能TOR,以及其它机制)以创建可以在物理网络之上运行的网络抽象的层。虚拟网络可以采用多种形式,包括对等网络、IP网络等。虚拟网络通常是或者层3IP网络或者层2VLAN。这种虚拟或覆盖联网的方法常常被称为虚拟或覆盖层3网络。为虚拟网络开发的协议的示例包括IP-in-IP(或通用路由封装(GRE))、虚拟可扩展局域网(VXLAN—IETFRFC7348)、虚拟专用网络(VPN)(例如,MPLS层3虚拟专用网络(RFC 4364))、VMware的NSX、GENEVE(通用网络虚拟化封装)等。
对于IaaS,由CSP提供的基础设施(CSPI)可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在IaaS模型中,云计算服务提供者可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,IaaS提供者还可以供应各种服务来伴随那些基础设施组件(例如,计费、监视、日志记录、安全性、负载平衡和聚类等)。因此,由于这些服务可以是策略驱动的,因此IaaS用户可以能够实现策略来驱动负载平衡以维持应用可用性和性能。CSPI提供基础设施和互补云服务的集合,这些使客户能够在高度可用的被托管的分布式环境中构建和运行广泛的应用和服务。CSPI在可从各种联网位置(诸如从客户的内部部署网络)安全访问的灵活的虚拟网络中提供高性能计算资源和能力以及存储容量。当客户订阅或注册由CSP提供的IaaS服务时,为该客户创建的租赁是CSPI内的安全且隔离的分区,客户可以在其中创建、组织和管理他们的云资源。
客户可以使用由CSPI提供的计算、存储器和联网资源构建他们自己的虚拟网络。可以在这些虚拟网络上部署一个或多个客户资源或工作负载,诸如计算实例。例如,客户可以使用由CSPI提供的资源来构建一个或多个可定制且私有的虚拟网络,称为虚拟云网络(VCN)。客户可以在客户VCN上部署一个或多个客户资源,诸如计算实例。计算实例可以采用虚拟机、裸机实例等形式。因此,CSPI提供基础设施和互补云服务的集合,这些使客户能够在高度可用的虚拟被托管环境中构建和运行广泛的应用和服务。客户不管理或控制由CSPI提供的底层物理资源,但可以控制操作***、存储装置和已部署的应用;并且可能对所选择的联网组件(例如,防火墙)进行有限的控制。
CSP可以提供控制台,其使客户和网络管理员能够使用CSPI资源来配置、访问和管理部署在云中的资源。在某些实施例中,控制台提供可以被用于访问和管理CSPI的基于web的用户界面。在某些实施方式中,控制台是由CSP提供的基于web的应用。
CSPI可以支持单租赁或多租赁体系架构。在单租赁体系架构中,软件(例如,应用、数据库)或硬件组件(例如,主机机器或服务器)服务于单个客户或租户。在多租赁体系架构中,软件或硬件组件服务于多个客户或租户。因此,在多租赁体系架构中,CSPI资源在多个客户或租户之间共享。在多租赁情况下,在CSPI中采取预防措施并实施保护措施,以确保每个租户的数据都是隔离的并且对其他租户保持不可见。
在物理网络中,网络端点(“端点”,“endpoint”)是指连接到物理网络并与其所连接的网络来回通信的计算设备或***。物理网络中的网络端点可以连接到局域网(LAN)、广域网(WAN)或其它类型的物理网络。物理网络中传统端点的示例包括调制解调器、集线器、桥接器、交换机、路由器和其它网络设备、物理计算机(或主机机器)等。物理网络中的每个物理设备都有可以被用于与设备通信的固定网络地址。这个固定网络地址可以是层2地址(例如,MAC地址)、固定的层3地址(例如,IP地址)等。在虚拟化的环境或虚拟网络中,端点可以包括各种虚拟端点,诸如由物理网络的组件托管(例如,由物理主机机器托管)的虚拟机。虚拟网络中的这些端点由覆盖地址寻址,诸如覆盖层2地址(例如,覆盖MAC地址)和覆盖层3地址(例如,覆盖IP地址)。网络覆盖通过允许网络管理者使用软件管理(例如,经由实现用于虚拟网络的控制平面的软件)在与网络端点相关联的覆盖地址周围移动来实现灵活性。因而,与物理网络不同,在虚拟网络中,可以使用网络管理软件将覆盖地址(例如,覆盖IP地址)从一个端点移动到另一个端点。由于虚拟网络建立在物理网络之上,因此虚拟网络中组件之间的通信涉及虚拟网络和底层物理网络。为了促进此类通信,CSPI的组件被配置为学习和存储将虚拟网络中的覆盖地址映射到基板网络中的实际物理地址的映射,反之亦然。然后使用这些映射来促进通信。客户流量被封装以促进在虚拟网络中的路由。
因而,物理地址(例如,物理IP地址)与物理网络中的组件相关联,并且覆盖地址(例如,覆盖IP地址)与虚拟网络中的实体相关联。物理IP地址和覆盖IP地址都是真实IP地址的类型。这些与虚拟IP地址是分开的,其中虚拟IP地址映射到多个真实IP地址。虚拟IP地址提供虚拟IP地址与多个真实IP地址之间的一对多映射。
云基础设施或CSPI在物理上托管在世界上一个或多个地区的一个或多个数据中心中。CSPI可以包括物理或基板网络中的组件和位于建立在物理网络组件之上的虚拟网络中的虚拟化的组件(例如,虚拟网络、计算实例、虚拟机等)。在某些实施例中,CSPI在领域、地区和可用性域中被组织和托管。地区通常是包含一个或多个数据中心的局部化的地理区域。地区一般彼此独立并且可以相隔很远,例如,跨越国家甚至大陆。例如,第一个地区可以在澳大利亚,另一个在日本,另一个在印度,等等。CSPI资源在地区之间划分,使得每个地区都有自己独立的CSPI资源子集。每个地区可以提供核心基础设施服务和资源的集合,诸如计算资源(例如,裸机服务器、虚拟机、容器和相关基础设施等);存储资源(例如,块卷存储装置、文件存储装置、对象存储装置、归档存储装置);网络资源(例如,虚拟云网络(VCN)、负载平衡资源、与内部部署网络的连接)、数据库资源;边缘联网资源(例如,DNS);以及访问管理和监视资源等。每个地区一般都有多条路径将其连接到领域中的其它地区。
一般而言,应用被部署在它被最频繁使用的地区中(即,部署在与该地区相关联的基础设施上),因为使用附近的资源比使用远处的资源更快。应用也可以出于各种原因而部署在不同的地区,诸如冗余以减轻地区范围内事件(诸如大型天气***或地震)的风险,以满足法律管辖区、税域和其它商业或社会标准等的不同要求。
地区内的数据中心可以被进一步组织和细分为可用性域(AD)。可用性域可以与位于地区内的一个或多个数据中心对应。地区可以由一个或多个可用性域组成。在这种分布式环境中,CSPI资源或者是特定于地区的,诸如虚拟云网络(VCN),或者是特定于可用性域的,诸如计算实例。
地区内的AD彼此隔离,具有容错能力,并且被配置为使得它们极不可能同时发生故障。这是通过AD不共享关键基础设施资源(诸如联网、物理电缆、电缆路径、电缆入口点等)来实现的,使得地区内的一个AD处的故障不太可能影响同一地区内其它AD的可用性。同一地区内的AD可以通过低时延、高带宽网络彼此连接,这使得为其它网络(例如,互联网、客户的内部部署网络等)提供高可用性连接并且在多个AD中构建复制***以实现高可用性和灾难恢复成为可能。云服务使用多个AD来确保高可用性并防止资源故障。随着IaaS提供者提供的基础设施的增长,可以添加更多地区和AD以及附加的容量。可用性域之间的流量通常是加密的。
在某些实施例中,地区被分组为领域。领域是地区的逻辑集合。领域彼此隔离并且不共享任何数据。同一领域中的地区可以彼此通信,但不同领域中的地区不能。客户与CSP的租赁或账户存在于单个领域中,并且可以散布在属于该领域的一个或多个地区中。通常,当客户订阅IaaS服务时,会在领域内客户指定的地区(称为“主”地区)中为该客户创建租赁或账户。客户可以将客户的租赁扩展到领域内的一个或多个其它地区。客户无法访问不在客户的租赁所在领域中的地区。
IaaS提供者可以提供多个领域,每个领域迎合客户或用户的特定集合。例如,可以为商业客户提供商业领域。作为另一个示例,可以为特定国家为那个国家内的客户提供领域。作为又一个示例,可以为政府等提供政府领域。例如,政府领域可以迎合特定政府并且可以具有比商业领域更高的安全性级别。例如,Oracle云基础设施(Oracle CloudInfrastructure,OCI)目前为商业地区提供领域,并且为政府云地区提供两个领域(例如,FedRAMP授权的和IL5授权的)。
在某些实施例中,AD可以被细分成一个或多个故障域。故障域是AD内的基础设施资源的分组,以提供反亲和性。故障域允许计算实例的分布,使得这些实例不位于单个AD内的相同物理硬件上。这被称为反亲和性。故障域是指共享单点故障的硬件组件(计算机、交换机等)的集合。计算池在逻辑上被划分为故障域。因此,影响一个故障域的硬件故障或计算硬件维护事件不影响其它故障域中的实例。取决于实施例,用于每个AD的故障域的数量可以有所不同。例如,在某些实施例中,每个AD包含三个故障域。故障域充当AD内的逻辑数据中心。
当客户订阅IaaS服务时,来自CSPI的资源被供应给客户并与客户的租赁相关联。客户可以使用这些供应的资源来构建私有网络并在这些网络上部署资源。由CSPI在云中托管的客户网络被称为虚拟云网络(VCN)。客户可以使用为客户分配的CSPI资源来设置一个或多个虚拟云网络(VCN)。VCN是虚拟或软件定义的私有网络。部署在客户的VCN中的客户资源可以包括计算实例(例如,虚拟机、裸机实例)和其它资源。这些计算实例可以表示各种客户工作负载,诸如应用、负载平衡器、数据库等。部署在VCN上的计算实例可以通过公共网络(诸如互联网)与公共可访问端点(“公共端点”)、与同一VCN或其它VCN(例如,客户的其它VCN或不属于该客户的VCN)中的其它实例、与客户的内部部署数据中心或网络以及与服务端点和其它类型的端点通信。
CSP可以使用CSPI来提供各种服务。在一些情况下,CSPI的客户本身可以像服务提供者一样起作用并使用CSPI资源提供服务。服务提供者可以暴露服务端点,该服务端点以标识信息(例如,IP地址、DNS名称和端口)为特征。客户的资源(例如,计算实例)可以通过访问由服务为特定服务暴露的服务端点来使用该特定服务。这些服务端点一般是用户可经由公共通信网络(诸如互联网)使用与端点相关联的公共IP地址公开访问的端点。可公开访问的网络端点有时也称为公共端点。
在某些实施例中,服务提供者可以经由用于服务的端点(有时称为服务端点)来暴露服务。服务的客户然后可以使用这个服务端点来访问服务。在某些实施方式中,为服务提供的服务端点可以由打算消费该服务的多个客户访问。在其它实施方式中,可以为客户提供专用服务端点,使得只有该客户可以使用该专用服务端点来访问服务。
在某些实施例中,当创建VCN时,它与私有覆盖无类域间路由(CIDR)地址空间相关联,该地址空间是指派给VCN的一系列私有覆盖IP地址(例如,10.0/16)。VCN包括相关联的子网、路由表和网关。VCN驻留在单个地区内,但可以跨越该区域的可用性域中的一个或多个或所有。网关是为VCN配置的虚拟接口并且启用VCN与VCN外部的一个或多个端点之间的流量的通信。可以为VCN配置一种或多种不同类型的网关,以启用去往和来自不同类型端点的通信。
VCN可以被细分为一个或多个子网络,诸如一个或多个子网。因此,子网是可以在VCN内创建的配置的单元或细分。VCN可以有一个或多个子网。VCN内的每个子网都与连续范围的覆盖IP地址(例如,10.0.0.0/24和10.0.1.0/24)相关联,这些IP地址不与该VCN中的其它子网重叠并且表示VCN的地址空间内的地址空间子集。
每个计算实例都与虚拟网络接口卡(VNIC)相关联,这使得计算实例能够参与VCN的子网。VNIC是物理网络接口卡(NIC)的逻辑表示。一般而言,VNIC是实体(例如,计算实例、服务)与虚拟网络之间的接口。VNIC存在于子网中,具有一个或多个相关联的IP地址,以及相关联的安全性规则或策略。VNIC相当于交换机上的层2端口。VNIC附接到计算实例和VCN内的子网。与计算实例相关联的VNIC使计算实例成为VCN的子网的一部分,并且使计算实例能够与和计算实例位于同一子网上的端点、与VCN中的不同子网中的端点或与VCN外部的端点通信(例如,发送和接收分组)。因此,与计算实例相关联的VNIC确定计算实例如何与VCN内部和外部的端点连接。当创建计算实例并将其添加到VCN内的子网时,创建用于计算实例的VNIC并将其与该计算实例相关联。对于包括计算实例的集合的子网,该子网包含与计算实例的该集合对应的VNIC,每个VNIC附接到计算机实例的该集合内的计算实例。
经由与计算实例相关联的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地址的地址。
在某些实施例中,除了私有覆盖IP地址之外,计算实例还可以可选地被指派附加的覆盖IP地址,诸如例如如果在公共子网中,那么是一个或多个公共IP地址。这多个地址或者在同一个VNIC上或者在与计算实例相关联的多个VNIC上指派。但是,每个实例具有主VNIC,它是在实例启动期间创建的并且与指派给该实例的覆盖私有IP地址相关联—这个主VNIC无法被删除。称为辅助VNIC的附加VNIC可以添加到与主VNIC相同的可用性域中的现有实例。所有VNIC都在与该实例相同的可用性域中。辅助VNIC可以位于与主VNIC相同的VCN中的子网中,或者位于同一VCN或不同VCN中的不同子网中。
如果计算实例在公共子网中,那么可以可选地为其指派公共IP地址。在创建子网时,可以将子网指定为或者公共子网或者私有子网。私有子网意味着子网中的资源(例如,计算实例)和相关联的VNIC不能具有公共覆盖IP地址。公共子网意味着子网中的资源和相关联的VNIC可以具有公共IP地址。客户可以指定子网存在于单个可用性域中或跨地区或领域中的多个可用性域。
如上所述,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地址。
在一些其它实施例中,VCN内的每个子网可以具有其自己的相关联的VR,该VR可由子网使用与VR相关联的保留或默认IP地址寻址。例如,保留或默认IP地址可以是与该子网相关联的IP地址范围中的第一个IP地址。子网中的VNIC可以使用这个默认或保留IP地址与与子网相关联的VR通信(例如,发送和接收分组)。在这种实施例中,VR是该子网的入口/出口点。与VCN内的子网相关联的VR可以与和VCN内的其它子网相关联的其它VR通信。VR还可以与和VCN相关联的网关通信。子网的VR功能在为子网中的VNIC执行VNIC功能的一个或多个NVD上运行或由其执行。
可以为VCN配置路由表、安全性规则和DHCP选项。路由表是用于VCN的虚拟路由表并且包括通过网关或特殊配置的实例将流量从VCN内的子网路由到VCN外的目的地的规则。可以定制VCN的路由表以控制分组如何转发/路由到VCN和从VCN路由。DHCP选项是指在实例启动时自动提供给实例的配置信息。
为VCN配置的安全性规则表示用于VCN的覆盖防火墙规则。安全性规则可以包括入口和出口规则,并指定允许进出VCN实例的流量的类型(例如,基于协议和端口)。客户可以选择给定规则是有状态的还是无状态的。例如,客户可以通过用源CIDR 0.0.0.0/0和目的地TCP端口22设置有状态入口规则来允许来自任何地方的传入SSH流量到实例的集合。安全性规则可以使用网络安全性组或安全性列表来实现。网络安全性组由仅适用于该组中的资源的安全性规则的集合组成。另一方面,安全性列表包括适用于使用该安全性列表的任何子网中的所有资源的规则。可以为VCN提供带有默认安全性规则的默认安全性列表。为VCN配置的DHCP选项提供在实例启动时自动提供给VCN中的实例的配置信息。
在某些实施例中,用于VCN的配置信息由VCN控制平面确定和存储。例如,用于VCN的配置信息可以包括关于以下的信息:与VCN相关联的地址范围、VCN内的子网和相关联的信息、与VCN相关联的一个或多个VR、VCN中的计算实例和相关联的VNIC、执行与VCN相关联的各种虚拟化网络功能的NVD(例如,VNIC、VR、网关)、用于VCN的状态信息以及其它VCN相关信息。在某些实施例中,VCN分发服务向NVD发布由VCN控制平面或其部分存储的配置信息。分发的信息可以被用于更新由NVD存储和使用的信息(例如,转发表、路由表等),以将分组转发到VCN中的计算实例或从计算实例转发分组。
在某些实施例中,VCN和子网的创建由VCN控制平面(CP)处置并且计算实例的启动由计算控制平面处置。计算控制平面负责为计算实例分配物理资源,然后调用VCN控制平面来创建VNIC并将其附接到计算实例。VCN CP还将VCN数据映射发送到被配置为执行分组转发和路由功能的VCN数据平面。在某些实施例中,VCN CP提供负责向VCN数据平面提供更新的分发服务。VCN控制平面的示例也在图11、图12、图13和图14中描绘(参见参考标记1116、1216、1316和1416)并在下面进行描述。
客户可以使用由CSPI托管的资源创建一个或多个VCN。部署在客户VCN上的计算实例可以与不同的端点通信。这些端点可以包括由CSPI托管的端点和CSPI外部的端点。
图1、图2、图3、图4、图5、图11、图12、图13和图15中描绘了用于使用CSPI实现基于云的服务的各种不同体系架构,并且在下文中进行描述。图1是分布式环境100的高级图,示出了根据某些实施例的由CSPI托管的覆盖或客户VCN。图1中描绘的分布式环境包括覆盖网络中的多个组件。图1中描绘的分布式环境100仅仅是个示例,并且不旨在不当地限制要求保护的实施例的范围。许多变化、替代和修改是可能的。例如,在一些实施方式中,图1中描绘的分布式环境可以具有比图1中所示的那些更多或更少的***或组件,可以组合两个或更多个***,或者可以具有不同的***配置或布置。
如图1中描绘的示例中所示,分布式环境100包括提供服务和资源的CSPI 101,客户可以订阅并使用这些服务和资源来构建他们的虚拟云网络(VCN)。在某些实施例中,CSPI101向订阅客户提供IaaS服务。CSPI 101内的数据中心可以被组织到一个或多个地区。图1中示出了一个示例地区“地区US”102。客户已经为地区102配置了客户VCN 104。客户可以在VCN 104上部署各种计算实例,其中计算实例可以包括虚拟机或裸机实例。实例的示例包括应用、数据库、负载平衡器等。
在图1中描绘的实施例中,客户VCN 104包括两个子网,即,“子网-1”和“子网-2”,每个子网具有其自己的CIDR IP地址范围。在图1中,子网-1的覆盖IP地址范围是10.0/16,并且子网-2的地址范围是10.1/16。VCN虚拟路由器105表示用于VCN的逻辑网关,它启用VCN104的子网之间以及与VCN外部的其它端点的通信。VCN VR 105被配置为在VCN 104中的VNIC和与VCN 104相关联的网关之间路由流量。VCN VR 105为VCN 104的每个子网提供端口。例如,VR 105可以为子网-1提供具有IP地址10.0.0.1的端口并为子网-2提供具有IP地址10.1.0.1的端口。
可以在每个子网上部署多个计算实例,其中计算实例可以是虚拟机实例和/或裸机实例。子网中的计算实例可以由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地址。
子网-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地址。
VCN A 104还可以包括一个或多个负载平衡器。例如,可以为子网提供负载平衡器,并且可以将负载平衡器配置为跨子网上的多个计算实例负载平衡流量。还可以提供负载平衡器以在VCN中跨子网负载平衡流量。
部署在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及其它端点。
使用与源计算实例和目的地计算实例相关联的VNIC促进同一子网上的计算实例之间的通信。例如,子网-1中的计算实例C1可能想要将分组发送到子网-1中的计算实例C2。对于源自源计算实例且其目的地是同一子网中的另一个计算实例的分组,该分组首先由与源计算实例相关联的VNIC处理。由与源计算实例相关联的VNIC执行的处理可以包括从分组报头确定分组的目的地信息、识别为与源计算实例相关联的VNIC配置的任何策略(例如,安全性列表)、确定用于分组的下一跳、根据需要执行任何分组封装/解封装功能,然后将分组转发/路由到下一跳,目的是促进分组到其预期目的地的通信。当目的地计算实例与源计算实例位于同一子网中时,与源计算实例相关联的VNIC被配置为识别与目的地计算实例相关联的VNIC并将分组转发到该VNIC进行处理。然后执行与目的地计算实例相关联的VNIC并将分组转发到目的地计算实例。
对于要从子网中的计算实例传送到同一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。
对于要从VCN 104中的计算实例传送到VCN 104外部的端点的分组,通信由与源计算实例相关联的VNIC、VCN VR 105和与VCN 104相关联的网关促进。一种或多种类型的网关可以与VCN 104相关联。网关是VCN和另一个端点之间的接口,其中该另一个端点在VCN外部。网关是层3/IP层概念并且使VCN能够与VCN外部的端点通信。因此,网关促进VCN与其它VCN或网络之间的流量流动。可以为VCN配置各种不同类型的网关以促进与不同类型的端点的不同类型的通信。取决于网关,通信可以通过公共网络(例如,互联网)或通过私有网络进行。各种通信协议可以用于这些通信。
例如,计算实例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转发到为VCN 104配置的动态路由网关(DRG)网关122。分组然后可以从网关转发到下一跳,以促进分组到其最终预期目的地的传送。
可以为VCN配置各种不同类型的网关。可以为VCN配置的网关的示例在图1中描绘并且在下文进行描述。与VCN相关联的网关的示例也在图11、图12、图13和图14中描绘(例如,通过附图标记1134、1136、1138、1234、1236、1238、1334、1336、1338、1434、1436和1438引用的网关)并且如下所述。如图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和他们的基于云的VCN104能够彼此沟通。这使客户能够构建扩展的混合环境,包括由CSPI 101托管的客户的VCN104和他们的内部部署网络116。DRG 122启用这种此通信。为了启用此类通信,设置通信通道124,其中信道的一个端点位于客户内部部署网络116中,而另一个端点位于CSPI 101中并连接到客户VCN 104。通信信道124可以通过公共通信网络(诸如互联网)或私有通信网络。可以使用各种不同的通信协议,诸如公共通信网络(诸如互联网)上的IPsec VPN技术、使用私有网络而不是公共网络的Oracle的FastConnect技术等。客户内部部署网络116中形成通信信道124的一个端点的设备或装备被称为客户现场装备(CPE),诸如图1中描绘的CPE126。在CSPI 101侧,端点可以是执行DRG 122的主机机器。
在某些实施例中,可以将远程对等连接(RPC)添加到DRG,这允许客户将一个VCN与不同地区中的另一个VCN对等。使用这种RPC,客户VCN 104可以使用DRG 122与另一个地区中的VCN 108连接。DRG 122还可以被用于与不由CSPI 101托管的其它远程云网络118(诸如Microsoft Azure云、亚马逊AWS云等)通信。
如图1中所示,可以为客户VCN 104配置互联网网关(IGW)120,其使VCN 104上的计算实例能够与可通过公共网络(诸如互联网)访问的公共端点114通信。IGW 1120是将VCN连接到诸如互联网之类的公共网络的网关。IGW 120使VCN(诸如VCN 104)内的公共子网(其中公共子网中的资源具有公共覆盖IP地址)能够直接访问公共网络114(诸如互联网)上的公共端点112。使用IGW 120,可以从VCN 104内的子网或从互联网发起连接。
可以为客户的VCN 104配置网络地址转换(NAT)网关128,并使客户的VCN中没有专用公共覆盖IP地址的云资源能够访问互联网,并且在不暴露那些资源的情况下这样做以指引传入的互联网连接(例如,L4-L7连接)。这使VCN内的私有子网(诸如VCN 104中的私有子网-1)能够私有访问互联网上的公共端点。在NAT网关中,只能从私有子网发起到公共互联网的连接,而不能从互联网发起到私有子网的连接。
在某些实施例中,可以为客户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配置的服务网关。
在某些实施方式中,SGW 126使用服务无类域间路由(CIDR)标签的概念,该标签是表示用于感兴趣的服务或服务组的所有地区性公共IP地址范围的字符串。客户在他们配置SGW和相关路由规则以控制到服务的流量时使用服务CIDR标签。如果服务的公共IP地址在未来发生改变,那么客户可以在配置安全性规则时可选地使用它,而无需调整它们。
本地对等网关(LPG)132是可以添加到客户VCN 104并使VCN 104能够与同一地区中的另一个VCN对等的网关。对等是指VCN使用私有IP地址进行通信,流量无需穿过公共网络(诸如互联网)或无需通过客户的内部部署网络116路由流量。在优选实施例中,VCN对于它建立的每个对等体具有单独LPG。本地对等或VCN对等是用于在不同应用或基础设施管理功能之间建立网络连接性的常见做法。
服务提供者(诸如服务网络110中的服务的提供者)可以使用不同的访问模型提供对服务的访问。根据公共访问模型,服务可以作为可由客户VCN中的计算实例经由公共网络(诸如互联网)公开访问的公共端点暴露,和/或可以经由SGW 126私有访问。根据特定的私有访问模型,服务可作为客户的VCN中的私有子网中的私有IP端点进行访问。这被称为私有端点(PE)访问并且使服务提供者能够将其服务作为客户的私有网络中的实例暴露。私有端点资源表示客户的VCN内的服务。每个PE在客户的VCN中由客户选择的子网中表现为VNIC(称为PE-VNIC,具有一个或多个私有IP)。因此,PE提供了使用VNIC在私有客户VCN子网中呈现服务的方式。由于端点作为VNIC暴露,因此与VNIC相关联的所有特征(诸如路由规则、安全性列表等)现在都可以用于PE VNIC。
服务提供者可以注册他们的服务以启用通过PE的访问。提供者可以将策略与服务相关联,这限制了服务对客户租赁的可见性。提供者可以在单个虚拟IP地址(VIP)下注册多个服务,尤其是对于多租户服务。可以有表示相同服务的多个这样的私有端点(在多个VCN中)。
私有子网中的计算实例然后可以使用PE VNIC的私有IP地址或服务DNS名称来访问服务。客户VCN中的计算实例可以通过将流量发送到客户VCN中的PE的私有IP地址来访问该服务。私有访问网关(PAGW)130是可以附接到服务提供者VCN(例如,服务网络110中的VCN)的网关资源,该服务提供者VCN充当来自/去往客户子网私有端点的所有流量的入口/出口点。PAGW 130使提供者能够在不利用其内部IP地址资源的情况下扩展PE连接的数量。提供者只需要为在单个VCN中注册的任何数量的服务配置一个PAGW。提供者可以将服务表示为一个或多个客户的多个VCN中的私有端点。从客户的角度来看,PE VNIC不是附接到客户的实例,而是看起来附接到客户希望与之交互的服务。去往私有端点的流量经由PAGW130路由到服务。这些被称为客户到服务私有连接(C2S连接)。
通过允许流量流经FastConnect/IPsec链接和客户VCN中的私有端点,PE概念还可以被用于将用于服务的私有访问扩展到客户的内部署网络和数据中心。通过允许流量在LPG 132和客户的VCN中的PE之间流动,还可以将服务的私有访问扩展到客户的对等VCN。
客户可以在子网级别控制VCN中的路由,因此客户可以指定客户的VCN(诸如VCN104)中的哪些子网使用每个网关。VCN的路由表被用于决定是否允许流量通过特定网关离开VCN。例如,在特定实例中,用于客户VCN 104内的公共子网的路由表可以通过IGW 120发送非本地流量。用于同一客户VCN 104内的私有子网的路由表可以通过SGW 126发送以CSP服务为目的地的流量。所有剩余流量可以经由NAT网关128发送。路由表仅控制流出VCN的流量。
与VCN相关联的安全性列表被用于控制经由入站连接经由网关进入VCN的流量。子网中的所有资源都使用相同的路由表和安全性列表。安全性列表可以被用于控制允许进出VCN的子网中的实例的特定类型的流量。安全性列表规则可以包括入口(入站)和出口(出站)规则。例如,入口规则可以指定允许的源地址范围,而出口规则可以指定允许的目的地地址范围。安全性规则可以指定特定的协议(例如,TCP、ICMP)、特定的端口(例如,用于SSH的22、用于Windows RDP的3389)等。在某些实施方式中,实例的操作***可以强制执行自己的符合安全性列表规则的防火墙规则。规则可以是有状态的(例如,跟踪连接并自动允许响应,而没有针对响应流量的明确安全性列表规则)或无状态的。
来自客户VCN的访问(即,通过部署在VCN 104上的资源或计算实例)可以被分类为公开访问、私有访问或专用访问。公开访问是指使用公共IP地址或NAT来访问公共端点的访问模型。私有访问使VCN 104中具有私有IP地址的客户工作负载(例如,私有子网中的资源)能够访问服务,而无需穿越诸如互联网之类的公共网络。在某些实施例中,CSPI 101使具有私有IP地址的客户VCN工作负载能够使用服务网关访问服务(的公共服务端点)。因此,服务网关通过在客户的VCN和驻留在客户的私有网络外部的服务的公共端点之间建立虚拟链接来提供私有访问模型。
此外,CSPI可以使用诸如FastConnect公开对等之类的技术提供专用公开访问,其中客户内部部署实例可以使用FastConnect连接访问客户VCN中的一个或多个服务,而无需遍历诸如互联网之类的公共网络。CSPI还可以使用FastConnect私有对等提供专用私有访问,其中具有私有IP地址的客户内部部署实例可以使用FastConnect连接访问客户的VCN工作负载。FastConnect是对使用公共互联网将客户的内部部署网络连接到CSPI及其服务的网络连接性替代方案。与基于互联网的连接相比,FastConnect提供了简单、灵活且经济的方式来创建具有更高带宽选项的专用和私有连接以及更可靠和一致的网络体验。
图1和上面的伴随描述描述了示例虚拟网络中的各种虚拟化的组件。如上所述,虚拟网络建立在底层物理或基板网络上。图2描绘了根据某些实施例的为虚拟网络提供底层的CSPI 200内的物理网络中的物理组件的简化体系架构图。如图所示,CSPI 200提供分布式环境,包括由云服务提供者(CSP)提供的组件和资源(例如,计算、存储器和网络资源)。这些组件和资源被用于向订阅客户(即,已订阅由CSP提供的一个或多个服务的客户)提供云服务(例如,IaaS服务)。基于客户订阅的服务,为客户供应CSPI 200的资源的子集(例如,计算、存储器和网络资源)。然后,客户可以使用由CSPI 200提供的物理计算、存储器和联网资源构建其自己的基于云的(即,CSPI托管的)可定制且私有虚拟网络。如前面所指示的,这些客户网络被称为虚拟云网络(VCN)。客户可以在这些客户VCN上部署一个或多个客户资源,诸如计算实例。计算实例可以是虚拟机、裸机实例等形式。CSPI 200提供基础设施和互补云服务的集合,这使客户能够在高度可用的托管环境中构建和运行广泛的应用和服务。
在图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执行。
主机机器或服务器可以执行在主机机器上创建和启用虚拟化的环境的管理程序(也称为虚拟机监视器或VMM)。虚拟化或虚拟化的环境促进了基于云的计算。一个或多个计算实例可以由主机机器上的管理程序在该主机机器上创建、执行和管理。主机机器上的管理程序使主机机器的物理计算资源(例如,计算、存储器和网络资源)能够在由主机机器执行的各种计算实例之间共享。
例如,如图2中所描绘的,主机机器202和208分别执行管理程序260和266。这些管理程序可以使用软件、固件或硬件或其组合来实现。通常,管理程序是位于主机机器的操作***(OS)之上的进程或软件层,OS进而在主机机器的硬件处理器上执行。管理程序通过使主机机器的物理计算资源(例如,诸如处理器/核心之类的处理资源、存储器资源、网络资源)能够在由主机机器执行的各种虚拟机计算实例之间共享来提供虚拟化的环境。例如,在图2中,管理程序260可以位于主机机器202的OS之上并使主机机器202的计算资源(例如,处理、存储器和网络资源)能够在由主机机器202执行的计算实例(例如,虚拟机)之间共享。虚拟机可以具有其自己的操作***(称为访客操作***),其可以与主机机器的OS相同或不同。由主机机器执行的虚拟机的操作***可以与由同一主机机器执行的另一个虚拟机的操作***相同或不同。因此,管理程序使多个操作***能够被同时执行,同时共享主机机器的相同计算资源。图2中描绘的主机机器可以具有相同或不同类型的管理程序。
计算实例可以是虚拟机实例或裸机实例。在图2中,主机机器202上的计算实例268和主机机器208上的计算实例274是虚拟机实例的示例。主机机器206是提供给客户的裸机实例的示例。
在某些情况下,可以向单个客户供应整个主机机器,并且由该主机机器托管的一个或多个计算实例(或者虚拟机或者裸机实例)所有都属于同一客户。在其它情况下,主机机器可以在多个客户(即,多个租户)之间共享。在这种多租赁场景中,主机机器可以托管属于不同客户的虚拟机计算实例。这些计算实例可以是不同客户的不同VCN的成员。在某些实施例中,裸机计算实例由没有管理程序的裸机服务器托管。当供应裸机计算实例时,单个客户或租户维护对托管该裸机实例的主机机器的物理CPU、存储器和网络接口的控制,并且主机机器不与其他客户或租户共享。
如前所述,作为VCN的一部分的每个计算实例都与使该计算实例能够成为VCN的子网的成员的VNIC相关联。与计算实例相关联的VNIC促进去往和来自计算实例的分组或帧的通信。VNIC在创建计算实例时与该计算实例相关联。在某些实施例中,对于由主机机器执行的计算实例,与该计算实例相关联的VNIC由连接到主机机器的NVD执行。例如,在图2中,主机机器202执行与VNIC 276相关联的虚拟机计算实例268,并且VNIC 276由连接到主机机器202的NVD 210执行。作为另一个示例,由主机机器206托管的裸机实例272与由连接到主机机器206的NVD 212执行的VNIC 280相关联。作为又一个示例,VNIC 284与由主机机器208执行的计算实例274相关联,并且VNIC 284由连接到主机机器208的NVD 212执行。
对于由主机机器托管的计算实例,连接到该主机机器的NVD还执行与计算实例是其成员的VCN对应的VCN VR。例如,在图2中描绘的实施例中,NVD 210执行与计算实例268是其成员的VCN对应的VCN VR 277。NVD 212还可以执行与VCN对应的一个或多个VCN VR 283,该VCN与由主机机器206和208托管的计算实例对应。
主机机器可以包括使主机机器能够连接到其它设备的一个或多个网络接口卡(NIC)。主机机器上的NIC可以提供使主机机器能够通信连接到另一个设备的一个或多个端口(或接口)。例如,主机机器可以使用在主机机器上和NVD上提供的一个或多个端口(或接口)连接到NVD。主机机器也可以连接到其它设备(诸如另一个主机机器)。
例如,在图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之间延伸。
NVD进而经由通信链路连接到架顶式(TOR)交换机,这些交换机连接到物理网络218(也称为交换机架构)。在某些实施例中,主机机器和NVD之间以及NVD和TOR交换机之间的链路是以太网链路。例如,在图2中,NVD 210和212分别使用链路228和230连接到TOR交换机214和216。在某些实施例中,链路220、224、226、228和230是以太网链路。连接到TOR的主机机器和NVD的集合有时称为机架(rack)。
物理网络218提供使TOR交换机能够彼此通信的通信架构。物理网络218可以是多层网络。在某些实施方式中,物理网络218是交换机的多层Clos网络,其中TOR交换机214和216表示多层和多节点物理交换网络218的叶级节点。不同的Clos网络配置是可能的,包括但不限于2层网络、3层网络、4层网络、5层网络和一般的“n”层网络。Clos网络的示例在图5中描绘并在下面进行描述。
主机机器和NVD之间可能存在各种不同的连接配置,诸如一对一配置、多对一配置、一对多配置等。在一对一配置实施方式中,每个主机机器连接到自己单独的NVD。例如,在图2中,主机机器202经由主机机器202的NIC 232连接到NVD 210。在多对一配置中,多个主机机器连接到一个NVD。例如,在图2中,主机机器206和208分别经由NIC 244和250连接到同一个NVD 212。
在一对多配置中,一个主机机器连接到多个NVD。图3示出了CSPI 300内的示例,其中主机机器连接到多个NVD。如图3中所示,主机机器302包括网络接口卡(NIC)304,其包括多个端口306和308。主机机器300经由端口306和链路320连接到第一NVD 310,并经由端口308和链路322连接到第二NVD 312。端口306和308可以是以太网端口并且主机机器302与NVD 310和312之间的链路320和322可以是以太网链路。NVD 310进而连接到第一TOR交换机314并且NVD 312连接到第二TOR交换机316。NVD 310和312与TOR交换机314和316之间的链路可以是以太网链路。TOR交换机314和316表示多层物理网络318中的层0交换设备。
图3中描绘的布置提供了两条单独的物理网络路径,从物理交换机网络318到主机机器302:第一条路径穿过TOR交换机314到NVD 310再到主机机器302,第二条路径穿过TOR交换机316到NVD 312再到主机机器302。单独的路径提供了主机机器302的增强的可用性(称为高可用性)。如果路径(例如,路径之一中的链路断开)或设备(例如,特定NVD未运行)之一出现问题,那么另一条路径可以被用于与主机机器302之间的通信。
在图3中描绘的配置中,主机机器使用由主机机器的NIC提供的两个不同端口连接到两个不同的NVD。在其它实施例中,主机机器可以包括使主机机器能够连接到多个NVD的多个NIC。
返回去参考图2,NVD是执行一个或多个网络和/或存储虚拟化功能的物理设备或组件。NVD可以是具有一个或多个处理单元(例如,CPU、网络处理单元(NPU)、FPGA、分组处理管线等)、存储器(包括高速缓存)和端口的任何设备。各种虚拟化功能可以由NVD的一个或多个处理单元执行的软件/固件来执行。
NVD可以以各种不同的形式实现。例如,在某些实施例中,NVD被实现为称为smartNIC的接口卡或具有板载嵌入式处理器的智能NIC。smartNIC是独立于主机机器上的NIC的设备。在图2中,NVD 210和212可以被实现为分别连接到主机机器202以及主机机器206和208的smartNIC。
但是,smartNIC只是NVD实施方式的一个示例。各种其它实施方式是可能的。例如,在一些其它实施方式中,NVD或由NVD执行的一个或多个功能可以结合到一个或多个主机机器、一个或多个TOR交换机以及CSPI 200的其它组件中或由其执行。例如,NVD可以在主机机器中实施,其中由NVD执行的功能由主机机器执行。作为另一个示例,NVD可以是TOR交换机的一部分,或者TOR交换机可以被配置为执行由NVD执行的功能,这使TOR交换机能够执行用于公共云的各种复杂分组转换。执行NVD的功能的TOR有时被称为智能TOR。在向客户提供虚拟机(VM)实例而非裸机(BM)实例的其它实施方式中,由NVD执行的功能可以在主机机器的管理程序内部实现。在一些其它实施方式中,NVD的功能中的一些可以卸载到在一组主机机器上运行的集中式服务。
在某些实施例中,诸如当实现为如图2中所示的smartNIC时,NVD可以包括使其能够连接到一个或多个主机机器以及一个或多个TOR交换机的多个物理端口。NVD上的端口可以被分类为面向主机的端口(也称为“南端口”)或面向网络或面向TOR的端口(也称为“北端口”)。NVD的面向主机的端口是用于将NVD连接到主机机器的端口。图2中面向主机的端口的示例包括NVD 210上的端口236以及NVD 212上的端口248和254。NVD的面向网络的端口是用于将NVD连接到TOR交换机的端口。图2中面向网络的端口的示例包括NVD 210上的端口256和NVD 212上的端口258。如图2中所示,NVD 210使用从NVD 210的端口256延伸到TOR交换机214的链路228连接到TOR交换机214。类似地,NVD 212使用从NVD 212的端口258延伸到TOR交换机216的链路230连接到TOR交换机216。
NVD经由面向主机的端口从主机机器接收分组和帧(例如,由主机机器托管的计算实例生成的分组和帧),并且在执行必要的分组处理之后,可以经由NVD的面向网络的端口将分组和帧转发到TOR交换机。NVD可以经由NVD的面向网络的端口从TOR交换机接收分组和帧,并且在执行必要的分组处理之后,可以经由NVD的面向主机的端口将分组和帧转发到主机机器。
在某些实施例中,在NVD和TOR交换机之间可以有多个端口和相关联的链路。可以聚合这些端口和链路以形成多个端口或链路的链路聚合体组(称为LAG)。链路聚合允许将两个端点之间(例如,NVD和TOR交换机之间)的多条物理链路视为单条逻辑链路。给定LAG中的所有物理链路都可以以相同的速度在全双工模式下操作。LAG有助于增加两个端点之间的连接的带宽和可靠性。如果LAG中的物理链路之一发生故障,那么流量将动态且透明地重新指派到LAG中的其它物理链路之一。聚合的物理链路比每条单独的链路递送更高的带宽。与LAG相关联的多个端口被视为单个逻辑端口。流量可以在LAG的多条物理链路之间进行负载平衡。可以在两个端点之间配置一个或多个LAG。这两个端点可以位于NVD和TOR交换机之间、主机机器和NVD之间,等等。
NVD实现或执行网络虚拟化功能。这些功能由NVD执行的软件/固件执行。网络虚拟化功能的示例包括但不限于:分组封装和解封装功能;用于创建VCN网络的功能;用于实现网络策略的功能,诸如VCN安全性列表(防火墙)功能性;促进分组路由和转发到VCN中的计算实例和从该计算实例转发的功能;等等。在某些实施例中,在接收到分组后,NVD被配置为执行分组处理流水线以处理分组并确定如何转发或路由分组。作为这个分组处理管线的一部分,NVD可以执行与覆盖网络相关联的一个或多个虚拟功能,诸如执行与VCN中的cis相关联的VNIC、执行与VCN相关联的虚拟路由器(VR)、分组的封装和解封装以促进虚拟网络中的转发或路由、某些网关(例如,本地对等网关)的执行、安全性列表的实施方式、网络安全组、网络地址转换(NAT)功能性(例如,逐个主机地将公共IP转换到私有IP)、节流功能和其它功能。
在某些实施例中,NVD中的分组处理数据路径可以包括多个分组管线,每个管线由一系列分组变换级组成。在某些实施方式中,在接收到分组后,分组被解析并分类到单个管线。然后以线性方式处理分组,一个级接一个级,直到分组或者被丢弃或者通过NVD的接口发送出去。这些级提供基本的功能性分组处理构建块(例如,验证报头、强制执行节流、***新的层2报头、强制执行L4防火墙、VCN封装/解封装等),以便可以通过组合现有级来构建新的管线,并且可以通过创建新级并将它们***现有管线来添加新的功能性。
NVD可以执行与VCN的控制平面和数据平面对应的控制平面和数据平面功能。VCN控制平面的示例也在图11、图12、图13和图14中描绘(参见参考标记1116、1216、1316和1416)并在下文中描述。VCN数据平面的示例在图11、图12、图13和图14中描绘(参见参考标记1118、1218、1318和1418)并在下文中描述。控制平面功能包括用于配置控制数据如何被转发的网络的功能(例如,设置路由和路由表、配置VNIC等)。在某些实施例中,提供了VCN控制平面,它集中计算所有覆盖到基板映射并将它们发布到NVD和虚拟网络边缘设备(诸如各种网关,诸如DRG、SGW、IGW等)。防火墙规则也可以使用相同的机制发布。在某些实施例中,NVD仅获得与该NVD相关的映射。数据平面功能包括基于使用控制平面设置的配置来实际路由/转发分组的功能。VCN数据平面是通过在客户的网络分组穿过基板网络之前对其进行封装来实现的。封装/解封装功能性在NVD上实现。在某些实施例中,NVD被配置为拦截进出主机机器的所有网络分组并执行网络虚拟化功能。
如上面所指示的,NVD执行各种虚拟化功能,包括VNIC和VCN VR。NVD可以执行与连接到VNIC的一个或多个主机机器托管的计算实例相关联的VNIC。例如,如图2中所描绘的,NVD 210执行与由连接到NVD 210的主机机器202托管的计算实例268相关联的VNIC 276的功能性。作为另一个示例,NVD 212执行与由主机机器206托管的裸机计算实例272相关联的VNIC 280,并执行与由主机机器208托管的计算实例274相关联的VNIC 284。主机机器可以托管属于不同VCN(属于不同客户)的计算实例,并且连接到主机机器的NVD可以执行与计算实例对应的VNIC(即,执行VNIC相关功能性)。
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。
除了VNIC和VCN VR之外,NVD还可以执行各种软件(例如,守护进程)并且包括一个或多个硬件组件,这些组件促进由NVD执行的各种网络虚拟化功能。为了简单起见,这些各种组件被分组在一起作为图2中所示的“分组处理组件”。例如,NVD 210包括分组处理组件286并且NVD 212包括分组处理组件288。例如,用于NVD的分组处理组件可以包括分组处理器,该分组处理器被配置为与NVD的端口和硬件接***互以监视由NVD接收和使用NVD传送的所有分组并存储网络信息。网络信息例如可以包括识别由NVD处置的不同网络流的网络流信息和每个流信息(例如,每个流统计信息)。在某些实施例中,网络流信息可以以每个VNIC为基础来存储。分组处理器可以执行逐分组的操纵以及实现有状态的NAT和L4防火墙(FW)。作为另一个示例,分组处理组件可以包括被配置为将由NVD存储的信息复制到一个或多个不同的复制目标存储库的复制代理。作为又一个示例,分组处理组件可以包括被配置为执行NVD的日志记录功能的日志记录代理。分组处理组件还可以包括用于监视NVD的性能和健康状况并且还可能监视连接到NVD的其它组件的状态和健康状况的软件。
图1示出了示例虚拟或覆盖网络的组件,包括VCN、VCN内的子网、部署在子网上的计算实例、与计算实例相关联的VNIC、用于VCN的VR以及为VCN配置的网关的集合。图1中描绘的覆盖组件可以由图2中描绘的物理组件中的一个或多个执行或托管。例如,VCN中的计算实例可以由图2中描绘的一个或多个主机机器执行或托管。对于由主机机器托管的计算实例,与该计算实例相关联的VNIC通常由连接到该主机机器的NVD执行(即,VNIC功能性由连接到该主机机器的NVD提供)。用于VCN的VCN VR功能由连接到托管或执行作为该VCN的一部分的计算实例的主机机器的所有NVD执行。与VCN相关联的网关可以由一种或多种不同类型的NVD执行。例如,某些网关可以由smartNIC执行,而其它网关可以由一个或多个主机机器或NVD的其它实施方式执行。
如上所述,客户VCN中的计算实例可以与各种不同的端点通信,其中端点可以与源计算实例在同一子网内、在不同子网中但与源计算实例在同一VCN内,或者与位于源计算实例的VCN外部的端点通信。使用与计算实例相关联的VNIC、VCN VR以及与VCN相关联的网关来促进这些通信。
对于VCN中同一子网上的两个计算实例之间的通信,使用与源和目的地计算实例相关联的VNIC促进通信。源和目的地计算实例可以由同一主机机器或不同的主机机器托管。源自源计算实例的分组可以从托管源计算实例的主机机器转发到连接到该主机机器的NVD。在NVD上,使用分组处理管线处理分组,这可以包括与源计算实例相关联的VNIC的执行。由于用于分组的目的地端点位于同一子网内,因此与源计算实例相关联的VNIC的执行导致分组被转发到执行与目的地计算实例相关联的VNIC的NVD,然后NVD处理分组并将其转发到目的地计算实例。与源和目的地计算实例相关联的VNIC可以在同一个NVD上执行(例如,当源和目的地计算实例由同一个主机机器托管时)或在不同的NVD上执行(例如,当源和目的地计算实例由连接到不同NVD的不同主机机器托管时)。VNIC可以使用由NVD存储的路由/转发表来确定用于分组的下一跳。
对于要从子网中的计算实例传送到同一VCN中不同子网中的端点的分组,源自源计算实例的分组从托管源计算实例的主机机器传送到连接到该主机机器的NVD。在NVD上,使用分组处理管线处理分组,这可以包括一个或多个VNIC以及与VCN相关联的VR的执行。例如,作为分组处理管线的一部分,NVD执行或调用与和源计算实例相关联的VNIC的功能性(也称为执行VNIC)。由VNIC执行的功能性可以包括查看分组上的VLAN标签。由于分组的目的地在子网外部,因此接下来由NVD调用和执行VCN VR功能性。然后,VCN VR将分组路由到执行与目的地计算实例相关联的VNIC的NVD。与目的地计算实例相关联的VNIC然后处理分组并将分组转发到目的地计算实例。与源和目的地计算实例相关联的VNIC可以在同一个NVD上执行(例如,当源和目的地计算实例由同一个主机机器托管时)或在不同的NVD上执行(例如,当源和目的地计算实例由连接到不同NVD的不同主机机器托管时)。
如果用于分组的目的地在源计算实例的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(使用NIC232)从主机机器202传送到NVD 210。在NVD 210上,调用VNIC 276,因为它是与源计算实例268相关联的VNIC。VNIC 276被配置为检查分组中封装的信息,并确定用于转发分组的下一跳,目的是促进将分组传送到其预期的目的地端点,然后将分组转发到确定的下一跳。
部署在VCN上的计算实例可以与各种不同端点通信。这些端点可以包括由CSPI200托管的端点和CSPI 200外部的端点。由CSPI 200托管的端点可以包括同一VCN或其它VCN中的实例,这些VCN可以是客户的VCN,或者是不属于客户的VCN。由CSPI 200托管的端点之间的通信可以通过物理网络218执行。计算实例还可以与不由CSPI 200托管或在CSPI200外部的端点通信。这些端点的示例包括客户的内部部署网络内的端点或数据中心,或可通过公共网络(诸如互联网)访问的公共端点。与CSPI 200外部的端点的通信可以使用各种通信协议通过公共网络(例如,互联网)(图2中未示出)或专用网络(图2中未示出)来执行。
图2中描绘的CSPI 200的体系架构仅仅是示例并且不旨在限制。在替代实施例中,变化、替代方案和修改是可能的。例如,在一些实施方式中,CSPI 200可以具有比图2中所示的***或组件更多或更少的***或组件,可以组合两个或更多个***,或者可以具有不同的***配置或布置。图2中描绘的***、子***和其它组件可以在由相应***的一个或多个处理单元(例如,处理器、核心)执行的软件(例如,代码、指令、程序)中、使用硬件或其组合实现。软件可以存储在非暂态存储介质上(例如,存储器设备上)。
图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。
如图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,因此每个租户的虚拟机相信他们有自己的主机机器和网卡。
在某些实施例中,每个逻辑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虚拟化以支持多租赁。
图5描绘了根据某些实施例的物理网络500的简化框图。图5中描绘的实施例被结构化为Clos网络。Clos网络是特定类型的网络拓扑,被设计为提供连接冗余性,同时维持高对分带宽和最大资源利用率。Clos网络是一种无阻塞、多级或多层交换网络,其中级数或层数可以是二、三、四、五等。图5中描绘的实施例是3层网络,包括层1、层2和层3。TOR交换机504表示Clos网络中的层0交换机。一个或多个NVD连接到TOR交换机。层0交换机也被称为物理网络的边缘设备。层0交换机连接到也称为叶交换机的层1交换机。在图5中描绘的实施例中,“m”个层0TOR交换机的集合连接到“r”个层1交换机的集合并形成群聚(pod)(其中整数m和r可以具有相同的值或不同的值)。群聚中的每个层0交换机都互连到该群聚中的所有层1交换机,但群聚之间没有交换机的连接性。在某些实施方式中,两个群聚被称为块。每个块由“q”个层2交换机(有时称为主干交换机)的集合提供服务或连接到这些交换机。物理网络拓扑中可以有几个块。层2交换机进而连接到“p”个层3交换机(有时称为超级主干交换机)(其中整数p和q可以具有相同的值或不同的值)。物理网络500之上的分组的通信通常使用一种或多种层3通信协议来执行。通常,物理网络的所有层(TOR层除外)都是冗余的(例如,p路、q路或r路冗余),因此允许高可用性。可以为群聚和块指定策略,以控制交换机在物理网络中彼此的可见性,从而启用物理网络的扩展(scale)。
Clos网络的特征是从一个层0交换机到另一个层0交换机(或从连接到层0交换机的NVD到连接到层0交换机的另一个NVD)的最大跳数是固定的。例如,在3层Clos网络中,分组从一个NVD到达另一个NVD最多需要七跳,其中源和目标NVD连接到Clos网络的叶层。同样,在4层Clos网络中,分组从一个NVD到达另一个NVD最多需要九跳,其中源和目标NVD连接到Clos网络的叶层。因此,Clos网络体系架构在整个网络中维持一致的时延,这对于数据中心内部和数据中心之间的通信是重要的。Clos拓扑可水平扩展且具有成本效益。通过在各个层添加更多交换机(例如,更多叶交换机和骨干交换机)以及通过增加相邻层的交换机之间的链路数量,可以轻松增加网络的带宽/吞吐量容量。
在某些实施例中,CSPI内的每个资源都被指派称为云标识符(CID)的唯一标识符。这个标识符作为资源的信息的一部分包括在内并且可以被用于管理资源,例如,经由控制台或通过API。用于CID的示例语法是:
ocid1.<RESOURCE TYPE>.<REALM>.[REGION][.FUTURE USE].<UNIQUE ID>
其中,
ocid1:指示CID的版本的文字串;
resource type:资源的类型(例如,实例、卷、VCN、子网、用户、组等);
realm:资源所在的领域。示例值为用于商业领域的“c1”、用于政府云领域的“c2”或用于联邦政府云领域的“c3”等。每个领域可以有其自己的域名;
region:资源所在的地区。如果该地区不适用于该资源,那么这个部分可能为空;
future use:保留以备将来使用。
unique ID:ID的唯一部分。格式可以因资源或服务的类型而异。
RDMA/RoCE技术
图6示出了可以由云服务提供的基础设施(CSPI)托管的分布式多租户云环境600的示例。如图6中所示,多个主机(例如,602和622)经由包括多个交换机或更广义地联网设备的物理网络或交换机架构640通信地耦合。在某些实施方式中,交换机架构640可以是如图5中所描绘并在上文描述的n层Clos网络,并且可以针对Clos架构的性能和物理交换机642、644和646的放置来优化设计。“n”的值可以是一、二、三等,这取决于实施方式。但是,要注意的是,预计每个附加的层都会增加分组在架构中传送的时延,这对于某些应用来说可能是不期望的。架顶式(TOR)交换机642和644表示交换机架构640中的叶或层0设备。取决于“n”的值,交换机架构640可以包括一个或多个主干交换机、超级主干交换机等。在图6中,TOR交换机642和TOR交换机644之间的交换机(例如,图5中的层1、层2和层3交换机)由中间交换机646表示。中间交换机646一般可以包括一个或多个交换机或联网设备。交换机架构640也可以被实现为包括客户计算实例不可到达的交换基板IP地址(例如,用于管理目的)。可以期望在交换机架构640的TOR交换机上实现生成树协议(STP)(例如,以避免环路,环路例如可以由于错误而发生)。在一些配置中,交换机架构640上的每个TOR交换机都是按服务专用的(例如,数据库云服务、HPC云服务、GPU云服务等),并且不同服务的流量仅在较高层混合(对于例如,在中间开关646)。
主机机器602和622可以托管多个客户或租户的计算实例并且因此可以被称为多租户主机机器。例如,如图6中所描绘的,主机机器602托管用于客户A的计算实例A-1 604和用于客户B的计算实例B-1。主机机器604托管用于客户A的计算实例A-2 624和用于客户B的计算实例B-2 626。在某些实施例中,计算实例604、606、624和626是虚拟机。以这种方式,属于不同客户的虚拟机可以托管在同一主机机器上。但是,这些计算实例中的每一个都体验到它拥有整个主机机器。在某些实施例中,用于客户的计算实例还可以包括裸机主机。本公开的教导适用于虚拟机或裸机主机形式的计算实例。为了便于解释,图1的示例仅示出了两个多租户主机机器602和622,但这并不旨在限制;本文公开的原则不限于任何特定数量的多租户主机,并且可以实现包括更多数量的多租户主机和/或还包括一个或多个作为裸机主机的计算实例(例如,单租户主机)的特定示例。
在多租户环境中,如图6中所示,期望将源自和指向不同客户的计算实例的流量彼此适当地隔离。在某些实施例中,这种流量隔离是通过为分开的客户配置分开的网络域来完成的。例如,客户A的计算实例可以指派给特定的网络域,该网络域与客户B的计算实例被指派给的网络域分开且不同。在某些实施方式中,这些网络域可以以虚拟LAN(VLAN)的形式配置,其中每个VLAN由唯一的VLAN标识符识别。例如,在图6中,客户A的计算实例A-1 604和A-2 624被指派给VLAN 1001,其中“1001”表示唯一的VLAN标识符。客户B的计算实例B-1606和B-2 626被指派给VLAN 1002,其中“1002”表示唯一的VLAN标识符。为了便于解释,图1的示例仅示出了每个VLAN 1001和1002的两个成员,但这并不旨在限制;本文公开的原理不限于任何特定数量的VLAN成员。此外,可以有多个VLAN,而不仅仅是图6中描绘的两个。例如,IEEE 802.1Q标准支持识别多达4096个不同的VLAN。
在某些实施方式中,属于同一客户的计算实例可以具有不同的服务质量期望。例如,客户可以具有属于两个或更多个不同服务(或应用或部门)的计算实例,诸如与服务A(例如,模拟服务)对应的一个或多个计算实例的第一集合和与服务B(例如,备份服务)对应的计算实例的第二集合,其中两个服务具有非常不同的服务质量期望(例如,在时延、分组丢失、带宽要求等方面)。例如,服务A可以比服务B对时延更敏感,因此,客户可能期望与服务A相关的流量被赋予与服务B相关的流量不同的流量类(例如,更高的优先级)。在这种情况下,属于同一客户的不同计算实例可以具有不同的服务质量要求。
同一VLAN上或对等VLAN(例如,属于同一租户但可以具有不同VLAN ID的不同层2域上的VLAN)上的计算实例可能期望彼此通信。在某些实施方式中,VLAN(或对等VLAN)上的计算实例可以能够使用RDMA和RoCE协议交换数据。在此类实施方式中,托管计算实例的主机机器配备有启用基于RDMA和RoCE的通信的特殊硬件和软件。例如,如图6中所描绘的,主机机器602和622分别包括RDMA网络接口卡(NIC)(例如,RoCE NIC)608和628,它们使主机机器602托管的计算实例能够使用RDMA和RoCE协议与由主机机器622托管并在同一VLAN(或对等VLAN)上的计算实例交换数据。RoCE NIC可以被实现为例如安装在主机机器内的硬件组件(例如,接口卡)(例如,安装在多租户主机机器602中的RoCE NIC 608和安装在主机机器622中的RoCE NIC 628)。属于同一VLAN 1001的计算实例A-1 604和A-2 624可以分别使用主机机器602和622中的RoCE NIC 608和628使用RDMA和RoCE协议来交换数据。在某些实施方式中,RoCE NIC与图2和图3中描绘并且在上面描述的NIC是分开的。在其它实施方式中,图2和图3中描绘的NIC可以被配置为也作为RoCE NIC操作。
如图6中所描绘的示例中所示,RoCE NIC包括RoCE引擎并实现虚拟功能(例如,SR-IOV功能),其中虚拟功能中的每一个可以被配置用于由主机机器支持的虚拟机中的不同对应虚拟机。在这个示例中,RoCE NIC通过称为SR-IOV(单根输入/输出虚拟化)的技术被实现为支持多租户,该技术允许物理设备出现在***组件快速互连(PCI Express或PCIe)总线上作为多个不同的虚拟实例(也称为“虚拟功能”或VF),每个VF被指派给相应的VM并具有与其它VF的资源分开的资源。例如,在图6中,主机机器602上的RoCE NIC 608包括RoCE引擎610、用于虚拟机计算实例A-1 604的虚拟功能VF-A-1 612和用于虚拟机计算实例B-1 606的虚拟功能VF-B-1614。主机机器622上的RoCE NIC 628包括RoCE引擎630、用于虚拟机计算实例A-2 624的虚拟功能VF-A-2 632和用于虚拟机计算实例B-2 626的虚拟功能VF-B-2634。为了便于解释,图6中的示例仅示出每个主机机器的两个虚拟功能,但这并不意味着以任何方式进行限制;本文描述的原理不限于任何特定数量的虚拟功能。在一个示例中,SR-IOV可以为一个物理NIC端口支持多达16个VF,并且一个主机机器也可以具有多个RDMA NIC(例如,多个RoCE NIC)。
在某些实施例中,用于RoCE NIC的虚拟功能由主机机器上的管理程序针对特定虚拟机计算实例进行编程,并且被配置为强制来自虚拟机的将通过网络(诸如交换机架构640)进行通信的分组用与该虚拟机所属的VLAN对应的VLAN标签(例如,802.1Q VLAN标签)标记。对于图6中描绘的示例,虚拟功能VF-A-1 612可以被配置为将指示VLAN 1001的VLAN标签(例如,具有值为1001的VLAN ID的VLAN标签)添加到携带来自虚拟机计算实例A-1 604的数据的分组,并且虚拟功能VF-B-1 614可以被配置为将指示VLAN 1002的VLAN标签(例如,具有值为1002的VLAN ID的VLAN标签)添加到携带来自虚拟机计算实例B-1 606的数据的分组。以类似的方式,虚拟功能VF-A-2 632可以被配置为将指示VLAN 1001的VLAN标签(例如,具有值为1001的VLAN ID的VLAN标签)添加到携带来自虚拟机计算实例A-2 624的数据的分组并且虚拟功能VF-B-2 634可以被配置为将指示VLAN 1002的VLAN标签(例如,具有值为1002的VLAN ID的VLAN标签)添加到携带来自虚拟机计算实例B-2 626的数据的分组。下游网络组件可以使用这些VLAN标签来隔离或分离属于不同VLAN的流量(例如,在图6中,隔离属于客户A的计算实例的流量与属于客户B的计算实例的流量)。
在某些实施方式中,指派给相应计算实例的虚拟功能被配置(例如,与RoCE NIC上的RoCE引擎合作)以针对用于RDMA数据传送的对应计算实例的存储器空间执行直接存储器访问(DMA)读操作和执行DMA写操作。在图6的示例中,虚拟功能VF-A-1 612被配置为结合RoCE引擎608为计算实例A-1 604执行直接存储器访问读和写操作,作为RDMA处理的一部分。虚拟功能VF-B-1 614被类似地被配置为结合RoCE引擎608为计算实例B-1 606执行直接存储器访问读和写操作,作为RDMA处理的一部分。
RoCE NIC中的RoCE引擎被配置为促进从主机机器传输RDMA/RoCE流量并促进接收由另一个主机机器传输的RDMA/RoCE流量。在某些实施例中,RoCE引擎接收识别计算实例的应用存储器中的地址范围的指令(例如,元数据),其中该地址范围表示要使用RDMA和RoCE被传送到目标计算实例的应用存储器的数据块。例如,RoCE引擎610可以从计算实例A-1604(即,从由主机机器602提供的用于A-1的应用存储器)到主机机器622上的计算实例A-2624的应用存储器(即,到由主机机器622提供的A-2的应用存储器)接收识别已被设置用于数据传送的RDMA信道的信息和表示要使用RDMA传送的数据块的地址范围。RoCE引擎被配置为从源计算实例的应用存储器访问数据,以使数据能够与目标或目的地计算实例通信的适当分组格式打包数据(即,为数据生成和组装层2帧),然后将分组传送到TOR交换机(例如,交换机架构中的叶交换机,以用于将数据传送到目的地计算实例)。因此,RoCE引擎是卸载引擎,并且主机机器的CPU或操作***不必参与数据传送。这种卸载减少了数据传送中涉及的时延。
例如,RoCE引擎610可以被配置为将报头(例如,UDP和IP报头)和VLAN标签(例如,如由虚拟功能612和614强制执行的)附加到数据有效载荷以创建VLAN标记的RoCEv2格式分组,并将RoCEv2分组通过线路(例如,以太网电缆)发送到交换机架构640的叶交换机(例如,TOR交换机642)。关于从交换机架构传入RoCE引擎的流量,RoCE引擎610可以被配置为从TOR交换机642接收RoCEv2分组、去除UDP和IP报头、剥离VLAN标签,并将每个结果帧(例如,作为由源主机机器发送的IB有效载荷)转发到映射到在其上接收分组的VLAN ID的SR-IOV虚拟功能。虚拟功能可以被配置为将分组的数据有效载荷存储到对应VLAN上的目的地计算实例的存储器空间。
由RoCE NIC组装的层2帧然后使用层3路由协议经由层3交换机架构中的多个联网设备传送到托管目的地或目标计算实例的主机机器的RoCE NIC。例如,如果使用RDMA和RoCE将数据从图6中的计算实例A-1 604传送到主机机器622上的目标计算实例A-2624,那么具有数据有效载荷的分组所采用的路径如下:主机机器602上的源计算实例A-1 604→主机机器602上的RoCE NIC 608→TOR交换机642→一个或多个中间交换机646→TOR交换机644→主机机器622上的RoCE NIC 628→主机机器622上的计算实例A-2 624。作为这个通信的一部分,表示用于交换机架构640的入口边缘设备的TOR交换机642被配置为通过将分组封装在与用于通过交换机架构640传送分组的层3隧穿协议对应的包装器内(例如,包括一个或多个报头)将从RoCE NIC接收的层2帧转换成层3分组。可以使用各种不同的隧穿协议,诸如VxLAN、NVGRE、STT、GENEVE、MPLS等。然后,层3分组从TOR交换机642经由一个或多个中间交换机646行进到TOR交换机644,TOR交换机644表示用于交换机架构640的出口边缘设备。TOR交换机644被配置为解封装分组并将它们转换成层2帧,然后将其传送到托管目的地或目标计算实例A-2 624的主机机器622上的RoCE NIC 628。主机机器622上的RoCE NIC628然后将数据传送到目的地计算实例A-2 624。可以通过将分组数据写入计算实例A-2624的应用存储器来将分组传送到计算实例A-2。下面描述与由各种网络组件执行以促进使用RDMA和RoCE从多租户主机机器到另一个多租户主机机器的数据传送的处理相关的细节。
作为另一个示例,如果计算实例B-1 606想要将数据传送到计算实例B-2 626,那么分组采用的路径如下:主机机器602上的源计算实例B-1 606→主机机器602上的RoCENIC 608→TOR交换机642→一个或多个中间交换机646→TOR交换机644→主机机器622上的RoCE NIC 628→主机机器622上的计算实例B-2 626。如可以看出的,交换机架构640由客户或租户共享以用于他们的层2RoCE流量的通信。相同的交换机架构被用于为不同租户传送RoCE分组。来自不同租户的RoCE分组(以及可选地非RoCE正常IP流量)流经相同的共用网络架构。使用与分组相关联的标签来隔离这个共用网络架构中的流量。每个客户(例如,VLAN上或对等VLAN上的客户的计算实例)都体验到它有专用的层2网络来传送RoCE流量,而流量实际上是通过共享的层3基于云的交换机架构网络携带的。根据客户的应用生成RoCE流量的主机机器生成层2以太网帧(也称为层2分组),而不是层3分组。
图7A、7B和7C呈现了根据某些实施例的描绘用于使用层3路由协议通过共享的层3交换机架构执行从多租户源主机机器上的源计算实例到多租户目的地主机机器上的目的地计算实例的RDMA数据传送的处理的简化流程图700。图7A-C中描绘的处理可以用由相应***的一个或多个处理单元(例如,处理器、核)执行的软件(例如,代码、指令、程序)、使用硬件或其组合来实现。软件可以存储在非暂态存储介质上(例如,存储器设备上)。图7A-C中呈现并在下文描述的方法旨在是说明性而非限制性的。虽然图7A-C描绘了以特定顺序或次序发生的各种处理步骤,但是这种描绘并不旨在限制。在某些替代实施例中,可以以某个不同的次序执行处理和/或也可以并行执行一些步骤。在某些实施例中,诸如在图6中描绘的实施例中,图7A-C中描绘的处理可以由RoCE NIC 608和628、TOR交换机642和644以及交换机架构640的一个或多个中间交换机646协作地执行。图7A-C中描绘并在下文描述的方法可以被用于不同版本的RoCE,诸如RoCEv2和其它未来版本,以及根据支持VLAN标记的其它RDMA协议的层2RDMA分组。
出于描述方法的目的并且作为使用图6中描绘的实施例的示例,假设数据将使用RDMA和RoCE从由主机机器602托管的计算实例A-1 604传送到由主机机器622托管的计算实例A-2 624,其中A-1和A-2属于同一客户A并且在同一个VLAN 1001。发起要传送的数据的计算实例(例如,A-1 604)可以被称为源计算实例,并且托管源计算实例的主机机器(例如,主机机器602)可以被称为源主机机器。数据要传送到的计算实例(例如,A-2 624)可以被称为目的地或目标计算实例,并且托管目的地计算实例的主机机器(例如,主机机器622)被称为作为目的地或目标主机机器。源和目的地计算实例可以是虚拟机或裸机实例。源和目的地主机机器可以在同一个以太网域中,或者在不同的以太网域中。
在702处,托管源计算实例的源主机机器上的RoCE NIC接收识别要使用RDMA和RoCE从源计算实例传送到目的地计算实例的数据的信息(例如,来自虚拟功能)。例如,RoCENIC可以接收识别源计算实例的信息和识别要从源计算实例传送到目的地计算实例的数据块的存储器地址范围。对于图6中描绘的实施例,RoCE NIC 608可以接收数据块要从由主机机器602托管的计算实例A-1 604传送到由主机机器622托管的计算实例A-2 624的信息。
在704处,RoCE NIC从源主机机器上的源计算实例的应用存储器访问要传送的数据,并为要传送的数据生成层2 802.1Q标记的RoCE分组,其中VLAN信息被编码在附加到每个分组的802.1Q标签中并且QoS信息被编码在分组的一个或多个报头中。每个层2802.1Q标记的RoCE分组可以具有一个802.1Q标签或多于一个802.1Q标签(例如,802.1ad或本文描述的“Q-in-Q标记”)。可以使用RoCE NIC上的直接存储器访问(DMA)控制器从存储器访问数据,然后通过将被访问的数据分解成用于分组的RDMA有效载荷块来打包数据。例如,1兆字节(MB)的数据可以被标记为从源计算实例传送到目的地计算实例。RoCE NIC可以从源计算实例的应用存储器访问这个数据并将数据划分成2千字节(KB)的块,其中每个块表示要传送到目的地计算实例的RDMA有效载荷。然后,每个有效载荷由RoCE NIC打包以生成RoCE层2分组(或“帧”)。分组根据RoCE协议的适当版本(诸如RoCEv2(或其它RoCE协议,或支持VLAN标记的另一种RDMA协议))格式化。
RoCE NIC向每个RoCE分组添加802.1Q标签,802.1Q标签对识别源计算实例所属VLAN的信息(例如,VLAN标识符)进行编码。802.1Q协议涵盖以太网网络上VLAN的使用和支持VLAN。802.1Q协议使用标签(简称为802.1Q标签)来区分经过干线(trunk)并属于不同VLAN的流量。
在某些实施例中,704中的处理由RoCE NIC上的RoCE引擎和与源计算实例对应的RoCE NIC上的虚拟功能协同执行。RoCE引擎负责生成RoCE分组。RoCE引擎可以没有识别用于分组的VLAN标识符或QoS信息的信息,这些信息将被编码在添加到分组的802.1Q标签中。在某些实施例中,与源计算实例对应的虚拟功能提供指示源计算实例的VLAN的特定VLAN标识符。然后将这个VLAN标识符编码为添加到每个分组的802.1Q标签。在某些实施方式中,主机机器上的虚拟功能由管理程序编程,以强制从主机机器的RoCE NIC传出到交换机架构网络的分组具有802.1Q VLAN标签。例如,对于图6中描绘的实施例,可以实现VF VF-A-1 612以强制用指示VLAN 1001的VLAN ID标记来自源计算实例A-1 604的RoCE分组,并且VF VF-B-1 614可以被实现为强制用指示VLAN 1002的VLAN ID标记来自源计算实例B-1606的RoCE分组。
QoS信息可以被编码在802.1Q标记的RoCE分组的一个或多个不同部分中。在某些实施方式中,QoS信息被编码在每个分组的IP报头的DSCP位中。在某些其它实施例中,QoS信息可以被编码在每个分组的以太网报头中的802.1p位中。QoS信息一般包括指示用于不同流量流的优先级(或类)的信息。用于分组的QoS信息可以指定用于那个分组的特定优先级类,该优先级类将被用于将分组转发/路由到其目的地。例如,QoS信息可以包含识别指派给RoCE分组的优先级(例如,高、低等)的信息。QoS信息还可以包括其它信息,诸如指定与流量控制、缓冲区分配、排队、调度等相关的每个优先级类的各种参数的信息。在一个示例中,QoS信息由发起RDMA传送的计算实例提供。
图8A示出了根据RoCE协议的版本2(RoCEv2)的RoCE分组格式。如图8A中所示,RoCEv2分组800包括22字节的以太网报头801、20字节的IP报头803和8字节的UDP报头804。以太网报头801包括八字节前导码字段816、六字节目的地MAC地址字段809、六字节源MAC地址字段810和其值指示该报头附加到IP分组的两字节以太网类型字段811。UDP报头804包括指示目的地端口号为4791的值,其指定RoCEv2。RoCEv2分组800还包括十二字节Infiniband(IB)基础传输报头805、RDMA数据有效载荷806(其长度可能高达大约1400字节)、32位RoCE端到端不变循环冗余校验(ICRC)字段807,以及四字节逐以太网跳帧校验序列(FCS)字段808。RoCEv2仅作为示例呈现,并且设想本文描述的***、方法和装置同样可以使用例如支持RDMA流量的VLAN标记的一种或多种其它协议来实现。
作为用于生成如图8A中所示的RoCEv2层2分组的704中的处理的一部分,主机机器上的RoCE NIC被配置为访问要传送的数据并准备RDMA有效载荷806。RoCE NIC然后被配置为添加报头805、804、803和801(以及校验字段807和808)以生成RoCEv2层2分组。
如上所述,虚拟功能被编程(例如,由主机机器的管理程序)以强制传出到架构的RDMA分组被标记有识别在其上找到分组的源计算实例的VLAN的IEEE 802.1Q报头(有时也称为“VLAN标签”)。在某些实施例中,VLAN与单独的客户或租户相关联,因此相关联的VLAN标识符在架构内使用以在层2强制执行不同租户之间的流量隔离。图8B示出了802.1Q VLAN标记的RoCEv2分组820的格式,其包括***在源MAC地址字段810和以太网类型字段811之间的四字节VLAN标签802。VLAN标签802包括具有值0x8100的十六位标签协议ID数据字段812、三位用户优先级代码点(PCP)数据字段813、一位丢弃合格指示符数据字段814和识别VLAN的十二位VLAN标识符数据字段815。在某些实施方式中,用于分组的VLAN标识符被编码在这个VLAN标识符字段815中。在某些实施例中,VLAN标签802中的PCP数据字段813(也称为“IEEE 802.1p”或“802.1p”数据字段)可以被用于对用于分组的QoS信息(例如,流量类优先级信息)进行编码。
在一些其它实施例中,QoS信息可以被编码在每个分组的IP报头803的DSCP位中。图9A示出了IP报头803的格式,其包括八位版本和报头长度数据字段901、六位差分服务代码点(DSCP)数据字段902、两位显式拥塞通知(ECN)数据字段903、十六位长度数据字段904、十六位标识数据字段905、十六位片段标志和偏移数据字段906、八位生存时间(TTL)数据字段907、八位协议数据字段908、十六位头校验和数据字段909、四字节源IP地址数据字段910和四字节目的地IP地址数据字段911。在RoCEv2分组中,协议数据字段908具有指示报头附加到UDP分组的值。DSCP数据字段902可以被用于携带分组的QoS信息。如以下更详细描述的,ECN数据字段903可以被用于指示拥塞信息,该拥塞信息指示分组是否在其从源计算实例到目的地计算实例的路径中遇到拥塞。
如前所述,QoS信息可以被用于指示分组的流量类。例如,QoS信息可以被用于为分组指定不同级别的流量类优先级,其中与分组相关联的优先级被用于确定分组将在网络路径中从源主机机器转发到目的地主机机器的优先级。为源自一个应用的分组指定的优先级可以与为源自不同应用的分组指定的优先级不同。一般而言,与对网络时延更敏感的应用相关联的分组比与对网络时延不太敏感的应用相关联的分组具有更高的优先级。分组的QoS信息可以由发起RDMA传送的计算实例指定(例如,由在计算实例上执行的应用指定)。在一个这样的示例中,发起计算实例可以指示对应的虚拟功能根据指定的服务质量(QoS)(例如,指定的流量类)执行RDMA传送,然后虚拟功能使RoCE NIC上的RDMA引擎产生包括用于识别源计算实例的VLAN的VLAN标签的分组,还在802.1Q标记的RoCE分组的数据字段(例如,802.1p字段或DSCP字段)中对指定的QoS信息进行编码。
客户可以使用QoS值来指示性能期望。例如,客户可以为携带大量数据传送的RoCE分组指定低QoS优先级,用于时延容忍应用,和/或可以为携带低容量数据传送的RoCE分组指定更高的QoS优先级值,用于对延迟非常敏感的应用。
在另一个示例中,QoS数据字段的值由正被执行的RoCE传送的类型指示(例如,根据QoS优先级值到RDMA传送类型的预定映射)。例如,携带大容量数据传送的RoCE分组可以被标记有与携带对延迟极其敏感的小容量数据传送的RoCE分组不同的QoS。大容量传送的示例可以包括备份、报告或批处理消息,而低时延关键传送的示例可以包括拥塞信息通知、集群心跳、事务提交、高速缓存融合操作等。
例如,在图6中,如果分组表示要经由RDMA从计算实例A-1604传送到VLAN 1001上的计算实例A-2 624的数据,那么RoCE NIC 608为要传送的数据生成层2 802.1Q标记的RoCE分组,其中每个分组都具有802.1Q标签,其中每个分组的VLAN ID字段815对识别VLAN1001的信息进行编码。此外,每个分组的QoS信息可以被编码在分组的DSCP字段和/或PCP字段中。
IEEE 802.1Q标准中定义的12位的VLAN标签字段最多可以识别4096个VLAN。开发了802.1ad Q-in-Q标准(也称为“802.1q-in-802.1q”或“Q-in-Q-tagging”或“Q-in-Q标准”)以扩展超过4096个VLAN。根据Q-in-Q标准,两个(或更多个)802.1Q VLAN标签可以附加到分组。这两个标签,称为内部标签和外部标签,可以被用于各种不同的目的(例如,内部标签可以表示附加的安全性规则)。例如,在一些实施例中,内部和外部标签可以被用于支持特定于应用的网络强制执行。可能期望基于租户和应用来区分分组,其中一个标签与租户对应,而另一个标签与租户的特定应用之一对应。在一个这样的示例中,被配置为在同一服务VLAN上为同一客户执行多个计算实例的主机机器可以使用客户VLAN标签来隔离服务VLAN上跨多个计算实例的流量。可替代地或附加地,被配置为在同一服务VLAN上为同一客户执行多个应用的主机机器可以使用客户VLAN标签来跨服务VLAN上的多个应用分离流量。因而,在某些情况下,作为在704中执行的处理的一部分,RoCE NIC可以根据Q-in-Q标准将两个标签附加到每个RoCE分组。例如,在租户有不同应用的情况下,诸如租户A有模拟应用和备份应用,两个单独的802.1Q标签可以附加到RoCE分组,一个具有识别租户(例如,租户A)的VLAN ID和第二个具有识别应用(例如,模拟、备份)的VLAN ID。
图8C中描绘了Q-in-Q标记的RoCEv2分组830的示例。在这种情况下,除了第一VLAN标签802(也称为“外部”VLAN标签、“公开”VLAN标签或服务VLAN(S-VLAN)标签)之外,每个分组还包括第二VLAN标签822(也称为“内部”VLAN标签、“私有”VLAN标签或客户VLAN(C-VLAN)标签)。一个或多个附加的VLAN标签可以以相同的方式添加到Q-in-Q标记的RoCEv2分组。
返回去参考图7A,在706处,802.1Q标记的RoCE分组从源主机机器上的RoCE NIC转发到连接到源主机机器的TOR交换机。接收802.1Q标记的RoCE分组的TOR交换机也可以被称为入口TOR交换机,因为它表示用于交换机架构的入口边缘设备。TOR交换机表示交换机网络或架构的最低层(或叶级)联网设备,用于将分组从源主机机器上的源计算实例转发到目的地主机机器上的目的地计算实例.例如,在图6中,由RoCE NIC 608生成的802.1Q标记的RoCE分组被传送到TOR交换机642,其中TOR交换机642是交换机架构640中的层0交换机。
虽然图6中的实施例和图7A-C中的流程图描述了由TOR交换机执行的处理,但是这个示例不旨在限制。一般而言,RoCE分组可以从源主机机器传送到提供层2功能性的联网设备(例如,交换机)、提供层3功能性的联网设备(例如,路由器)或同时提供层2和层3功能性的联网设备。例如,图6中描绘的TOR交换机642和644可以提供层2和层3功能性。通常,从源主机机器接收RoCE分组的联网设备是交换机架构的边缘设备,用于将数据从源主机机器传送到目的主机机器。
源主机机器602可以经由以太网电缆(例如,铜缆、光纤等)连接到TOR交换机642。在某些实施例中,分组到达TOR交换机642的干线端口。干线端口可以允许属于多个VLAN的分组进入,而流量隔离是通过分组中编码的VLAN信息完成的。例如,表示要从计算实例A-1604传送的数据的RoCE分组将被标记有识别VLAN 1001的标签,而表示要从计算实例B-1606传送的数据的RoCE分组被标记有识别VLAN 1002的标签。
在708处,接收分组的入口TOR交换机(例如,TOR交换机642)将要经由中间交换机646转发的每个层2 802.1Q标记的RoCE分组转换成层3分组,其中层3分组的格式基于特定的覆盖封装协议(OEP),该协议被用于通过交换机架构传送分组。各种不同的覆盖封装协议可以被用于通过交换机架构传送RoCE分组,诸如例如虚拟可扩展LAN(VxLAN)、使用通用路由封装的网络虚拟化(NVGRE)、通用联网虚拟化封装(GENEVE)、MPLS、无状态传输隧道(STT)等。例如,对于图6中的实施例,入口TOR交换机642从RoCE NIC 608接收802.1Q标记的RoCE分组并且通过封装分组如708中所描述的那样转换每个分组。封装是通过向分组添加与覆盖封装协议对应的包装器来执行的,该包装器将用于使用层3路由协议在层3交换机架构上传送分组,其中包装器包括一个或多个报头。(为了完整起见,注意的是,在一些实现方法700的环境中,入口TOR交换机可以从源计算实例接收802.1Q标记的RoCE分组,这些分组被定向到与源计算实例位于同一机架中的目的地计算实例。在此类情况下,入口TOR交换机可以通过层2传输将分组转发到目的地计算实例(例如,经由相应的RoCE NIC)而不在708及以后处理它们。)
作为708中处理的一部分,入口TOR交换机642生成与正在使用的覆盖封装协议对应的适当的一个或多个报头,并将包括(一个或多个)报头的包装器添加到每个接收到的层2 802.1Q标记的RoCE分组以将分组转换成层3分组,其中添加到分组的覆盖封装协议报头对交换机架构640中的联网设备可见。层2帧被转换成层3分组,以使分组能够从连接到源主机机器的TOR交换机642路由到连接到目的地主机机器622的TOR交换机644,其中路由发生在层3交换机架构640上并使用比层2转发协议更稳健和可扩展的层3路由协议。
作为在708中执行的处理的一部分,在708-1处,对于每个接收到的802.1Q标记的RoCE分组,TOR交换机642从接收到的分组中确定VLAN信息并将该信息映射或翻译成在708中添加到分组的包装器中的字段(或多个字段)。以这种方式,VLAN标识符信息被映射到层3报头,该报头在708中被添加到分组并且对于交换机架构640中的各种联网设备是可见的。层3分组至少包括一个外部报头,它在708中被添加到层2分组中。
例如,如果VxLAN协议被用作用于通过交换机架构640传送分组的层3封装协议,那么在708中,通过向708中接收到的分组添加VxLAN报头(以及VxLAN包装器的其它字段)将层2 802.1Q分组转换成VxLAN分组。作为这个操作的一部分,在708-1处,TOR交换机642确定在分组的802.1Q标签中编码的VLAN标识符信息,并将该信息映射(或编码)到在708中添加到分组的VxLAN报头中的字段。在某些实施方式中,RoCE分组的802.1Q标签中的VLAN信息被映射(例如,根据VNI-VLAN映射)到对应的唯一VNI,该VNI被复制到添加到分组的VxLAN报头中的VNI字段。以这种方式,也可以识别具体租户的802.1Q标签中的VLAN标识符信息被包括或转发到分组的覆盖封装协议头中的对应标识符。
对于RoCE分组具有多于一个VLAN标签的情况(例如,Q-in-Q标记的RoCE分组830),TOR交换机642根据VNI-VLAN映射将RoCE分组的外部标签中的VLAN ID映射到对应的VNI。可以存储在TOR交换机642的存储器中的VNI-VLAN映射(例如,作为表)是在TOR交换机642上指派的VNI与它们被指派到的VLAN之间的一一对应关系。VLAN仅在交换机上具有本地意义,因此相同的VLAN ID可以映射到架构中其它地方的不同VNI(虽然为了方便,可能期望在架构中的多个交换机上使用相同的VNI-VLAN映射)和/或相同的VNI可以映射到架构中其它地方的不同VLAN ID(例如,指派给同一租户的另一个VLAN ID)。将VNI复制到对应的层2封装的分组的至少一个外部报头(例如,封装协议报头)的对应数据字段中,从而跨L3网络边界扩展多租租赁。对于覆盖封装协议为VxLAN(或GENEVE)的情况,VNI被携带在层3封装的分组的VxLAN(或GENEVE)报头的24位VNI字段中。对于覆盖封装协议为NVGRE的情况,VNI被携带在层3封装的分组的NVGRE报头的24位虚拟子网ID(VSID)字段中。对于覆盖封装协议为STT的情况,VNI被携带在层3封装的分组的STT报头的64位上下文ID字段中。
此外,作为708中处理的一部分,在708-2处,对于每个接收到的802.1Q标记的RoCE分组,TOR交换机642从接收到的分组中确定QoS信息并将该信息映射或翻译成在708中添加到分组的报头中的字段(或多个字段)。以这种方式,QoS信息被映射到在708中被添加到分组的包装器的一部分(例如,外部报头),该报头对于交换机架构640中的各种联网设备是可见的。
例如,如果VxLAN协议被用作用于通过交换机架构640传送分组的层3封装协议,那么在708中,通过向在708中接收到的分组添加VxLAN包络或包装器(包括VxLAN报头和几个外部报头)将层2 802.1Q分组转换成VxLAN分组。作为这个操作的一部分,在708-2处,TOR交换机642确定接收到的分组中编码的QoS信息并将该信息映射(或编码)到在708中添加到分组的VxLAN包装器内的字段。如上所述,取决于实施方式,QoS信息可以被编码在接收到的层2分组的一个或多个不同部分中。例如,QoS信息可以被编码在802.1Q标签的PCP或802.1p位中和/或可以被编码在接收到的层2分组的以太网报头的DSCP字段中。作为708-2的一部分,TOR交换机642确定这个QoS信息并将其映射或翻译成在708中添加到分组的VxLAN包装器内的一个(或多个)字段。在某些实施方式中,来自RoCE分组的QoS信息被映射到VxLAN包装器的外部IP报头中的DSCP字段。以这种方式,层2 802.1Q标记的RoCE分组中的QoS信息以使其对交换机架构640中的各种联网设备可见的方式被包括或转发到VxLAN分组的层3包装器。
图10示出了由应用VxLAN作为OEP的入口TOR交换机产生的层3封装的分组1000(也称为VxLAN分组)的格式。如图10中所示,VxLAN分组1000包括外部以太网报头1010、外部IP报头1020、外部UDP报头1040、VxLAN报头1050、原始分组(例如,RoCEv2分组)1060和帧校验序列(FCS)1070。在708中执行的处理中,当VxLAN是覆盖封装协议时,作为封装802.1Q标记的RoCE分组的一部分,TOR交换机在“原始的”802.1Q标记的RoCE分组外面放置VxLAN报头1050,然后在VxLAN报头外放置外部UDP报头1040,然后在外部UDP报头外放置外部IP报头1020,然后在外部IP报头之上添加外部以太网报头1010。
外部以太网报头1010包括目的地MAC地址字段1011、源MAC地址字段1012、(可选地)VLAN类型字段1013、(可选地)VLAN ID标签1014、以及携带值0x0800的以太网类型字段1015。外部IP报头1020包括八位版本和报头长度数据字段1021、六位DSCP数据字段1022、两位ECN数据字段1024、十六位长度数据字段1024、十六位标识数据字段1025、16位分片标志和偏移量数据字段1026、八位生存时间(TTL)数据字段1027、携带值17(指示UDP)的八位协议数据字段1028、十六位报头校验和数据字段1029,指示入口TOR交换机的IP地址的四字节源IP地址数据字段1030,以及指示出口TOR交换机的IP地址的四字节目的地IP地址数据字段1031。外部UDP报头1040包括可以携带作为来自原始RDMA分组的信息的散列值的源端口字段1041、携带值4789的目的地(VxLAN)端口字段1042、UDP长度字段1043和校验和字段1044。VxLAN报头1050包括八位标志字段1051、携带VNI的24位VNI字段1053以及两个保留字段1052和1054。
作为通过在708中封装“原始”802.1Q标记的RoCE分组来创建层3VxLAN分组的一部分,TOR交换机对VLAN ID信息(例如,租赁信息)、QoS信息(例如,流量类)以及从原始分组到添加到原始802.1Q标记的RoCE分组的其中一个或多个报头的各个字段中的拥塞信息。例如,在某些实施方式中,VLAN ID字段映射到VNI并在VNI字段1053中携带,来自RoCE分组的QoS信息被复制到IP报头1020中的DSCP字段1022(或映射到其中的值并携带在其中),并且可以通过在ECN字段1023中设置位(称为ECN位)来用信号通知拥塞。以这种方式,RoCE分组的IP报头的DSCP数据字段中的QoS信息(例如,来自图9中的DSCP字段902)可以被复制或以其它方式映射到封装的VxLAN分组的外部IP报头1020的DSCP数据字段1022。在RoCE分组中的QoS信息被编码在RoCE分组的802.1Q标签的PCP数据字段813中的实施例中,该信息也可以映射到VxLAN分组的外部IP报头1020的DSCP数据字段1022。
因而,在708中,覆盖封装协议包装器被添加到RoCE分组,并且来自RoCE分组的VLAN ID和QoS信息被映射到覆盖封装协议包装器并以对交换机架构中的设备可见的方式编码在其中。参考图7B,在710处,在708中生成的封装的层3分组被路由通过交换机架构,从从源主机机器接收分组的TOR交换机到连接到目的地主机机器的TOR交换机。在某些实施例中,分组被转发并沿着隧道发送(例如,如果使用VxLAN覆盖封装协议,那么是VxLAN隧道),该隧道使分组通过交换机架构从连接到源主机机器的TOR交换机到达连接到目的地主机机器的TOR交换机。分组在交换机架构中所采用的路径可以穿越多个联网设备,每个设备被配置为经由联网设备的入口端口接收分组,并经由联网设备的出口端口将分组转发到下一跳联网设备,以促进将分组传送到连接到目的地主机机器的TOR交换机。例如,在图6中所描绘的实施例中,封装的层3分组经由交换机架构640的一个或多个中间交换机646从TOR交换机642转发到TOR交换机644。
在708中,通过将来自层2 802.1Q RoCE分组的VLAN ID和QoS信息翻译成在层3封装的分组的包装器中携带的信息,VLAN信息(例如,租赁信息)和QoS信息现在对于交换机架构640中的交换机和联网设备是可见的,以便使用层3路由协议来路由分组。作为710中处理的一部分,交换机架构640中接收和转发层3封装的RoCE分组的每个联网设备(包括TOR交换机642和644)被配置为在710-1处基于层3转发并根据分组的封装包装器中指定的QoS信息转发分组。在某些实施方式中,每个接收分组的联网设备可以具有与不同QoS优先级级别对应的多个RDMA数据队列。在接收到分组后,联网设备被配置为从封装包装器的一个或多个字段(或从层2报头,对于接收分组的第一TOR交换机)确定分组的QoS信息并将分组排入与由QoS信息指定的优先级对应的RDMA数据队列。然后根据队列的特定优先级将分组从联网设备中取出并转发。多个RDMA数据队列可以使用例如一个或多个缓冲区来实现,并且联网设备还可以包括排队逻辑和出队逻辑,该排队逻辑被配置为根据指定的优先级级别(例如,流量类)在多个队列之间分发传入的分组,该出队逻辑被配置为根据期望的调度方案(例如,加权循环调度和/或严格优先级调度)服务于多个队列。当使用商用芯片来实现联网设备时,可能期望充分利用相对少量的缓冲区。例如,可能期望重新利用未使用的缓冲区(例如,来自未以其它方式使用的队列)以用作多个队列的至少一部分。例如,可能期望实现环境600的至少一部分(例如,TOR交换机642和644、交换机架构640)以排除对多播流量的支持,并且在这种情况下,先前指派用于存储多播流量的缓冲区可以代替地被重新编程为用于多个队列的存储装置。
作为710的一部分,在710-2中,交换机架构中接收和转发层3封装的RoCE分组的每个联网设备可以在经历拥塞时通过标记分组的层3封装包装器的外部报头来发信号通知拥塞。在某些实施例中,RoCE协议使用称为显式拥塞通知(ECN)的机制来指定拥塞信息,该机制是IP协议概念。根据这个机制,分组的IP报头中的ECN位被用于指定或编码拥塞信息。因而,作为710-2中处理的一部分,如果接收和转发分组的联网设备检测到拥塞(例如,检测到缓冲区占用超过阈值),那么该联网设备可以通过在分组的覆盖封装协议包装器的外部IP报头中设置ECN位来发信号通知拥塞。例如,如果VxLAN是覆盖封装协议,那么外部IP报头1020的ECN字段1023中的位可以由该联网设备设置(例如,如果该位尚未设置)以发信号通知拥塞。
以这种方式,当分组行进通过交换机架构时,拥塞信息被包括在分组中并被更新,并且与分组一起被携带到分组的目的地。例如,在图6中所描绘的实施例中,当分组从源主机机器602行进到目的地主机机器622时,分组通过交换机架构640中的一系列联网设备,分组经过的任何联网设备都可以通过在分组的层3封装包装器中设置拥塞位(例如,外部IP报头的ECN字段中的位)来发信号通知拥塞。该系列联网设备包括TOR交换机642、TOR交换机644和分组经过的路径中的任何中间交换机646。
分组中拥塞的指示或标记可以由交换机架构中将分组从源主机机器路由到目的地主机机器的任何联网设备来完成。出口TOR将ECN位从层3包装器复制到内部分组的IP报头,并将该内部分组作为层2发送到目的地主机机器。以这种方式,拥塞信息被携带在分组中一直到目的地主机机器。拥塞信息跨越包括源和目的地计算实例和主机机器的层2网络以及包括交换机架构中的TOR交换机和中间交换机的层3网络的边界被携带。
传统上,RoCE依赖于层2优先级流控制(PFC)或ECN,或PFC和ECN的组合来进行拥塞控制。可能期望实现TOR交换机(例如,TOR交换机642和644)以执行优先级流控制(PFC)。当启用PFC的交换机的接收缓冲区填充到阈值水平时,交换机将用于对应优先级类的PAUSE帧发送回发送方。PFC最多提供八个优先级类,并且可以期望实现交换机以使用接收缓冲区头部的分组的PCP值作为PAUSE帧指示的优先级类(可替代地,使用分组的DSCP值到由PAUSE帧指示的优先级的映射)。
可能期望在每个应用的基础上实现拥塞控制,使得暂停一个客户的RDMA流量的拥塞控制不会暂停另一个客户的RDMA流量。因为PAUSE帧使得发送方暂停所指示的优先级类的所有流量并因此有可能影响多个客户,所以可以期望配置每个TOR交换机以防止任何PAUSE帧行进到TOR交换机的架构侧之外。例如,可以期望将PFC限制到每个TOR交换机642和644的面向主机的接口(例如,通过配置TOR交换机的每个输入端口以仅将PAUSE帧向下传递到主机或TOR交换机的另一个输入端口)。以这种方式在本地包含PAUSE帧可以有助于避免拥塞在大型架构中扩散和/或避免实时锁定。
在712处,连接到目的地主机机器的TOR交换机(也称为出口TOR交换机,因为它表示交换机架构的出口边缘设备)接收层3封装的RoCE分组。例如,在图6中所描绘的实施例中,出口TOR交换机644接收分组。
在714处,对于每个接收到的层3封装的分组,TOR交换机从分组的层3覆盖封装协议包装器确定拥塞信息,并将拥塞信息映射或翻译到由层3包装器封装的层2 802.1Q标记的RoCE帧内的字段。以这种方式,对于由出口TOR交换机接收到的每个层3封装的RoCE分组,可以已经由一个或多个联网设备(例如,TOR交换机642、一个或多个中间交换机646)沿着分组在交换机架构中穿越的路径发信号通知并且编码在层3覆盖封装协议包装器的报头的字段(例如,ECN字段)中的拥塞信息被映射到802.1Q标记的RoCE层2帧的报头并保留在其中。在某些实施方式中,从层3包装器(例如,从VxLAN分组的IP报头1020中的ECN字段1023)确定的拥塞信息被复制到层2 802.1Q标记的RoCE帧的IP报头的ECN字段(例如,图9中描绘的ECN字段903)。
在716处,对于每个接收到的层3封装的RoCE分组,出口TOR交换机通过移除在708中添加到分组的封装包装器来解封装分组(例如,外部以太网报头1010、外部IP报头1020、外部UDP报头1040、VxLAN报头1050和FCS 1070),恢复内部层2 802.1Q标记的RoCE分组。例如,如果将VxLAN包装器添加到分组,那么在714中移除那个包装器以留下802.1Q标记的RoCE分组。由于在714中拥塞信息被映射到802.1Q标记的RoCE分组的报头,因此层3覆盖封装协议包装器中的拥塞信息不会因为层3封装的分组的解封装而丢失。714中拥塞信息的映射(例如,复制)可以在716中解封装之前、期间或之后执行。
作为716中处理的一部分,除了将拥塞信息从层3覆盖封装协议包装器翻译成层2802.1Q标记的RoCE分组内的报头之外,出口TOR交换机644本身可以在经历拥塞时设置ECN拥塞位以发信号通知拥塞。
参考图7C,在718处,解封装的层2 802.1Q标记的RoCE分组由出口TOR交换机转发到目的地主机机器。例如,在图6的实施例中,将由TOR交换机644解封装的RoCE分组转发到目的地主机机器622。在目的地主机机器上,分组由目的地主机机器上的RoCE NIC接收和处理。
在720处,对于每个接收到的802.1Q标记的RoCE分组,目的地主机机器上的RoCENIC检查是否在接收到的分组的报头中发信号通知拥塞。例如,如果设置了分组的IP报头的ECN位,那么可以发信号通知拥塞。如果在720中确定分组指示拥塞,那么在722中,RoCE NIC向分组的发送方(例如,向源主机机器上的RoCE NIC)发送指示拥塞的响应并请求发送方减慢数据传送速率。在某些使用ECN协议的实施方式中,响应采用从目的地主机机器上的RoCENIC发送到源主机机器上的RoCE NIC的拥塞通知分组(CNP分组)的形式。例如,数据中心量化拥塞通知(DCQCN)可以在RoCE NIC(例如,RDMA NIC卡和对应的软件驱动程序)中实现,以使用ECN信息通过发送CNP分组让发送方知道拥堵来进行流量控制。这些CNP分组向源主机机器指示网络中存在拥塞,并请求源主机机器减慢其发送RoCE分组的速率。CNP分组被发送到根据接收到的层2RoCE分组中的信息(例如,源MAC地址和/或源IP地址)识别的适当发送方。在接收到此类通知后,作为响应,发送方(例如,源主机机器上的RoCE NIC)可以相应地降低RoCE分组的传输。下面提供与CNP分组以及它们如何从目的地主机机器传送到源主机机器相关的更多细节。
在某些实施方式中,发送方可以使用计算数据传输速率的百分比降低的算法。例如,在接收到第一CNP分组后,发送方(例如,源主机机器上的RoCE NIC)可以将其传输速率降低一定百分比。在接收到另一个CNP分组后,它可以进一步将其传输速率降低附加的百分比,依此类推。以这种方式,发送方可以响应于接收到CNP分组而执行自适应速率控制。
在724处,对于每个接收到的802.1Q标记的RoCE分组,目的地主机机器上的RoCENIC从分组中检索RDMA数据有效载荷并经由对应的虚拟功能(VF)将数据传送到目的地计算实例的目的地主机机器上的应用存储器。在某些实施例中,与目的地计算实例对应的RoCENIC上的虚拟功能被配置为控制RoCE NIC的RoCE引擎以DMA传送的方式将RDMA数据有效载荷传送到目的地主机机器的应用存储器的存储器空间。这个操作完成从源计算实例到目的地计算实例的RDMA数据传送。
如上所述,可以识别租户的VLAN标识符被包括在添加到RoCE分组的802.1Q标签中:例如,在802.1Q标签的VLAN ID字段中。VLAN ID或租赁信息也映射到层3覆盖封装协议包装器中包括的VNI,该包装器由连接到源主机机器的TOR交换机添加到802.1Q标记的RoCE分组。将VLAN标识符(或租赁信息)映射到层3封装包装器的字段中的标识符使得租赁信息对层3交换机架构中的联网设备可见。这些联网设备使用这个信息来隔离属于不同客户或租户的流量。
与分组相关联的QoS信息也从源主机机器上的RoCE NIC一直保存到目的地主机机器上的RoCE NIC。通过在添加到由入口TOR交换机添加到802.1Q标记的RoCE分组的层3覆盖封装协议包装器中对那个信息进行编码,使层2RoCE分组中编码的QoS信息对交换机架构中的联网设备可见。这使得交换机架构中的联网设备能够使用层3路由协议并根据与每个分组相关联的QoS信息通过交换机架构路由RoCE流量。
交换机架构中的任何联网设备都可以在每个分组的基础上发出拥塞信号。当分组行进通过交换机架构从连接到源主机机器的TOR到连接到目的地主机机器的TOR时,这个拥塞信息保存在分组中。在连接到目的地主机机器的TOR交换机处,来自层3封装包装器的拥塞信息被翻译(例如,复制)到RoCE分组报头(例如,翻译成RoCE分组的IP报头中的ECN位)并因此保存并可供目的地主机机器使用。然后目的地主机机器可以通过发送CNP分组来响应拥塞信息。
拥塞通知信息路由
RDMA数据传输一般对可以由交换机架构网络中的拥塞引起的网络时延非常敏感。RDMA拥塞通知分组(CNP分组)非常关键,因为它们有助于发信号通知RDMA拥塞管理(流量控制)。因此,它们对分组丢失和网络时延特别敏感,同时不要求大的网络带宽。因此,目的地主机机器响应于由接收到的分组指示的拥塞而发送的CNP分组被赋予高优先级,以便它们以最小的时延到达源主机机器,并可以通知发送方减慢数据的传输,以便最小化或避免由于拥塞造成的分组丢失。此外,CNP分组的优先级排队使得CNP分组本身由于拥塞而被丢弃的可能性最小化。
为了实现这一点,拥塞通知分组流量(CNP流量)被指派高优先级,使得在交换机架构中的每个联网设备处,随着CNP分组从目的地主机机器行进到源主机机器,CNP分组被指派到具有非常高优先级的队列。在某些实施方式中,CNP流量被指派到交换机架构中每个联网设备上的第二高队列(例如,仅次于网络控制队列)。
此外,严格的优先级排队技术被用于CNP分组。根据严格的优先级队列,指派给严格优先级队列的流量会饿死其它流量。例如,如果交换机架构中的联网设备有来自租户#1的分组、来自租户#2的分组和CNP分组,并且如果联网设备只能发送一个分组,那么租户#1和租户#2分组将排队,并且CNP分组将代替地被发送。在某些实施方式中,CNP分组配置有QoS信息,该信息指示用于CNP分组的特殊类,并且将使用严格的优先级队列来对分组进行排队以进行传输。
但是,在严格的排队实施方式中。必须注意严格的优先级排队不会无限期地饿死其它流量。因而,可以对允许多少CNP流量通过交换机架构施加限制。在某些实施方式中,这个限制是链路的总带宽的一小部分。例如,专用的严格优先级队列可以分配给CNP流量,具有低带宽保证,使得它不会使实际的RDMA流量类挨饿。因此,如果出现恶意或配置错误的应用开始生成大量CNP分组的情况,这会导致CNP流量使其它流量(例如,RDMA数据流量)处于饥饿状态,那么限制阈值最小化这个问题对其它流量的影响。
反馈延迟出现在启用ECN的设备标记分组的时间与发送方接收结果CNP分组的时间之间。在最坏的情况下,这种延迟会导致拥塞崩溃,这一直是高性能网络中长期存在的问题。为了避免交换机的ECN标记与接收主机的CNP反映以及随后发送主机的RDMA拥塞管理动作之间的冗长反馈循环,可以期望为交换机架构640的联网设备配置低且确定的ECN标记阈值。例如,一旦检测到拥塞,就可以期望将TOR交换机和中间交换机中的每一个配置为标记每个分组。积极的ECN标记策略确保交换机在网络拥塞的第一个提示时起动ECN标记,从而为拥塞管理提供紧密循环并帮助保护网络免受拥塞崩溃。
基于队列的路由以避免队头阻塞
如上所述,与分组相关联的QoS信息被交换机架构中的联网设备使用以使用层3路由协议来路由分组。QoS信息可以识别特定的优先级或类。交换机架构中的联网设备(例如,TOR交换机642、TOR交换机644和中间交换机646中的任何一个或多个(或全部))可以使用这个优先级信息来从多个队列中识别特定的优先级队列由联网设备使用,用于转发分组。例如,联网设备可以维护队列的集合,其中各个队列用于各个不同的优先级类。与不同客户或租户对应的分组可以具有不同的指派的优先级或类,因此,不同分类的分组可以被分配到交换机架构中联网设备上的不同队列。由于用于不同类(例如,不同租户、不同应用)的分组在交换机架构中被分配到联网设备上的不同队列,因此可以由用于一个类(例如,一个租户)的流量产生的拥塞不会影响用于另一个类(例如,另一个租户)的流量。在某些实施例中,还有可能将来自不同租户的RDMA分组流分配给联网设备的同一队列(例如,根据它们的指派的相同优先级类)和/或来自相同租户的RDMA分组流(例如,来自租户不同应用的分组流)被分配到联网设备的不同队列(例如,根据它们相应的不同的指派的优先级类)。
在某些实施例中,为了避免队头阻塞问题,在联网设备上使用多个队列来处置RDMA/RoCE流量。为RDMA数据流量提供多个队列避免将所有RDMA/RoCE流量排入单个队列,这会导致拥塞。多个(例如,四个)RDMA队列还允许需要不同级别性能的多个不同应用,而所有这些类都需要无损联网。以这种方式,环境可以在云规模的整个架构中为对时延敏感的RDMA应用提供专用网络路径,并且可以在避免HOL阻塞问题的同时这样做。每个核心网络队列可以支持可配置的加权带宽分发。
在一些情况下,客户或租户经由为分组设置的QoS信息,可以控制哪个优先级队列将被用于路由他们的流量。在某些实施方式中,在具有用于分组传输的多个队列(例如,多个队列)的交换机架构中的联网设备上,为RDMA流量留出一定百分比的队列。例如,在一种实施方式中,如果交换机架构中的交换机具有八个队列,那么可以为RDMA流量留出六个队列。这些RDMA队列可以是加权循环队列,每个队列获得网络带宽的份额但不能彼此饿死(例如,为了跨RDMA应用提供公平性)。在一个这样的方案中,每个RDMA队列被同等地加权,使得每个RDMA队列在每个出队周期被服务一次。例如,链路容量的95%(由分配给不同队列的流量共享)可以分配给六个RDMA队列,每个队列获得95%的六分之一(例如,经由具有相同权重的加权循环方案)。另外,可以期望确保交换机架构没有超额使用,使得有足够的带宽来处置经由交换机架构传送的流量。来自不同客户或租户的流量可以指派到同一个RDMA队列,但会基于分组中编码的VLAN ID和/或VNI进行区分。
交换机架构640可以使用网络控制流量类用于底层IP路由协议功能(例如,在TOR交换机之间)。在一个示例中,联网设备的多个队列包括网络控制队列,以携带以太网VPN(EVPN)流量,其可以被用于跨底层基层网络传播MAC地址信息和/或用于通告虚拟隧道端点(VTEP)洪水列表。这些网络控制协议(例如,边界网关协议(BGP))可以分配最高的流量类。例如,网络控制队列可以专用于网络控制流量类并且被实现为严格优先级队列,使得它在任何RDMA队列被服务之前被清空。由于网络控制流量不消耗大量网络带宽,因此网络控制流量类可以分配多个队列的总带宽的少量。
图9B示出了联网设备(例如,TOR交换机642或644、中间交换机646等)的多个队列的示例950,其包括四个RDMA队列960-1至960-4和网络控制(NC)队列964。如图9B中所示,多个队列950还可以包括专用拥塞通知(CN)队列962以携带CNP分组。及时将CNP分组递送到发送主机对于成功的RDMA拥塞管理非常关键,因为如果它们丢失,那么它们发信号通知的流量控制将不会发生。因此,虽然CNP流量对分组丢失和网络时延特别敏感,但它不要求大量的网络带宽。这些要求可以通过将CN队列962配置为严格优先级队列来平衡,使得它在任何RDMA队列(例如,队列960-1至960-4)被服务之前被清空,但仅具有低优先级带宽保证,使得它不会饿死实际的RDMA流量类别。为了防止拥塞通知队列962使网络控制队列964挨饿(例如,在配置错误或导致过多CNP流量的其它问题的情况下),可以期望将拥塞通知队列962配置为优先级低于网络控制队列964。
附加地或可替代地,联网设备的多个队列还可以包括用于非RDMA流量(例如,其它协议,诸如TCP)的清道夫队列。“清道夫”流量类使用未使用的网络带宽,而不会对RDMA流量类产生不利影响。联网设备的出队逻辑可以被配置为以比RDMA队列低的优先级服务清道夫队列,例如,通过在加权循环方案中为其指派较低的权重(例如,权重是有保证的带宽)。图9C示出了如上所述的联网设备(例如,TOR交换机642或644、中间交换机646等)的多个队列950的示例952,其还包括清道夫队列966。
如本文所述,RDMA分组(层2RDMA分组,或携带层2RDMA分组的层3封装的分组)携带指示分组的优先级(例如,流量类)的QoS值(例如,在PCP数据字段中和/或在DSCP数据字段中),并且联网设备的入队逻辑可以被配置为根据它们的QoS值在联网设备的多个RDMA队列中分发传入分组。对于PCP数据字段被用于携带QoS值并且RDMA分组分布在如图9B中所示的RDMA队列960-1至960-4之间的示例,可以使用诸如以下的映射:PCP值为6或7的RDMA分组被存储到RDMA队列960-1,PCP值为4或5的RDMA分组被存储到RDMA队列960-2,PCP值为2或3的RDMA分组被存储到RDMA队列960-3,并且PCP值为0或1的RDMA分组被存储到RDMA队列960-4。对于其中DSCP数据字段被用于携带QoS值并且RDMA分组如图9B中所示分布在RDMA队列960-1至960-4之间的示例,可以使用诸如以下的映射:DSCP值在48至64范围内的RDMA分组被存储到RDMA队列960-1,DSCP值在32至47范围内的RDMA分组被存储到RDMA队列960-2,DSCP值在16至32范围内的RDMA分组被存储到RDMA队列960-3,DSCP值在0至15范围内的RDMA分组被存储到RDMA队列960-4。技术人员将认识到上述两个映射仅仅是非限制性示例,并且可以根据这样的映射或者根据QoS值到RDMA队列的任何其它映射执行(例如,通过入队逻辑)RDMA分组在联网设备的多个队列之间的分发。
确定性拥塞(例如,ECN位)标记
在某些实施例中,使用确定性拥塞标记方案,其中拥塞标记是在每个分组的基础上执行的。因而,对于每个分组,如果交换机架构中的联网设备经历或检测到拥塞,那么联网设备通过标记分组的字段来发信号通知拥塞:例如,通过在RoCE分组的层3封装包装器的IP报头中标记ECN位。因此,当出现拥塞时,到达目的地主机机器的多个分组将设置其拥塞位。响应于每个这样的分组,目的地主机机器可以发送CNP分组。发送方可以响应于CNP分组而降低其传输速率。目标是及早检测拥塞,使得发送方可以及早减慢传输,从而降低分组丢弃或丢失的可能性。
交换机架构的体系架构还在减少RoCE分组的时延和减少分组丢失方面发挥作用。如上所述,交换机架构可以被结构化为Clos网络,诸如图5中描绘并在上面描述的网络。例如,在具有仅层0(TOR交换机)和层1交换机(主干交换机)的两层拓扑的Clos网络中,RoCE分组可以通过三跳从任何源主机机器到达任何目的地主机机器。最小化跃点数转化为非常低的时延,这非常适合RoCE流量。
在某些实施例中,属于同一流的RDMA流量遵循从源主机机器到目的地主机机器的相同路径,因为RDMA流量对分组重新排序敏感。这种基于流的路由避免了分组乱序到达目的地主机机器的情况。例如,入口TOR交换机可以被配置为经由每流等价多路径(ECMP)方案(例如,n路ECMP方案,其中“n”不要与Clos网络中的层数“n”混淆)以保持每个流中的分组次序。分组所属的流一般由分组的源IP地址、目的地IP地址、源端口、目的地端口和协议标识符(也称为5元组)的组合来定义。
示例基础设施即服务体系架构
如以上所指出的,基础设施即服务(IaaS)是一种特定类型的云计算。IaaS可以被配置为通过公共网络(例如,互联网)提供虚拟化计算资源。在IaaS模型中,云计算提供商可以托管基础设施组件(例如,服务器、存储设备、网络节点(例如,硬件)、部署软件、平台虚拟化(例如,管理程序层)等)。在一些情况下,IaaS提供商还可以提供各种服务来伴随这些基础设施组件(例如,计费、监视、记载、安全性、负载平衡和聚类等)。因此,由于这些服务可能是策略驱动的,因此IaaS用户可以能够实现策略来驱动负载平衡,以维持应用的可用性和性能。
在一些情况下,IaaS客户可以通过诸如互联网之类的广域网(WAN)访问资源和服务,并且可以使用云提供商的服务来安装应用栈的剩余元素。例如,用户可以登录到IaaS平台以创建虚拟机(VM)、在每个VM上安装操作***(OS)、部署诸如数据库之类的中间件、为工作负载和备份创建存储桶,甚至将企业软件安装到那个VM中。然后,客户可以使用提供商的服务来执行各种功能,包括平衡网络流量、解决应用问题、监视性能、管理灾难恢复等。
在大多数情况下,云计算模型将需要云提供商的参与。云提供商可以但不一定是专门提供(例如,供应、出租、销售)IaaS的第三方服务。实体也可能选择部署私有云,从而成为其自己的基础设施服务提供商。
在一些示例中,IaaS部署是将新应用或应用的新版本放置到准备好的应用服务器等上的处理。它还可以包括准备服务器(例如,安装库、守护进程等)的处理。这通常由云提供商管理,位于管理程序层之下(例如,服务器、存储装置、网络硬件和虚拟化)。因此,客户可以负责处理(OS)、中间件和/或应用部署(例如,在(例如,可以按需启动的)自助服务虚拟机等上)。
在一些示例中,IaaS供给可以指获取计算机或虚拟主机以供使用,甚至在它们上安装所需的库或服务。大多数情况下,部署不包括供给,并且供给可能需要被首先执行。
在一些情况下,IaaS供给存在两个不同的挑战。首先,在任何东西运行之前供给初始基础设施集存在最初的挑战。其次,一旦所有东西已被供给,就存在演进现有基础设施(例如,添加新服务、更改服务、移除服务等)的挑战。在一些情况下,可以通过启用以声明方式定义基础设施的配置来解决这两个挑战。换句话说,基础设施(例如,需要哪些组件以及它们如何交互)可以由一个或多个配置文件来定义。因此,基础设施的总体拓扑(例如,哪些资源依赖于哪些资源,以及它们如何协同工作)可以以声明的方式描述。在一些情况下,一旦定义了拓扑,就可以生成创建和/或管理配置文件中描述的不同组件的工作流。
在一些示例中,基础设施可以具有许多互连的元件。例如,可能存在一个或多个虚拟私有云(VPC)(例如,可配置和/或共享计算资源的潜在按需池),也称为核心网络。在一些示例中,还可以供给一个或多个安全性组规则以定义如何设置网络的安全性以及一个或多个虚拟机(VM)。也可以供给其它基础设施元素,诸如负载平衡器、数据库等。随着期望和/或添加越来越多的基础设施元素,基础设施可以逐步演进。
在一些情况下,可以采用连续部署技术来使得能够跨各种虚拟计算环境部署基础设施代码。此外,所描述的技术可以使得能够在这些环境内进行基础设施管理。在一些示例中,服务团队可以编写期望部署到一个或多个但通常是许多不同的生产环境(例如,跨各种不同的地理位置,有时跨越整个世界)的代码。但是,在一些示例中,必须首先设置将在其上部署代码的基础设施。在一些情况下,供给可以手动完成,可以利用供给工具供给资源,和/或一旦供给基础设施就可以利用部署工具部署代码。
图11是图示根据至少一个实施例的IaaS体系架构的示例模式的框图1100。服务运营商1102可以通信地耦合到可以包括虚拟云网络(VCN)1106和安全主机子网1108的安全主机租赁1104。在一些示例中,服务运营商1102可以使用一个或多个客户端计算设备,其可以是便携式手持设备(例如,蜂窝电话、/>计算平板、个人数字助理(PDA))或可穿戴设备(例如,Google/>头戴式显示器)、运行软件(诸如Microsoft Windows)和/或各种移动操作***(诸如iOS、Windows Phone、Android、BlackBerry 8、Palm OS等),并且支持互联网、电子邮件、短消息服务(SMS)、/>或其它通信协议。替代地,客户端计算设备可以是通用个人计算机,包括例如运行各种版本的MicrosoftApple/>和/或Linux操作***的个人计算机和/或膝上型计算机。客户端计算设备可以是运行各种商业上可获得的/>或类UNIX操作***,包括但不限于各种GNU/Linux操作***(诸如例如Google Chrome OS)中的任何一种的工作站计算机。替代地或附加地,客户端计算设备可以是任何其它电子设备,诸如瘦客户端计算机、支持互联网的游戏***(例如,具有或不具有/>手势输入设备的Microsoft Xbox游戏控制台),和/或能够通过可以访问VCN 1106和/或互联网的网络进行通信的个人消息传递设备。
VCN 1106可以包括本地对等网关(LPG)1110,其可以经由包含在SSH VCN 1112中的LPG 1110通信地耦合到安全壳(SSH)VCN 1112。SSH VCN 1112可以包括SSH子网1114,并且SSH VCN 1112可以经由包含在控制平面VCN 1116中的LPG 1110通信地耦合到控制平面VCN 1116。此外,SSH VCN 1112可以经由LPG 1110通信地耦合到数据平面VCN 1118。控制平面VCN 1116和数据平面VCN 1118可以包含在可以由IaaS提供商拥有和/或操作的服务租赁1119中。
控制平面VCN 1116可以包括充当***网络(例如,公司内部网和外部网络之间的公司网络的部分)的控制平面非军事区(DMZ)层1120。基于DMZ的服务器可以承担有限责任并有助于控制漏洞。此外,DMZ层1120可以包括一个或多个负载平衡器(LB)子网1122、可以包括(一个或多个)应用(app)子网1126的控制平面应用(app)层1124、可以包括(一个或多个)数据库(DB)子网1130(例如,(一个或多个)前端DB子网和/或(一个或多个)后端DB子网)的控制平面数据层1128。包含在控制平面DMZ层1120中的(一个或多个)LB子网1122可以通信地耦合到包含在控制平面应用层1124中的(一个或多个)应用子网1126和可以包含在控制平面VCN 1116中的互联网网关1134,并且(一个或多个)应用子网1126可以通信地耦合到包含在控制平面数据层1128中的(一个或多个)DB子网1130以及服务网关1136和网络地址转换(NAT)网关1138。控制平面VCN 1116可以包括服务网关1136和NAT网关1138。
控制平面VCN 1116可以包括数据平面镜像应用(app)层1140,其可以包括(一个或多个)应用子网1126。包含在数据平面镜像应用层1140中的(一个或多个)应用子网1126可以包括可以执行计算实例1144的虚拟网络接口控制器(VNIC)1142。计算实例1144可以将数据平面镜像应用层1140的(一个或多个)应用子网1126通信地耦合到可以包含在数据平面应用(app)层1146中的(一个或多个)应用子网1126。
数据平面VCN 1118可以包括数据平面应用层1146、数据平面DMZ层1148和数据平面数据层1150。数据平面DMZ层1148可以包括(一个或多个)LB子网1122,其可以通信地耦合到数据平面应用层1146的(一个或多个)应用子网1126和数据平面VCN 1118的互联网网关1134。(一个或多个)应用子网1126可以通信地耦合到数据平面VCN 1118的服务网关1136和数据平面VCN 1118的NAT网关1138。数据平面数据层1150还可以包括可以通信地耦合到数据平面应用层1146的(一个或多个)应用子网1126的(一个或多个)DB子网1130。
控制平面VCN 1116和数据平面VCN 1118的互联网网关1134可以通信地耦合到元数据管理服务1152,元数据管理服务1152可以通信地耦合到公共互联网1154。公共互联网1154可以通信地耦合到控制平面VCN 1116和数据平面VCN 1118的NAT网关1138。控制平面VCN 1116和数据平面VCN 1118的服务网关1136可以通信地耦合到云服务1156。
在一些示例中,控制平面VCN 1116或数据平面VCN 1118的服务网关1136可以对云服务1156进行应用编程接口(API)调用,而无需通过公共互联网1154。从服务网关1136到云服务1156的API调用可以是单向的:服务网关1136可以对云服务1156进行API调用,并且云服务1156可以将请求的数据发送到服务网关1136。但是,云服务1156可以不发起对服务网关1136的API调用。
在一些示例中,安全主机租赁1104可以直接连接到服务租赁1119,服务租赁1119否则可以被隔离。安全主机子网1108可以通过LPG 1110与SSH子网1114通信,LPG 1110可以使得能够在否则隔离的***上进行双向通信。将安全主机子网1108连接到SSH子网1114可以使安全主机子网1108访问服务租赁1119内的其它实体。
控制平面VCN 1116可以允许服务租赁1119的用户设置或以其它方式供给期望的资源。在控制平面VCN 1116中供给的期望资源可以在数据平面VCN 1118中部署或以其它方式使用。在一些示例中,控制平面VCN 1116可以与数据平面VCN 1118隔离,并且控制平面VCN 1116的数据平面镜像应用层1140可以经由VNIC 1142与数据平面VCN 1118的数据平面应用层1146通信,VNIC 1142可以包含在数据平面镜像应用层1140和数据平面应用层1146中。
在一些示例中,***的用户或客户可以通过可以将请求传送到元数据管理服务1152的公共互联网1154来做出请求,例如创建、读取、更新或删除(CRUD)操作。元数据管理服务1152可以通过互联网网关1134将请求传送到控制平面VCN 1116。请求可以被包含在控制平面DMZ层1120中的(一个或多个)LB子网1122接收。(一个或多个)LB子网1122可以确定请求是有效的,并且响应于该确定,(一个或多个)LB子网1122可以将请求传输到包含在控制平面应用层1124中的(一个或多个)应用子网1126。如果请求被验证并且需要对公共互联网1154的调用,那么对公共互联网1154的调用可以被传输到可以对公共互联网1154进行调用的NAT网关1138。请求可能期望存储的存储器可以存储在(一个或多个)DB子网1130中。
在一些示例中,数据平面镜像应用层1140可以促进控制平面VCN 1116和数据平面VCN 1118之间的直接通信。例如,可能期望对包含在数据平面VCN 1118中的资源应用对配置的更改、更新或其它适当的修改。经由VNIC 1142,控制平面VCN 1116可以直接与包含在数据平面VCN 1118中的资源通信,并且从而可以执行对配置的更改、更新或其它适当的修改。
在一些实施例中,控制平面VCN 1116和数据平面VCN 1118可以包含在服务租赁1119中。在这种情况下,***的用户或客户可能不拥有或操作控制平面VCN 1116或数据平面VCN 1118。替代地,IaaS提供商可以拥有或操作控制平面VCN 1116和数据平面VCN 1118,这两者平面都可以包含在服务租赁1119中。该实施例可以使得能够隔离可能阻止用户或客户与其它用户或其它客户的资源交互的网络。此外,该实施例可以允许***的用户或客户私自存储数据库,而无需依赖可能不具有期望安全性级别的公共互联网1154进行存储。
在其它实施例中,包含在控制平面VCN 1116中的(一个或多个)LB子网1122可以被配置为从服务网关1136接收信号。在这个实施例中,控制平面VCN 1116和数据平面VCN1118可以被配置为由IaaS提供商的客户调用而无需调用公共互联网1154。IaaS提供商的客户可能期望这个实施例,因为客户使用的(一个或多个)数据库可以由IaaS提供商控制并且可以存储在服务租赁1119上,服务租赁1119可能与公共互联网1154隔离。
图12是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1200。服务运营商1202(例如,图11的服务运营商1102)可以通信地耦合到安全主机租赁1204(例如,图11的安全主机租赁1104),该安全主机租赁1204可以包括虚拟云网络(VCN)1206(例如,图11的VCN 1106)和安全主机子网1208(例如,图11的安全主机子网1108)。VCN 1206可以包括本地对等网关(LPG)1210(例如,图11的LPG 1110),其可以经由包含在SSH VCN 1212中的LPG 1110通信地耦合到安全壳(SSH)VCN 1212(例如,图11的SSH VCN 1112)。SSH VCN1212可以包括SSH子网1214(例如,图11的SSH子网1114),并且SSH VCN 1212可以经由包含在控制平面VCN 1216中的LPG 1210通信地耦合到控制平面VCN 1216(例如,图11的控制平面VCN 1116)。控制平面VCN 1216可以包含在服务租赁1219(例如,图11的服务租赁1119)中,并且数据平面VCN 1218(例如,图11的数据平面VCN 1118)可以包含在可能由***的用户或客户拥有或操作的客户租赁1221中。
控制平面VCN 1216可以包括控制平面DMZ层1220(例如,图11的控制平面DMZ层1120),其可以包括(一个或多个)LB子网1222(例如,图11的(一个或多个)LB子网1122)、可以包括(一个或多个)应用(app)子网1226(例如,图11的(一个或多个)应用子网1126)的控制平面应用(app)层1224(例如,图11的控制平面应用层1124)、可以包括(一个或多个)数据库(DB)子网1230(例如,类似于图11的(一个或多个)DB子网1130)的控制平面数据层1228(例如,图11的控制平面数据层1128)。包含在控制平面DMZ层1220中的(一个或多个)LB子网1222可以通信地耦合到包含在控制平面应用层1224中的(一个或多个)应用子网1226和可以包含在控制平面VCN 1216中的互联网网关1234(例如,图11的互联网网关1134),并且(一个或多个)应用子网1226可以通信地耦合到包含在控制平面数据层1228中的(一个或多个)DB子网1230以及服务网关1236(例如,图11的服务网关)和网络地址转换(NAT)网关1238(例如,图11的NAT网关1138)。控制平面VCN 1216可以包括服务网关1236和NAT网关1238。
控制平面VCN 1216可以包括可以包括(一个或多个)应用子网1226的数据平面镜像应用(app)层1240(例如,图11的数据平面镜像应用层1140)。包含在数据平面镜像应用层1240中的(一个或多个)应用子网1226可以包括可以执行计算实例1244(例如,类似于图11的计算实例1144)的虚拟网络接口控制器(VNIC)1242(例如,1142的VNIC)。计算实例1244可以促进数据平面镜像应用层1240的(一个或多个)应用子网1226和可以包含在数据平面应用(app)层1246(例如,图11的数据平面应用层1146)中的(一个或多个)应用子网1226之间经由包含在数据平面镜像应用层1240中的VNIC 1242和包含在数据平面应用层1246中的VNIC 1242的通信。
包含在控制平面VCN 1216中的互联网网关1234可以通信地耦合到元数据管理服务1252(例如,图11的元数据管理服务1152),该元数据管理服务1252可以通信地耦合到公共互联网1254(例如,图11的公共互联网1154)。公共互联网1254可以通信地耦合到包含在控制平面VCN 1216中的NAT网关1238。包含在控制平面VCN 1216中的服务网关1236可以通信地耦合到云服务1256(例如,图11的云服务1156)。
在一些示例中,数据平面VCN 1218可以包含在客户租赁1221中。在这种情况下,IaaS提供商可以为每个客户提供控制平面VCN 1216,并且IaaS提供商可以为每个客户设置包含在服务租赁1219中的唯一计算实例1244。每个计算实例1244可以允许包含在服务租赁1219中的控制平面VCN 1216和包含在客户租赁1221中的数据平面VCN 1218之间的通信。计算实例1244可以允许在包含在服务租赁1219中的控制平面VCN 1216中供给的资源被部署或以其它方式在包含在客户租赁1221中的数据平面VCN 1218中使用。
在其它示例中,IaaS提供商的客户可以具有存在于客户租赁1221中的数据库。在这个示例中,控制平面VCN 1216可以包括数据平面镜像应用层1240,其可以包括(一个或多个)应用子网1226。数据平面镜像应用层1240可以驻留在数据平面VCN 1218中,但数据平面镜像应用层1240可能不在数据平面VCN 1218中。即,数据平面镜像应用层1240可以访问客户租赁1221,但是数据平面镜像应用层1240可能不存在于数据平面VCN 1218中或者由IaaS提供商的客户拥有或操作。数据平面镜像应用层1240可以被配置为对数据平面VCN 1218进行调用,但可以不被配置为对包含在控制平面VCN 1216中的任何实体进行调用。客户可能期望在数据平面VCN 1218中部署或以其它方式使用在控制平面VCN 1216中供给的资源,并且数据平面镜像应用层1240可以促进客户的期望部署或资源的其它使用。
在一些实施例中,IaaS提供商的客户可以将过滤器应用到数据平面VCN 1218。在这个实施例中,客户可以确定数据平面VCN 1218可以访问什么,并且客户可以限制从数据平面VCN 1218对公共互联网1254的访问。IaaS提供商可能无法应用过滤器或以其它方式控制数据平面VCN 1218对任何外部网络或数据库的访问。客户将过滤器和控制应用到包含在客户租赁1221中的数据平面VCN 1218上可以帮助将数据平面VCN 1218与其它客户和公共互联网1254隔离开。
在一些实施例中,云服务1256可以由服务网关1236调用以访问公共互联网1254、控制平面VCN 1216或数据平面VCN 1218上可能不存在的服务。云服务1256与控制平面VCN1216或数据平面VCN 1218之间的连接可以不是实时的或连续的。云服务1256可以存在于由IaaS提供商拥有或操作的不同网络上。云服务1256可以被配置为接收来自服务网关1236的调用并且可以被配置为不接收来自公共互联网1254的调用。一些云服务1256可以与其它云服务1256隔离,并且控制平面VCN 1216可以与可能与控制平面VCN 1216不在同一区域的云服务1256隔离。例如,控制平面VCN 1216可能位于“区域1”,并且云服务“部署11”可能位于区域1和“区域2”。如果包含在位于区域1中的控制平面VCN 1216中的服务网关1236对部署11进行调用,那么该调用可以被传输到区域1中的部署11。在这个示例中,控制平面VCN1216或区域1中的部署11可能不与区域2中的部署11通信地耦合或以其它方式通信。
图13是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1300。服务运营商1302(例如,图11的服务运营商1102)可以通信地耦合到安全主机租赁1304(例如,图11的安全主机租赁1104),该安全主机租赁1304可以包括虚拟云网络(VCN)1306(例如,图11的VCN 1106)和安全主机子网1308(例如,图11的安全主机子网1108)。VCN 1306可以包括LPG 1310(例如,图11的LPG 1110),其可以经由包含在SSH VCN 1312中的LPG 1310通信地耦合到SSH VCN 1312(例如,图11的SSH VCN 1112)。SSH VCN 1312可以包括SSH子网1314(例如,图11的SSH子网1114),并且SSH VCN 1312可以经由包含在控制平面VCN 1316中的LPG 1310通信地耦合到控制平面VCN 1316(例如,图11的控制平面VCN 1116)并且经由包含在数据平面VCN 1318中的LPG 1310耦合到数据平面VCN 1318(例如,图11的数据平面1118)。控制平面VCN 1316和数据平面VCN 1318可以包含在服务租赁1319(例如,图11的服务租赁1119)中。
控制平面VCN 1316可以包括能包括(一个或多个)负载平衡器(LB)子网1322(例如,图11的(一个或多个)LB子网1122)的控制平面DMZ层1320(例如,图11的控制平面DMZ层1120)、可以包括(一个或多个)应用(app)子网1326(例如,类似于图11的(一个或多个)应用子网1126)的控制平面应用(app)层1324(例如,图11的控制平面应用层1124)、可以包括(一个或多个)DB子网1330的控制平面数据层1328(例如,图11的控制平面数据层1128)。包含在控制平面DMZ层1320中的(一个或多个)LB子网1322可以通信地耦合到包含在控制平面应用层1324中的(一个或多个)应用子网1326和可以包含在控制平面VCN 1316中的互联网网关1334(例如,图11的互联网网关1134),并且(一个或多个)应用子网1326可以通信地耦合到包含在控制平面数据层1328中的(一个或多个)DB子网1330以及服务网关1336(例如,图11的服务网关)和网络地址转换(NAT)网关1338(例如,图11的NAT网关1138)。控制平面VCN1316可以包括服务网关1336和NAT网关1338。
数据平面VCN 1318可以包括数据平面应用(app)层1346(例如,图11的数据平面应用层1146)、数据平面DMZ层1348(例如,图11的数据平面DMZ层1148),以及数据平面数据层1350(例如,图11的数据平面数据层1150)。数据平面DMZ层1348可以包括可以通信地耦合到数据平面应用层1346的(一个或多个)可信应用(app)子网1360和(一个或多个)不可信应用(app)子网1362以及包含在数据平面VCN 1318中的互联网网关1334的(一个或多个)LB子网1322。(一个或多个)可信应用子网1360可以通信地耦合到包含在数据平面VCN 1318中的服务网关1336、包含在数据平面VCN 1318中的NAT网关1338以及包含在数据平面数据层1350中的(一个或多个)DB子网1330。(一个或多个)不可信应用子网1362可以通信地耦合到包含在数据平面VCN 1318中的服务网关1336和包含在数据平面数据层1350中的(一个或多个)DB子网1330。数据平面数据层1350可以包括可以通信地耦合到包含在数据平面VCN 1318中的服务网关1336的(一个或多个)DB子网1330。
(一个或多个)不可信应用子网1362可以包括可以通信地耦合到租户虚拟机(VM)1366(1)-(N)的一个或多个主VNIC 1364(1)-(N)。每个租户VM 1366(1)-(N)可以通信地耦合到可以包含在相应容器出口VCN 1368(1)-(N)中的相应应用(app)子网1367(1)-(N),相应容器出口VCN 1368(1)-(N)可以包含在相应客户租赁1370(1)-(N)中。相应的辅助VNIC1372(1)-(N)可以促进数据平面VCN 1318中包含的(一个或多个)不可信应用子网1362与容器出口VCN 1368(1)-(N)中包含的应用子网之间的通信。每个容器出口VCN 1368(1)-(N)可以包括NAT网关1338,该NAT网关1338可以通信地耦合到公共互联网1354(例如,图11的公共互联网1154)。
包含在控制平面VCN 1316中并且包含在数据平面VCN 1318中的互联网网关1334可以通信地耦合到元数据管理服务1352(例如,图11的元数据管理***1152),该元数据管理服务1352可以通信地耦合到公共互联网1354。公共互联网1354可以通信地耦合到包含在控制平面VCN 1316中并且包含在数据平面VCN 1318中的NAT网关1338。包含在控制平面VCN1316中和包含在数据平面VCN 1318中的服务网关1336可以通信地耦合到云服务1356。
在一些实施例中,数据平面VCN 1318可以与客户租赁1370集成。在一些情况下,诸如在执行代码时可能期望支持的情况下,这种集成对于IaaS提供商的客户可能是有用的或期望的。客户可能提供可能具有破坏性、可能与其它客户资源通信或可能以其它方式导致非期望效果的代码来运行。作为对此的响应,IaaS提供商可以确定是否运行由客户给与IaaS提供商的代码。
在一些示例中,IaaS提供商的客户可以向IaaS提供商授予临时网络访问,并请求附加到数据平面层应用1346的功能。运行该功能的代码可以在VM 1366(1)-(N)中执行,并且该代码可以不被配置为在数据平面VCN 1318上的其它任何地方运行。每个VM 1366(1)-(N)可以连接到一个客户租赁1370。包含在VM 1366(1)-(N)中的相应容器1371(1)-(N)可以被配置为运行代码。在这种情况下,可以存在双重隔离(例如,容器1371(1)-(N)运行代码,其中容器1371(1)-(N)可能至少包含在(一个或多个)不可信应用子网1362中包含的VM1366(1)-(N)中),这可以帮助防止不正确的或以其它方式非期望的代码损坏IaaS提供商的网络或损坏不同客户的网络。容器1371(1)-(N)可以通信地耦合到客户租赁1370并且可以被配置为传输或接收来自客户租赁1370的数据。容器1371(1)-(N)可以不被配置为从数据平面VCN 1318中的任何其它实体传输或接收数据。在运行代码完成后,IaaS提供商可以终止或以其它方式处置容器1371(1)-(N)。
在一些实施例中,(一个或多个)可信应用子网1360可以运行可以由IaaS提供商拥有或操作的代码。在这个实施例中,(一个或多个)可信应用子网1360可以通信地耦合到(一个或多个)DB子网1330并且被配置为在(一个或多个)DB子网1330中执行CRUD操作。(一个或多个)不可信应用子网1362可以通信地耦合到(一个或多个)DB子网1330,但是在这个实施例中,(一个或多个)不可信应用子网可以被配置为在(一个或多个)DB子网1330中执行读取操作。可以包含在每个客户的VM 1366(1)-(N)中并且可以运行来自客户的代码的容器1371(1)-(N)可以不与(一个或多个)DB子网1330通信地耦合。
在其它实施例中,控制平面VCN 1316和数据平面VCN 1318可以不直接通信地耦合。在这个实施例中,控制平面VCN 1316和数据平面VCN 1318之间可能没有直接通信。但是,通信可以通过至少一种方法间接发生。LPG 1310可以由IaaS提供商建立,其可以促进控制平面VCN 1316和数据平面VCN 1318之间的通信。在另一个示例中,控制平面VCN 1316或数据平面VCN 1318可以经由服务网关1336调用云服务1356。例如,从控制平面VCN 1316对云服务1356的调用可以包括对可以与数据平面VCN 1318通信的服务的请求。
图14是图示根据至少一个实施例的IaaS体系架构的另一个示例模式的框图1400。服务运营商1402(例如,图11的服务运营商1102)可以通信地耦合到安全主机租赁1404(例如,图11的安全主机租赁1104),该安全主机租赁1404可以包括虚拟云网络(VCN)1406(例如,图11的VCN 1106)和安全主机子网1408(例如,图11的安全主机子网1108)。VCN 1406可以包括LPG 1410(例如,图11的LPG 1110),该LPG 1410可以经由包含在SSH VCN 1412(例如,图11的SSH VCN 1112)中的LPG 1410通信地耦合到SSH VCN 1412。SSH VCN 1412可以包括SSH子网1414(例如,图11的SSH子网1114),并且SSH VCN 1412可以经由包含在控制平面VCN 1416中的LPG 1410通信地耦合到控制平面VCN 1416(例如,图11的控制平面VCN 1116)并且经由包含在数据平面VCN 1418中的LPG 1410耦合到数据平面VCN 1418(例如,图11的数据平面1118)。控制平面VCN 1416和数据平面VCN 1418可以包含在服务租赁1419(例如,图11的服务租赁1119)中。
控制平面VCN 1416可以包括能包括(一个或多个)LB子网1422(例如,图11的(一个或多个)LB子网1122)的控制平面DMZ层1420(例如,图11的控制平面DMZ层1120)、可以包括(一个或多个)应用(app)子网1426(例如,图11的(一个或多个)应用子网1126)的控制平面应用(app)层1424(例如,图11的控制平面应用层1124)、可以包括(一个或多个)DB子网1430(例如,图13的(一个或多个)DB子网1330)的控制平面数据层1428(例如,图11的控制平面数据层1128)。包含在控制平面DMZ层1420中的(一个或多个)LB子网1422可以通信地耦合到包含在控制平面应用层1424中的(一个或多个)应用子网1426和可以包含在控制平面VCN1416中的互联网网关1434(例如,图11的互联网网关1134),并且(一个或多个)应用子网1426可以通信地耦合到包含在控制平面数据层1428中的(一个或多个)DB子网1430以及服务网关1436(例如,图11的服务网关)和网络地址转换(NAT)网关1438(例如,图11的NAT网关138)。控制平面VCN 1416可以包括服务网关1436和NAT网关1438。
数据平面VCN 1418可以包括数据平面应用(app)层1446(例如,图11的数据平面应用层1146)、数据平面DMZ层1448(例如,图11的数据平面DMZ层1148),以及数据平面数据层1450(例如,图11的数据平面数据层1150)。数据平面DMZ层1448可以包括可以通信地耦合到数据平面应用层1446的(一个或多个)可信应用(app)子网1460(例如,图13的(一个或多个)可信应用子网1360)和(一个或多个)不可信应用(app)子网1462(例如,图13的(一个或多个)不可信应用子网1362)以及包含在数据平面VCN 1418中的互联网网关1434的(一个或多个)LB子网1422。(一个或多个)可信应用子网1460可以通信地耦合到包含在数据平面VCN1418中的服务网关1436、包含在数据平面VCN 1418中的NAT网关1438以及包含在数据平面数据层1450中的(一个或多个)DB子网1430。(一个或多个)不可信应用子网1462可以通信地耦合到包含在数据平面VCN 1418中的服务网关1436和包含在数据平面数据层1450中的(一个或多个)DB子网1430。数据平面数据层1450可以包括可以通信地耦合到包含在数据平面VCN 1418中的服务网关1436的(一个或多个)DB子网1430。
(一个或多个)不可信应用子网1462可以包括可以通信地耦合到驻留在(一个或多个)不可信应用子网1462内的租户虚拟机(VM)1466(1)-(N)的主VNIC 1464(1)-(N)。每个租户VM 1466(1)-(N)可以在相应的容器1467(1)-(N)中运行代码,并且可通信地耦合到可以包含在容器出口VCN 1468中包含的数据平面应用层1446中的应用子网1426。相应的辅助VNIC 1472(1)-(N)可以促进包含在数据平面VCN 1418中的(一个或多个)不可信应用子网1462和包含在容器出口VCN 1468中的应用子网之间的通信。容器出口VCN可以包括可以通信地耦合到公共互联网1454(例如,图11的公共互联网1154)的NAT网关1438。
包含在控制平面VCN 1416中和包含在数据平面VCN 1418中的互联网网关1434可以通信地耦合到元数据管理服务1452(例如,图11的元数据管理***1152),该元数据管理服务1452可以通信地耦合到公共互联网1454。公共互联网1454可以通信地耦合到包含在控制平面VCN 1416中并且包含在数据平面VCN 1418中的NAT网关1438。包含在控制平面VCN1416中并且包含在数据平面VCN 1418中的服务网关1436可以通信地耦合到云服务1456。
在一些示例中,图14的框图1400的体系架构所示的模式可以被认为是图13的框图1300的体系架构所示的模式的例外,并且如果IaaS提供商不能直接与客户通信(例如,断开连接的区域),那么这种模式可能是IaaS提供商的客户所期望的。客户可以实时访问每个客户的VM 1466(1)-(N)中包含的相应容器1467(1)-(N)。容器1467(1)-(N)可以被配置为对包含在数据平面应用层1446的(一个或多个)应用子网1426中的相应辅助VNIC 1472(1)-(N)进行调用,该数据平面应用层1446可以包含在容器出口VCN 1468中。辅助VNIC 1472(1)-(N)可以将调用传输到NAT网关1438,NAT网关1438可以将调用传输到公共互联网1454。在这个示例中,可以由客户实时访问的容器1467(1)-(N)可以与控制平面VCN 1416隔离,并且可以与数据平面VCN 1418中包含的其它实体隔离。容器1467(1)-(N)也可以与来自其它客户的资源隔离。
在其它示例中,客户可以使用容器1467(1)-(N)来调用云服务1456。在这个示例中,客户可以运行容器1467(1)-(N)中从云服务1456请求服务的代码。容器1467(1)-(N)可以将该请求传输到辅助VNIC 1472(1)-(N),辅助VNIC 1472(1)-(N)可以将请求传输到NAT网关,该NAT网关可以将请求传输到公共互联网1454。公共互联网1454可以经由互联网网关1434将请求传输到包含在控制平面VCN 1416中的(一个或多个)LB子网1422。响应于确定请求有效,(一个或多个)LB子网可以将请求传输到(一个或多个)应用子网1426,该(一个或多个)应用子网1426可以经由服务网关1436将请求传输到云服务1456。
应当认识到的是,各图中描绘的IaaS体系架构1100、1200、1300、1400可以具有除所描绘的那些之外的其它组件。另外,各图中所示的实施例仅仅是可以结合本公开的实施例的云基础设施***的一些示例。在一些其它实施例中,IaaS***可以具有比各图中所示更多或更少的组件、可以组合两个或更多个组件,或者可以具有不同的配置或组件布置。
在某些实施例中,本文描述的IaaS***可以包括以自助服务、基于订阅、弹性可扩展、可靠、高度可用和安全的方式交付给客户的应用套件、中间件和数据库服务产品。此类IaaS***的示例是本受让人提供的Oracle云基础设施(OCI)。
图15图示了其中可以实现各种实施例的示例计算机***1500。***1500可以用于实现上述任何计算机***。如图所示,计算机***1500包括经由总线子***1502与多个***子***通信的处理单元1504。这些***子***可以包括处理加速单元1506、I/O子***1508、存储子***1518和通信子***1524。存储子***1518包括有形计算机可读存储介质1522和***存储器1510。
总线子***1502提供用于让计算机***1500的各种部件和子***按意图彼此通信的机制。虽然总线子***1502被示意性地示出为单条总线,但是总线子***的替代实施例可以利用多条总线。总线子***1502可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、***总线、以及使用任何各种总线体系架构的局部总线。例如,这种体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和***部件互连(PCI)总线,其可以被实现为按IEEE P1386.1标准制造的Mezzanine总线。
可以被实现为一个或多个集成电路(例如,常规微处理器或微控制器)的处理单元1504控制计算机***1500的操作。一个或多个处理器可以被包括在处理单元1504中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元1504可以被实现为一个或多个独立的处理单元1532和/或1534,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元1504也可以被实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例中,处理单元1504可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定的时间,要被执行的程序代码中的一些或全部代码可以驻留在(一个或多个)处理器1504中和/或存储子***1518中。通过适当的编程,(一个或多个)处理器1504可以提供上述各种功能。计算机***1500可以附加地包括处理加速单元1506,其可以包括数字信号处理器(DSP)、专用处理器,等等。
I/O子***1508可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的定点设备、结合到显示器中的触摸板或触摸屏、滚动轮、点击轮、拨盘、按钮、开关、键盘、具有语音命令识别***的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,运动感测和/或手势识别设备,诸如的运动传感器,其使得用户能够使用手势和语音命令通过自然用户接口来控制诸如的/>360游戏控制器的输入设备并与之交互。用户接口输入设备也可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄照片和/或做出菜单选择时的“眨眼”)并且将眼睛姿势转换为到输入设备(例如,Google)中的输入的Google/>眨眼检测器。此外,用户接口输入设备可以包括使用户能够通过语音命令与语音识别***(例如,/>导航器)交互的语音识别感测设备。
用户接口输入设备也可以包括但不限于三维(3D)鼠标、操纵杆或指向棒、游戏面板和绘图板,以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像头、图像扫描仪、指纹扫描仪、条形码阅读器3D扫描仪、3D打印机、激光测距仪和视线跟踪设备。此外,用户接口输入设备可以包括,例如,医学成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括,例如,诸如MIDI键盘、数字乐器等的音频输入设备。
用户接口输出设备可以包括显示子***、指示灯,或者诸如音频输出设备的非可视显示器,等等。显示子***可以是阴极射线管(CRT)、诸如使用液晶显示器(LCD)或等离子显示器的平板设备、投影设备、触摸屏,等等。一般而言,术语“输出设备”的使用意在包括用于从计算机***1500向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括,但不限于,可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航***、绘图仪、语音输出设备,以及调制解调器。
计算机***1500可以包括包含软件元件、被示为当前位于***存储器1510中的存储子***1518。***存储器1510可以存储可加载并且可在处理单元1504上执行的程序指令,以及在这些程序的执行期间所产生的数据。
取决于计算机***1500的配置和类型,***存储器1510可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常包含可被处理单元1504立即访问和/或目前正被处理单元1504操作和执行的数据和/或程序模块。在一些实现中,***存储器1510可以包括多种不同类型的存储器,例如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。在一些实现中,诸如包含有助于在启动期间在计算机***1500的元件之间传送信息的基本例程的基本输入/输出***(BIOS),通常可以被存储在ROM中。作为示例,但不是限制,***存储器1510也示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理***(RDBMS)等的应用程序1512,程序数据1514,以及操作***1516。作为示例,操作***1516可以包括各种版本的MicrosoftApple/>和/或Linux操作***、各种可商业获得的/>或类UNIX操作***(包括但不限于各种GNU/Linux操作***、Google/>OS等)和/或诸如iOS、/>Phone、/>OS、/>15OS和/>OS操作***的移动操作***。
存储子***1518也可以提供用于存储提供一些实施例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以被存储在存储子***1518中。这些软件模块或指令可以被处理单元1504执行。存储子***1518也可以提供用于存储根据本公开被使用的数据的储存库。
存储子***1500也可以包括可被进一步连接到计算机可读存储介质1522的计算机可读存储介质读取器1520。与***存储器1510一起并且,可选地,与其相结合,计算机可读存储介质1522可以全面地表示用于临时和/或更持久地包含、存储、发送和检索计算机可读信息的远程、本地、固定和/或可移除存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质1522也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。这可以包括有形的计算机可读存储介质,诸如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学储存器、磁带盒、磁带、磁盘储存器或其它磁存储设备,或者其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以被用来发送期望信息并且可以被计算***1500访问的任何其它介质。
举例来说,计算机可读存储介质1522可以包括从不可移除的非易失性磁介质读取或写到其的硬盘驱动器、从可移除的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移除的非易失性光盘(诸如CD ROM、DVD和盘或其它光学介质)读取或写到其的光盘驱动器。计算机可读存储介质1522可以包括,但不限于,/>驱动器、闪存卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字音频带,等等。计算机可读存储介质1522也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如固态RAM、动态RAM、静态RAM)、基于DRAM的SSD,磁阻RAM(MRAM)SSD,以及使用基于DRAM和闪存存储器的SSD的组合的混合SSD。盘驱动器及其关联的计算机可读介质可以为计算机***1500提供计算机可读指令、数据结构、程序模块及其它数据的非易失性存储。
通信子***1524提供到其它计算机***和网络的接口。通信子***1524用作用于从其它***接收数据和从计算机***1500向其它***发送数据的接口。例如,通信子***1524可以使计算机***1500能够经由互联网连接到一个或多个设备。在一些实施例中,通信子***1524可以包括用于访问无线语音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术,诸如3G、4G或EDGE(用于全球演进的增强型数据速率)的先进数据网络技术,WiFi(IEEE 802.11系列标准),或其它移动通信技术,或其任意组合)、全球定位***(GPS)接收器部件和/或其它部件。在一些实施例中,作为无线接口的附加或者替代,通信子***1524可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子***1524也可以代表可以使用计算机***1500的一个或多个用户接收结构化和/或非结构化数据馈送1526、事件流1528、事件更新1530等形式的输入通信。
举例来说,通信子***1524可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送1526,诸如馈送、/>更新、诸如丰富站点摘要(RSS)馈送的web馈送和/或来自一个或多个第三方信息源的实时更新。
此外,通信子***1524也可以被配置为接收连续数据流形式的数据,这可以包括本质上可以是连续的或无界的没有明确终止的实时事件的事件流1528和/或事件更新1530。产生连续数据的应用的示例可以包括,例如,传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视,等等。
通信子***1524也可以被配置为向一个或多个数据库输出结构化和/或非结构化数据馈送1526、事件流1528、事件更新1530,等等,这一个或多个数据库可以与耦合到计算机***1500的一个或多个流式数据源计算机通信。
计算机***1500可以是各种类型之一,包括手持便携式设备(例如,蜂窝电话、/>计算平板电脑、PDA)、可穿戴设备(例如,/>Glass头戴式显示器)、PC、工作站、大型机、信息站、服务器机架、或任何其它数据处理***。
由于计算机和网络的不断变化的性质,图中描绘的计算机***1500的描述仅旨在作为具体示例。具有比图中描绘的***更多或更少组件的许多其它配置是可能的。例如,也可以使用定制的硬件和/或可以在硬件、固件、软件(包括小应用)或组合中实现特定元素。另外,可以采用与其它计算设备(诸如网络输入/输出设备)的连接。基于本文提供的公开和教导,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
虽然已经描述了具体实施例,但是各种修改、变更、替代构造和等效形式也包含在本公开的范围内。实施例不限于在某些特定数据处理环境内操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用特定系列的事务和步骤描述了实施例,但是本领域技术人员应该清楚本公开的范围不限于所描述系列的事务和步骤。上述实施例的各种特征和方面可以单独或联合使用。
另外,虽然已经使用硬件和软件的特定组合描述了实施例,但是应当认识到硬件和软件的其它组合也在本公开的范围内。实施例可以仅用硬件、或仅用软件、或使用它们的组合来实现。本文描述的各种处理可以以任何组合在相同的处理器或在不同的处理器上实现。因而,在组件或模块被描述为被配置为执行某些操作的情况下,可以通过例如设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作,或其任何组合来完成这样的配置。处理可以使用多种技术进行通信,包括但不限于用于处理间通信的常规技术,并且不同的处理对可以使用不同的技术,或者同一对处理可以在不同时间使用不同的技术。
因而,说明书和附图被认为是说明性的而不是限制性的。但是,显然可以对其进行添加、减少、删除和其它修改和改变而不背离权利要求中阐述的更广泛的精神和范围。因此,虽然已经描述了具体的公开实施例,但这些并不旨在进行限制。各种修改和等效形式都在以下权利要求的范围内。
在描述所公开的实施例的上下文中(尤其在以下权利要求的上下文中)使用术语“一”和“一个”和“该”以及类似的指称要被解释为涵盖单数和复数,除非本文另有指示或与上下文明显矛盾。除非另有说明,否则术语“包括”、“具有”、“包含(including)”和“包含(containing)”要被解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”应被解释为部分或全部包含在、附加到或连接在一起,即使中间存在一些东西。除非本文另有指示,否则本文中值范围的列举仅旨在用作个别引用落入该范围内的每个单独值的速记方法,并且每个单独值被并入说明书中,就好像它在本文中个别列举一样。除非本文另有指示或与上下文明显矛盾,否则本文所述的所有方法都可以以任何合适的顺序执行。本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明实施例并且不对本公开的范围构成限制,除非另有声明。说明书中的任何语言都不应被解释为指示任何未要求保护的元素对于本公开的实践是必不可少的。
析取语言,诸如短语“X、Y或Z中的至少一个”,除非另有明确说明,否则旨在在一般用于表示项目、术语等的上下文中理解,可以是X、Y或Z,或它们的任何组合(例如,X、Y和/或Z)。因此,这种析取语言通常不旨在也不应暗示某些实施例需要X中的至少一个、Y中的至少一个或Z中的至少一个各自存在。
本文描述了本公开的优选实施例,包括已知用于实施本公开的最佳模式。那些优选实施例的变型对于本领域普通技术人员在阅读上述描述后会变得显而易见。普通技术人员应该能够适当地采用这样的变型并且可以以不同于本文具体描述的方式来实践本公开。因而,本公开包括在适用法律允许的情况下对所附权利要求中记载的主题的所有修改和等效形式。此外,除非在本文中另有指示,否则本公开包括在其所有可能的变化中的上述元素的任何组合。
本文引用的所有参考文献,包括出版物、专利申请和专利,均以相同的程度通过引用并入本文,就好像每个参考文献个别且具体地指示通过引用并入并在本文中全文阐述一样。
在前述的说明书中,本公开的各方面参考其具体实施例进行了描述,但本领域技术人员将认识到的是,本公开不限于此。上述公开的各个特征和方面可以被单独或联合使用。此外,在不脱离本说明书的更广泛精神和范围的情况下,实施例可以在除本文所述的那些之外的任何数量的环境和应用中被使用。因而,本说明书和附图应当被认为是说明性而不是限制性的。

Claims (21)

1.一种对远程直接存储器访问(RDMA)分组进行排队的方法,所述方法包括:
由联网设备接收具有第一服务质量(QoS)数据字段的第一RDMA分组;
基于第一QoS数据字段的值,将第一RDMA分组排入多个队列中的第一队列;
由联网设备接收具有第二QoS数据字段的第二RDMA分组;以及
基于第二QoS数据字段的值,将第二RDMA分组排入所述多个队列中的第二队列,第二队列与第一队列不同。
2.如权利要求1所述的方法,所述方法还包括根据所述多个队列中的第一权重从第一队列检索第一RDMA分组,以及从第二队列检索第二RDMA分组。
3.如权利要求1所述的方法,所述方法还包括根据加权循环方案从第一队列检索第一RDMA分组,以及从第二队列检索第二RDMA分组。
4.如权利要求1所述的方法,其中所述多个队列包括控制队列,并且其中所述方法还包括由联网设备从控制队列检索多个控制分组,
其中检索所述多个控制分组比检索第一RDMA分组和检索第二RDMA分组具有严格的优先级。
5.如权利要求4所述的方法,其中所述多个队列包括多个RDMA队列,所述多个RDMA队列包括第一队列和第二队列,以及
其中控制队列被配置为具有比所述多个RDMA队列中的任何一个RDMA队列更低的带宽。
6.如权利要求4所述的方法,其中所述多个控制分组包括网络控制协议分组或拥塞通知分组中的至少一个。
7.如权利要求1至6中的任一项所述的方法,其中第一QoS数据字段是第一RDMA分组的互联网协议(IP)报头的差分服务代码点(DSCP)数据字段。
8.如权利要求1至6中的任一项所述的方法,其中第一RDMA分组和第二RDMA分组中的每一个都是RoCEv2分组。
9.如权利要求1至6中的任一项所述的方法,其中第一RDMA分组和第二RDMA分组中的每一个都是根据覆盖封装协议格式化的层3封装的分组。
10.如权利要求9所述的方法,其中覆盖封装协议是VxLAN、NVGRE、GENEVE、STT和MPLS之一。
11.如权利要求9所述的方法,其中所述方法还包括:
解封装第一RDMA分组以获得第一解封装的RDMA分组,以及
将拥塞指示信息从第一RDMA分组的至少一个外部报头复制到第一解封装的RDMA分组。
12.如权利要求1所述的方法,其中所述方法还包括:
接收多个RDMA分组,所述多个RDMA分组中的每个RDMA分组具有对应的QoS数据字段;
对于所述多个RDMA分组中的每个RDMA分组,基于该RDMA分组的QoS数据字段的值将该RDMA分组排入所述多个队列中的队列;以及
从所述多个队列检索所述多个RDMA分组,
其中所述多个RDMA分组包括多个分组流,并且
其中所述方法还包括根据每流等价多路径方案来路由所述多个分组流。
13.一种联网设备,包括:
存储器,所述存储器存储多个队列;以及
处理电路***,与存储器耦合,所述处理电路***用于:
接收具有第一服务质量(QoS)数据字段的第一远程直接存储器访问(RDMA)分组;
基于第一QoS数据字段的值,将第一RDMA分组排入所述多个队列中的第一队列;
接收具有第二QoS数据字段的第二RDMA分组;以及
基于第二QoS数据字段的值,将第二RDMA分组排入所述多个队列中的第二队列,第二队列与第一队列不同。
14.如权利要求13所述的联网设备,其中所述多个队列包括控制队列,以及
其中处理电路***根据比检索第一RDMA分组和检索第二RDMA分组严格的优先级从控制队列中检索多个控制分组。
15.如权利要求14所述的联网设备,其中第一RDMA分组和第二RDMA分组中的每一个都是根据覆盖封装协议格式化的层3封装的分组。
16.如权利要求13至15中的任一项所述的联网设备,其中处理电路***还用于:
解封装第一RDMA分组以获得第一解封装的RDMA分组,以及
将拥塞指示信息从第一RDMA分组的至少一个外部报头复制到第一解封装的RDMA分组。
17.如权利要求16所述的联网设备,其中所述联网设备是Clos网络的交换机。
18.一种非暂态计算机可读介质,其存储了能由一个或多个处理器执行的多条指令,所述多条指令包括当由所述一个或多个处理器执行时使所述一个或多个处理器执行以下操作的指令:
接收具有第一服务质量(QoS)数据字段的第一RDMA分组;
基于第一QoS数据字段的值,将第一RDMA分组排入多个队列中的第一队列;
接收具有第二QoS数据字段的第二RDMA分组;以及
基于第二QoS数据字段的值,将第二RDMA分组排入所述多个队列中的第二队列,第二队列与第一队列不同。
19.如权利要求18所述的非暂态计算机可读介质,其中所述多个队列包括控制队列,以及
其中所述多条指令还包括当由所述一个或多个处理器执行时使所述一个或多个处理器根据比检索第一RDMA分组和检索第二RDMA分组严格的优先级从控制队列中检索多个控制分组的指令。
20.如权利要求18所述的非暂态计算机可读介质,其中第一RDMA分组和第二RDMA分组中的每一个都是根据覆盖封装协议格式化的层3封装的分组。
21.如权利要求18至20中的任一项所述的非暂态计算机可读介质,其中第一RDMA分组用于多个租户中的第一租户并且第二RDMA分组用于所述多个租户中的第二租户,以及
其中第一RDMA分组包括指示在主机机器上执行的多个计算实例之中的第一计算实例的VLAN的虚拟局域网(VLAN)标识符,并且第二RDMA分组包括指示所述多个计算实例之中的第二计算实例的VLAN的VLAN标识符。
CN202180088648.7A 2020-12-30 2021-04-01 用于可扩展多租户rdma流量的基于类的排队 Pending CN116686277A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US63/132,417 2020-12-30
US17/165,877 2021-02-02
US17/166,922 US12010173B2 (en) 2020-12-30 2021-02-03 Class-based queueing for scalable multi-tenant RDMA traffic
US17/166,922 2021-02-03
PCT/US2021/025459 WO2022146466A1 (en) 2020-12-30 2021-04-01 Class-based queueing for scalable multi-tenant rdma traffic

Publications (1)

Publication Number Publication Date
CN116686277A true CN116686277A (zh) 2023-09-01

Family

ID=87787742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180088648.7A Pending CN116686277A (zh) 2020-12-30 2021-04-01 用于可扩展多租户rdma流量的基于类的排队

Country Status (1)

Country Link
CN (1) CN116686277A (zh)

Similar Documents

Publication Publication Date Title
US11991246B2 (en) Cloud scale multi-tenancy for RDMA over converged ethernet (RoCE)
US11876708B2 (en) Interface-based ACLs in a layer-2 network
US20220210063A1 (en) Layer-2 networking information in a virtualized cloud environment
US11516126B2 (en) Techniques for high performant virtual routing capabilities
US12010195B2 (en) Efficient flow management utilizing control packets
US12015557B2 (en) Efficient flow management utilizing unified logging
WO2022146466A1 (en) Class-based queueing for scalable multi-tenant rdma traffic
EP4272399A1 (en) Layer-2 networking storm control in a virtualized cloud environment
US20240106760A1 (en) Network device level optimizations for latency sensitive rdma traffic
US20230344777A1 (en) Customized processing for different classes of rdma traffic
US20220417138A1 (en) Routing policies for graphical processing units
CN116724546A (zh) 用于融合以太网上的RDMA(RoCE)云规模多租赁
CN116686277A (zh) 用于可扩展多租户rdma流量的基于类的排队
US20230344778A1 (en) Network device level optimizations for bandwidth sensitive rdma traffic
EP4272083A1 (en) Class-based queueing for scalable multi-tenant rdma traffic
US20230013110A1 (en) Techniques for processing network flows
US20230222007A1 (en) Publishing physical topology network locality information for graphical processing unit workloads
WO2023205004A1 (en) Customized processing for different classes of rdma traffic
WO2023205005A1 (en) Network device level optimizations for bandwidth sensitive rdma traffic
JP2024528474A (ja) 画像処理装置のルーティングポリシー
EP4360280A1 (en) Routing policies for graphical processing units
CN117597894A (zh) 用于图形处理单元的路由策略
WO2023136964A1 (en) Publishing physical topology network locality information for graphical processing unit workloads
WO2022271990A1 (en) Routing policies for graphical processing units

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination