经由直接存储器访问设备在虚拟机之间传送分组的制作方法

文档序号:18095471发布日期:2019-07-06 11:01阅读:156来源:国知局
经由直接存储器访问设备在虚拟机之间传送分组的制作方法

本申请要求享有于2016年12月27日提交的题为“transferringpacketsbetweenvirtualmachinesviaadirectmemoryaccessdevice”的序列号为序列号15/391,777的美国发明专利申请的优先权。

附图说明

图1是本文描述的技术的示例性计算机布置的框图;

图2是根据本文描述的技术执行虚拟机之间的通信的示例性方法的流程图;

图3是用于经由直接存储器访问设备传送分组的示例性系统;

图4是用于传送分组的示例性方法的流程图;以及

图5是示出存储用于执行虚拟机之间的通信的代码的计算机可读介质的框图。

贯穿本公开内容和附图使用相同的数字来引用同样的组件和特征。100系列中的数字指的是最初在图1中找到的特征;200系列中的数字指的是最初在图2中找到的特征;以此类推。

具体实施方式

如上所述,在虚拟机(vm)之间的通信发生在虚拟交换机(vswitch)环境中或物理交换机环境中。然而,较大量的vm到vm网络业务可能快速使vswitch层成为性能瓶颈,从而增加延时。具体而言,增加功能强大的服务器正在加载更大数量的虚拟机。物理服务器中运行的增加数量的vm以及对应增加的vm到vm网络业务量可能快速使vswitch层成为性能瓶颈,从而可能增加延时。因此,vswitch的性能可能是阻止在给定服务器上运行的vm数量的扩展的限制因素。然后,在将网络分组从一个vm复制到另一vm所花费的中央处理单元(cpu)周期可能不可供vm用于分组处理和其它操作。在不同的非统一存储器访问(numa)节点上运行vm可能使处理器互连拥塞。例如,经由cpu将数据从一个位置复制到另一位置可能使cpu停止,这是因为处理器等待存储器被访问。取决于数据所驻留在的高速缓存级别,可能存在显著的延时。另外,当复制操作将该数据拉入复制核心高速缓存中并且用于访问数据的下一vm正在另一核心或处理器上运行时,则可以在数据可以由运行该vm的第二核心访问之前将数据写回到存储器。

当虚拟机之间的通信发生在物理交换机环境中时,可以使用硬件通过外围组件接口网络接口控制器(pnic)将vswitch功能卸载到物理交换机。通过pnic将vswitch功能卸载到物理交换机可以被称为发夹(hairpinning)。可以使用服务器内的交换机或经由机架顶部交换机来执行发夹。然而,发夹还可能具有性能限制以及可观的成本影响。此外,在外围总线上放置高业务可能由于黑客的恶意干扰的可能性而引入安全风险。

本文描述的技术一般涉及将分组从一个vm复制到另一vm。具体而言,本文描述的技术可以将分组从一个vm复制到另一vm而不给cpu带来负担。在一些示例中,本文描述的技术可以使用直接存储器访问(dma)设备来将分组从vm复制到vm。如本文所使用的,直接存储器访问设备可以是任何dma引擎或任何非cpu代理,其可以用于在本文描述的技术的范围内将分组从vm复制到vm。例如,在一个实施例中,dma设备可以包括的i/o加速技术(i/oat),或者可以包括i/oat的相关组件中的任何组件。在一些示例中,在vswitch已确定了vm到vm业务中的分组的源和目的地之后,分组传送可以称为存储器复制操作。例如,vswitch可以将存储器复制功能卸载到dma设备。将存储器复制功能卸载到dma设备可以使分组能够从一个vm传送到另一vm,而cpu不必执行复制操作并且不必使用物理交换机带宽。因此,本文描述的技术可以释放否则可能用于数据复制的cpu周期。

本文描述的技术可以提供对与使用vswitch相关联的问题的解决方案。在一些示例中,本文描述的技术可以包括用于将分组从vm复制到vm的dma设备。在vswitch已确定分组的源和目的地是相同平台上的vm之后,可以将vswitch的存储器复制操作卸载到dma设备以执行存储器复制功能。

本文描述的技术还可以使大部分vswitch软件保持不变。例如,本文描述的技术可以与现有的vswitch硬件向后兼容。本文描述的技术可以使vswitch能够执行防火墙操作、访问控制列表(acl)或加密和解密服务。因此,为了实现本文描述的技术的益处,可以不对现有软件应用进行改变。

