针对应用提供数据平面服务的制作方法

文档序号:16995353发布日期:2019-03-02 01:19阅读:193来源:国知局
针对应用提供数据平面服务的制作方法

本公开内容总体上涉及通信网络的领域,更加特别地而非排他地涉及支持针对应用的数据平面服务。



背景技术:

比如特别是服务提供商网络和数据中心环境之类的许多类型的通信环境可以支持各种类型的数据平面服务。举例来说,这样的数据平面服务可以包括监测服务(例如流分析、入侵检测等等)、过滤服务(例如防火墙等等)、负荷平衡服务、变换服务(例如网络地址翻译(nat)等等)、加速服务(例如卸载等等)等等。可以通过多种方式部署和操作数据平面服务。



技术实现要素:

本公开内容总体上公开了被配置成针对应用提供数据平面服务的各种数据平面服务支持机制。

在至少一些实施例中,提供一种非瞬时性计算机可读存储介质。非瞬时性计算机可读存储介质存储指令,所述指令在由计算机执行时使得计算机实施一种方法。所述方法包括在服务器上发起第一虚拟资源的实例化,其中第一虚拟资源与被配置成运行应用的第二虚拟资源相关联。所述方法包括发起第一虚拟资源的配置,以便针对应用提供数据平面服务。所述方法包括发起用于数据平面服务的流连接的配置。

在至少一些实施例中,提供一种装置。所述装置包括处理器和可通信地连接到处理器的存储器。处理器被配置成在服务器上发起第一虚拟资源的实例化,其中第一虚拟资源与被配置成运行应用的第二虚拟资源相关联。处理器被配置成发起第一虚拟资源的配置,以便针对应用提供数据平面服务。处理器被配置成发起用于数据平面服务的流连接的配置。

在至少一些实施例中,提供一种方法。所述方法包括在服务器上发起第一虚拟资源的实例化,其中第一虚拟资源与被配置成运行应用的第二虚拟资源相关联。所述方法包括发起第一虚拟资源的配置,以便针对应用提供数据平面服务。所述方法包括发起用于数据平面服务的流连接的配置。

在至少一些实施例中,提供一种非瞬时性计算机可读存储介质。非瞬时性计算机可读存储介质存储指令,所述指令在由计算机执行时使得计算机实施一种方法。所述方法包括由虚拟交换机接收包括串联分组和相关联的分组元数据的数据结构。串联分组包括串联分组有效载荷和串联分组报头。串联分组有效载荷包括由分组有效载荷构成的一个集合以及由多个分组构成的一个集合。串联分组报头包括所述多个分组所共有的一个或多个报头字段。分组元数据具有第一分组元数据格式。所述方法包括在虚拟交换机处对分组数据结构进行处理,以便提供包括串联分组和相关联的新的分组元数据的修改后的数据结构。新的分组元数据具有不同于第一分组元数据格式的第二分组元数据格式。所述方法包括从虚拟交换机传播修改后的数据结构。

在至少一些实施例中,提供一种装置。所述装置包括处理器和可通信地连接到处理器的存储器。处理器被配置成运行虚拟交换机。虚拟交换机被配置成接收包括串联分组和相关联的分组元数据的数据结构。串联分组包括串联分组有效载荷和串联分组报头。串联分组有效载荷包括由分组有效载荷构成的一个集合以及由多个分组构成的一个集合。串联分组报头包括所述多个分组所共有的一个或多个报头字段。分组元数据具有第一分组元数据格式。虚拟交换机被配置成对分组数据结构进行处理,以便提供包括串联分组和相关联的新的分组元数据的修改后的数据结构。新的分组元数据具有不同于第一分组元数据格式的第二分组元数据格式。虚拟交换机被配置成传播修改后的数据结构。

在至少一些实施例中,提供一种方法。所述方法包括由虚拟交换机接收包括串联分组和相关联的分组元数据的数据结构。串联分组包括串联分组有效载荷和串联分组报头。串联分组有效载荷包括由分组有效载荷构成的一个集合以及由多个分组构成的一个集合。串联分组报头包括所述多个分组所共有的一个或多个报头字段。分组元数据具有第一分组元数据格式。所述方法包括在虚拟交换机处对分组数据结构进行处理,以便提供包括串联分组和相关联的新的分组元数据的修改后的数据结构。新的分组元数据具有不同于第一分组元数据格式的第二分组元数据格式。所述方法包括从虚拟交换机传播修改后的数据结构。

附图说明

通过结合附图考虑后面的详细描述,可以很容易理解本文中的教导,其中:

图1描绘出被配置成支持针对应用的数据平面服务的示例性数据中心通信系统;

图2描绘出示例性数据中心通信系统的单元借以配置和管理虚拟资源以便支持针对应用的数据平面服务的示例性方法;

图3描绘出示例性数据中心通信系统的单元借以配置和管理针对应用的数据平面服务的示例性方法;

图4描绘出示例性数据中心通信系统的单元借以针对应用提供数据平面服务的示例性方法;

图5描绘出示例性数据中心通信系统的单元借以传送针对应用的应用通信量并且同时还利用针对应用的数据平面服务的示例性方法;

图6描绘出说明用以支持nic卸载的基于openvswitch的虚拟交换机的示例性配置的示例性数据中心通信环境;

图7描绘出由虚拟交换机使用来支持nic卸载的示例性方法;以及

图8描绘出适用于实施本文中所描述的各种功能的计算机的高层级方块图。

为了便于理解,在可能的情况下使用了完全相同的附图标记来标示各幅图所共有的完全相同的单元。

具体实施方式

本公开内容总体上公开了一种数据平面服务支持机制。数据平面服务支持机制可以被配置成提供高效并且灵活的数据平面服务。数据平面服务支持机制可以被配置成在数据中心或其他类型的通信环境中提供高效并且灵活的数据平面服务。数据平面服务支持机制可以被配置成针对应用提供数据平面服务。应用可以运行在一个或多个虚拟资源上,并且类似地数据平面服务可以运行在一个或多个虚拟资源上。运行针对应用的数据平面服务的一个或多个虚拟资源可以与运行为之提供数据平面服务的应用的一个或多个虚拟资源具有特定水平的亲和性(例如位于相同的服务器上、位于相同机架内的服务器上等等)。数据平面服务支持机制可以被配置成支持与针对一个或多个应用提供一项或多项数据平面服务相关联的应用通信量的改进的通信。与针对一个或多个应用提供一项或多项数据平面服务相关联的应用通信量的改进的通信可以使用网络接口卡(nic)卸载来提供,这可以是基于配置虚拟交换机以支持nic卸载而得到支持。通过参照图1的示例性数据中心通信系统可以进一步理解数据平面服务支持机制的这些和各种其他实施例以及潜在的优点。

图1描绘出被配置成支持针对应用的数据平面服务的示例性数据中心通信系统。

数据中心通信系统100被配置成支持一种数据平面服务支持机制,其被配置成提供高效并且灵活的数据平面服务。

数据中心通信系统100被配置成支持针对多个租户的云计算。可以为租户提供运行在末端服务器上的虚拟资源(例如虚拟机(vm)、虚拟容器(vc)等等)。被提供给租户的虚拟资源可以支持针对租户的各种类型的应用。举例来说,可以使用虚拟资源被虚拟化的某些类型的应用可以包括数据管理应用、数据处理应用、web浏览应用、企业应用(例如人力资源(hr)管理应用、企业资源规划应用、记账应用、支付处理应用等等)。寄放运行针对租户的应用的虚拟资源的末端服务器可以被联网在一起,以便支持数据中心通信系统100内的应用之间以及数据中心通信系统100内的应用与位于数据中心通信系统100外部的其他单元(例如末端用户设备、网络设备等等)之间的通信。例如应当认识到,可以使用架顶(top-of-rack)交换机、聚合交换机、网关等等(为了清楚起见从图1中省略)来支持末端服务器的通信。

数据中心通信系统100被配置成支持针对租户的应用的数据平面服务。数据平面服务可以包括可以被提供在数据平面中的分组处理服务,比如监测服务(例如流分析、入侵检测等等)、过滤服务(例如防火墙)、负荷平衡服务、变换服务(例如网络地址翻译(nat))、加速服务(例如卸载等等)等等。数据平面服务可以被配置成支持对于所述数据平面服务正在支持的应用的分组流的分组的无状态或有状态处置。数据平面服务可以被配置成支持对于所述数据平面服务正在支持的应用的分组流的分组的分组报头以及分组有效载荷的检查和变换。数据平面服务被配置成实施分组处理,其中对于数据平面服务所实施的分组处理的类型可以取决于数据平面服务的服务类型(例如针对分组过滤服务的分组过滤处理、针对监测服务的分组检查处理等等)。应当认识到,对于分组的无状态处置通常包括通常基于静态信息(例如来源地址、目的地地址等等)的基本处理,对于分组的有状态处置则可以包括其中可以确定和使用分组流状态的更加复杂的处理(例如跟踪tcp连接或应用层级会话的当前阶段、从有效载荷的深度分组检查(dpi)实施有状态入侵检测、实施应用通信量的有状态负荷平衡等等,以及其各种组合)。数据中心通信系统100可以被配置成支持把针对租户的数据平面服务从数据中心通信系统100内的更加集中式的部署(例如部署在数据中心网关设备、聚合交换机上等等)推送到数据中心通信系统100内的更加分布式的部署(例如更靠近运行针对租户的应用的虚拟资源,比如推送到寄放运行针对租户的应用的虚拟资源的末端服务器上)。

数据中心通信系统100被配置成支持针对租户的数据平面服务的动态、分布式部署和管理。数据中心通信系统100可以被配置成支持数据平面服务的动态、分布式部署和管理,这是通过使用集中式控制在运行在商品末端服务器上的虚拟资源内部署和管理特定于应用的数据平面服务。数据中心通信系统100可以被配置成支持数据平面服务的动态、分布式部署和管理,从而可以按照集中式和策略驱动的方式对特定于应用的数据平面服务进行部署、伸缩、移除以及彼此链接以便易于管理。数据中心通信系统100可以被配置成使用软件定义联网(snd)(例如基于openflow的sdn)和集中式云端编制的组合来支持针对租户的数据平面服务的动态、分布式部署和管理。应当提到的是,使用sdn在数据平面服务组成中提供了灵活性,使用集中式云端编制则把横向扩容(scale-out)属性带给数据平面服务部署。通过这种方式,数据中心通信系统100可以被配置成提供用于数据中心通信系统100内的数据平面服务的动态部署和管理的可伸缩、每租户数据平面服务平台(所述平台在本文中也可以被称作nimble平台)。

数据中心通信系统100被配置成支持针对租户的数据平面服务的动态、分布式部署和管理。数据中心通信系统100可以被配置成部署和管理针对为租户寄放在数据中心通信系统100内的应用的数据平面服务。数据中心通信系统100可以被配置成动态地部署和管理针对租户的应用的数据平面服务。数据中心通信系统100可以被配置成部署和管理针对租户的应用的数据平面服务,从而使得数据平面服务被联系到租户的应用。数据中心通信系统100可以被配置成把数据平面服务部署到相关联的租户应用的旁边或者与之相对靠近(例如部署在相同的服务器上、部署在相同机架内的不同服务器上等等)。数据平面服务可以被部署成由运行在一个或多个虚拟资源(例如vm、vc等等)上的一个或多个服务实例构成的一个集合。对应于数据平面服务的一个或多个服务实例可以被配置成实施分组处理,以便使用一个或多个服务实例被部署在其上的一个或多个虚拟资源来提供数据平面服务(例如在轻量型容器(例如lxc)或完全型vm内实施分组处理)。数据平面服务在被部署之后可以按照需要被重新配置。数据平面服务在被部署之后可以通过添加或移除服务实例而按照需要被自动横向扩容或横向缩容,从而把可伸缩性属性带给数据平面服务部署。通过这种方式,可以为租户提供丰富得多的软件定义、软件驱动的数据平面服务,从而超出通常由软件/硬件交换机给出的简单的第2/3层访问控制。

