Processing

Please wait...

Settings

Settings

Goto Application

1. WO2019056380 - DATA ACCESS METHOD AND DEVICE

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27  

附图

0001   0002   0003   0004   0005   0006   0007   0008   0009  

说明书

发明名称 : 一种数据访问的方法和装置

技术领域

[0001]
本发明涉及信息技术领域,尤其涉及一种数据访问的方法和装置。

背景技术

[0002]
主机上运行的虚拟机具有虚拟机网卡,在虚拟机通信过程中,物理网卡需要使用虚拟机网卡的描述符,该描述符需由物理网卡的驱动程序生成。因此虚拟机中需要安装物理网卡的驱动程序。这就要求不同的物理网卡提供商需要针对不同的虚拟机操作系统开发不同的物理网卡驱动程序,用户需要根据虚拟机的操作系统为虚拟机安装对应的物理网卡驱动程序,否则物理网卡无法对虚拟机进行数据访问。
[0003]
发明内容
[0004]
本申请提供了一种数据访问的方法、主机、非易失性计算机可读存储介质和数据访问的装置,本申请中,主机的物理接口卡在主机上运行的虚拟机未安装物理接口卡的驱动程序的情况下,仍然能够对虚拟机进行数据访问。
[0005]
本申请的第一方面提供一种数据访问的方法。该方法应用在主机中,该主机包括处理器、内存和物理接口卡,主机上运行有虚拟机,该虚拟机包括虚拟机接口卡。处理器从内存中获取包含虚拟机物理内存地址和可访问数据的数据长度的第一描述符,其中,该虚拟机物理内存地址指向该可访问数据在该虚拟机中的物理内存中存储的起始位置,同时,该第一描述符是按照该虚拟机接口卡可识别的编码方式编码的。该处理器还将该第一描述符转换为按照该物理接口卡可识别的编码方式编码的第二描述符。该物理接口卡根据该第二描述符获得该虚拟机物理内存地址映射到的该内存中的物理地址,根据该内存中的物理地址访问该可访问数据。
[0006]
示例性的,物理接口卡可以为网络接口卡,或称为网卡,则对应的虚拟机接口卡为虚拟机网卡。物理接口卡也可以为主机总线适配(Host Bus Adaptor,HBA)卡,则对应的虚拟机接口卡为虚拟机HBA卡。第一描述符是按照虚拟机接口卡可识别的编码方式进行编码的,物理接口卡不能识别。主机的处理器将第一描述符转换成第二描述符。由于第二描述符是按照物理接口卡可识别的编码方式编码的,因此物理接口卡可以通过该第二描述符获得虚拟机物理内存地址映射到的内存中的物理地址,从而访问数据。可见,本申请无需在该虚拟机上安装该物理接口卡的驱动程序,也可以实现物理接口卡对虚拟机的数据访问,从而提高了创建虚拟机的效率。
[0007]
结合第一方面,在第一方面的第一种可能实现方式中,该内存中存储有该虚拟机接口卡的虚拟队列以及该物理接口卡的物理队列,该第一描述符保存在该虚拟队列中,该虚拟队列与该物理队列之间具有对应关系。该处理器还根据该对应关系,将该第二描述符存入该物理队列。将第一描述符和第二描述符分别存入虚拟队列和物理队列,使得处理器能够通过队列获取第一描述符,物理接口卡能够通过物理队列获取第二描述符,方便主机对第一描述符和第二描述符进行管理,提高访问效率。
[0008]
结合第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,该对应关系保存在该内存中的第一存储空间,该第一存储空间属于该内存中的系统内存。只有主机才具有内存中的该系统内存的访问权限,而主机上运行的虚拟机没有该系统内存的访问权限,该第一存储空间不可被该虚拟机访问。将对应关系存入内存中的系统内存,处理器即可快速访问该对应关系,提高数据访问的效率。
[0009]
结合第一方面的第二种可能实现方式,在第一方面的第三种可能实现方式中,该第二描述符包括该虚拟机物理内存地址和该数据长度。在该方法中,该物理接口卡向内存管理单元发送查询消息,以查询该虚拟机物理内存地址映射到的该内存中的物理地址,该查询消息中包含该虚拟机物理内存地址。内存管理单元根据该查询消息中包含的该虚拟机物理内存地址,查询该虚拟机物理内存地址与该内存中的物理地址的映射关系,获得该内存中的物理地址,内存管理单元向物理接口卡发送该内存中的物理地址。通过内存管理单元物理接口卡可以地通过虚拟机物理内存地址访问数据,减少了处理器的参与,节省了计算资源。
[0010]
结合第一方面、第一方面的第二种和第三种可能实现方式中的方法,在第一方面的第四种可能实现方式中,该处理器将该第一描述符转换为第二描述符,具体包括:该处理器根据该第一描述符获得该虚拟机物理内存地址。该处理器将该虚拟机物理内存地址映射为该内存中的物理地址;该处理器对该内存中的物理地址以及该数据长度进行编码得到该第二描述符,该第二描述符包含该内存中的物理地址和该数据长度。第二描述符包含该虚拟机物理内存地址映射的该内存中的物理地址,使得物理网卡可以直接根据第二描述符中的该内存中的物理地址访问数据。
[0011]
结合第一方面的第一种可能实现方式,在第一方面的第五种可能实现方式中,该虚拟队列包括虚拟发送队列,该物理队列包括物理发送队列,该可访问数据为待发送的数据,该第一描述符保存在该虚拟发送队列中。该处理器将该第二描述符存入该物理队列包括将该第二描述符存入该物理发送队列。此时的第一描述符为第一待发送数据描述符,第二描述符为第二待接收数据描述符。
[0012]
结合第一方面的第一种可能实现方式,在第一方面的第六种可能实现方式中,该虚拟队列包括虚拟接收队列,该物理队列包括物理接收队列,该可访问数据为待接收的数据,该第一描述符保存在该虚拟接收队列中,该处理器将该第二描述符存入该物理队列包括将该第二描述符存入该物理接收队列。此时的第一描述符为第一空闲描述符,第二描述符为第二空闲描述符。
[0013]
本申请的第二方面提供一种主机,该主机包括处理器、存储设备和物理接口卡,该主机用于运行虚拟机,该虚拟机包括虚拟机接口卡。该处理器用于获取包含虚拟机物理内存地址和可访问数据的数据长度的第一描述符,其中,该虚拟机物理内存地址指向该可访问数据在该虚拟机中存储的起始位置,同时,该第一描述符是按照该虚拟机接口卡可识别的编码方式编码的。该处理器还用于将该第一描述符转换为按照该物理接口卡可识别的编码方式编码的第二描述符。该物理接口卡用于根据该第二描述符获得该虚拟机物理内存地址映射到的内存中的物理地址,根据该内存中的物理地址访问该虚拟机上的该可访问数据。
[0014]
第一描述符是按照虚拟机接口卡可识别的编码方式进行编码的,物理接口卡不能 识别。主机的处理器将第一描述符转换成第二描述符。由于第二描述符是按照物理接口卡可识别的编码方式编码的,因此物理接口卡可以通过该第二描述符获得虚拟机物理内存地址映射到的内存中的物理地址,从而访问数据。可见,本实施例无需在该虚拟机上安装该物理网卡的驱动程序,也可以实现物理网卡对虚拟机的数据访问。
[0015]
结合第二方面,在第二方面的第一种可能实现方式中,该存储设备的内存中存储有该虚拟机接口卡的虚拟队列以及该物理接口卡的物理队列,该第一描述符保存在该虚拟队列中,该虚拟队列与该物理队列之间具有对应关系。该处理器还用于执行:根据该对应关系,将该第二描述符存入该物理队列。该物理接口卡用于从该物理队列中获得该第二描述符。虚拟队列和物理队列使得处理器和物理接口卡分别通过队列通信获取第一和第二描述符。
[0016]
结合第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,该对应关系保存在该内存中的第一存储空间即内存中的系统内存,该第一存储空间为不可被该虚拟机访问。将对应关系存入内存中的系统内存,处理器即可快速访问该对应关系,提高数据访问的效率。
[0017]
结合第二方面的第二种可能实现方式,在第二方面的第三种可能实现方式中,该第二描述符包括该虚拟机物理内存地址和该数据长度。该物理接口卡用于执行如下操作:该物理接口卡用于向内存管理单元发送查询消息,以查询该虚拟机物理内存地址映射到的该内存中的物理地址,该查询消息中包含所述虚拟机物理内存地址。通过内存管理单元物理,接口卡可以迅速地通过虚拟机物理内存地址访问数据。
[0018]
结合第二方面、第二方面的第二种和第三种可能实现方式中的方法,在第二方面的第四种可能实现方式中,该处理器用于执行将该第一描述符转换为第二描述符,具体包括:根据该第一描述符获得该虚拟机物理内存地址,将该虚拟机物理内存地址映射为该内存中的物理地址,对该内存中的物理地址以及该数据长度进行编码得到该第二描述符,该第二描述符包含该内存中的物理地址和该数据长度。第二描述符包含转换后的内存中的物理地址,使得物理网卡可以直接根据内存中的物理地址访问数据。
[0019]
结合第二方面的第一种可能实现方式,在第二方面的第五种可能实现方式中,该虚拟队列包括虚拟发送队列,该物理队列包括物理发送队列,该可访问数据为待发送的数据,该第一描述符保存在该虚拟发送队列中。该处理器用于将该第二描述符存入该物理队列,具体包括将该第二描述符存入该物理发送队列。此时的第一描述符为第一待发送数据描述符,第二描述符为第二待接收数据描述符。
[0020]
结合第二方面的第一种可能实现方式,在第二方面的第六种可能实现方式中,该虚拟队列包括虚拟接收队列,该物理队列包括物理接收队列,该可访问数据为待接收的数据,该第一描述符保存在该虚拟接收队列中。该处理器用于将该第二描述符存入该物理队列,具体包括将该第二描述符存入该物理接收队列。此时的第一描述符为第一待空闲描述符,第二描述符为第二待空闲描述符。
[0021]
本申请的第三方面还提供一种数据访问的装置,该装置应用于主机,该主机包括处理器、内存和物理接口卡,虚拟机运行在所述主机上,该虚拟机包括虚拟机接口卡。该处理器获取包含虚拟机物理内存地址和可访问数据的数据长度的第一描述符,其中,该虚拟机物理内存地址指向该可访问数据在该虚拟机中存储的起始位置,同时,该第 一描述符是按照该虚拟机接口卡可识别的编码方式编码的。该处理器还将该第一描述符转换为按照该物理接口卡可识别的编码方式编码的第二描述符,使得该物理接口卡根据该第二描述符获得该虚拟机物理内存地址映射到的内存中的物理地址,以访问该虚拟机上的该可访问数据。
[0022]
同样地,第一描述符是按照虚拟机接口卡可识别的编码方式进行编码的,物理接口卡不能识别。主机的处理器将第一描述符转换成第二描述符。由于第二描述符是按照物理接口卡可识别的编码方式编码的,因此物理接口卡可以通过该第二描述符获得虚拟机物理内存地址映射到的内存中的物理地址,从而访问数据。可见,本实施例无需在该虚拟机上安装该物理网卡的驱动程序,也可以实现物理网卡对虚拟机的数据访问。因此本实施例中的装置解决了用户需要根据虚拟机的操作系统安装对应的物理网卡驱动程序才能使得物理网卡无实现数据访问的问题。
[0023]
结合第三方面,在第三方面的第一种可能实现方式中,该存储设备的内存中存储有该虚拟机接口卡的虚拟队列以及该物理接口卡的物理队列,该第一描述符保存在该虚拟队列中,该虚拟队列与该物理队列之间具有对应关系。该装置还包括存储单元,该存储单元用于根据该对应关系,将该第二描述符存入该物理队列,使得该物理接口卡能够从该物理队列中获得该第二描述符。虚拟队列和物理队列使得处理器和物理接口卡分别通过队列通信获取第一和第二描述符。
[0024]
结合第三方面的第一种可能实现方式,在第三方面的第二种可能实现方式中,该对应关系保存在该内存中的第一存储空间即内存中的系统内存,该第一存储空间为不可被该虚拟机访问。将对应关系存入内存中的系统内存,处理器即可快速访问该对应关系,提高数据访问的效率。
[0025]
结合第三方面、第三方面的第二种和第三种可能实现方式中的装置,在第三方面的第三种可能实现方式中,该描述符转换单元用于将该第一描述符转换为第二描述符,具体包括:根据该第一描述符获得该虚拟机物理内存地址,将该虚拟机物理内存地址映射为该内存中的物理地址,对该内存中的物理地址以及该数据长度进行编码得到该第二描述符,该第二描述符包含该内存中的物理地址和该数据长度。第二描述符包含转换后的内存中的物理地址,使得物理网卡可以直接根据内存中的物理地址访问数据。
[0026]
结合第三方面的第一种可能实现方式,在第三方面的第四种可能实现方式中,该可访问数据为待发送的数据,该虚拟队列包括虚拟发送队列,该第一描述符保存在该虚拟发送队列中,该物理队列包括物理发送队列。该存储单元用于将该第二描述符存入该物理队列,使得该物理接口卡能够从该物理队列中获得该第二描述符,具体包括:将该第二描述符存入该物理发送队列,使得该物理接口卡能够从该物理发送队列中获得该第二描述符。此时的第一描述符为第一待发送数据描述符,第二描述符为第二待接收数据描述符。
[0027]
结合第三方面的第一种可能实现方式,在第三方面的第五种可能实现方式中,该虚拟队列包括虚拟接收队列,该物理队列包括物理接收队列,该可访问数据为待接收的数据,该第一描述符保存在该虚拟接收队列中。该物理接口卡用于将该第二描述符存入该物理队列,具体包括将该第二描述符存入该物理接收队列。此时的第一描述符为第一待空闲描述符,第二描述符为第二待空闲描述符。
[0028]
本申请的第四方面还提供一种非易失性计算机可读存储介质,其中,该非易失性可读存储介质包含计算机指令,该计算机指令用于执行本实施例第一方面及第一方面的第一种及第七种可能实现方式中任一种实现方式中处理器执行的操作。
[0029]
本申请的第五方面还提供了一种计算机程序产品,包含计算机指令,主机的处理器执行该计算机指令用于执行本实施例第一方面及第一方面的第一种及第七种可能实现方式中任一种实现方式中处理器执行的操作。