此外,本文描述的技术不使用外围总线带宽,并且不会以vm到vm业务给物理交换机带来负担。因此,去往和来自平台的网络业务不太可能遇到拥塞。此外,本文描述的技术消除了与使用物理交换机进行平台内通信相关联的成本、功率、空间、组件等。因此,本文描述的技术使交换机能够针对外部业务(而不是外部和内部业务)而被供应。

此外,根据本文描述的技术的数据移动是存储器事务,而不是外围组件快速互连(pcie)事务。因此,存储器复制可以以全存储器带宽速度执行。此外,与cpu复制相比,该复制可以更高效并且使用更少的带宽,这是因为它们不涉及将数据从存储器控制器移动到cpu,并且不浪费cpu周期等待存储器。因此,本文描述的技术使由芯片组而不是cpu进行的数据复制能够更高效地将数据移动通过服务器并且提供快速、可扩展和可靠的吞吐量。

图1示出了示例性计算机布置,其包括概括地由附图标记100指代的计算机系统以及计算机网络150。计算设备101包括cpu102和存储器设备104。计算设备101可以是例如膝上型计算机、桌上型计算机、平板计算机、移动设备或服务器等。计算设备101可以包括:中央处理单元(cpu)102,其被配置为执行所存储的指令;以及存储器设备104,其存储可由cpu102执行的指令。cpu102可以由总线(未示出)耦合到存储器设备104。另外,cpu102可以是单核处理器、多核处理器、计算集群或任何数量的其它配置。此外,计算设备101可以包括多于一个的cpu102。在一些示例中,cpu102可以是具有多核处理器架构的片上系统(soc)。在一些示例中,cpu102可以是用于图像处理的专用数字信号处理器(dsp)。存储器设备104可以包括随机存取存储器(ram)、只读存储器(rom)、闪速存储器或任何其它合适的存储器系统。例如,存储器设备104可以包括动态随机存取存储器(dram)。

存储器设备104可以包括随机存取存储器(ram)、只读存储器(rom)、闪速存储器或任何其它合适的存储器系统。例如,存储器设备104可以包括动态随机存取存储器(dram)。在一些示例中,dma设备110可以设置在存储器设备104的存储器控制器(未示出)中。例如,dma设备可以是dma引擎。在一些示例中,存储器设备104可以包括随机存取存储器(ram)、只读存储器(rom)、闪速存储器或任何其它合适的存储器系统。例如,存储器设备104可以包括动态随机存取存储器(dram)。存储器设备104可以包括设备驱动程序,其被配置为执行用于在虚拟机之间进行通信的指令。设备驱动程序可以是软件、应用程序、应用代码等。

计算设备101还可以包括存储设备106。存储设备106是物理存储器,例如硬盘驱动器、光盘驱动器、拇指驱动器、驱动器阵列、固态驱动器或其任何组合。存储设备106还可以包括远程存储驱动器。

计算设备101还可以包括网络接口控制器(nic)108、dma设备110、管理程序112、第一虚拟机114、第二虚拟机116和虚拟交换机118。nic108可以被配置为通过总线将计算设备101连接到网络150。网络150可以是广域网(wan)、局域网(lan)或互联网等。在一些示例中,设备可以通过无线技术与其它设备通信。例如,设备可以经由无线局域网连接与其它设备通信。在一些示例中,设备可以经由或类似技术与其它设备连接和通信。

在一些示例中,为了初始化计算机系统100,可以初始化vswitch118。在一些示例中,可以初始化所有虚拟端口和所有物理端口。然后可以初始化dma设备110。在一些示例中,dma设备110可以记录虚拟和物理端口以及它们的mac地址以用于分组转发。在一些示例中,可以经由dma设备110或物理端口来执行分组转发。在一些示例中,然后可以呈现任何端口的链路状态。从这一点开始,可以初始化vswitch118和dma设备110。在一些示例中,如果用户添加另一端口,则还可以初始化该附加端口。然后,可以根据以下图2和图4中描述的方法200和400在第一虚拟机114和第二虚拟机116之间传送一个或多个分组。