数据中心通信系统100被配置成支持针对租户的数据平面服务的动态、分布式部署和管理。通过这种方式,数据中心通信系统100可以被配置成提供基于边缘的联网模型,其能够支持针对用于租户应用的各种复杂的数据平面服务的不断增长的需求,其中可以在边缘处或边缘附近提供这样的数据平面服务。其结果是,通过在数据中心通信系统100的边缘处或边缘附近提供数据平面服务(例如在为之提供数据平面服务的租户应用附近),用于租户应用的数据平面功能可以被扩展到超出简单的无状态交换和路由功能的范围,以便包括通常使用某种形式的l2-l7分组处理的更加网络i/o和计算密集的有状态数据平面服务。此外,其结果是,位于数据中心通信系统100中的末端服务器上游的基于硬件的网络单元(例如架顶交换机、聚合交换机等等)可能不需要支持特定的更加复杂的数据平面服务,因此可以保持相对简单(例如上游网络单元可以简单地通过终止在边缘处的虚拟覆盖(例如使用虚拟可扩展局域网(vxlan)、无状态传输隧道(stt)、使用通用路由封装的网络虚拟化(nvgre)等等)来隧道传送租户应用通信量)。此外,与在该处生成或消费租户应用通信量的租户应用一起在原地部署数据平面服务的另一个益处在于,可以使得数据平面服务的分组处理更加高效(例如被设计成提升租户应用的性能的各种网络协议栈优化(比如后面进一步讨论的nic卸载)也可以被用来加速位于同一处的数据平面应用)。应当认识到,可以实现各种其他益处或潜在的益处。

通过进一步考虑将在后面进一步讨论的数据中心通信系统100的单元可以进一步理解数据中心通信系统100的这些和各种其他实施例和潜在的优点。

数据中心通信系统100包括服务器110、云端编制系统120、数据平面服务管理器130和服务管理接口系统140。

服务器110包括硬件111、虚拟资源管理器(vrm)113、虚拟交换机(v-switch)114、虚拟资源(vr)的集合115(作为说明是vr115-xa、115-xs、115-ya和115-za)、云端编制代理118(在本文中也可以被称作计算代理118)以及数据平面服务代理119(在本文中也可以被称作服务代理119)。

服务器110的硬件111可以包括能够被包括在将要虚拟化的寄主计算机内的任何物理资源。举例来说,硬件111可以包括物理计算资源(例如一个或多个处理器或者其他物理计算资源)、物理存储器资源(例如一个或多个存储器)、物理存储资源、物理联网资源(例如网络接口卡(nic)或其他物理联网资源)等等,以及其各种组合。本领域技术人员将会理解服务器的硬件的典型配置。

服务器110的vrm113被配置成管理服务器110的硬件111的虚拟化,从而允许服务器110的虚拟化。vrm113可以是直接运行在硬件111上的第1型(或者原生或裸金属)vrm,可以是在运行在硬件111上的操作系统(os)上运行的第2型(或被寄放)vrm等等。vrm113被配置成在服务器110上实例化vr115,在服务器110上终止vr115等等,以及其各种组合。应当认识到,在其中vrm113使用虚拟机实例化vr115的情况下,vrm113在本文中也可以被称作虚拟机管理器(vmm)、管理程序或者使用其他相关的术语。应当认识到,在其中vrm113是第2型vrm并且安装有容器运行时间环境(例如docker、lxc、rkt等等)的情况下,vrm113可以基于虚拟机、容器或者其组合实例化vr115。

服务器110的v-switch114被配置成支持用于运行在服务器110的vr115上的应用和服务的通信量的传送。v-switch114是具有可以由控制器使用控制平面协议(例如openflow或者其他适当类型的控制平面协议)进行编程的可编程数据路径的软件交换机。v-switch114可以被配置成提供用于支持运行在服务器110的vr115上的应用和服务的通信量的交换的网络交换协议栈。v-switch114可以被配置成支持各种通信协议(例如第2层(l2)协议、第3层(l3)协议、隧道协议、生成树协议等等)、通信能力(例如链路聚合(lag)、虚拟局域网(vlan)能力等等)等等,以及其各种组合。v-switch114可以被配置成运行在正在管理vr115的vrm113上,所述vr115正在寄放为之支持通信量的交换的应用和服务(并且因此v-switch114可以被配置成运行在服务器110的硬件111上)。举例来说,v-switch114可以被实施成openvswitch(ovs)或者作为被配置成在虚拟化情境中支持应用通信量的传送的任何其他适当类型的虚拟交换机。

vr115是硬件111的物理资源的虚拟化版本。正如前面所讨论的那样,由vrm113控制硬件111的物理资源的虚拟化以便提供vr115。举例来说,vr115可以包括虚拟计算资源(例如一个或多个虚拟处理器或者其他虚拟计算资源)、虚拟存储器资源(例如一个或多个虚拟存储器)、虚拟存储资源、虚拟联网资源(例如虚拟网络接口卡(vnic)或其他虚拟联网资源)等等,以及其各种组合。本文中所讨论的vr115可以包括vm、vc、运行在vrm113上的进程等等。

云端编制代理118和数据平面服务代理119被配置成运行在服务器110上,以便支持针对寄放在服务器110上的应用的服务器110上的数据平面服务的部署和管理。云端编制代理118被配置成与vrm113协作,以便在云端编制系统120的控制下对于针对服务器110上的应用的数据平面服务支持vr115的实例化和终止。数据平面服务代理119被配置成与v-switch114协作,以便在数据平面服务管理器130的控制下针对服务器上的应用提供数据平面服务(以便例如支持针对服务器110上的应用的数据平面服务的配置,以及用于针对服务器110上的应用所提供的数据平面服务的流连接的配置)。云端编制代理118和数据平面服务代理119可以被配置成以各种方式运行在服务器110上(例如包括指令,所述指令在由计算机执行时(例如使用服务器110的硬件111来执行)使得计算机分别实施云端编制代理118和数据平面服务代理119的功能)。云端编制代理118和数据平面服务代理119可以被配置成以各种方式运行在服务器110上(例如运行在vrm113上,运行在一个或多个虚拟资源上(例如其中云端编制代理118和数据平面服务代理119可以运行在分开的虚拟资源上,或者可以一起运行在相同的虚拟资源上)等等,以及其各种组合)。应当认识到,虽然主要是关于其中云端编制代理118和数据平面服务代理119是分开的代理的实施例进行描绘和描述,但是在至少一些实施例中,云端编制代理118和数据平面服务代理119的功能可以被组合到单个代理中,云端编制代理118的功能可以分布在多个代理上,数据平面服务代理119的功能可以分布在多个代理上等等。

应当认识到,服务器110可以包括各种其他组件,可以按照其他方式配置等等,以及其各种组合。

服务器110被配置成支持针对寄放在服务器110上的应用的服务器110上的数据平面服务的部署和管理。将在一个实例的情境内描述服务器110在提供这样的功能中的操作。

在图1的实例中,第一租户(被标示成租户x)具有运行在vr115-xa上的第一应用或应用实例(被标示成应用(app)116-xa),第二租户(被标示成租户y)具有运行在vr115-ya上的第二应用或应用实例(被标示成应用(app)116-ya),并且第三租户(被标示成租户z)具有运行在vr115-za上的第三应用或应用实例(被标示成应用(app)116-za)。app116-xa、116-ya和116-za可以被统称作app116。app116可以包括可以运行在vr115上的任何应用(例如数据管理应用、数据处理应用、web浏览应用、企业应用(例如人力资源(hr)管理应用、企业资源规划应用、记账应用、支付处理应用等等)等等)。应当认识到,虽然主要是关于其中三个租户的三个应用(作为说明是app116)被寄放在服务器110上的一个实例而呈现的,但是更少或更多租户的更少或更多应用可以被寄放在服务器110上。

在图1的实例中,已经对于具有运行在vr115-xa上的app116-xa的第一租户部署了数据平面服务(作为说明是数据平面服务(dps)117-xs)。

dps117-xs是可以被提供在为之提供dps117-xs的app116-xa的数据平面中的分组处理服务。dps117-xs可以是监测服务(例如流分析服务、入侵检测服务等等)、过滤服务(例如防火墙或其他过滤服务)、负荷平衡服务(例如用于在提供app116-xa的多个应用实例上对app116-xa的应用通信量进行负荷平衡)、变换服务(例如nat服务、加速服务、协议卸载服务等等)。dps117-xs可以被配置成支持为之提供dps117-xs的app116-xa的分组流的分组的无状态或有状态处置。dps117-xs可以被配置成支持为之提供dps117-xs的app116-xa的分组流的分组的分组报头以及分组有效载荷的检查和变换。dps117-xs被配置成实施分组处理,其中由dps117-xs实施的分组处理的类型可以取决于dps117-xs的服务类型(例如用于分组过滤服务的分组过滤处理、用于监测服务的分组检查处理等等)。dps117-xs可以被配置成支持对于为之提供dps117-xs的app116-xa的分组的各种其他类型的分组处理。

dps117-xs已被部署,这是通过对于第一租户实例化vr115-xs,在vr115-xs上配置dps117-xs(这可以包括在vr115-xs上提供dps117-xs,并且配置dps117-xs以便为了提供针对app116-xa的dps117-xs而提供相关联的分组处理),并且配置用于dps117-xs的流连接(这可以包括配置v-switch114以便支持v-switch114与正在寄放app116-xa的vr115-xa和正在寄放针对app116-xa的dps117-xs的vr115-xs全部二者之间的连接)。应当认识到,在图1中,围绕vr115-xa(其正在运行app116-xa)和vr115-xs(其正在运行dps117-xs)的方框表明dps117-xs与用于第一租户的app116-xa的关联。

正如前面所提到的那样,dps117-xs的部署包括用于第一租户的vr115-xs的实例化,从而使得vr115-xs可用于运行针对app116-xa的dps117-xs。vr115-xs的实例化可以由vrm113实施。本领域技术人员将会理解由服务器的vrm在服务器上对例如vm或vc之类的虚拟资源进行实例化。vrm113可以基于来自云端编制代理118的请求对vr115-xs进行实例化。来自云端编制代理118的请求可以由云端编制代理118基于来自云端编制系统120的请求而发起。来自云端编制系统120的请求可以由云端编制系统120基于来自服务管理系统140的请求而发起(例如其中租户请求针对为第一租户运行在服务器110上的app116-xa提供特定的数据平面服务)。

正如前面所提到的那样,dps117-xs的部署包括在部署dps117-xs时使其对于为之提供dps117-xs的app116-xa具有某种程度的亲和性。这可以通过以下方式来提供:把dps117-xs部署在与app116-xa相同的末端寄主上(如图1中所示,其中将dps117-xs部署在相关联的app116-xa被寄放在其上的服务器110上),将dps117-xs部署在与app116-xa被寄放在其上的末端寄主接近的末端寄主上(例如部署在与服务器110相同的机架内的不同服务器上,部署在邻近机架内的另一个服务器上等等)。在至少一些实施例中,为了原生性能和隔离,dps117-xs可以被默认地以沙箱(sandbox)方式被装到轻量型容器中。在至少一些实施例中,比如在其中底层vrm113不支持裸金属设定(例如esxi)中的容器或者dps117-xs的内核要求与vrm113存在任何不兼容的情况下,可以使用替换的基于vm的部署。应当认识到,可以支持dps117-xs的其他部署。

正如前面所提到的那样,dps117-xs的部署包括在vr115-xs上配置dps117-xs。在vr115-xs上配置dps117-xs可以包括在vr115-xs上提供dps117-xs,并且配置dps117-xs以便为了提供针对app116-xa的dps117-xs而提供相关联的分组处理(例如用于分组过滤服务的分组过滤处理、用于监测服务的分组检查处理等等)。配置dps117-xs以便为了提供针对app116-xa的dps117-xs而提供相关联的分组处理可以包括向vr115-xs提供各种类型的信息,以便由vr115-xs执行和使用来提供针对app116-xa的dps117-xs(例如能力、处理、软件指令、规则、策略等等以及其各种组合)。在vr115-xs上配置dps117-xs可以由数据平面服务代理119实施。数据平面服务代理119可以基于来自数据平面服务管理器130的请求而在vr115-xs上配置dps117-xs。来自数据平面服务管理器130的请求可以由数据平面服务管理器130基于来自服务管理系统140的请求而发起(例如其中租户请求针对为第一租户运行在服务器110上的app116-xa提供特定的数据平面服务)。