附图说明

[0030]
图1为物理网卡对数据访问的应用场景的示意图;
[0031]
图2为主机、物理接口卡与虚拟机的架构图;
[0032]
图3A为Hypervisor为虚拟机分配物理网卡的示意图;
[0033]
图3B为Hypervisor为虚拟机分配内存的示意图;
[0034]
图4为描述符、虚拟队列、物理队列与可访问数据的示意图;
[0035]
图5为数据访问方法的流程图;
[0036]
图6A为描述符转换的第一种实现方式示意图;
[0037]
图6B为描述符转换的第二种实现方式示意图;
[0038]
图7为一种虚拟机与物理网卡通信的装置示意图。

具体实施方式

[0039]
主机作为运行虚拟机的载体,通常包含处理器、内存和物理接口卡。虚拟机与主机外部设备进行通信时,物理接口卡对虚拟机进行访问,例如,获取虚拟机发送的数据,或将外部设备发送给虚拟机的数据发送给虚拟机。本发明实施例中的主机,也称为服务器。运行在主机上的虚拟机与外部设备通信,如图1所示,物理接口卡101通过网络120与外部设备130通信。图中网络120可以是有线网或无线网,外部设备130可以是服务器、终端设备以及网络设备等。物理接口卡101可以是物理网络接口卡(又称为网卡),也可以是主机总线适配(Host Bus Adapter,HBA)卡等。与物理网卡对应的虚拟机接口卡为虚拟机网卡。
[0040]
图1中主机100、物理接口卡101与虚拟机110的架构如图2所示。主机100上运行多台虚拟机,主机100与多台虚拟机的架构可以是全虚拟化、半虚拟化与硬件虚拟化。下文以其中一台虚拟机110为例进行描述。主机100包括物理管理程序102和物理硬件资源103。物理硬件资源103包括处理器104、内存105和物理接口卡101等。本发明实施例中称虚拟机110的操作系统为用户操作系统111,称虚拟机的硬件为虚拟硬件112,其中虚拟硬件112包含但不限于虚拟机处理器113、虚拟机内存114和虚拟机接口卡115等。主机100的处理器可以是中央处理单元(Central ProcessingUnit,CPU),还可以是专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者上述任意合适的组合。管理程序201,也称为虚拟机监视器(Virtual Machine Monitor,VMM),如Hypervisor,也可以是内核虚拟机(Kernel-based Virtual Machine,KVM)、Xen和Denali等。
[0041]
虚拟机110运行在主机100的管理程序102之上,管理程序102为虚拟机110的虚拟硬件112和主机100的物理硬件资源103提供调度。以下以Hypervisor为例,具 体的,Hypervisor106将虚拟机110所需的部分物理硬件资源103虚拟化为虚拟硬件112,为虚拟机110的用户操作系统111提供运行的硬件环境。Hypervisor106协调各个虚拟机对物理硬件资源103的访问。
[0042]
本发明实施例中物理接口卡以物理网卡为例。图3A和图3B分别为Hypervisor106为虚拟机分配物理网卡107和内存105的示意图。具体实现中,处理器104执行管理程序102,用于实现本发明实施例中相应的操作,因此本发明实施例在接下来的描述提到的管理程序102(如Hypervisor106)执行的操作与处理器104执行相应管理程序102的功能具有相同的含义。例如,Hypervisor106为虚拟机110分配物理网卡107和内存105,或者处理器104为虚拟机110分配物理网卡107和内存105,以上两种表述具有相同的含义。
[0043]
Hypervisor106将物理网卡107虚拟化为一个或多个虚拟机网卡并分配给主机100上的虚拟机。以图3A中所示为例,Hypervisor106将物理网卡107虚拟化为虚拟机网卡116a、虚拟机网卡116b、……虚拟机网卡116n,并分配给对应的虚拟机110a、虚拟机110b、……虚拟机110n。本发明实施例以一台虚拟机包含一个虚拟机网卡为例,但具体实现中,一台虚拟机也可以包含多个虚拟机网卡,本发明实施例对此不作限定。物理网卡107虚拟化为虚拟机网卡116的一个实施方式如下:Hypervisor106通过单根虚拟化(Single Root-Input/Output Virtualization,SR-IOV)技术可将高速外设互联标准(Peripheral Component Interconnect Express,PCIE)网卡虚拟化为多个虚拟功能(Virtual Function,VF),并将VF分配给对应的虚拟机。
[0044]
Hypervisor106将内存105虚拟化并分配给主机100上的一个或多个虚拟机。以图3B中所示为例,Hypervisor106将内存105的内存空间划分为系统内存108、主机内存空间109a、主机内存空间109b、……主机内存空间109n。其中,系统内存108为Hypvisor106等运行的内存空间,只有主机才具有访问系统内存108的访问权限,而主机上运行的虚拟机没有系统内存108的访问权限。因此,系统内存108不能被虚拟机110a、虚拟机110b、……虚拟机110n访问。Hypervisor106将主机内存空间109a映射为虚拟内存空间114a,将主机内存空间109b映射为虚拟内存空间114b、……将主机内存空间109n映射为虚拟内存空间114n,将虚拟内存空间114a分配给虚拟机110a,将虚拟内存空间114b分配给虚拟机110b、……将虚拟内存空间114n分配给虚拟机110n。虚拟机110通过虚拟机物理内存地址访问虚拟机内存空间117,主机100通过内存105中的物理地址访问内存105。由于虚拟存储空间117a-117n分别映射到主机存储空间109a-109n,Hypervisor106将虚拟机物理内存地址映射到内存105中的物理地址。
[0045]
本实施例中,物理网卡107通过描述符实现数据访问。如图4所示,物理队列413由物理网卡107的驱动程序生成,用于存储描述符。物理网卡107从物理队列413中获取描述符,并根据描述符中的可访问数据的位置信息访问可访问数据的第一存储空间。图4中的第一描述符410由虚拟机网卡116的驱动程序生成,存储在虚拟机的虚拟队列117中。虚拟队列117亦由虚拟机网卡116的驱动程序生成,虚拟队列117位于Hypervisor106分配给虚拟机110的虚拟机内存空间114中。虚拟机网卡的驱动程序可以为VirtIO驱动程序。物理队列413与虚拟队列117对应,对应关系存储于内存105 中,该对应关系的存储形式可以是一个数据表或其他数据结构,本实施例对此不作限制。物理网卡107对虚拟机110进行数据访问时能够访问的可访问数据存储在虚拟机内存空间114中的第一存储空间414。由上文所述可知,虚拟内存空间114为虚拟机110提供虚拟机物理内存,虚拟内存空间114映射到内存105的一部分存储空间。指向第一存储空间414的起始存储位置的虚拟机物理内存地址对应内存105中的物理地址,该内存105中的物理地址为第二存储空间415的起始存储位置。
[0046]
图5中的数据访问的流程如图5所示,具体如下:
[0047]
501,获取第一描述符410。
[0048]
具体的,Hypervisor106获取虚拟队列117中的第一描述符410。第一描述符410包含在虚拟机内存空间114中存储可访问数据的第一存储空间414。第一存储空间414即虚拟机物理内存地址和可访问数据的数据长度,其中虚拟机物理内存地址指向可访问数据在第一存储空间414(虚拟机110的物理内存)中的起始存储位置。由于第一描述符410由虚拟机网卡116的驱动程序生成,第一描述符410是按照虚拟机网卡可识别的编码方式编码的,且物理网卡107不能识别第一描述符410的编码方式。虚拟机110的物理内存是指虚拟机110中供客户机操作系统使用的虚拟硬件内存,主机100内存105的物理内存是主机100中的实际物理内存,内存105中的物理地址是指是主机100中的实际物理内存。
[0049]
502,Hypervisor106将第一描述符410转换为第二描述符411,其中,第二描述符411是按照物理网卡107可识别的编码方式编码的。
[0050]
此时,物理网卡107从物理队列413获取可识别的第二描述符411。即,无需在虚拟机110上安装物理网卡107的驱动程序,物理网卡107即可访问虚拟机110的第一存储空间414。由于虚拟机网卡116的驱动程序通常都集成在虚拟机110的用户操作系统111中,本实施例中,在创建虚拟机110通信的软硬件环境时,不需要为虚拟机110安装物理网卡107的驱动程序,解决了虚拟机110安装物理接口卡101的驱动程序给用户使用造成不便的问题,提高了创建虚拟机110的效率,提升了虚拟机110用户的体验。
[0051]
当主机100具有内存管理单元(Input/Output Memory Management Unit,IOMMU),且物理网卡107具有直接内存访问(Direct Memory Access,DMA)功能,Hypervisor106将第一描述符410转换为第二描述符411,具体流程为,Hypervisor106根据第一描述符410和虚拟机网卡116的编码方式,得到该虚拟机物理内存地址和该可访问数据的数据长度,并按照物理网卡107可识别的编码方式,将该虚拟机物理内存地址和该可访问数据的数据长度编码为第二描述符411。具体的,物理网卡107可以为PCIE网卡。PCIE网卡具有DMA功能,结合英特尔 公司CPU的输入输出直通虚拟化技术(Virtualization Technology for Directed Input/Output,VT-d)以及管理程序中的IOMMU,可实现通过虚拟机物理内存地址,生成DMA命令,访问虚拟机内存空间,从而减少了处理器的参与,节约处理器的计算资源。
[0052]
当主机100不具有IOMMU,或物理网卡107不具有DMA功能,Hypervisor106根据第一描述符410和虚拟机网卡116的编码方式得到该虚拟机物理内存地址和该可访问数据的数据长度后,将该虚拟机物理内存地址转换为对应的该内存105中的物理 地址,并按照物理网卡107可识别的编码方式,将该内存105中的物理地址和该可访问数据的数据长度编码为第二描述符411,使得物理网卡107可以直接根据第二描述符411中的该内存107中的物理地址访问数据,提高了数据访问速度。物理网卡107可以为不具有DMA功能的非PCIE物理接口卡,外设互联标准(Peripheral ComponentInterconnect,PCI)卡为一种非PCIE卡的实施例。
[0053]
图6A为当主机100具有IOMMU,且物理网卡107具有DMA功能时,第一描述符410转换为第二描述符411的过程的示意图。Hypervisor106按照物理网卡107可识别的编码方式编码该虚拟机物理内存地址和该可访问数据的数据长度。
[0054]
图6B为当主机100不具有IOMMU,或物理网卡107不具有DMA功能时,第一描述符410转换为第二描述符411的过程的示意图。Hypervisor106将该虚拟机物理内存地址转换为对应的该内存105中的物理地址,并按照物理网卡107可识别的编码方式编码该内存105中的物理地址和该可访问数据的数据长度。
[0055]
503,物理网卡107根据第二描述符411,访问存储可访问数据的第二存储空间415。
[0056]
当主机100具有IOMMU,且物理网卡107具有DMA功能时,物理网卡107从物理队列413获取的第二描述符411包含该虚拟机物理内存地址和该可访问数据的数据长度。物理网卡107根据其DMA功能,发送携带虚拟机物理内存地址的查询消息至主机100中的IOMMU,查询该虚拟机物理内存地址对应的该内存105中的物理地址。该IOMMU向物理网卡返回携带该内存105中的物理地址的消息,物理网卡107根据该内存105中的物理地址生成直接访问命令。该内存105中的物理地址指向第二存储空间415中的起始存储位置。物理网卡107根据该内存105中的物理地址和该可访问数据的数据长度,访问该可访问数据的存储空间,实现与虚拟机110的通信。同样,此时物理网卡107可以为PCIE网卡。
[0057]
当主机100不具有IOMMU,或物理网卡107不具有DMA功能时,物理网卡107从物理队列413获取的第二描述符411包含该虚拟机物理内存地址映射的该内存105中的物理地址和该可访问数据的数据长度。该主机物理内存地址指向第二存储空间415中的起始存储位置。物理网卡107根据第二描述符411中的该内存105中的物理地址和该可访问数据的数据长度,访问该可访问数据的存储空间,实现与虚拟机110的通信。同样,物理网卡107可以为不具有DMA功能的非PCIE物理接口卡,外设互联标准(Peripheral Component Interconnect,PCI)卡为一种非PCIE卡的实施例。
[0058]
可选地,物理网卡107可以通过轮询物理队列413,从物理队列413中读取第二描述符411;当第二描述符411存入物理队列413时,Hypervisor106也可以向物理网卡107发送中断,触发物理网卡107从物理队列413中读取第二描述符411。
[0059]
在本发明的另一个实施例中,在图2、图3A及图3B中所示的主机100、虚拟机110及其他逻辑或物理部件上,物理网卡107创建图4中存储第二描述符411的物理队列118时,将物理队列118存储于虚拟内存空间114中,虚拟机110无法感知的存储空间,即Hypervisor106分配给虚拟机110,但不通知给虚拟机110的虚拟内存空间114的一部分,由于Hypervisor106并未把此内存空间通知给虚拟机110,虚拟机110不会占用这此内存空间,此内存空间即可用于存储物理队列118。此时物理网卡107对110进行数据访问的方法的流程同样依照上文所述流程401-403,在此不再赘述。虚 拟内存空间114映射到内存105的一段空间,即物理队列118实际存储在该内存105的一段空间中。本发明实施例中,虚拟内存空间由虚拟机物理内存地址与一段地址长度构成,同样虚拟内存空间映射的内存105中的一段空间由虚拟机物理内存地址映射的105中的物理地址与该一段长度构成。
[0060]
当虚拟机110向外部设备130发送待发送数据时,物理网卡107需要访问虚拟机110中的待发送数据。
[0061]
此时,虚拟机网卡116的驱动程序生成的虚拟队列117为虚拟发送队列,虚拟发送队列中存储待发送数据描述符1。物理网卡107的驱动程序生成的物理队列413为物理发送队列,虚拟队列117与物理队列413的对应关系为虚拟发送队列与物理发送队列的对应关系。虚拟机110向物理网卡107发送待发送数据的流程如下:
[0062]
第一步,Hypervisor106获取虚拟发送队列中的待发送数据描述符1。
[0063]
待发送数据描述符1包含在虚拟机内存空间117中存储待发送数据的第三存储空间(虚拟机的物理内存)。第三存储空间即虚拟机物理内存地址1和待发送数据的数据长度,其中虚拟机物理内存地址1指向待发送数据在第三存储空间(虚拟机的物理内存)中的起始存储位置。由虚拟机网卡116的驱动生成的待发送数据描述符1是按照虚拟机网卡116可识别的编码方式编码的。
[0064]
第二步,当主机100具有IOMMU,且物理网卡107具有DMA功能时,Hypervisor106根据待发送数据描述符1和虚拟机网卡116的编码方式,得到虚拟机物理内存地址1和该待发送数据的数据长度,并按照物理网卡107可识别的编码方式,将虚拟机物理内存地址1和该待发送数据的数据长度编码为待发送描述符2。
[0065]
当主机100不具有IOMMU,或物理网卡107不具有DMA功能,Hypervisor106根据待发送数据描述符1和虚拟机网卡116的编码方式得到虚拟机物理内存地址1和该待发送数据的数据长度后,将虚拟机物理内存地址1转换为虚拟机物理内存地址1映射到的内存105中的物理地址1,并按照物理网卡107可识别的编码方式,将内存105中的物理地址1和该待发送数据的数据长度编码为待发送数据描述符2。
[0066]
第三步,Hypervisor106根据虚拟发送队列与物理发送队列的对应关系,将待发送数据描述符2存入物理发送队列。
[0067]
第四步,物理网卡107根据物理发送队列中的待发送数据描述符2,读取虚拟机110中的待发送数据。
[0068]
当主机100具有IOMMU,且物理网卡107具有DMA功能时,待发送数据描述符2包含虚拟机物理内存地址1和该待发送数据的数据长度。物理网卡107根据其DMA功能和主机100中的IOMMU生成直接访问命令,将虚拟机物理内存地址1转换为虚拟机物理内存地址1映射到的内存105中的物理地址1,并根据内存105中物理地址1和该待发送数据的数据长度进行数据访问,获得待发送数据,实现与虚拟机110的通信。
[0069]
当主机100不具有IOMMU,或物理网卡107不具有DMA功能时,待发送数据描述符2包含虚拟机物理内存地址1映射到的内存105中的物理地址1和该可访问数据的数据长度。物理网卡107根据内存105中物理地址1和该待发送数据的数据长度,访问该待发送数据,获得待发送数据,实现与虚拟机110的通信。
[0070]
可选地,物理网卡107可以通过轮询物理发送队列,从物理发送队列中读取待发送数据描述符2;当待发送数据描述符2存入物理发送队列时,Hypervisor106也可以向物理网卡107发送中断,触发物理网卡107从物理发送队列中读取待发送数据描述符2。
[0071]
虚拟机110接收外部设备130发送的数据时,外部设备130将该数据发送至物理网卡107,物理网卡107将该数据存入虚拟机110。
[0072]
此时,虚拟机网卡116的驱动程序生成的虚拟队列117为虚拟接收队列。物理网卡107的驱动程序生成的物理队列413为物理接收队列,虚拟队列117与物理队列413的对应关系为虚拟接收队列与物理接收队列的对应关系。虚拟机110利用空闲描述符通知物理网卡107将外部设备103发送的存入虚拟机内存空间114。虚拟发送队列中存储空闲描述符1。物理网卡107向虚拟机110发送外部设备130发送的数据的具体流程如下:
[0073]
第一步,Hypervisor106获取虚拟发送队列中的待发送数据描述符1。
[0074]
空闲描述符1包含在虚拟机内存空间117中存储待接收数据的第四存储空间,第四存储空间即虚拟机物理内存地址2和最大存储的数据长度,其中虚拟机物理内存地址2指向第四存储空间(虚拟机的物理内存)中的存储该待接收数据的起始存储位置,该待接收数据的数据长度不大于该最大存储的数据长度。由虚拟机网卡116的驱动生成的空闲描述符1是按照虚拟机网卡116可识别的编码方式编码的。
[0075]
第二步,当主机100具有IOMMU,且物理网卡107具有DMA功能时,Hypervisor106根据空闲描述符1和虚拟机网卡116的编码方式,得到虚拟机物理内存地址2和该最大存储的数据长度,并按照物理网卡107可识别的编码方式,将虚拟机物理内存地址2和该最大存储的数据长度编码为待发送描述符2。
[0076]
当主机100不具有IOMMU,或物理网卡107不具有DMA功能,Hypervisor106根据空闲描述符1和虚拟机网卡116的编码方式得到虚拟机物理内存地址2和该最大存储的数据长度后,将虚拟机物理内存地址2转换为虚拟机物理内存地址2映射的内存105中的物理地址2,并按照物理网卡107可识别的编码方式,将虚拟机物理内存地址2映射的内存105中物理地址2和该最大存储的数据长度编码为空闲描述符2。
[0077]
第三步,Hypervisor106根据虚拟接收队列与物理接收队列的对应关系,将空闲描述符2存入物理发送队列。
[0078]
第四步,物理网卡107根据物理接收队列中的空闲描述符2,将该待接收数据存入虚拟机110。
[0079]
当主机100具有IOMMU,且物理网卡107具有DMA功能时,空闲描述符2包含虚拟机物理内存地址2和该最大存储的数据长度。物理网卡107根据其DMA功能和主机100中的IOMMU生成直接访问命令,将虚拟机物理内存地址2转换为虚拟机物理内存地址2映射的内存105中的物理地址2,并根据虚拟机物理内存地址2映射的内存105中的物理地址2和该最大存储的数据长度,将该待接收数据存入虚拟机110。
[0080]
当主机100不具有IOMMU,或物理网卡107不具有DMA功能时,空闲描述符2包含虚拟机物理内存地址2映射的内存105中的物理地址2和该最大存储的数据长度。物理网卡107根据虚拟机物理内存地址2映射的内存105中的物理地址2和该最大存 储的数据长度,将该待接收数据存入虚拟机110。
[0081]
可选地,物理网卡107可以通过轮询物理接收队列,从物理接收队列中读取空闲描述符2;当空闲描述符2存入物理接收队列时,Hypervisor106也可以向物理网卡107发送中断,触发物理网卡107从物理接收队列中读取空闲描述符2。
[0082]
本实施例还提供一种数据访问的装置700应用于主机100中,主机100运行虚拟机,虚拟机包含虚拟机接口卡。如图7所示,通信装置700包括获取单元701和描述符转换单元702。其中,获取单元701用于从内存105中获取第一描述符,第一描述符包含虚拟机物理内存地址和可访问数据的数据长度。描述符转换单元702用于将所述第一描述符转换为第二描述符,其中,所述第二描述符是按照所述物理接口卡可识别的编码方式编码的,使得所述物理接口卡根据所述第二描述符获得所述虚拟机物理内存地址映射到所述内存中的物理地址以访问所述可访问数据。进一步的,通信装置700还包括存储单元703,所述内存中存储有所述虚拟机接口卡的虚拟队列以及所述物理接口卡的物理队列,所述第一描述符保存在所述虚拟队列中,所述虚拟队列与所述物理队列之间具有对应关系,存储单元703用于根据所述对应关系,将所述第二描述符存入所述物理队列,使得所述物理接口卡从所述物理队列中获得所述第二描述符。其中,所述对应关系保存在所述内存中的第一存储空间,所述第一存储空间不可被所述虚拟机访问。进一步的,描述符转换单元702具体用于:根据所述第一描述符获得所述虚拟机物理内存地址,将所述虚拟机物理内存地址映射为所述内存中的物理地址,对所述内存中的物理地址以及所述数据长度进行编码得到所述第二描述符,所述第二描述符包含所述内存中的物理地址和所述数据长度。另一种实现方式,在所述装置700中,所述可访问数据为待发送的数据,所述虚拟队列包括虚拟发送队列,所述第一描述符保存在所述虚拟发送队列中,所述物理队列包括物理发送队列;所述装置700还包括存储单元703,存储单元703具体用于将所述第二描述符存入所述物理发送队列。另一种实现方式,在所述装置700中,所述虚拟队列包括虚拟接收队列,所述物理队列包括物理接收队列,所述可访问数据为待接收的数据,所述第一描述符保存在所述虚拟接收队列中;所述装置700还包括存储单元703,所述存储单元具体用于将所述第二描述符存入所述物理接收队列。
[0083]
示例性地,获取单元401可以通过图1所示的处理器104执行计算机指令实现,该计算机指令用于实现图5中步骤501。描述符转换单元702可以通过图1所示的处理器104执行计算机指令实现,该计算机指令用于实现图5中步骤502。存储单元703可以通过图1所示的处理器104执行计算机指令实现。如同图1部分的描述,处理器104可以是CPU,还可以是ASIC、FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者上述任意合适的组合。对于其中不具有指令存储装置的处理器,例如CPU,上述计算机指令存储于内存中,获取单元401、描述符转换单元702及存储单元703通过处理器104执行内存中的计算机指令实现。对于其中具有指令存储装置的处理器,例如FPGA,该指令存储于处理器中,获取单元401、描述符转换单元702及存储单元703通过处理器执行处理器中的计算机指令实现。
[0084]
相应地,本实施例还提供一种包含计算机指令的非易失性可读存储介质。该非易 失性可读存储介质中的计算机指令用于物理网卡对主机上的虚拟机的数据访问,主机的处理器执行计算机指令实现本发明实施例中主机的处理器实现的功能。非易失性可读存储介质中的计算机指令用于实现管理程序功能,本发明实施例中管理程序实现的功能在产品形态中可以为管理程序中的计算机程序模块,也可以为可独立安装在插件等,具体产品形态本发明实施例不作限定。相应的,本发明实施例还提供了一种计算机程序产品,包含计算机指令用于运行在主机上的虚拟机通信,主机的处理器执行计算机指令实现本发明实施例中主机的处理器实现的功能。
[0085]
在本发明所提供的几个实施例中,应该理解到,所公开的装置、方法,可以通过其它的方式实现。所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。所述计算机指令,可以是存储在一个或者多个分散的非易失性可读存储介质上。
[0086]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0087]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