在一些示例中,覆盖可以是能够在属于相同虚拟网络的端口上进行接收和发送的。例如,覆盖可以包括虚拟可扩展局域网(vxlan)和通用路由封装(gre)终止端点(tep)。在一些示例中,只要满足该条件,就可以从虚拟隧道端点(vtep)(还被称为vxlan网关)的实施方式中抽象出dma设备110的存在。

本文描述的技术可以使得能够使用非分页存储器池,这是因为通常数据不去往用户页面。相反,数据可以去往vm内核页面。本文描述的技术还可以使得能够预先固定(pre-pin)页面池并回收它们,因此成本也可以是可忽略的。

与协议堆栈中的软件复制不同,分组传送可以被设计为经由dma操作被发送到外围设备。堆栈可以被设计用于将是异步的分组传送过程。因此,发送vm可以在分组被排队和传送时继续进行高效工作。类似地,接收vm可以在传送期间可用于任务,并且可以仅在传送完成之后才知道所接收的分组。有利地,可以用于其它操作的cpu可以不忙于复制分组,因此可以是可用于其它操作的。

在一些示例中,本文描述的技术还可以包括与输入-输出存储器管理单元(iommu)(未示出)的协作。iommu可以是可以用于将主机地址重新映射到输入-输出(io)设备的软件或硬件单元。在虚拟化环境中,当vm对要被传送到另一vm的数据进行排队时,iommu可以用于实施安全策略。iommu可以允许vm仅能够在其自己的空间中指定“来自”地址并且在预期的vm的地址中指定“去往”地址。否则,恶意或错误的vm可能会覆写或读取任何其它vm存储器中的数据。在设置期间,可以将用作传送缓冲器的存储器区域编程到iommu表中,所述iommu表将从vm发起的传送限制为仅从其区域读取和写入去往和来自目标传送缓冲器的数据。在一些示例中,还可以动态分配缓冲器。例如,缓冲器可以在复制操作之前(而不是仅在设置时)被动态分配。因此,iommu许可可以在那时被授予,并在传送完成时被撤销。

图1的图不旨在指示示例性计算机系统100将包括图1所示的所有组件。相反,示例性计算机系统100可以具有较少的或图1中未示出的附加组件(例如,附加的虚拟机、vswitch等)。

图2是示出执行虚拟机之间的通信的示例性方法的流程图。该示例性方法概括地由附图标记200指代,并且可以在图1的计算机系统中实现。具体而言,方法200可以使用上面图1的vswitch来实现。例如,方法200可以示出相同计算机系统100上的vm之间的分组流。

在框210中,接收用于将分组从第一虚拟机(vm1)发送到第二虚拟机(vm2)的请求。用于发送的发送(tx)分组被提供给第一虚拟机vm1和vm1的虚拟网络接口控制器(vnic)驱动程序。

在框220中,vm1的vnic驱动程序(vm1-vnic)对要被发送的tx分组进行排队。在一些示例中,协议堆栈可以向vnic驱动程序发送分散-收集列表以及用于处理的指令。例如,处理可以包括tcp校验和卸载(checksumoffload)。在一些示例中,vnic驱动程序可以读取处理指令并为分散-收集列表的每个元素准备描述符。例如,描述符可以用于定义用于分组和元素的数据和控制,例如地址、长度和所需处理。在一些示例中,在描述符完成之后,可以将描述符入队以进行发送。例如,在物理nic的情况下,描述符可用于dma操作。然而,在vnic到vswitch环境的情况下,描述符可以用于就分组位置和控制信息通知vswitch。

在框230中,虚拟交换机(vswitch)驱动程序读取vm1的发送(tx)队列。在一些示例中,vswitch驱动程序可以监测网络内的业务。然后,vswitch驱动程序可以检测到已在存储器中排队的tx分组,并识别该分组在系统中具有另一目的地。

在框240中,vswitch驱动程序识别并确定分组的目的地,其是计算机系统上的另一vm,即vm2。例如,vswitch驱动程序可以执行某个发现,读取vm1发送(tx)队列,并且确定存储在vm1存储器中的分组将被复制到vm2存储器。