正如前面所提到的那样,dps117-xs的部署包括配置用于dps117-xs的流连接。配置用于dps117-xs的流连接可以包括配置v-switch114,其支持用于运行在vr115-xs上的dps117-xs的应用通信量的传送(以便例如支持v-switch114与支持app116-xa的vr115-xa和支持dps117-xs的vr115-xs全部二者之间的流连接)。正如后面将进一步讨论的那样,用于dps117-xs的流连接可以是基于dps117-xs的数据平面服务类型或者是基于特定的dps117-xs。用于dps117-xs的流连接的配置可以包括配置一个或多个流转发表以便包括一条或多条流转发规则。用于dps117-xs的流连接的配置可以由数据平面服务代理119实施。数据平面服务代理119可以基于来自数据平面服务管理器130的请求而配置用于dps117-xs的流连接。来自数据平面服务管理器130的请求可以由数据平面服务管理器130基于来自服务管理系统140的请求而发起(例如其中租户请求针对为第一租户运行在服务器110上的app116-xa提供特定的数据平面服务)。

通过配置v-switch114以支持用于dps117-xs的应用通信量的传送而配置用于dps117-xs的流连接可以包括配置v-switch114以包括用于相关联的app116-xa的应用通信量的路由的流信息。举例来说,通过配置v-switch114以支持用于dps117-xs的应用通信量的传送而配置用于dps117-xs的流连接可以包括更新v-switch114的流规则数据库。举例来说,通过配置v-switch114以支持用于dps117-xs的应用通信量的传送而配置用于dps117-xs的流连接可以包括配置v-switch114以把意图针对app116-xa的进入应用通信量并行地导向寄放app116-xa的vr115-xa和寄放dps117-xs的vr115-xs全部二者。举例来说,通过配置v-switch114以支持用于dps117-xs的应用通信量的传送而配置用于dps117-xs的流连接可以包括配置v-switch114以把意图针对app116-xa的进入应用通信量导向寄放dps117-xs的vr115-xs,从而使得应用通信量可以在(通过v-switch114)被提供到app116-xa之前由dps117-xs处理。举例来说,通过配置v-switch114以支持用于dps117-xs的应用通信量的传送而配置用于dps117-xs的流连接可以包括配置v-switch114以接收源自app116-xa的外出应用通信量,并且把外出应用通信量提供到寄放dps117-xs的vr115-xs(例如与外出应用通信量的进一步传播并行,或者在外出应用通信量的进一步传播之前)。应当认识到,通过配置v-switch114而配置用于dps117-xs的流连接可以包括其他类型的配置,并且所述配置可以取决于各种因素(例如由dps117-xs提供的数据平面服务的类型,app116-xa的应用类型,将对于app116-xa支持的应用通信量的类型等等,以及其各种组合)。

正如前面所提到的那样,用于dps117-xs的流连接可以是基于dps117-xs的数据平面服务类型,或者是基于特定的dps117-xs。举例来说,如果dps117-xs是用于监测针对app116-xa的进入应用通信量的入侵检测服务,则配置用于dps117-xs的流连接可以包括配置v-switch114以把意图针对app116-xa的进入应用通信量并行地提供到寄放app116-xa的vr115-xa和寄放dps117-xs的vr115-xs全部二者,从而使得app116-xa可以接收进入应用通信量,并且使得dps117-xs可以对于任何潜在的攻击监测针对app116-xa的进入应用通信量。举例来说,如果dps117-xs是用于保护app116-xa的防火墙服务,则配置用于dps117-xs的流连接可以包括配置v-switch114以把意图针对app116-xa的进入应用通信量提供到寄放dps117-xs的vr115-xs,这是在把应用通信量提供到寄放app116-xa的vr115-xa之前发生的,从而使得dps117-xs可以在进入应用通信量到达app116-xa之前为之提供防火墙服务,并且(2)配置v-switch114以把接收自dps117-xs的进入应用通信量(例如通过由dps117-xs上的防火墙服务实施的防火墙检查的进入应用通信量)提供到寄放app116-xa的vr115-xa。举例来说,如果dps117-xs是用于在提供app116-xa的多个应用实例上对针对app116-xa的应用通信量进行负荷平衡的负荷平衡服务(例如寄放app116-xa的一个应用实例的vr115-xa,并且平衡到可以寄放app116-xa的一个或多个其他应用实例的一个或多个其他vr115(为了清楚起见而省略)),则配置用于dps117-xs的流连接可以包括(1)配置v-switch114以把意图针对app116-xa的进入应用通信量提供到寄放dps117-xs的vr115-xs,这是在把应用通信量提供到寄放app116-xa的vr115-xa之前发生的,从而使得dps117-xs可以在进入应用通信量到达app116-xa之前为之提供负荷平衡服务,并且(2)配置v-switch114以把接收自dps117-xs的进入应用通信量(例如基于dps117-xs对app116-xa的应用通信量的负荷平衡的包括意图针对提供app116-xa的多个应用实例的应用通信量的对应部分的多个进入应用通信量流)提供到寄放app116-xa的多个应用实例的多个vr115(例如提供到寄放app116-xa的一个应用实例的vr115-xa,并且提供到可以寄放app116-xa的一个或多个其他应用实例的一个或多个其他vr115(同样为了清楚起见而省略))。应当认识到,前面的描述仅仅对于两种特定类型的数据平面服务是示例性的,并且对于这些或其他数据平面服务可以支持流连接的各种其他配置。

针对app116-xa部署的dps117-xs可以被修改。可以在各种条件下通过各种方式来修改针对app116-xa部署的dps117-xs。dps117-xs的配置可以被修改(例如修改能力、处理、软件指令、规则、策略等等当中的一项或多项)。用于dps117-xs的流连接可以被修改。应当认识到,针对dps117-xs的某些修改可以包括针对dps117-xs的配置和用于dps117-xs的流连接全部二者的修改。可以基于为之部署dps117-xs的app116-xa的租户的请求动态地修改针对app116-xa部署的dps117-xs。可以基于以下各项自动地动态修改针对app116-xa部署的dps117-xs:与运行app116-xa的vr115-xa相关联的条件(例如中央处理单元(cpu)使用、存储器使用等等),与app116-xa相关联的条件(例如基于app116-xa的横向扩容或横向缩容,基于app116-xa的应用通信量中的改变等等),与运行dps117-xs的vr115-xs相关联的条件(例如cpu使用、存储器使用等等),与dps117-xs相关联的条件(例如基于dps117-xs的横向扩容或横向缩容,基于与dps117-xs所提供的服务相关联的服务事件速率等等),服务器110上的条件等等,以及其各种组合。在至少一些实施例中,比如在实施dps117-xs的横向扩容或横向缩容的情况下(正如后面进一步讨论的那样),对于dps117-xs的修改可以包括对于支持dps117-xs的(多个)底层虚拟资源以及对于支持dps117-xs的(多个)底层虚拟资源的流连接的改变。应当认识到,可以通过各种其他方式、在各种其他条件下等等(以及其各种组合)修改针对app116-xa部署的dps117-xs。

dps117-xs可以被横向扩容(例如通过在服务器110上实例化附加的虚拟资源115,并且在附加的虚拟资源115上配置数据平面服务117-xs(例如作为用于数据平面服务117-xs的附加的数据平面服务实例))以及被横向缩容(例如通过终止作为用于数据平面服务117-xs的附加数据平面服务实例的正在运行数据平面服务117-xs的服务器110上的附加虚拟资源115)。举例来说,当dps117-xs由于针对app116-xa的过多应用通信量而被横向扩容时,在另一个vr(115-xs’)中实例化附加的dps实例(117-xs’),并且用于dps117-xs的现有流连接被修改以便合并用于数据平面服务横向扩容的115-xs’(例如在监测服务的情况下,流连接被修改成使得用于app116-xa的应用流对于一半的时间将被镜像到vr115-xs,并且对于另一半的时间将被镜像到vr115-xs’)。举例来说,当dps117-xs由于针对app116-xa的应用通信量的下降而被横向缩容时,运行在现有vr(115-xs’)中的现有dps实例(117-xs’)被终止,并且用于dps117-xs和dps117-xs’的现有流连接被修改以便移除用于数据平面服务横向缩容的dps115-xs’(例如在监测服务的情况下,流连接被修改成使得先前对于一半的时间被镜像到vr115-xs并且对于另一半的时间被镜像到vr115-xs’的用于app116-xa的应用流将仅被发送到vr115-xs)。应当认识到,横向扩容和横向缩容以及dps117-xs的其他类型的修改可以涉及其他类型的修改。

针对app116-xa部署的dps117-xs可以被终止。针对app116-xa部署的dps117-xs的终止可以由数据平面服务代理119实施。数据平面服务代理119可以基于来自数据平面服务管理器130的请求而终止dps117-xs。来自数据平面服务管理器130的请求可以由数据平面服务管理器130基于来自服务管理系统140的请求而发起(例如其中租户请求终止针对app116-xa的dps117-xs,或者其中租户请求终止app116-xa,从而使得对于app116-xa不再需要dps117-xs)。针对app116-xa部署的dps117-xs可以在各种条件下被终止(例如基于租户的请求,基于确定app116-xa正被终止等等,以及其各种组合)。应当认识到,dps117-xs的终止还可以触发dps117-xs在其上运行的vr115-xs的终止(其中dps117-xs在其上运行的vr115-xs的终止可以由云端编制代理118控制,这可以是在云端编制系统120的控制下进行)。

云端编制代理118被配置成提供云端编制功能,这可以包括与对于运行在服务器110上的应用支持服务器110上的数据平面服务的部署和管理有关的云端编制功能。正如前面所讨论的那样,云端编制代理118可以被配置成创建和破坏用于app116、dps117等等的vr115。正如前面所讨论的那样,云端编制代理118可以被配置成基于来自云端编制系统120的请求而创建和破坏vr115。云端编制代理118可以被配置成基于来自云端编制系统120的请求而创建和破坏vr115,其中来自云端编制系统120的请求可以与数据平面服务管理器130接收自服务管理接口系统140的请求有关,可以与监测数据平面服务管理器130接收自数据平面服务代理119的反馈有关等等,以及其各种组合。云端编制代理118可以被配置成提供各种其他云端编制功能,以便对于运行在服务器110上的app116支持服务器110上的dps117的部署和管理。

数据平面服务代理119被配置成提供数据平面服务功能,以便对于运行在服务器110上的app115支持服务器110上的dps117的部署和管理。

正如前面所讨论的那样,数据平面服务代理119可以被配置成针对app116配置dps117。举例来说,数据平面服务代理119可以被配置成配置dps117运行在vr115上。举例来说,数据平面服务代理119可以被配置成配置用于dps117的流连接(例如进行镜像从而使得应用通信量由dps117及其相关联的app116并行地处置,进行链接从而使得应用通信量由dps117及其相关联的app116串行地处置等等)。数据平面服务代理119可以被配置成针对app116配置dps117,其中所述配置时dps117的初始配置、dps117的重新配置(例如基于租户的请求,基于由数据平面服务代理119实施的与对于app116使用dps117有关的监测等等)等等。数据平面服务代理119可以被配置成提供各种其他配置功能,以便针对app116配置dps117。

数据平面服务代理119可以被配置成实施与dps117有关的监测,并且对于dps117实施基于与dps117有关的监测而确定的管理动作。

正如前面所提到的那样,数据平面服务代理119可以被配置成实施与dps117有关的监测。与dps117(作为说明是dps117-xs)有关的监测可以包括监测dps117、监测dps117运行在其上的vr115、监测app116、监测app116运行在其上的vr115等等,以及其各种组合。对于dps117的监测可以包括监测dps117的操作(例如dps117在处置大量应用通信量时的操作),与特定的数据平面服务有关的监测(例如监测分组丢失率,其中dps117是入侵检测服务或防火墙服务)等等,以及其各种组合。对于app116的监测可以包括监测app116的操作(例如app116在处置大量应用通信量时的操作),与特定的应用有关的监测等等,以及其各种组合。对于vr115的监测(例如dps117正运行在其上的vr115或者app116正运行在其上的vr115)可以包括监测vr115的cpu使用、vr115的存储器利用、vr115的i/o资源使用等等,以及其各种组合。与dps117有关的监测可以包括可以被用来管理针对app116使用dps117的各种其他类型的监测。