权利要求书

[权利要求 1]
一种数据访问的方法,其特征在于,所述方法应用于主机中,所述主机包括处理器、内存和物理接口卡,虚拟机运行在所述主机上,所述虚拟机包括虚拟机接口卡; 所述方法包括: 所述处理器获取所述内存中的第一描述符,所述第一描述符包含虚拟机物理内存地址和可访问数据的数据长度;所述虚拟机物理内存地址指向所述可访问数据在所述虚拟机的物理内存中存储的起始位置;所述第一描述符是按照所述虚拟机接口卡可识别的编码方式编码的; 所述处理器将所述第一描述符转换为第二描述符,其中,所述第二描述符是按照所述物理接口卡可识别的编码方式编码的; 所述物理接口卡根据所述第二描述符获得所述虚拟机物理内存地址映射到所述内存中的物理地址,根据所述内存中的物理地址访问所述可访问数据。
[权利要求 2]
根据权利要求1中所述的方法,其特征在于,所述内存中存储有所述虚拟机接口卡的虚拟队列以及所述物理接口卡的物理队列,所述第一描述符保存在所述虚拟队列中,所述虚拟队列与所述物理队列之间具有对应关系; 所述方法还包括: 所述处理器根据所述对应关系,将所述第二描述符存入所述物理队列; 所述物理接口卡从所述物理队列中获得所述第二描述符。
[权利要求 3]
根据权利要求2所述的方法,其特征在于,所述对应关系保存在所述内存中的第一存储空间,所述第一存储空间不可被所述虚拟机访问。
[权利要求 4]
根据权利要求1-3所述的方法,其特征在于,所述第二描述符包括所述虚拟机物理内存地址和所述数据长度,所述物理接口卡根据所述第二描述符获得所述虚拟机物理内存地址映射到所述内存中的物理地址具体包括: 所述物理接口卡向内存管理单元发送查询消息,以查询所述虚拟机物理内存地址映射到的所述内存中的物理地址,所述查询消息中包含所述虚拟机物理内存地址; 所述物理接口卡接收所述内存管理单元发送的所述内存中的物理地址。
[权利要求 5]
根据权利要求1-3中任一所述的方法,其特征在于,所述处理器将所述第一描述符转换为第二描述符,具体包括: 所述处理器根据所述第一描述符获得所述虚拟机物理内存地址; 所述处理器将所述虚拟机物理内存地址映射为所述内存中的物理地址; 所述处理器对所述内存中的物理地址以及所述数据长度进行编码得到所述第二描述符,所述第二描述符包含所述内存中的物理地址和所述数据长度。
[权利要求 6]
根据权利要求2所述的方法,其特征在于,所述虚拟队列包括虚拟发送队列,所述物理队列包括物理发送队列,所述可访问数据为待发送的数据,所述第一描述符保存在所述虚拟发送队列中; 所述处理器根据所述对应关系,将所述第二描述符存入所述物理队列,具体包括:所述处理器将所述第二描述符存入所述物理发送队列。
[权利要求 7]
根据权利要求2所述的方法,其特征在于,所述虚拟队列包括虚拟接收队列,所述物理队列包括物理接收队列,所述可访问数据为待接收的数据,所述第一描述符 保存在所述虚拟接收队列中; 所述处理器根据所述对应关系,将所述第二描述符存入所述物理队列,具体包括:所述处理器将所述第二描述符存入所述物理接收队列。
[权利要求 8]
一种主机,其特征在于,所述主机包括处理器、内存和物理接口卡,所述主机用于运行虚拟机,所述虚拟机包括虚拟机接口卡; 所述处理器用于: 从所述内存中获取第一描述符,所述第一描述符包含虚拟机物理内存地址和可访问数据的数据长度;所述虚拟机物理内存地址指向所述可访问数据在所述虚拟机的物理内存中存储的起始位置;所述第一描述符是按照所述虚拟机接口卡可识别的编码方式编码的;将所述第一描述符转换为第二描述符,其中,所述第二描述符是按照所述物理接口卡可识别的编码方式编码的; 所述物理接口卡用于: 根据所述第二描述符获得所述虚拟机物理内存地址映射到的所述内存中的物理地址,根据所述内存中的物理地址访问所述可访问数据。
[权利要求 9]
根据权利要求8中所述的主机,其特征在于,所述内存中存储有所述虚拟机接口卡的虚拟队列以及所述物理接口卡的物理队列,所述第一描述符保存在所述虚拟队列中,所述虚拟队列与所述物理队列之间具有对应关系; 所述处理器还用于执行:根据所述对应关系,将所述第二描述符存入所述物理队列; 所述物理接口卡用于执行:从所述物理队列中获得所述第二描述符。
[权利要求 10]
根据权利要求9所述的主机,其特征在于,所述对应关系保存在所述内存中的第一存储空间,所述第一存储空间不可被所述虚拟机访问。
[权利要求 11]
根据权利要求10所述的主机,其特征在于,所述第二描述符包括所述虚拟机物理内存地址和所述数据长度,所述物理接口卡具体用于向内存管理单元发送查询消息,以查询所述虚拟机物理内存地址映射到的所述内存中的物理地址,所述查询消息中包含所述虚拟机物理内存地址; 所述物理接口卡接收所述内存管理单元发送的所述内存中的物理地址。
[权利要求 12]
根据权利要求8-10中任一所述的主机,其特征在于,所述处理器具体用于: 根据所述第一描述符获得所述虚拟机物理内存地址; 将所述虚拟机物理内存地址映射为所述内存中的物理地址; 对所述内存中的物理地址以及所述数据长度进行编码得到所述第二描述符,所述第二描述符包含所述内存中的物理地址和所述数据长度。
[权利要求 13]
根据权利要求9所述的主机,其特征在于,所述虚拟队列包括虚拟发送队列,所述物理队列包括物理发送队列,所述可访问数据为待发送的数据,所述第一描述符保存在所述虚拟发送队列中; 所述处理器具体用于将所述第二描述符存入所述物理发送队列。
[权利要求 14]
根据权利要求9所述的主机,其特征在于,所述虚拟队列包括虚拟接收队列,所述物理队列包括物理接收队列,所述可访问数据为待接收的数据,所述第一描述符 保存在所述虚拟接收队列中; 所述处理器具体用于将所述第二描述符存入所述物理接收队列。
[权利要求 15]
一种非易失性计算机可读存储介质,其特征在于,所述非易失性可读存储介质包含计算机指令用于执行数据访问方法,所述方法应用于主机中,所述非易失性可读存储介质包含第一计算机指令,用于获取所述内存中的第一描述符,所述第一描述符包含虚拟机物理内存地址和可访问数据的数据长度;所述虚拟机物理内存地址指向所述可访问数据在所述虚拟机的物理内存中存储的起始位置;所述第一描述符是按照所述虚拟机接口卡可识别的编码方式编码的; 所述非易失性可读存储介质还包含第二计算机指令,用于将所述第一描述符转换为第二描述符,其中,所述第二描述符是按照所述物理接口卡可识别的编码方式编码的。
[权利要求 16]
根据权利要求15所述的非易失性计算机可读存储介质,其特征在于,所述内存中存储有所述虚拟机接口卡的虚拟队列以及所述物理接口卡的物理队列,所述第一描述符保存在所述虚拟队列中,所述虚拟队列与所述物理队列之间具有对应关系; 所述非易失性可读存储介质还包含第三计算机指令,用于根据所述对应关系,将所述第二描述符存入所述物理队列。
[权利要求 17]
根据权利要求16所述的非易失性计算机可读存储介质,其特征在于,所述对应关系保存在所述内存中的第一存储空间,所述第一存储空间不可被所述虚拟机访问。
[权利要求 18]
根据权利要求16所述的非易失性计算机可读存储介质,其特征在于,所述第二描述符包括所述虚拟机物理内存地址和所述数据长度。
[权利要求 19]
根据权利要求15-17中任一所述的非易失性计算机可读存储介质,其特征在于,所述第二计算机指令具体用于: 根据所述第一描述符获得所述虚拟机物理内存地址; 将所述虚拟机物理内存地址映射为所述内存中的物理地址; 对所述内存中的物理地址以及所述数据长度进行编码得到所述第二描述符,所述第二描述符包含所述内存中的物理地址和所述数据长度。
[权利要求 20]
根据权利要求16所述的非易失性计算机可读存储介质,其特征在于,所述虚拟队列包括虚拟发送队列,所述物理队列包括物理发送队列,所述可访问数据为待发送的数据,所述第一描述符保存在所述虚拟发送队列中。
[权利要求 21]
根据权利要求16所述的非易失性计算机可读存储介质,其特征在于,所述虚拟队列包括虚拟接收队列,所述物理队列包括物理接收队列,所述可访问数据为待接收的数据,所述第一描述符保存在所述虚拟接收队列中。
[权利要求 22]
一种数据访问的装置,其特征在于,所述装置应用于主机,所述主机包括处理器、内存和物理接口卡,虚拟机运行在所述主机上,所述虚拟机包括虚拟机接口卡; 所述装置包括获取单元和描述符转换单元;其中, 所述获取单元用于从所述内存中获取第一描述符,所述第一描述符包含虚拟机物理内存地址和可访问数据的数据长度;所述虚拟机物理内存地址指向所述可访问数据 在所述虚拟机的物理内存中存储的起始位置;所述第一描述符是按照所述虚拟机接口卡可识别的编码方式编码的; 所述描述符转换单元用于将所述第一描述符转换为第二描述符,其中,所述第二描述符是按照所述物理接口卡可识别的编码方式编码的,使得所述物理接口卡根据所述第二描述符获得所述虚拟机物理内存地址映射到所述内存中的物理地址以访问所述可访问数据。
[权利要求 23]
根据权利要求22中所述装置,其特征在于,所述内存中存储有所述虚拟机接口卡的虚拟队列以及所述物理接口卡的物理队列,所述第一描述符保存在所述虚拟队列中,所述虚拟队列与所述物理队列之间具有对应关系; 所述装置还包括存储单元,所述存储单元用于根据所述对应关系,将所述第二描述符存入所述物理队列,使得所述物理接口卡从所述物理队列中获得所述第二描述符。
[权利要求 24]
根据权利要求23所述的装置,其特征在于,所述对应关系保存在所述内存中的第一存储空间,所述第一存储空间不可被所述虚拟机访问。
[权利要求 25]
根据权利要求22-24中任一所述的装置,其特征在于,所述描述符转换单元具体用于: 根据所述第一描述符获得所述虚拟机物理内存地址; 将所述虚拟机物理内存地址映射为所述内存中的物理地址; 对所述内存中的物理地址以及所述数据长度进行编码得到所述第二描述符,所述第二描述符包含所述内存中的物理地址和所述数据长度。
[权利要求 26]
根据权利要求23所述的装置,其特征在于,所述可访问数据为待发送的数据,所述虚拟队列包括虚拟发送队列,所述第一描述符保存在所述虚拟发送队列中,所述物理队列包括物理发送队列; 所述存储单元具体用于将所述第二描述符存入所述物理发送队列。
[权利要求 27]
根据权利要求23所述的装置,其特征在于,所述虚拟队列包括虚拟接收队列,所述物理队列包括物理接收队列,所述可访问数据为待接收的数据,所述第一描述符保存在所述虚拟接收队列中; 所述存储单元具体用于将所述第二描述符存入所述物理接收队列。

附图

[ 图 0001]  
[ 图 0002]  
[ 图 0003]  
[ 图 0004]  
[ 图 0005]  
[ 图 0006]  
[ 图 0007]  
[ 图 0008]  
[ 图 0009]