在框250中,vswitch驱动程序对dma设备的操作进行排队。在一些示例中,分组可以具有三个分散元素。例如,如上所述,可以在框230中提供这些元素的源地址和长度。元素的目的地也可以已在框240处被确定。在一些示例中,给定该信息,dma设备的设备驱动程序可以将三个复制命令入队到dma设备。例如,每个命令可以包括源地址、目的地地址和要复制的给定字节数。在一些示例中,命令还可以包括分组处理控制信息。例如,处理控制信息可以包括加密操作、封装或压缩。这些分组处理操作可能引起目的地中的分组大小不同于源处的分组大小。

在框260中,dma引擎将分组复制到vm2中的目的地。例如,dma设备可以在不使用任何cpu资源的情况下将分组复制到目的地。因此,用dma设备操作,cpu可以不接触数据。数据也可能不被带入到核心的高速缓存中。因此,可能不存在任何与复制操作相关的cpu停止并且不存在任何高速缓存污染。

在框270中,vswitch驱动程序向vm1指示发送完成。例如,可以在传达了分组已经在不将分组放在线路(wire)上的情况下从vm1中的存储器复制到vm2中的存储器之后处理中断。

在框280中,vswitch驱动程序将接收(rx)描述符写入到vm2上的vnicrx队列中。接收(rx)描述符告诉vm2在vm2的接收缓冲器中已放置了什么。接收(rx)描述符可以包括控制信息,例如与分组相关联的字节数或报头类型。

在框290中,vswitch驱动程序将接收事件指示给vm2上的vnic。接收事件可以用信号通知接收中断。作为接收器的vm2可以被告知接收事件已被递送到其接收缓冲器。然后,vm2可以如描述符中所述地读取其接收缓冲器并且完成处理。在一些示例中,vswitch驱动程序还可以执行堆栈处理。操作在框292中结束。

图2的流程图并非旨在指示示例性方法200将包括图2所示的所有组件。相反,示例性方法200可以具有较少的或图2未示出的附加的框。

图3是用于经由直接存储器访问引擎传送分组的示例性系统。示例性系统通常使用附图标记300来指代,并且可以使用图2和图4的方法200、400来实现。例如,系统300可以在上面图1的计算机系统100中被实现。

在图3中,分组402被示出为经由直接存储器访问(dma)设备110从第一虚拟机114传送到第二虚拟机116。例如,dma设备110可以是dma引擎。在一些示例中,虚拟交换机118可以检测到分组402将从第一虚拟机114发送到第二虚拟机116。例如,虚拟交换机118可以读取第一虚拟机114的发送队列并且检测到分组302将被发送到相同计算设备上的第二虚拟机116。然后,虚拟交换机118可以在dma设备110中对直接存储器复制操作进行排队。然后,dma设备110可以将第一虚拟机114直接复制到第二虚拟机116。例如,分组可能不需要行进经由虚拟交换机118或任何处理器。因此,当dma设备将分组402从第一虚拟机114复制到第二虚拟机116时,处理资源可以用于其它操作。

图3的图不旨在指示示例性计算机系统300将包括图3所示的所有组件。相反,示例性计算机系统300可以具有较少或图3未示出的附加的组件(例如,附加的虚拟机、虚拟交换机、分组等)。

图4示出了用于传送分组的示例性方法。该方法概括地使用附图标记400来指代,并且可以使用图1的计算机系统来实现。具体而言,方法400可以使用上面的图1的vswitch来实现。

在框402中,vswitch读取第一虚拟机的发送队列。例如,vswitch可以识别在第一虚拟机的存储器中的队列内的发送分组。

在框404中,vswitch确定与第一虚拟机的发送队列相关联的分组的目的地。在一些示例中,目的地可以是计算机系统上的第二虚拟机的存储器。例如,通过读取第一虚拟机的发送队列,vswitch驱动程序可以确定该分组的目的地是第二虚拟机的存储器。

在框406中,vswitch可以对直接存储器访问设备的操作进行排队。例如,vswitch驱动程序可以对dma设备的直接存储器复制操作进行排队。

在框408中,直接存储器访问设备用于将分组从第一虚拟机复制到第二虚拟机。例如,dma设备可以在不涉及cpu的情况下将分组从vm1中的存储器复制到vm2中的存储器。

图5是示出存储用于执行虚拟机之间的通信的代码的计算机可读介质500的框图。计算机可读介质500可以由处理器502通过计算机总线504访问。此外,计算机可读介质500可以包括被配置为指导处理器502执行本文描述的方法的代码。在一些实施例中,计算机可读介质500可以是非暂时性计算机可读介质。在一些示例中,计算机可读介质500可以是存储介质。