正如前面所提到的那样,数据平面服务代理119可以被配置成对于dps117实施基于与dps117有关的监测而确定的管理动作。管理动作可以包括对dps117进行伸缩(例如通过添加一个或多个附加的数据平面服务实例而实施横向扩容,通过移除一个或多个数据平面服务实例而实施横向缩容等等),重新配置dps117(例如重新配置dps117的操作,重新配置用于dps117的流连接等等,以及其各种组合)等等。管理动作可以由数据平面服务代理119在本地发起,而无需向数据平面服务管理器130提供反馈以进行处理(例如数据平面服务代理119具有用于基于与dps117有关的监测而确定将对于dps117实施管理动作的规则)。管理动作可以由数据平面服务代理119基于接收自数据平面服务管理器130的管理动作指令而实施(例如数据平面服务代理119向数据平面服务管理器130提供监测反馈,数据平面服务管理器130对监测反馈进行处理并且识别出将实施管理动作,数据平面服务管理器130向数据平面服务代理119通知将实施管理动作,并且数据平面服务代理119响应于来自数据平面服务管理器130的指示而实施管理动作)。应当提到的是,从数据平面服务代理119提供到数据平面服务管理器130的监测反馈可以触发数据平面服务管理器130通过云端编制代理118发起一项或多项管理动作(例如通过云端编制代理118添加或移除用于dps117的数据平面服务实例的vr115,从而对dps117进行横向扩容或横向缩容)。

数据平面服务代理119可以被配置成提供各种其他功能,以用于实施与dps117有关的监测,并且对于dps117实施基于与dps117有关的监测而确定的管理动作。

数据平面服务代理119可以被配置成提供各种其他数据平面服务功能,以便对于运行在服务器110上的app116支持服务器110上的dps117的部署和管理。

服务器110可以被配置成提供各种其他功能,以便对于运行在服务器110上的app116支持服务器110上的dps116的部署和管理。

云端编制系统120被配置成提供云端编制功能,其中可以包括与对于运行在服务器110上的app116支持服务器110上的dps117的部署和管理有关的云端编制功能。云端编制系统120可以被配置成通过向云端编制代理118发送请求而控制vr115的创建和破坏。云端编制系统120可以被配置成基于接收自数据平面服务管理器130的请求而发起vr115的创建和破坏。由云端编制系统120接收自数据平面服务管理器130的请求可以与由数据平面服务管理器130接收自服务管理接口系统140的请求有关,可以与由数据平面服务管理器130接收自数据平面服务代理119的监测反馈有关等等,以及其各种组合。云端编制系统120可以被配置成提供各种其他云端编制功能,以便对于运行在服务器110上的app116支持服务器110上的dps117的部署和管理。

数据平面服务管理器130被配置成提供数据平面服务功能,以便对于运行在服务器110上的app116支持服务器110上的dps117的部署和管理。数据平面服务管理器130可以被配置成把dps117映射到正为之运行dps117的app116,把dps117映射到dps117正运行在其上的vr115等等,以及其各种组合。数据平面服务管理器130可以被配置成通过云端编制系统120控制vr115的创建和破坏(例如用于app116和dps117的vr115的初始创建,用于app116和dps117的向外扩容或向内缩容的vr115的创建或破坏,用于app116和dps117的vr115的最终破坏等等,以及其各种组合)。数据平面服务管理器130被配置成通过数据平面服务代理119控制针对app116的dps117的配置,这可以是基于接收自服务管理接口系统140的请求,对于由数据平面服务管理器130接收自数据平面服务代理119的监测反馈的评估等等,以及其各种组合。数据平面服务管理器130被配置成提供各种其他数据平面服务功能,以便对于运行在服务器110上的app116支持服务器110上的dps117的部署和管理。

服务管理接口系统140被配置成提供与对于运行在服务器110上的app116支持服务器110上的dps117的部署和管理有关的服务管理接口功能。服务管理接口系统140可以被配置成提供面向租户的服务管理接口,从而为租户给出与其app116相关联的其dps117的各种视图。举例来说,服务管理接口系统140可以被配置成提供面向租户的服务管理接口,从而为租户给出其dps117的分布式实例的聚合视图。服务管理接口系统140可以被配置成对于租户隐藏其dps117的分布式服务实例的复杂性(例如从租户的角度来说,所部署的数据平面服务独立于正被服务的vr115的数量或相关联的应用通信量水平而被自动横向扩容和横向缩容)。服务管理接口系统140可以被配置成提供与对于运行在服务器110上的app116支持服务器110上的dps117的部署和管理有关的各种其他服务管理接口功能。

数据中心通信系统100可以被配置成提供各种其他功能,以便支持数据平面服务的部署和管理。

应当认识到,虽然为了清楚起见在图1中省略了数据中心通信系统100的联网细节,但是可以使用任何适当类型的数据中心联网以支持数据中心通信系统100的各种单元之间的通信。举例来说,服务器110可以(与其他服务器一起)被部署在具有架顶交换机的机架内,所述架顶交换机(以及部署在其他机架内的其他架顶交换机)可以可通信地连接到一个或多个聚合交换机,所述一个或多个聚合交换机可以可通信地连接到作为用于数据中心环境的网关操作的一个或多个网关设备等等。举例来说,可以使用这样的通信基础设施来支持被寄放在服务器110上的租户应用的租户通信量(包括保持在数据中心通信系统100内的租户通信量以及进入或离开数据中心通信系统100的租户通信量),可以使用这样的通信基础设施来支持数据中心通信系统100内的控制通信量等等。应当提到的是,还设想到各种其他联网安排。

应当认识到,虽然在本文中主要是关于其中在应用与针对应用提供的数据平面服务存在1:1关系的实施例中所呈现的(作为说明是与app116-xa相关联的dps117-xs),但是可以针对一个租户或多个不同租户的多个租户应用提供单项数据平面服务,可以针对一个租户的单个租户应用提供多项数据平面服务(例如对于每一项数据平面服务使用单个服务实例集合,对于不同的数据平面服务使用分开的服务实例集合,或者是其某种组合),可以针对一个租户或多个租户的多个租户应用提供多项数据平面服务等等,以及其各种组合。应当认识到,如果提供多项数据平面服务(例如针对一个租户的单个租户应用,针对一个租户或多个租户的多个租户应用等等),则可以按照并行方式、串行方式(例如提供数据平面服务的服务链)等等以及其各种组合来提供数据平面服务。

图2描绘出示例性数据中心通信系统的单元借以配置和管理虚拟资源以便支持针对应用的数据平面服务的示例性方法。正如关于图2所描绘和描述的那样,方法200的各种功能由云端编制系统(例如图1的云端编制系统120)、云端编制代理(例如图1的云端编制代理118)和虚拟资源管理器(例如图1的vrm113)实施。正如关于图2所描述的那样,方法200的各种功能可以与服务管理接口系统(例如图1的服务管理接口系统140)或数据服务管理系统(例如图1的数据服务管理系统130)的通信相结合来实施。应当认识到,虽然在本文中主要被呈现为串行地实施,但是方法200的至少一部分功能可以被同时实施,或者按照与关于图2所呈现的不同的顺序来实施。

在方块201处,方法200开始。

在方块210处,云端编制系统接收到针对实例化vr的请求。所述针对实例化vr的请求是针对实例化vr以便针对运行在服务器上的app提供dps的请求。针对实例化vr的请求可以是接收自服务管理接口系统(例如响应于app的租户的针对app提供dps的请求)。针对实例化vr的请求可以是接收自数据服务管理系统(例如基于数据服务管理系统决定实例化另一个vr以便支持针对app所提供的dps的另一个数据平面服务实例,这是基于由数据服务管理系统接收自数据服务管理代理的监测反馈)。云端编制系统可以响应于任何其他适当的触发条件而接收针对实例化vr的请求。

在方块220处,云端编制系统选择将在其上实例化vr以便针对app提供dps的服务器。云端编制系统可以选择app正运行在其上的服务器(从而使得app和针对app的dps运行在相同的服务器上),或者选择不同于app正运行在其上的服务器的服务器。云端编制系统可以被配置成优先选择app正运行在其上的服务器。云端编制系统可以被配置成响应于检测到某一条件而选择不同于app正运行在其上的服务器的服务器(例如基于云端编制系统确定app正运行在其上的服务器不具有用以支持针对app的dps的能力,因此需要把针对app的dps部署在不同的服务器上,比如相同机架内的不同服务器、邻近机架中的不同服务器等等)。云端编制系统可以被配置成识别app正运行在其上的服务器(例如用于尝试在可行时选择该服务器的目的)。可以从针对实例化虚拟资源的请求识别app正运行在其上的服务器。云端编制系统可以通过各种其他方式来选择将在其上实例化vr的服务器。

在方块230处,云端编制系统向所选择的服务器上的云端编制代理发送针对实例化vr的请求。所述针对实例化vr的请求同样是针对实例化vr以便针对app提供dps的请求。

在方块240处,服务器上的云端编制代理从云端编制系统接收针对实例化vr的请求。所述针对实例化vr的请求同样是针对实例化vr以便针对运行在服务器上的app提供dps的请求。

在方块250处,云端编制代理向所选择的服务器上的虚拟资源管理器发送针对实例化vr的请求。所述针对实例化vr的请求同样是针对实例化vr以便针对app提供dps的请求。

在方块260处,所选择的服务器上的虚拟资源管理器从云端编制代理接收针对实例化vr的请求。所述针对实例化vr的请求同样是针对实例化vr以便针对app提供dps的请求。

在方块270处,所选择的服务器上的虚拟资源管理器发起vr的实例化。所述vr可以是vm、vc、运行在寄主虚拟资源管理器上的进程等等。vr一旦被实例化可用于运行针对app的dps。可以按照关于图3所描绘和描述的那样来实施vr的配置以便运行针对app的dps。

在方块299处,方法200结束。

应当认识到,虽然主要是关于一个用于实例化vr以便针对app提供dps的实施例而呈现的,但是图2的方法还可以被配置成支持针对app提供dps的vr的重新配置、针对app提供dps的vr的终止等等,以及其各种组合。

图3描绘出示例性数据中心通信系统的单元借以配置和管理针对应用的数据平面服务的示例性方法。正如关于图3所描绘和描述的那样,方法300的各种功能由数据服务管理系统(例如图1的数据服务管理系统130)、数据服务管理代理(例如图1的数据服务管理代理119)、虚拟资源(例如图1的vr115)和虚拟交换机(例如图1的v-switch114)实施。正如关于图4所描述的那样,方法300的各种功能可以与和云端编制系统(例如图1的云端编制系统120)的通信相结合来实施。应当认识到,虽然在本文中主要被呈现为串行地实施,但是方法300的至少一部分功能可以被同时实施,或者按照与关于图3所呈现的不同的顺序来实施。

在方块301处,方法300开始。

在方块305处,数据平面服务系统接收数据平面服务配置请求。数据平面服务配置请求是针对运行在服务器上的app配置dps的请求。

在方块310处,数据平面服务系统识别用于dps的服务器。用于dps的服务器是已在其上对于dps实例化vr的服务器(可以是app正运行在其上的相同服务器,或者是不同于app正运行在其上的服务器的服务器)。

在方块315处,数据平面服务系统向所识别出的服务器上的数据平面服务代理发送数据平面服务配置请求。数据平面服务配置请求可以包括用于在vr上配置dps的数据平面服务配置信息,以及用来配置用于dps的流连接的流连接配置信息。应当提到的是,对于数据平面服务系统,方法300从方块315继续到方块350(此时数据平面服务系统开始接收dps反馈信息),方法300的其他方块则由其他单元实施(方法300从方块315继续到方块320)。