本文讨论的各种软件组件可以存储在一个或多个计算机可读介质500上,如图5所示。例如,读取器模块506可以被配置为读取第一虚拟机的发送队列。在一些示例中,读取器模块506还可以被配置为使管理程序运行第一虚拟机和第二虚拟机中的每个虚拟机。在一些示例中,读取器模块506还可以被配置为使vswitch检测发送分组在第一虚拟机的存储器中的队列内。在一些示例中,读取器模块506可以被配置为经由vswitch驱动程序读取第一虚拟机的发送队列。确定器模块508可以被配置为检测与第一虚拟机的发送队列相关联的分组的目的地。例如,目的地可以是计算机系统上的第二虚拟机的存储器。确定器模块508可以被配置为确定分组的目的地是第二虚拟机的存储器。在一些示例中,确定器模块508可以经由vswitch驱动程序确定第二虚拟机是分组的目的地。确定器模块508还可以被配置为对直接存储器访问设备的直接存储器复制操作进行排队。例如,直接存储器访问设备可以是直接存储器访问引擎。在一些示例中,直接存储器访问设备直接存储器访问设备可能缺少中央处理单元。在一些示例中,确定器模块508还可以被配置为经由vswitch驱动程序对直接存储器访问设备的直接存储器复制操作进行排队。确定器模块508还可以被配置为使直接存储器访问设备将分组从第一虚拟机复制到第二虚拟机。在一些示例中,确定器模块508可以被配置为向第一虚拟机指示分组复制完成。在一些示例中,确定器模块508还可以被配置为将接收描述符写入到第二虚拟机中的虚拟网络接口控制器(vnic)接收队列。

图5的框图不旨在指示计算机可读介质500将包括图5所示的所有组件。此外,计算机可读介质500可以包括图5中未示出的任何数量的附加组件,这取决于具体实施方式的细节。

示例

示例1是一种用于传送分组的计算机系统,其包括管理程序,所述管理程序用于运行第一虚拟机和第二虚拟机。所述计算机系统还包括第一存储器地址空间,其与所述第一虚拟机相关联并用于存储所述分组。所述计算机系统还包括第二存储器地址空间,其与所述第二虚拟机相关联并用于接收和存储所述分组。所述计算机系统还包括虚拟交换机,其耦合到所述第一虚拟机和所述第二虚拟机,所述虚拟交换机用于检测所述分组将从所述第一虚拟机发送到所述第二虚拟机。所述计算机系统还包括直接存储器访问设备。所述直接存储器访问设备用于经由所述直接存储器访问设备将所述分组从所述第一存储器地址空间复制到所述第二存储器地址空间。

示例2包括示例1的计算机系统,包括或不包括可选特征。在该示例中,所述存储器访问设备包括直接存储器访问引擎。

示例3包括示例1-2中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述第一虚拟机和所述第二虚拟机将在相同计算设备上运行。

示例4包括示例1-3中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括输入-输出存储器管理单元(iommu),其用于将这些虚拟机的主机地址重新映射到输入-输出(io)设备。

示例5包括示例1-4中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述直接存储器访问设备缺少中央处理单元。

示例6包括示例1-5中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于读取所述第一虚拟机的发送队列的虚拟交换机驱动程序。

示例7包括示例1-6中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于对所述存储器访问设备的直接存储器复制操作进行排队的虚拟交换机驱动程序。

示例8包括示例1-7中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于检测所述第二虚拟机是所述分组的目的地的虚拟交换机驱动程序。

示例9包括示例1-8中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于向所述第一虚拟机指示所述分组的复制完成的虚拟交换机驱动程序。

示例10包括示例1-9中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于将接收描述符写入到所述第二虚拟机中的vnic接收队列中的虚拟交换机驱动程序。

示例11是一种用于在虚拟机之间传送分组的方法,其包括读取第一虚拟机的发送队列。检测与所述第一虚拟机的发送队列相关联的分组的目的地。对直接存储器访问设备的操作进行排队。使用所述直接存储器访问设备来经由所述直接存储器访问设备将所述分组从所述第一虚拟机复制到第二虚拟机。