在方块320处,所识别出的服务器上的数据平面服务代理接收来自数据平面服务系统的数据平面服务配置请求。正如前面所提到的那样,数据平面服务配置请求可以包括用于在vr上配置dps的数据平面服务配置信息,以及用来配置用于dps的流连接的流连接配置信息。

在方块325处,所识别出的服务器上的数据平面服务代理在vr上发起dps的配置。数据平面服务代理配置vr以支持dps。数据平面服务代理可以基于在数据平面服务请求中接收到的数据平面服务配置信息来配置vr以支持dps。数据平面服务代理可以配置vr以支持dps,这是通过向vr提供数据平面服务功能以供vr执行来提供dps。数据平面服务代理可以配置vr以支持dps,这是通过向vr提供数据平面服务信息(例如能力、处理、软件指令、规则、策略等等)以供vr使用来提供dps。配置vr以支持针对app的dps由方块325-a表示(这被表明为由vr实施)。

在方块330处,所识别出的服务器上的数据平面服务代理在虚拟交换机上发起用于dps的流连接的配置。数据平面服务代理配置虚拟交换机以支持用于dps的流连接(以便例如把进入应用通信量并行地提供到app和dps,在把进入应用通信量提供到app之前把进入应用通信量提供到dps,在进一步传播外出应用通信量之前把源自app的外出应用通信量提供到dps等等,以及其各种组合)。数据平面服务代理可以基于在数据平面服务请求中接收到的流连接配置信息而配置虚拟交换机以支持用于数据平面服务的流连接。数据平面服务代理可以配置虚拟交换机以支持用于dps的流连接,这是通过把流连接配置信息(例如一条或多条流转发规则)提供到虚拟交换机,以供虚拟交换机使用来按照支持针对app使用dps的方式转发应用的应用通信量。流连接配置信息可以包括流连接信息,所述流连接信息可以由虚拟交换机存储以用来支持用于dps的流连接。配置虚拟交换机以支持用于dps的流连接由方块330-a表示(这被表明为由虚拟交换机实施)。

在方块335处,所识别出的服务器上的数据平面服务代理实施与dps有关的监测。由数据平面服务代理实施的与dps有关的监测可以包括对于dps的监测、对于dps正运行在其上的vr的监测、对于为之提供dps的app的监测、对于app正运行在其上的vr的监测等等以及其各种组合。由数据平面服务代理实施的与dps有关的监测可以包括数据平面服务代理与和针对app的dps的操作相关联的单元(例如dps正运行在其上的vr,app正运行在其上的vr,支持用于dps的流连接等等,以及其各种组合)之间的控制信令,为了清楚起见这在方法300中被省略。由数据平面服务代理实施的与dps有关的监测可以产生表明与针对app的dps的操作相关联的各种条件的信息(例如与dps相关联的条件,与dps正运行在其上的vr相关联的条件,与为之提供dps的app相关联的条件,与app正运行在其上的vr相关联的条件等等,以及其各种组合)。举例来说,与dps有关的监测可以包括监测vr的cpu使用水平(例如寄放dps的vr、寄放app的vr等等),监测应用通信量水平(例如dps处、app处等等),监测与dps的操作相关联的分组处置事件(例如分组丢失事件、分组变换事件等等)等等,以及其各种组合。应当认识到,可以实施各种其他类型的监测。

在方块340处,所识别出的服务器上的数据平面服务代理生成用于dps的数据平面服务反馈信息。所识别出的服务器上的数据平面服务代理可以基于与数据平面服务有关的监测而生成用于dps的数据平面服务反馈信息。数据平面服务反馈信息可以包括在与数据平面服务有关的监测期间所收集的信息。数据平面服务反馈信息可以包括表明与针对app的dps的操作相关联的各种条件的信息(例如dps超负荷或负荷不足,app超负荷或负荷不足,寄放dps的vr超负荷或负荷不足,寄放app的vr超负荷或负荷不足,dps的操作存在问题等等,以及其各种组合)。应当认识到,可以提供各种其他类型的数据平面服务反馈信息。

在方块345处,所识别出的服务器上的数据平面服务代理把用于dps的数据平面服务反馈信息发送到数据平面服务系统。

在方块350处,数据平面服务系统从所识别出的服务器上的数据平面服务代理接收用于dps的数据平面服务反馈信息。

在方块355处,数据平面服务系统处理用于dps的数据平面服务反馈信息,以便决定是否要发起正针对app提供的dps的修改。处理用于dps的数据平面服务反馈信息以便决定是否要发起正针对app提供的dps的修改可以包括把所接收到的操作参数的数值与相关联的阈值(例如cpu使用阈值、通信量水平阈值、分组丢失事件阈值等等)进行比较,识别表明正针对应用提供的dps的修改是或者可能是必要或合乎期望的特定事件等等,以及其各种组合。

在方块360处,数据平面服务系统发起正针对app提供的dps的修改。数据平面服务系统可以发起正针对app提供的dps的修改,这是基于处理用于dps的数据平面服务反馈信息以便决定是否要发起正针对app提供的dps的修改。

正针对app提供的dps的修改可以包括正针对app提供的dps的重新配置。

正针对app提供的dps的重新配置可以包括运行在vr上的dps的重新配置。这可以包括dps的可执行指令、dps的规则、dps的策略等等的修改以及其各种组合。这可以包括从数据平面服务系统向数据平面服务代理进行消息传送,以使得数据平面服务代理重新配置运行在vr上的dps(例如使用类似于在方块320、325和325-a中所讨论的处理)。

正针对app提供的dps的重新配置可以包括用于运行在vr上的dps的流连接的重新配置。这可以包括用于dps的虚拟交换机上的流转发规则的修改。这可以包括从数据平面服务系统向数据平面服务代理进行消息传送,以使得数据平面服务代理重新配置虚拟交换机(例如使用类似于在方块320、330和330-a中所讨论的处理)。

正针对app提供的dps的修改可以包括正针对app提供的dps的伸缩。

正针对app提供的dps的伸缩可以包括dps的横向扩容(例如通过添加一个或多个附加的vr,并且在一个或多个附加的vr上配置dps的一个或多个附加的数据平面服务实例)。这可以包括:(1)从数据平面服务系统向云端编制系统进行消息传送,以使得云端编制系统与云端编制代理进行通信,以便请求一个或多个附加的vr的实例化;以及(2)从数据平面服务系统向数据平面服务代理进行消息传送,以便配置一个或多个附加的vr以运行dps的一个或多个附加的服务实例(例如使用类似于在方块320、325和330中所讨论的处理)。

正针对app提供的dps的伸缩可以包括dps的横向缩容(例如通过终止一个或多个现有vr上的dps的一个或多个数据平面服务实例,并且终止先前运行对于dps终止的一个或多个数据平面服务实例的一个或多个现有vr)。

正针对app提供的dps的修改可以包括与针对app的dps的配置或操作有关的其他修改。

在方块399处,方法300结束。

应当认识到,虽然图3的方法300主要是关于其中决定将对于dps作出修改的一个实施例所呈现的,但是可以决定对于dps将不作出修改(在这种情况下,数据平面服务代理可以继续监测dps并且提供用于dps的数据平面服务反馈信息,并且数据平面服务系统可以继续接收和处理用于dps的数据平面服务反馈信息,以便决定是否将对于dps作出修改)。

应当认识到,虽然主要是关于一个用于针对app配置dps的实施例所呈现的,但是图3的方法300还可以被配置成支持针对app的dps的重新配置、针对app的dps的终止等等以及其各种组合。

应当认识到,虽然图2的方法200和图3的方法300主要被描绘和描述成分开的处理,但是可以通过各种方式组合图2的方法200和图3的方法300的各个部分,以便提供由所述系统的各种单元使用来支持针对app的dps的各种功能集合(例如组合各项功能以提供由数据平面服务系统使用的一个功能集合,组合各项功能以提供由云端编制系统使用的一个功能集合,组合各项功能以提供由云端编制代理使用的一个功能集合,组合各项功能以提供由数据平面服务代理使用的一个功能集合等等)。

图4描绘出示例性数据中心通信系统的单元借以针对应用提供数据平面服务的示例性方法。应当认识到,图4的方法400可以由数据服务管理系统(例如图1的数据服务管理系统130)、寄放应用及其相关联的数据平面服务的服务器(例如图1的服务器110)等等来实施。应当认识到,虽然在本文中主要被呈现为串行地实施,但是方法400的至少一部分功能可以被同时实施,或者按照与关于图4所呈现的不同的顺序来实施。

在方块401处,方法400开始。

在方块410处,发起vr的实例化。出于运行针对app的dps的目的实例化vr。在其中方法400由数据服务管理系统实施的实施例中,vr的实例化可以通过由数据服务管理系统向云端编制系统发送虚拟资源实例化请求而实施,云端编制系统被配置成在数据中心通信系统内控制vr的实例化。在其中方法400由服务器实施的实施例中,方块410可以由服务器上的云端编制代理实施,并且vr的实例化可以通过由云端编制代理向服务器上的虚拟资源管理器发送虚拟资源实例化请求而发起,所述虚拟资源管理器被配置成控制服务器上的vr的实例化。

在方块420处,发起针对app的dps的配置。在出于运行针对app的dps的目的而实例化的vr上配置dps。在其中方法400由数据服务管理系统实施的实施例中,dps的配置可以通过由数据服务管理系统向正运行在服务器上的数据平面服务代理发送数据平面服务配置请求而发起。在其中方法400由服务器实施的实施例中,方块420可以由服务器上的数据平面服务代理实施,并且针对app的dps的配置可以通过由数据平面服务代理向dps正被部署在其上的vr发送数据平面服务配置请求而发起。

在方块430处,发起用于dps的流连接的配置。在支持dps的通信的虚拟交换机上配置用于dps的流连接(并且可选的是在dps正运行在其上的vr上和/或在app正运行在其上的vr上配置)。在其中方法400由数据服务管理系统实施的实施例中,用于dps的流连接的配置可以通过由数据服务管理系统向正运行在服务器上的数据平面服务代理发送流连接配置请求而发起。在其中方法400由服务器实施的实施例中,方块430可以由服务器上的数据平面服务代理实施,并且用于dps的流连接的配置可以通过由数据平面服务代理向正支持dps的通信的虚拟交换机发送流连接配置请求而发起。

在方块499处,方法400结束。

应当认识到,虽然主要是关于其中dps的配置和用于dps的流连接的配置被分开提供的实施例所呈现的,但是在至少一些实施例中,dps的配置和用于dps的流连接的配置可以被一起提供(例如在其中方法400由数据服务管理系统实施的实施例中,dps和用于dps的流连接的配置可以通过由数据服务管理系统向正运行在服务器上的数据平面服务代理发送配置请求而发起,并且数据平面服务代理随后可以发起dps的配置和用于dps的流连接的配置)。

图5描绘出示例性数据中心通信系统的单元借以传送针对应用的应用通信量并且同时还利用针对应用的数据平面服务的示例性方法。应当认识到,图5的方法500可以由数据平面服务被部署在其上的服务器的虚拟交换机实施(例如在图1的服务器110的v-switch114上)。应当认识到,虽然在本文中主要被呈现为串行地实施,但是方法500的至少一部分功能可以被同时实施,或者按照与关于图5所呈现的不同的顺序来实施。

在方块501处,方法500开始。

在方块510处,接收与app相关联的分组。所述分组可以是意图用于递送到app的进入分组,或者是源自app的意图用于递送到远程单元(其可以处于数据中心之内或者处于数据中心之外)的外出分组。

在方块520处,与app相关联的分组被朝向与app相关联的dps传播。与app相关联的分组可以基于与dps相关联的流连接信息而被导向dps。对于意图用于递送到app的进入分组,与app相关联的分组可以被并行地导向app并且导向与app相关联的dps,可以被导向dps而不是被导向app,从而使得可以在把进入分组递送到app之前由dps处理进入分组等等。对于源自app的意图用于递送到远程单元的外出分组,与app相关联的分组可以在朝向远程单元进一步传播之前被导向与app相关联的dps,从而使得可以在朝向远程单元进一步传播之前由dps处理外出分组。

在方块599处,方法500结束。

正如之前所讨论的那样,可以使用nic卸载能力来支持关于图1所描绘和描述的数据平面服务支持机制。例如再次参照图1,应当提到的是,在至少一些实施例中,可以基于配置v-switch114以支持nic卸载而支持关于图1所描绘和描述的数据平面服务支持机制。正如前面所表明的那样,使用nic卸载可以提供针对数据平面服务支持机制的改进的支持。举例来说,nic卸载可以被用来创建大分组并且使用虚拟交换机(作为说明,使用图1的v-switch114)将所述大分组作为整体交换,从而提升虚拟交换机的性能(而无需使用额外的处理核心),并且从而加速被用来提供针对应用的数据平面服务的分组处理。随着末端服务器互连需求持续增加并且从而使得针对基于边缘的数据平面服务的支持更加困难,在此情境中使用nic卸载的能力变得更加重要。举例来说,随着对于虚拟化工作负荷的高度服务器多路复用并且随着针对租户应用中的网络i/o的需求不断增加,服务器互联持续从10gbe演进到40gbe和100gbe,并且最终朝向和超出400gbe演进,因此在商品末端服务器上变得越来越难以在线路速率下操作(并且因此将越来越难以在线路速率下在商品末端服务器上支持各种数据平面服务)。在许多情况下,为了应对各种高速联网环境,已经引入了各种类型的卸载以作为针对联网协议栈的一种性能优化,这在提升联网应用的可伸缩性方面仍然是有用的。举例来说,在进入方向上,其中将多个进入分组聚合形成一个大分组的各种接收卸载技术(例如大量接收卸载(lro)、tcp接收卸载(tro)、通用接收卸载(gro)等等)可以被用于通过减少cpu开销而增加网络连接的吞吐量(这是因为大分组的创建导致所需处理的分组更少)。类似地,例如在外出方向上,其中将传入大分组分割成更小分组的各种分割卸载技术(例如大量分割卸载(lso)、tcp分割卸载(tso)、通用分割卸载(gso)等等)可以被用于通过减少cpu开销而增加网络连接的吞吐量(这是因为在分割之前使用大分组导致所需处理的分组更少)。

已经通过各种方式提供了使用卸载以作为针对联网协议栈的一种性能优化。举例来说,os已经引入了“卸载”的概念以作为针对联网协议栈的性能优化。但是os驱动的卸载仍然会对寄主内核cpu造成负担,并且可能会随着nic速度和工作负荷而增长。作为对照,比如nic卸载之类的硬件卸载提供了许多益处而没有os驱动的卸载的缺点。因此,随着nic硬件越来越强力和精密,对于nic卸载重新有了兴趣(例如在用户层级联网、存储联网以及甚至是一般操作系统的领域内),因此许多nic卡现在支持特定的卸载特征。举例来说,10gbe和40gbe卡通常支持各种硬件卸载特征,比如接收卸载能力(例如lro、tro、gro等等)、分割卸载能力(例如lso、tso、gso等等)、校验和卸载、隧道卸载等等。因此,在至少一些实施例中,利用现今的nic硬件的卸载能力的nic卸载可以被用来缓解不断提高的nic速度与末端服务器的计算能力之间的差距。正如后面将进一步讨论的那样,nic卸载在各种虚拟化环境中可能是特别有用的(例如在图1的数据中心通信网络100之类的数据中心环境中)。举例来说,在基于边缘的数据平面服务的情境内,如果智能网络通信量处理被推送到边缘(例如被推送到本文中关于图1所讨论的末端寄主上),则nic卸载可以被用来支持大分组(从而例如消除1500字节最大传输单位(mtu)的物理约束),而不依赖于寄主内核,从而使得大分组的流可用于数据平面服务,因此nic卸载可以被用来加速基于边缘的nic卸载(这是因为正如前面与所能支持的各种类型的卸载相结合地讨论的那样,在传统的中断驱动的分组处理中,每秒分组数目被直接翻译成cpu周期)。例如在sdn情境内,更低的每秒分组数目也意味着交换过程中的更少cpu周期以及其他网络功能中的更少成帧开销,因此通过利用nic卸载来支持大分组,可以在没有代价的情况下(无需消耗寄主cpu)实现大分组的益处。例如在nfv环境内,由于多项网络功能可以被链接在一起并且可能被隧道传送经过跨越不同末端服务器的多个物理nic,因此nic卸载的角色可能变得更加突出。但是正如后面将进一步讨论的那样,虽然在各种类型的虚拟化环境中使用nic卸载有各种优点,但是在虚拟化环境中还没有成功地利用nic卸载,这至少部分地是由于在虚拟化环境内操作的虚拟交换机中缺少针对nic卸载的支持。

正如前面所提到的那样,虽然在各种类型的虚拟化环境中使用nic卸载有各种优点,但是在虚拟化环境中还没有成功地利用nic卸载,这至少部分地是由于在虚拟化环境内操作的虚拟交换机中缺少针对nic卸载的支持。一般来说,虚拟交换机的联网协议栈未被配置成支持大分组的接收、转发或交换;相反,虚拟交换机的联网协议栈通常仅被配置成支持网络分组(例如以太网mtu之类的mtu或其他类型的网络分组)的接收、转发或交换。这可能至少部分地是由于不存在针对vnic或pnic中的各种卸载能力的标准,因此由不同公司的nic提供的不同卸载实现方式可能导致虚拟交换内的不兼容。更具体来说,由于虚拟交换机的nic预期(例如虚拟交换机所预期的分组元数据)与实际由nic生成并且被提供到虚拟交换机的大分组(例如实际由虚拟交换机接收到的分组元数据)之间的不匹配,虚拟交换机可能无法对于nic卸载支持大分组。举例来说,当例如linux之类的管理程序内核运行互连虚拟nic(vnic)和物理nic(pnic)的虚拟交换机时,由于卸载的缘故,大分组可能会离开正常的分组流。换句话说,虽然nic大分组卸载可以被用于寄主内核网络协议栈上的大分组生成和消费,但是其通常无法被用于虚拟交换机处的接收、转发或交换。其结果是,虚拟交换或桥接解决方案通常不使用nic卸载,从而使得该硬件能力未得到利用。

正如前面所提到的那样,再次参照图1,可以基于配置v-switch114以支持nic卸载而支持关于图1所描绘和描述的数据平面服务支持机制的至少一些实施例。数据中心通信系统100可以被配置成支持数据平面服务的水平伸缩,其中数据平面服务与租户应用一起被原地部署在边缘处,同时完全利用可用的nic卸载。数据中心通信系统100可以被配置成允许数据中心运营商在末端寄主上代表租户在其应用旁边或者相对靠近其应用来部署和管理nic加速的数据平面服务。这些数据平面服务可以被动态地按需部署,并且可以被联系到特定的租户应用以作为其部署配置的一部分,从而往往会为租户提供更加丰富的软件定义、软件驱动和nic加速的数据平面服务,从而超出通常在软件/硬件交换机上可用的简单的第2/3层访问控制。数据中心通信系统100可以被配置成把基于sdn的架构与集中式云端编制相组合,其中前者提供数据平面服务组成中的灵活性,后者则把横向扩容属性带给数据平面服务部署,同时通过利用nic卸载的高性能软件交换还实现了快速数据路径性能。数据中心通信系统100可以被配置成支持以集中的策略驱动方式来管理(例如部署、移除、伸缩和链接)各项单独的数据平面服务,同时还确保针对租户应用所部署的数据平面服务能够跟上租户应用的数据平面通信量速率。数据中心通信系统100可以被配置成支持数据平面服务对大分组的线路速率处理的性能要求,这是通过配置v-switch114以利用nic卸载,即通过配置v-switch114以使用nic卸载交换大分组。关于配置v-switch114以利用nic卸载应当提到的是,虽然nic卸载最初是被设计用于由本地网络协议栈消费和生成的分组并且已知与路由和转发是不兼容的,但是通过把分组分割、聚合、校验和计算和隧道处理从内核适当地卸载到nic硬件,v-switch114能够为访客应用及其位于同一处的数据平面服务给出更低的每分组开销,同时减少软件交换中的内核开销。因此,在至少一些实施例中,虚拟交换机(例如v-switch114)可以被配置成支持nic卸载,从而使得nic卸载可以被用来支持和改进数据平面服务在数据中心边缘处的部署。

应当提到的是,首先将在一种特定类型的虚拟交换机的情境内描述修改虚拟交换机以支持nic卸载的实施例(也就是说其中使用linux操作系统(os)将v-switch114实施成openvswitch(ovs)),并且随后进行更加一般性的描述(也就是说其中v-switch114可以被视为更加一般性的v-switch,比如独立于任何特定的os实现方式而实施的基于ovs的v-switch或者任何其他适当类型的v-switch)。

在至少一些实施例中,被实施成ovs的虚拟交换机可以被配置成支持nic卸载(例如从而使得nic卸载可以被用来支持和改进数据平面服务在数据中心边缘处的部署)。在至少一些实施例中,ovs的内核数据路径可以被扩展,从而使得各种分组处置功能(例如分组分割、聚合、校验和计算和隧道(例如vxlan))可以被完全卸载到nic硬件,同时在例如服务器110之类的末端寄主上接收、转发和传送分组。

在至少一些实施例中,使用linuxos被实施成ovs的虚拟交换机可以被配置成支持nic卸载(例如从而使得nic卸载可以被用来支持和改进数据平面服务在数据中心边缘处的部署)。在至少一些实施例中,ovs的基于linux的内核数据路径可以被扩展,从而使得各种分组处置功能(例如分组分割、聚合、校验和计算和隧道(例如vxlan))可以被完全卸载到nic硬件,同时在例如服务器110之类的末端寄主上接收、转发和传送分组。linuxos使用套接字缓冲器(skb)数据结构来支持分组的传输,其中用于传输分组的skb数据结构包括分组以及与分组相关联的分组元数据。

配置使用linuxos被实施成ovs的虚拟交换机以支持nic卸载可以包括识别nic卸载可能在该处潜在地导致问题的ovs代码路径中的位置。ovs_vport_receive(skb)例程使用linux内核的skb数据结构接收来自nic(例如vnic或pnic)的分组(例如使用linux内核的对应的skb数据结构来传输每一个分组)。ovs_vport_receive(skb)例程把包括分组的skb数据结构分别传递到ovs_dp_process_received_packet(skb)例程。在通过虚拟交换机把分组递送到末端寄主的情况下(也就是说其中末端寄主是分组的消费者),包括分组的skb数据结构被递送到末端寄主,并且ovs代码路径的链条在没有问题的情况下完成。但是在通过虚拟交换机来交换分组的情况下,包括分组的skb数据结构经由ovs_vport_send(skb)例程被转发到另一个虚拟端口。所述端口上的实际传送操作预期正在传输分组的skb数据结构的分组元数据(例如大分组类型、分割尺寸和校验和之类的字段)具有用于大分组的特定格式。但是当前针对使用skb数据结构的大分组的传输没有任何被接受的格式,因此虚拟交换机从nic处接收到的skb数据结构的格式可能不同于虚拟交换机所支持(并且从而是所预期)的skb数据结构的格式。表1说明了skb数据结构的不同分组元数据格式,其中说明了虚拟交换机所预期的skb数据结构的预期分组元数据格式,以及由提供nic卸载实现方式的不同公司所使用的skb数据结构的实际分组元数据格式。

表1

其结果是,由于虚拟交换机所预期的skb数据结构的分组元数据格式与不同的nic对于大分组所填充的skb数据结构的分组元数据格式之间的不兼容,ovs_vport_send(skb)例程可能会丢弃传输大分组的skb数据结构并且从而丢弃大分组,从而使其无法被虚拟交换机成功地交换。因此,配置使用linuxos被实施成ovs的虚拟交换机以支持nic卸载可以包括识别出nic卸载可能会在虚拟交换机的ovs代码路径中的ovs_vport_receive(skb)例程与ovs_vport_send(skb)例程之间导致问题,并且配置虚拟交换机以防止虚拟交换机的ovs代码路径中的ovs_vport_receive(skb)例程与ovs_vport_send(skb)例程之间的此类问题。