示例12包括示例11的方法,包括或不包括可选特征。在该示例中,所述直接存储器访问设备包括直接存储器访问引擎。

示例13包括示例11-12中任一项的方法,包括或不包括可选特征。在该示例中,所述第一虚拟机和所述第二虚拟机在相同计算设备上运行。

示例14包括示例11-13中任一项的方法,包括或不包括可选特征。在该示例中,使用管理程序来运行所述第一虚拟机和所述第二虚拟机中的每个虚拟机。

示例15包括示例11-14中任一项的方法,包括或不包括可选特征。在该示例中,所述直接存储器访问设备缺少中央处理单元。

示例16包括示例11-15中任一项的方法,包括或不包括可选特征。在该示例中,使用虚拟交换机驱动程序来读取所述第一虚拟机的发送队列。

示例17包括示例11-16中任一项的方法,包括或不包括可选特征。在该示例中,使用虚拟交换机驱动程序来对所述直接存储器访问设备的操作进行排队。

示例18包括示例11-17中任一项的方法,包括或不包括可选特征。在该示例中,使用虚拟交换机驱动程序来检测所述第二虚拟机是所述分组的目的地。

示例19包括示例11-18中任一项的方法,包括或不包括可选特征。在该示例中,使用虚拟交换机驱动程序来向所述第一虚拟机指示所述分组的复制完成。

示例20包括示例11-19中任一项的方法,包括或不包括可选特征。在该示例中,虚拟交换机驱动程序用于将接收描述符写入到所述第二虚拟机中的虚拟网络接口控制器(vnic)接收队列中。

示例21是一种存储要由处理器执行的指令的计算机可读介质。所述指令包括使所述处理器读取第一虚拟机的发送队列的指令。所述指令包括使所述处理器检测与所述第一虚拟机的发送队列相关联的分组的目的地的指令。所述目的地可以是第二虚拟机。所述指令包括使所述处理器对直接存储器访问设备的操作进行排队的指令。所述指令包括使所述处理器使所述直接存储器访问设备将所述分组从所述第一虚拟机复制到所述第二虚拟机的指令。

示例22包括示例21的计算机可读介质,包括或不包括可选特征。在该示例中,所述直接存储器访问设备包括直接存储器访问引擎。

示例23包括示例21-22中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,所述第一虚拟机和所述第二虚拟机将在相同计算设备上运行。

示例24包括示例21-23中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,所存储的指令包括使所述处理器运行所述第一虚拟机和所述第二虚拟机中的每个虚拟机的指令。

示例25包括示例21-24中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,所述直接存储器访问设备缺少中央处理单元。

示例26包括示例21-25中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,所存储的指令包括使所述处理器经由虚拟交换机驱动程序来读取所述第一虚拟机的发送队列的指令。

示例27包括示例21-26中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,所存储的指令包括使所述处理器经由虚拟交换机驱动程序对所述直接存储器访问设备的操作进行排队的指令。

示例28包括示例21-27中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,所存储的指令包括使所述处理器经由虚拟交换机驱动程序检测所述第二虚拟机是所述分组的目的地的指令。

示例29包括示例21-28中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,所存储的指令包括使所述处理器向所述第一虚拟机指示所述分组的复制完成的指令。

示例30包括示例21-29中任一项的计算机可读介质,包括或不包括可选特征。在该示例中,所存储的指令包括使所述处理器将接收描述符写入到所述第二虚拟机中的虚拟网络接口控制器(vnic)接收队列中的指令。

示例31是一种用于传送分组的计算机系统,包括:用于运行第一虚拟机和第二虚拟机的单元。所述计算机系统包括第一存储器地址空间,其与所述第一虚拟机相关联并用于存储所述分组。所述计算机系统包括第二存储器地址空间,其与所述第二虚拟机相关联并包括用于接收和存储所述分组。所述计算机系统包括用于检测所述分组将从所述第一虚拟机发送到所述第二虚拟机的单元。所述计算机系统还包括用于在不使用处理器的情况下将所述分组从所述第一存储器地址空间复制到所述第二存储器地址空间的单元。

示例32包括示例31的计算机系统,包括或不包括可选特征。在该示例中,复制单元包括直接存储器访问设备。

示例33包括示例31-32中任一项的计算机系统,包括或不包括可选特征。在该示例中,复制单元包括直接存储器访问引擎。