配置使用linuxos被实施成ovs的虚拟交换机以支持nic卸载可以包括基于识别出nic卸载(例如lro)可能在该处导致问题的ovs代码路径中的位置而修改虚拟交换机的ovs代码路径。正如前面所提到的那样,由于虚拟交换机所预期的skb数据结构的分组元数据格式与不同的nic对于大分组所使用的skb数据结构的分组元数据格式之间的不兼容,ovs_vport_send(skb)例程可能会丢弃传输大分组的skb数据结构并且从而丢弃大分组,从而使其无法被虚拟交换机成功地交换。因此,在至少一些实施例中,为了解决这一问题,在虚拟交换机的ovs代码路径中的ovs_vport_receive(skb)例程与ovs_vport_send(skb)例程之间引入内联网闸(inlinegatekeeper)。在至少一些实施例中,为了解决这一问题,在ovs_dp_process_received_packet(skb)例程与ovs_vport_send(skb)例程之间引入内联网闸。内联网闸可以被配置成对传输大分组的skb数据结构的分组元数据进行消毒(sanitize),从而使得传输大分组的skb数据结构可以被成功地转发到目的地nic,从而允许大分组进入和大分组外出软件交换。内联网闸可以利用可忽略的开销保持使用linuxos被实施成ovs的虚拟交换机内的正常分组流,同时保持使用linuxos被实施成ovs的虚拟交换机对于nic硬件是不可知的。应当提到的是,内联网闸可以保持对于未来的vnic/pnic特征是可扩展的。在图6中描绘出用以支持nic卸载的使用linuxos被实施成ovs的虚拟交换机的示例性配置。

图6描绘出说明用以支持nic卸载的基于openvswitch的虚拟交换机的示例性配置的示例性数据中心通信环境。

正如图6中所描绘的那样,示例性数据中心通信环境600包括物理nic(pnic)610,包括虚拟交换机(v-switch)621的虚拟资源管理器vrm620,物理nic(pnic)630,以及虚拟资源(vr)640。

示例性数据中心通信环境600被配置成对于vr640支持大分组(例如大于mtu,比如mtu的串联)而不是更小的网络分组(例如mtu)的流。更具体来说,示例性数据中心通信环境600被配置成使用接收卸载(例如lro、tro、gro等等)支持去到vr640的大分组流,并且被配置成使用传送(或分割)卸载(例如lso、tso、gso等等)支持来自vr640的大分组流。一般来说,不管vr640是提供租户应用还是提供针对租户应用的数据平面服务,出于性能原因,与处理更小的网络分组相比,处理大分组通常是优选的。应当提到的是,鉴于大分组包括多个更小分组的串联,因此在本文中可以使用术语“串联分组”以替代术语“大分组”。

举例来说,对于去到vr640的进入分组流,pnic610接收网络分组(例如mtu)并且从网络分组生成(例如大于mtu的)大分组(这例如是通过串联多个网络分组以创建对应的大分组),pnic610把大分组提供到v-switch621,v-switch621接收来自pnic610的大分组并且把大分组转发到vnic630(正如后面将进一步讨论的那样,v-switch621被配置成支持大分组的接收、交换和转发),pnic630接收来自v-switch621的大分组并且向vr640传递大分组以供处理,vr640接收并且消费大分组。

类似地,例如对于来自vr640的外出分组流,vr640作为大分组(例如大约mtu)的来源并且把大分组提供到pnic630,pnic630接收大分组并且将其传递到v-switch621,v-switch621接收来自pnic630的大分组并且将大分组转发到pnic610(正如后面将进一步讨论的那样,v-switch621被配置成支持大分组的接收、交换和转发),pnic610接收来自v-switch621的大分组并且从大分组中提取出网络分组(例如mtu)以便恢复网络分组,并且pnic610转发网络分组(例如向网络转发以供进一步传播)。skb数据结构的分组元数据包括大分组类型字段(具有ipv4或ipv6的预期数值)、分割尺寸字段(具有作为字节数的预期数值)以及校验和字段(具有“部分”的预期数值)。

正如图6中所描绘的那样,网络分组和大分组的安排使得使用一个大分组传输多个网络分组。举例来说,可以通过把多个网络分组的有效载荷串联到大分组的有效载荷字段中而把多个网络分组组合成一个大分组,并且多个网络分组所共有的报头字段(例如tcp报头、ip报头和以太网报头)被用作大分组的共同报头。类似地,例如可以从一个大分组中提取出多个网络分组,这是通过从大分组中取出大分组报头(例如tcp报头、ip报头和以太网报头)以便与多个网络分组当中的每一个相关联,从大分组的有效载荷字段中提取出网络分组有效载荷,并且把大分组的大分组报头前置(prepend)到网络分组有效载荷,从而恢复多个网络分组。

正如图6中进一步描绘的那样,v-switch621对于大分组的传输利用特殊的数据结构。在v-switch621的基于linux的实现方式中,所述特殊数据结构例如是skb数据结构。v-switch621的操作系统在skb数据结构内传输大分组。skb数据结构包括大分组(具有大分组报头和大分组有效载荷)以及与大分组相关联的分组元数据。用于skb数据结构的分组元数据可以具有包括一个或多个skb报头字段的skb报头以及包括一个或多个skb报尾字段的skb报尾的形式。正如前面所表明的那样,skb数据结构的分组元数据包括大分组类型字段(具有ipv4或ipv6的预期数值)、分割尺寸字段(具有作为字节数的预期数值)以及校验和字段(具有“部分”的预期数值)。应当提到的是,在nic卸载的情况下,大分组在skb数据结构内的封装由nic(例如用于进入分组的pnic610和用于外出分组的pnic630)在把大分组传递到v-switch621之前实施,并且在nic所使用的skb分组元数据格式与v-switch621所预期的skb分组元数据格式之间可能存在不匹配。大分组在skb数据结构内的封装可以由nic驱动程序或nic实施。在至少一些实施例中,正如后面将进一步讨论的那样,v-switch621可以被配置成校正这一不匹配,以便确保大分组可以由v-switch621处置。

正如前面所讨论的那样,特定nic所使用的skb分组元数据格式可能与v-switch621所预期的(并且从而是v-switch621对于支持使用nic卸载进行大分组的交换所需要的)skb分组元数据格式不匹配。v-switch621所预期的skb分组元数据格式包括大分组类型字段(具有ipv4或ipv6的预期数值)、分割尺寸字段(具有作为字节数的预期数值)以及校验和字段(具有“部分”的预期数值)。但是正如前面在表1中所表明并且在图6中所示出的那样,由不同公司提供的nic所填充的实际skb分组元数据格式可能不符合v-switch621所预期的skb分组元数据格式。因此,v-switch621被配置成包括分组处置器(packethandler)622,其被配置成确保在v-switch621处接收到的传输大分组的skb数据结构的skb分组元数据符合v-switch621所预期的skb分组元数据格式。

分组处置器622被配置成确保在v-switch621处接收到的传输大分组的skb数据结构的skb分组元数据符合v-switch621所预期的skb分组元数据格式,这是通过修改ovs数据路径以包括网闸623。正如先前所讨论的那样,分组处置器622的网闸623可以被应用在ovs数据路径内的任何适当的位置处(例如ovs_dp_process_received_packet(skb)例程与ovs_vport_send(skb)例程之间,正如图6中所示出的那样,或者被应用在ovs数据路径内的任何其他适当的位置处)。网闸623可以被配置成对传输大分组的skb数据结构的skb分组元数据进行消毒,从而使得包括大分组的skb数据结构可以被成功地转发到目的地pnic,从而实现大分组进入和大分组外出软件交换。网闸623可以被配置成修改skb数据结构,从而使得skb分组元数据符合v-switch621所预期的skb分组元数据格式。网闸623可以被配置成修改skb数据结构,从而使得skb分组元数据符合v-switch621所预期的skb分组元数据格式,这是通过修改由网闸623接收到的skb数据结构的现有skb分组元数据,以便符合v-switch621所预期的skb分组元数据格式(例如改变skb分组元数据的其中一个或多个字段的一个或多个数值)。

举例来说,对于接收自由表1中的公司1提供的nic的大分组,网闸623可以改变skb数据结构的现有skb分组元数据,以便符合v-switch621所预期的skb分组元数据格式,这是通过把大分组类型字段的数值从“0”改变到“ipv4”或“ipv6”,通过把分割尺寸字段的数值从“0”改变到字节数,并且通过把校验和字段的数值从“不需要”改变到“部分”。

举例来说,对于接收自由表1中的公司2提供的nic的大分组,网闸623可以改变skb数据结构的现有skb分组元数据,以便符合v-switch621所预期的skb分组元数据格式,这是通过把大分组类型字段的数值从“1”改变到“ipv4”或“ipv6”,通过把分割尺寸字段的数值从“1448”改变到字节数,并且通过把校验和字段的数值从“不需要”改变到“部分”。

举例来说,对于接收自由表1中的公司2提供的nic的大分组,网闸623可以改变skb数据结构的现有skb分组元数据,以便符合v-switch621所预期的skb分组元数据格式,这是通过把大分组类型字段的数值从“0”改变到“ipv4”或“ipv6”,通过把分割尺寸字段的数值从“1448”改变到字节数,并且通过把校验和字段的数值从“不需要”改变到“部分”。

应当认识到,虽然前面的实施例主要是在特定类型的v-switch(也就是使用基于linux的os所实施的基于ovs的v-switch,因此使用基于linux的skb数据结构作为os分组数据结构)的情境内并且对于特定类型的nic卸载(例如由支持特定的skb分组元数据格式的公司所提供的pnic)所呈现的,但是对于各种其他类型的v-switch和nic卸载实现方式可以支持配置v-switch以便支持大分组的接收、交换和转发。举例来说,v-switch621可以被实施成具有相关联的分组数据结构(例如mbuf数据结构)的基于unix的os(例如基于berkeleysoftwaredistribution(bsd)的os)。举例来说,v-switch621可以被实施成具有相关联的分组数据结构(例如net_buffer_list数据结构)的基于microsoftwindows的os。v-switch621可以使用各种其他类型的os来实施,并且从而可以使用各种其他类型的os分组数据结构(和相关联的os分组元数据格式)以用于通过v-switch621传输各种类型的分组(例如大分组或其他类型的分组)。关于图7呈现出用于针对虚拟交换机支持nic卸载的更加一般的处理的一个示例性实施例。

图7描绘出由虚拟交换机使用来支持nic卸载的示例性方法。应当认识到,通过参照图6的示例性数据中心通信环境可以进一步理解图7的方法700。应当认识到,虽然在本文中主要被呈现为串行地实施,但是方法700的至少一部分功能可以被同时实施,或者按照与关于图7所呈现的不同的顺序来实施。

在方块701处,方法700开始。

在方块710处,虚拟交换机接收传输大分组的数据结构。所述数据结构包括大分组以及与大分组相关联的分组元数据。虚拟交换机可以从被配置成支持nic卸载的网络接口卡(例如pnic或vnic)接收传输大分组的数据结构。

正如前面所提到的那样,所述数据结构包括大分组。大分组可以大于网络分组(例如mtu或其他适当类型的网络分组)。大分组可以包括多个网络分组(例如mtu或其他适当类型的网络分组)的串联,在这种情况下,大分组可以包括大分组有效载荷和大分组报头,其中大分组有效载荷包括多个网络分组的多个网络分组有效载荷,大分组报头包括对于被包括在大分组中的多个网络分组所共有的报头字段的集合(例如共同的数据链路层、ip和传输层协议报头)。

正如前面所提到的那样,所述数据结构包括与大分组相关联的分组元数据。所述数据结构的分组元数据可以包括一个或多个分组元数据字段。所述数据结构的分组元数据具有由从该处接收到数据结构的单元所提供的第一分组元数据格式(例如来自可以设定传输大分组的数据结构的分组元数据的格式的nic或其他适当的单元)。