示例34包括示例31-33中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述装置包括管理程序,其用于运行所述第一虚拟机和所述第二虚拟机中的每个虚拟机。

示例35包括示例31-34中任一项的计算机系统,包括或不包括可选特征。在该示例中,复制单元缺少中央处理单元。

示例36包括示例31-35中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于读取所述第一虚拟机的发送队列的虚拟交换机驱动程序。

示例37包括示例31-36中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于对复制单元的操作进行排队的虚拟交换机驱动程序。

示例38包括示例31-37中任一项的计算机系统,包括或不包括可选特征。在该示例中,计算机系统包括用于检测所述第二虚拟机是所述分组的目的地的虚拟交换机驱动程序。

示例39包括示例31-38中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于向所述第一虚拟机指示所述分组的复制完成的虚拟交换机驱动程序。

示例40包括示例31-39中任一项的计算机系统,包括或不包括可选特征。在该示例中,所述计算机系统包括用于将接收描述符写入到所述第二虚拟机中的虚拟网络接口控制器(vnic)接收队列中的虚拟交换机驱动程序。

因此,本文描述的技术的技术益处可以包括减轻虚拟交换机层瓶颈,由此改善性能和缩放。例如,由于不依赖cpu来执行分组复制,因此可以不通过虚拟交换机层复制分组,这减轻了瓶颈。另一益处是处理器互连拥塞得到缓解。例如,因为处理器不用于分组复制,所以较少的数据流经处理器互连,从而减轻了拥塞。又一益处在于,由于cpu不执行复制,所以cpu资源被更高效地使用。例如,cpu时间可以是可用于其它功能的。另一益处是本文描述的技术中不使用外围总线带宽。例如,因为分组直接从一个vm的存储器复制到另一vm的存储器,因此分组不在外围总线上行进。又一益处是降低了通过nic/网络发送分组的安全风险。例如,nic/网络可能容易收到恶意行为者的访问的影响,这造成了安全风险。因此,因为分组不是在线路上或通过nic/网络发送的,所以分组不太可能被这些恶意行为者拦截。

另外,与协议堆栈中的软件复制不同,分组传送可以经由dma操作被发送到外围设备。在一些示例中,堆栈可能已经被设计用于将是异步的分组传送过程。当分组被排队和传送时,发送vm可以继续进行生产性工作。类似地,接收vm可以是可用于传送期间的任务的,并且可以仅在传送完成之后知道所接收的分组。因此,可以用于其他操作的cpu核心可以不需要被占用以复制分组。

并非本文描述和示出的所有组件、特征、结构、特性等都需要被包括在特定的一个或多个方面中。如果说明书陈述组件、特征、结构或特性“可能”、“可以”、“能够”或“能”被包括在内,则例如不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求提及“一”或“一个”元素,那并不意味着只存在元素之一。如果说明书或权利要求提及“附加”元素,则不排除存在附加元素中的多于一个元素。

应注意,虽然已参考特定实施方式描述了一些方面,但根据一些方面其它实施方式也是可能的。另外,附图中示出和/或本文描述的电路元件或其它特征的布置和/或次序不需要以所示出和所描述的特定方式布置。根据一些方面,许多其它布置是可能的。

在附图中所示的每个系统中,在一些情况下,元素可以均具有相同的附图标记或不同的附图标记,以表明所表示的元素可以是不同的和/或类似的。然而,元素可以足够灵活以具有不同的实施方式并且与本文示出或描述的系统中的一些或所有系统一起工作。附图中所示的各种元素可以是相同或不同的。哪一个被称为第一个元素并且哪个被称为第二元素是任意的。

应理解,前述示例中的细节可以用于一个或多个方面中的任何地方。例如,上面描述的计算设备的所有可选特征也可以关于本文描述的方法或计算机可读介质中的任何一个来实现。此外,虽然本文可能已经使用流程图和/或状态图来描述各方面,但是这些技术不限于那些图或本文的对应描述。例如,流不需要移动通过每个所示的框或状态,或者以与本文所示和所述的完全相同的次序移动。

本文描述的技术不限于所列出的特定细节。实际上,受益于本公开内容的本领域技术人员将领会,可以在本文描述的技术的范围内做出来自前述描述和附图的许多其它变型。因此,所附权利要求包括限定本文所述技术范围的任何修改。

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