在方块720处,虚拟交换机处理所述数据结构,从而提供包括串联分组和相关联的新的分组元数据的修改后的数据结构。新的分组元数据具有不同于第一分组元数据格式的第二分组元数据格式。第二分组元数据格式是虚拟交换机所预期的分组元数据格式。第一分组元数据格式与第二分组元数据格式之间的差异可以是在以下方面:所包括的其中一个或多个字段,包括在其中一个或多个字段中的一个或多个数值等等,以及其各种组合。虚拟交换机可以处理所述数据结构,从而提供修改后的数据结构,这是通过修改所接收到的数据结构的分组元数据以便符合虚拟交换机所预期的第二分组元数据格式(例如修改所接收到的数据结构的分组元数据的一个或多个字段的一个或多个数值),从而提供包括符合虚拟交换机所预期的第二分组元数据格式的新的分组元数据的修改后的数据结构。

在方块730处,虚拟交换机转发传输大分组的修改后的数据结构。虚拟交换机可以向网络接口卡(例如pnic或vnic)转发传输大分组的修改后的数据结构,所述网络接口卡可以被配置成处置传输大分组的数据结构(例如转发传输大分组的修改后的数据结构,从大分组恢复多个网络分组等等)。

在方块799处,方法700结束。

应当认识到,正如前文中所讨论的那样,通过配置虚拟交换机以支持nic卸载可以允许支持各种特征并且可以提供各种优点。

举例来说,通过配置虚拟交换机以支持nic卸载可以允许由数据平面服务对大分组进行线路速率处理,这是通过配置虚拟交换机以使用nic卸载来交换大分组。

举例来说,在其中数据平面服务无法与为之提供数据平面服务的应用一起在原地运行的情况下,数据平面服务和应用运行在两个不同的服务器上,因此通过配置虚拟交换机以支持nic卸载可以允许使用nic的隧道卸载特征来支持两个不同服务器之间的大分组的隧道传送。这样就允许在数据平面服务无法与为之提供数据平面服务的应用一起在原地运行的情况下使用大分组。这样就对于任何租户应用和数据平面服务保持了统一的大分组接口而不管租户应用和数据平面服务被部署在何处,从而允许数据平面服务受益于大分组而不管其是否与租户应用位于同一处。

应当认识到,通过配置虚拟交换机以支持nic卸载可以允许支持各种特征并且可以提供各种其他优点。应当认识到,虽然nic卸载在本文中主要是在支持数据平面服务支持机制的情境内所呈现的,但是nic卸载也可以被提供在除了支持数据平面服务支持机制之外的各种其他情境中,并且可以提供相关联的益处。换句话说,应当认识到,可以独立于数据平面服务支持机制而使用本文中所呈现的nic卸载的各个实施例。

图8描绘出适用于实施本文中所描述的各种功能的计算机的高层级方块图。

计算机800包括处理器802(例如中央处理单元(cpu)、具有处理器核心的集合的处理器、处理器的处理器核心等等)和存储器804(例如随机存取存储器(ram)、只读存储器(rom)等等)。处理器802和存储器804可通信地连接。

计算机800还可以包括协作单元805。协作单元805可以是硬件设备。协作单元805可以是能够被加载到存储器804中并且由处理器802执行的进程,以便实施本文中所讨论的功能(在这种情况下,协作单元805(包括相关联的数据结构)例如可以被存储在非瞬时性计算机可读存储介质上,比如存储设备或其他存储单元(例如磁性驱动器、光学驱动器等等))。

计算机800还可以包括一个或多个输入/输出设备806。输入/输出设备806可以包括以下各项当中的一项或多项:用户输入设备(例如键盘、小键盘、鼠标、麦克风、摄影机等等),用户输出设备(例如显示器、扬声器等等),一个或多个网络通信设备或单元(例如输入端口、输出端口、接收器、传送器、收发器等等),一个或多个存储设备(例如带驱动器、软盘驱动器、硬盘驱动器、紧致盘驱动器等等)等等,以及其各种组合)。

应当认识到,图8的计算机800可以代表适合于实施本文中所描述的功能单元、本文中所描述的功能单元的某些部分等等以及其各种组合的一般架构和功能。举例来说,计算机400可以提供适合于实施服务器110的硬件111、云端编制系统120、数据平面服务系统130、服务管理接口系统140等等的其中一个或多个硬件组件的一般架构和功能。

应当认识到,本文中所描绘并描述的功能可以用软件来实施(例如通过一个或多个处理器上的软件实施方式,以用于在通用计算机上执行(例如通过由一个或多个处理器执行),从而提供专用计算机等等),并且/或者可以用硬件来实施(例如使用通用计算机、一个或多个专用集成电路(asic)以及/或者任何其他硬件等效方案)。

应当认识到,在本文中作为软件方法所讨论的至少其中一些功能可以被实现在硬件内,例如作为与处理器协作来实施各种功能的电路。本文中所描述的功能/单元的某些部分可以被实施成计算机程序产品,其中的计算机指令在由计算机执行时对计算机的操作进行适配,从而调用或者以其他方式提供本文中所描述的方法和/或技术。用于调用各种方法的指令可以被存储在固定或可移除介质中(例如非瞬时性计算机可读介质),通过广播或其他信号载送介质中的数据流来传送,并且/或者被存储在根据指令操作的计算设备内的存储器中。

应当认识到,除非另行表明(例如使用“或者另外的情况是”或者“或者替换的是”),否则本文中所使用的术语“或者”指的是非排他性的“或者”。

在权利要求中规定了各个实施例的各个方面。在下列编号条款中规定了各个实施例的这些和其他方面:

1、一种存储指令的非瞬时性计算机可读存储介质,所述指令在由计算机执行时使得计算机实施一种方法,所述方法包括:

在服务器上发起第一虚拟资源的实例化,其中第一虚拟资源与被配置成运行应用的第二虚拟资源相关联;

发起第一虚拟资源的配置以便针对应用提供数据平面服务;以及

发起用于数据平面服务的流连接的配置。

2、条款1的非瞬时性计算机可读存储介质,其中,在服务器上发起第一虚拟资源的实例化是响应于来自虚拟资源管理系统的请求而实施的。

3、条款1的非瞬时性计算机可读存储介质,其中,在服务器上发起第一虚拟资源的实例化包括:

向服务器的虚拟资源管理器发送针对在服务器上实例化第一虚拟资源的请求。

4、条款3的非瞬时性计算机可读存储介质,其中,针对在服务器上实例化第一虚拟资源的请求包括关于被配置成运行应用的第二虚拟资源的指示。

5、条款3的非瞬时性计算机可读存储介质,其中,第二虚拟资源处在所述服务器上。

6、条款3的非瞬时性计算机可读存储介质,其中,第二虚拟资源处在第二服务器上,其中发起用于数据平面服务的流连接的配置包括在所述服务器上发起虚拟交换机的配置,以便支持在所述服务器与第二服务器之间转发与应用相关联的应用通信量。

7、条款1的非瞬时性计算机可读存储介质,其中,发起第一虚拟资源的配置以便针对应用提供数据平面服务是响应于来自数据平面服务管理系统的请求而实施的。

8、条款1的非瞬时性计算机可读存储介质,其中,发起第一虚拟资源的配置以便针对应用提供数据平面服务包括:

向被配置成支持第一虚拟资源的虚拟交换机发送针对配置第一虚拟资源以便针对应用提供数据平面服务的请求。

9、条款1的非瞬时性计算机可读存储介质,其中,发起第一虚拟资源的配置以便针对应用提供数据平面服务包括:

向第一虚拟资源发送数据平面服务配置信息,以供第一虚拟资源使用来针对应用提供数据平面服务。

10、条款1的非瞬时性计算机可读存储介质,其中,发起用于数据平面服务的流连接的配置是响应于来自数据平面服务管理系统的请求而实施的。

11、条款1的非瞬时性计算机可读存储介质,其中,发起用于数据平面服务的流连接的配置包括:

向被配置成支持第一虚拟资源的虚拟交换机发送流连接信息,以供虚拟交换机使用来支持与应用相关联的应用通信量的转发。

12、条款11的非瞬时性计算机可读存储介质,其中,流连接信息包括表明意图用于应用的分组应被并行地转发到第一虚拟资源和第二虚拟资源的信息。

13、条款11的非瞬时性计算机可读存储介质,其中,流连接信息包括表明意图用于应用的分组应被转发到第一虚拟资源的信息。

14、条款11的非瞬时性计算机可读存储介质,其中,流连接信息包括表明源自应用的分组应被转发到第一虚拟资源的信息。

15、条款1的非瞬时性计算机可读存储介质,所述方法还包括:

实施与第一虚拟资源有关的监测;以及

传播基于与第一虚拟资源有关的监测而确定的反馈信息。

16、条款15的非瞬时性计算机可读存储介质,其中,实施与第一虚拟资源有关的监测包括以下各项当中的至少一项:监测数据平面服务,监测第一虚拟资源,监测应用,或者监测第二虚拟资源。

17、条款15的非瞬时性计算机可读存储介质,所述方法还包括以下步骤的至少其中之一:

基于与第一虚拟资源有关的监测而确定数据平面服务配置信息,并且基于数据平面服务配置信息而发起数据平面服务的重新配置;或者

基于与第一虚拟资源有关的监测而确定流连接重新配置信息,并且基于流连接重新配置信息而发起用于数据平面服务的流连接的重新配置。

18、条款15的非瞬时性计算机可读存储介质,所述方法还包括以下步骤的至少其中之一:

接收用以基于反馈信息重新配置数据平面服务的数据平面服务重新配置信息,并且基于数据平面服务重新配置信息发起数据平面服务的重新配置;或者

接收用以基于反馈信息重新配置用于数据平面服务的流连接的流连接重新配置信息,并且基于流连接重新配置信息发起用于数据平面服务的流连接的重新配置。

19、条款1的非瞬时性计算机可读存储介质,所述方法还包括:

发起第三虚拟资源的实例化;

在第三虚拟资源上对于数据平面服务发起附加数据平面服务实例的配置;以及

对于数据平面服务发起用于附加数据平面服务实例的流连接的配置。

20、条款1的非瞬时性计算机可读存储介质,所述方法还包括:

对于正运行在第三虚拟资源上的数据平面服务发起用于附加数据平面服务实例的流连接的移除;

对于正运行在第三虚拟资源上的数据平面服务发起附加数据平面服务实例的移除;以及

发起第三虚拟资源的终止。

21、条款1的非瞬时性计算机可读存储介质,其中,数据平面服务包括监测服务、过滤服务、负荷平衡服务、变换服务或加速服务的至少其中之一。

22、条款1的非瞬时性计算机可读存储介质,其中,第一虚拟资源包括虚拟机(vm)、虚拟容器(vc)或者运行在寄主虚拟资源管理器上的进程。

23、条款1的非瞬时性计算机可读存储介质,其中,第二虚拟资源包括虚拟机(vm)或虚拟容器(vc)。

24、一种装置,包括:

处理器和可通信地连接到处理器的存储器,处理器被配置成:

发起与第二虚拟资源相关联的第一虚拟资源的实例化,其中第二虚拟资源被配置成运行应用;

发起第一虚拟资源的配置以便针对应用提供数据平面服务;以及

发起用于数据平面服务的流连接的配置。

25、一种方法,包括:

由处理器发起与第二虚拟资源相关联的第一虚拟资源的实例化,其中第二虚拟资源被配置成运行应用;

由处理器发起第一虚拟资源的配置以便针对应用提供数据平面服务;以及

由处理器发起用于数据平面服务的流连接的配置。

26、一种系统,包括:

虚拟资源管理器;

虚拟交换机;

云端编制代理,其被配置成:

从云端编制系统接收针对实例化与第二虚拟资源相关联的第一虚拟资源的请求,其中第二虚拟资源被配置成运行应用;以及

向虚拟资源管理器传播实例化第一虚拟资源的指令;以及

数据平面服务代理,其被配置成:

从数据平面服务系统接收针对配置第一虚拟资源以便针对应用提供数据平面服务的请求以及针对配置用于数据平面服务的流连接的请求;以及

向虚拟交换机传播配置第一虚拟资源以便针对应用提供数据平面服务的指令以及配置用于数据平面服务的流连接的指令。

应当认识到,虽然在本文中示出并且详细描述了合并有本文中给出的教导的各个实施例,但是本领域技术人员可以很容易设想到仍然合并有这些教导的许多其他不同的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1