CN114201268B - 一种数据处理方法、装置、设备及可读存储介质 - Google Patents
一种数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN114201268B CN114201268B CN202210144045.0A CN202210144045A CN114201268B CN 114201268 B CN114201268 B CN 114201268B CN 202210144045 A CN202210144045 A CN 202210144045A CN 114201268 B CN114201268 B CN 114201268B
- Authority
- CN
- China
- Prior art keywords
- network card
- virtual network
- queue
- host
- data
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 230000005540 biological transmission Effects 0.000 claims abstract description 39
- 238000000034 method Methods 0.000 claims description 52
- 238000004590 computer program Methods 0.000 claims description 12
- 230000003993 interaction Effects 0.000 claims description 10
- 230000000694 effects Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 8
- 238000010276 construction Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种数据处理方法、装置、设备及可读存储介质。本申请基于NVMe命名空间和一个物理网卡虚拟出至少两个虚拟网卡,那么主机和任一个虚拟网卡可基于主机内存中的SQ队列和CQ队列进行交互。具体的,主机可以直接传输数据在主机内存中的具体位置给某一虚拟网卡,那么该虚拟网卡可直接获得所需数据,因此主机和虚拟网卡之间传输一条命令需要二者进行一次交互就能完成,提升了主机和虚拟网卡之间传输效率。同时,基于NVMe命名空间虚拟出的虚拟网卡无需各自占用原物理网卡的硬件资源,因此降低虚拟网卡对原物理网卡的硬件资源占用。相应地,本申请提供的一种数据处理装置、设备及可读存储介质,也同样具有上述技术效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种数据处理方法、装置、设备及可读存储介质。
背景技术
目前,基于virtio+SRIOV可以将主机上的一个物理网卡虚拟为多个虚拟网卡。但是,SRIOV虚拟出的虚拟网卡的数据传输效率较慢。具体表现为:若主机需要传输一个命令给某一虚拟网卡,则主机需要先传输给该虚拟网卡一个有关命令的描述符,再传输给该虚拟网卡一个指示命令所在主机内存地址的描述符,之后,还需传输相关数据给该虚拟网卡。可见,在主机和虚拟网卡之间传输一条命令需要二者进行3次交互才完成,传输效率较慢。同时,SRIOV虚拟出的不同虚拟网卡需要有自己的物理寄存器地址,这需要依赖原物理网卡的硬件资源。
因此,如何提高主机和虚拟网卡之间传输效率,降低虚拟网卡对原物理网卡的资源占用,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种数据处理方法、装置、设备及可读存储介质,以提高主机和虚拟网卡之间传输效率,降低虚拟网卡对原物理网卡的资源占用。其具体方案如下:
第一方面,本申请提供了一种数据处理方法,应用于主机,所述主机的物理网卡基于NVMe命名空间虚拟有至少两个虚拟网卡,所述主机的主机内存中设有SQ队列和CQ队列,包括:
接收任一虚拟网卡发送的标识自身身份的数据结构;
若所述数据结构中存在网卡标识符,则基于所述数据结构对所述虚拟网卡进行配置;
若通过所述虚拟网卡与外界交互,则构造目标命令;所述目标命令包括:所述虚拟网卡的身份信息、处理所述目标命令所需的数据包在所述主机内存中的位置;
将所述目标命令添加至所述SQ队列,以使所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列。
优选地,获取所述数据结构中特定位置的字符串,若所述字符串为网络接口设备的标识符,则确定所述数据结构中存在所述网卡标识符;否则,确定所述数据结构中不存在所述网卡标识符。
优选地,所述基于所述数据结构对所述虚拟网卡进行配置,包括:
从所述数据结构中获取所述虚拟网卡的传输属性信息;所述传输属性信息包括:MAC地址和最大传输速率;
将所述传输属性信息配置于所述虚拟网卡。
优选地,不同虚拟网卡的传输属性信息不同。
优选地,所述物理网卡还包括:基于硬件资源实现的虚拟交换机,所述虚拟交换机用于连接所述至少两个虚拟网卡与多个MAC接口。
优选地,所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列,包括:
若所述目标命令为发往外界的命令,则在主机IOMMU的辅助下,所述虚拟网卡基于所述SQ队列中的所述目标命令使用DMA方式从所述位置获取所述数据包后,将所述数据包发出,并将发送成功消息添加至所述CQ队列。
优选地,所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列,包括:
若所述目标命令为接收外界数据的命令,则在主机IOMMU的辅助下,所述虚拟网卡基于所述SQ队列中的所述目标命令使用DMA方式从所述位置获取所述数据包后,接收与所述数据包匹配的外界数据,在主机IOMMU的辅助下,使用DMA方式将所述外界数据存储至所述主机内存,将接收成功消息添加至所述CQ队列。
优选地,若所述主机中设有虚拟机,则所述虚拟机绑定至少一个虚拟网卡,所述虚拟机与绑定的虚拟网卡通过所述SQ队列和所述CQ队列进行交互;
其中,所述SQ队列和所述CQ队列设置于所述虚拟机占用的主机内存中。
优选地,所述位置通过至少一个数据包描述符记录,任一个数据包描述符包括:数据包在内存中的首地址、数据长度、用于指向下一数据包描述符的指针。
优选地,一个SQ队列和一个CQ队列组成一对队列,各个虚拟网卡共享至少一对队列,或每一虚拟网卡绑定至少一对队列。
第二方面,本申请提供了一种数据处理装置,应用于主机,所述主机的物理网卡基于NVMe命名空间虚拟有至少两个虚拟网卡,所述主机的内存中设有SQ队列和CQ队列,包括:
接收模块,用于接收任一虚拟网卡发送的标识自身身份的数据结构;
配置模块,用于若所述数据结构中存在网卡标识符,则基于所述数据结构对所述虚拟网卡进行配置;
交互模块,用于若通过所述虚拟网卡与外界交互,则构造目标命令;所述目标命令包括:所述虚拟网卡的身份信息、处理所述目标命令所需的数据包在所述主机内存中的位置;
发送模块,用于将所述目标命令添加至所述SQ队列,以使所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列。
第三方面,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的数据处理方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据处理方法。
通过以上方案可知,本申请提供了一种数据处理方法,应用于主机,所述主机的物理网卡基于NVMe命名空间虚拟有至少两个虚拟网卡,所述主机的主机内存中设有SQ队列和CQ队列,包括:接收任一虚拟网卡发送的标识自身身份的数据结构;若所述数据结构中存在网卡标识符,则基于所述数据结构对所述虚拟网卡进行配置;若通过所述虚拟网卡与外界交互,则构造目标命令;所述目标命令包括:所述虚拟网卡的身份信息、处理所述目标命令所需的数据包在所述主机内存中的位置;将所述目标命令添加至所述SQ队列,以使所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列。
可见,本申请基于NVMe命名空间和一个物理网卡虚拟出至少两个虚拟网卡,那么主机和任一个虚拟网卡可基于主机内存中的SQ队列和CQ队列进行交互,具体包括:主机传输一个命令给某一虚拟网卡时,构造包括虚拟网卡身份信息和数据包在主机内存中位置的目标命令,然后将目标命令添加至SQ队列,以使虚拟网卡基于SQ队列中的目标命令从位置直接获取并处理数据包后,将处理结果添加至CQ队列。可见,主机可以直接传输数据在主机内存中的具体位置给某一虚拟网卡,那么该虚拟网卡可直接获得所需数据,因此主机和虚拟网卡之间传输一条命令需要二者进行一次交互就能完成,提升了主机和虚拟网卡之间传输效率。同时,基于NVMe命名空间虚拟出的虚拟网卡无需各自占用原物理网卡的硬件资源,因此降低虚拟网卡对原物理网卡的硬件资源占用。
相应地,本申请提供的一种数据处理装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据处理方法流程图;
图2为本申请公开的一种数据包描述符示意图;
图3为本申请公开的一种物理网卡内部的vSwtich交换机示意图;
图4为本申请公开的一种计算机系统示意图;
图5为本申请公开的一种NVMe Identify Namespace过程示意图;
图6为本申请公开的一种主机使用虚拟网卡设备发送网络数据包的流程图;
图7为本申请公开的一种主机使用虚拟网卡设备接收网络数据包的流程图;
图8为本申请公开的一种设有多个Namespace的物理网卡结构示意图;
图9为本申请公开的一种虚拟机使用虚拟网卡收发数据的过程示意图;
图10为本申请公开的一种数据处理装置示意图;
图11为本申请公开的一种电子设备示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,基于virtio虚拟出的虚拟网卡与主机间的传输效率较慢,还需要依赖原物理网卡的硬件资源。为此,本申请提供了一种数据处理方案,能够基于NVMe命名空间和一个物理网卡虚拟出至少两个虚拟网卡,提高主机和虚拟网卡之间传输效率,降低虚拟网卡对原物理网卡的资源占用。
本申请涉及的专用名称解释:
PCIe(Peripheral Component Interconnect express):一种高速串行计算机扩展总线标准。
NVMe(Non-Volatile Memory express):一种基于PCIe的存储设备规范,用于高速固态硬盘SSD主机接口。
Virtio:一种应用于虚拟化领域的I/O半虚拟规范,定义虚拟设备I/O接口规范。
ASIC(Application-Specific Integrated Circuit):专用集成电路。
FPGA(Field-Programmable Gate Array):现场可编程门阵列。
SQ(Submissions Queue):命令提交队列,用于主机向NVMe设备提交命令。
CQ(Completion Queue):命令完成队列,用于NVMe设备向主机返回命令完成状态。
参见图1所示,本申请实施例公开了一种数据处理方法,应用于主机,主机的物理网卡基于NVMe命名空间虚拟有至少两个虚拟网卡,主机的主机内存中设有SQ队列和CQ队列,包括:
S101、接收任一虚拟网卡发送的标识自身身份的数据结构。
基于NVMe命名空间可以将一个存储设备划分为多个存储空间。而本实施例将主机上的一个物理网卡基于NVMe命名空间虚拟出至少两个虚拟网卡,因此各个虚拟网卡都有自己的身份信息,该身份信息一方面可以区分不同虚拟网卡,另一方面可以让主机辨别出当前虚拟设备是一个网卡设备,而不是存储设备。
在本实施例中,数据结构具体为身份命名空间(Identify Namespace)数据结构,该数据结构与存储设备Namespace不同的是:不在Namespace中设置容量、数据块大小等存储设备属性值,而在数据结构中的特定位置设置一个网卡设备标识符(即网卡标识符),用于向主机表示该Namespace是一个网络接口设备,也就是一个网卡。该标识符可以是一个数字,也可以是一个字符串。所谓的特定位置,指的是数据结构中一个固定的偏移量位置,该偏移量位于NVMe标准定义的Identify Namespace数据结构的厂商自定义区域。进一步的,Identify Namespace数据结构可以包括网卡专属的一些属性,包括网卡的MAC地址,网卡最大传输数据长度等信息。这些专属的属性同样位于NVMe标准定义的Identify Namespace数据结构的厂商自定义区域。
S102、若数据结构中存在网卡标识符,则基于数据结构对虚拟网卡进行配置。
主机收到标识虚拟网卡身份的数据结构后,查询该数据结构的特定位置,若数据结构中存在网卡标识符,则说明当前设备为网卡设备,那么从数据结构中读取该虚拟网卡的专有属性并进行配置。配置完成后,主机可通过该虚拟网卡与外界进行数据交互。
在一种具体实施方式中,获取数据结构中特定位置的字符串,若字符串为网络接口设备的标识符,则确定数据结构中存在网卡标识符;否则,确定数据结构中不存在网卡标识符,此时可确定发送数据结构的设备为存储设备,那么可基于数据结构中的相关信息对该存储设备进行配置,以便后续主机往该存储设备中写入数据或读取该存储设备中的数据。
在一种具体实施方式中,基于数据结构对虚拟网卡进行配置,包括:从数据结构中获取虚拟网卡的传输属性信息;传输属性信息包括:MAC地址和最大传输速率、VLAN配置信息等;将传输属性信息配置于虚拟网卡。
在一种具体实施方式中,不同虚拟网卡的传输属性信息不同。也即:不同虚拟网卡的MAC地址不同,最大传输速率也可以不同。
S103、若通过虚拟网卡与外界交互,则构造目标命令;目标命令包括:虚拟网卡的身份信息、处理目标命令所需的数据包在主机内存中的位置。
为了便于在目标命令中记录数据包在主机内存中的具体位置,可以使用数据包描述符进行记录。在一种具体实施方式中,数据包在主机内存中的位置通过至少一个数据包描述符记录,任一个数据包描述符包括:数据包在内存中的首地址、数据长度、用于指向下一数据包描述符的指针(在有下一数据包描述符的情况下)。
如图2所示,一个数据包描述符可以包括:1、数据指针:指向数据包在内存中的首地址。2、数据长度:表示要发送或者接收的数据长度。3、可选的链表指针:用于指向下一个数据包描述符。在具体实施时,可以使用NVMe标准中定义的规范实现数据包描述符,也可以使用厂商自定义的结构实现数据包描述符。
S104、将目标命令添加至SQ队列,以使虚拟网卡基于SQ队列中的目标命令从位置获取并处理数据包后,将处理结果添加至CQ队列。
具体的,基于主机内存中的SQ队列和CQ队列可以使虚拟网卡将主机发往外界的命令发出,或收外界数据给主机。其中,接收外界数据的命令、发往外界的命令可以是NVMe标准规定的读写命令,也可以是厂商自定义的命令。
在一种具体实施方式中,虚拟网卡基于SQ队列中的目标命令从位置获取并处理数据包后,将处理结果添加至CQ队列,包括:若目标命令为发往外界的命令,则在主机IOMMU的辅助下,虚拟网卡基于SQ队列中的目标命令使用DMA方式从位置获取数据包后,将数据包发出,并将发送成功消息添加至CQ队列。
在一种具体实施方式中,虚拟网卡基于SQ队列中的目标命令从位置获取并处理数据包后,将处理结果添加至CQ队列,包括:若目标命令为接收外界数据的命令,则在主机IOMMU的辅助下,虚拟网卡基于SQ队列中的目标命令使用DMA方式从位置获取数据包后,接收与数据包匹配的外界数据,在主机IOMMU的辅助下,使用DMA方式将外界数据存储至主机内存,将接收成功消息添加至CQ队列。
本实施例基于NVMe命名空间和一个物理网卡虚拟出至少两个虚拟网卡,那么主机和任一个虚拟网卡可基于主机内存中的SQ队列和CQ队列进行交互,具体包括:主机传输一个命令给某一虚拟网卡时,构造包括虚拟网卡身份信息和数据包在主机内存中位置的目标命令,然后将目标命令添加至SQ队列,以使虚拟网卡基于SQ队列中的目标命令从位置直接获取并处理数据包后,将处理结果添加至CQ队列。
可见,在本实施例中,主机可以直接传输数据在主机内存中的具体位置给某一虚拟网卡,那么该虚拟网卡可直接获得所需数据,因此主机和虚拟网卡之间传输一条命令需要二者进行一次交互就能完成,提升了主机和虚拟网卡之间传输效率。同时,基于NVMe命名空间虚拟出的虚拟网卡无需各自占用原物理网卡的硬件资源,因此降低虚拟网卡对原物理网卡的硬件资源占用。
基于上述实施例,需要说明的是,在一种具体实施方式中,物理网卡还包括:基于硬件资源实现的虚拟交换机,虚拟交换机用于连接至少两个虚拟网卡与多个MAC接口。
如图3所示,一个智能物理网卡内部有硬件实现的vSwtich交换机,每一个虚拟网卡都连接在vSwitch交换机上,该交换机负责将各个虚拟网卡的网络接口收发的数据进行转发。智能物理网卡是一个PCIe接口的网络设备,通常使用ASIC或者FPGA实现。
基于上述实施例,需要说明的是,若主机中设有虚拟机,则虚拟机可以绑定至少一个虚拟网卡,虚拟机与绑定的虚拟网卡通过SQ队列和CQ队列进行交互时,SQ队列和CQ队列设置于虚拟机占用的主机内存中。也即,若主机中的一个虚拟机需要通过其绑定的虚拟网卡与外界进行交互,那么交互所用的SQ队列和CQ队列需要被设置在该虚拟机占用的主机内存中。
基于上述实施例,需要说明的是,在一种具体实施方式中,一个SQ队列和一个CQ队列组成一对队列,各个虚拟网卡共享至少一对队列,或每一虚拟网卡绑定至少一对队列。
具体的,主机内存中最多可设置65535个I/O队列,这些队列可被不同虚拟网卡共享,也可以给不同虚拟网卡分配并绑定其专用的队列。在同一时刻,一个虚拟网卡可以同时使用多个队列进行数据收发。例如:一个虚拟网卡有N个数据收发任务需要同时进行,那么可以同时操作N个队列来完成这N个任务。
其中,各个虚拟网卡共享队列,即共享主机内存,那么各虚拟网卡不分别占用原物理网卡的硬件资源,如此可减少硬件资源的消耗。
基于上述实施例,需要说明的是,基于NVMe命名空间和一个物理网卡虚拟出多个虚拟网卡,也就是利用NVMe Namespace实现虚拟网卡设备,即:NVMe Identify Namespace过程,该过程的主要作用是使主机获取虚拟网卡设备信息,将Namespace识别为一个网络设备接口,而非一个存储设备。
如图4所示,一个计算机系统可以包括:主机和基于NVMe PCIe接口的物理网卡。主机和物理网卡通过PCIe接口连接。物理网卡内部包括:PCIe接口:负责在主机和网卡之间传输数据,实现PCIe设备的链路层以下协议。NVMe PCIe设备接口:负责实现NVMe PCIe设备规范,具体实现NVMe设备的寄存器、Queue管理和DMA管理。网络接口Namespace:响应主机的Identify Namespace命令,通过Namespace数据结构将虚拟网卡的属性返回给主机,使主机驱动程序软件能够发现该Namespace为一个网络接口设备,并根据这些数据对虚拟网卡设备进行配置。网卡MAC:将上层发送的网络数据包封装为链路层数据包,并通过硬件发送到网络传输介质。接收网络传输介质上的数据,并将承载的数据包发送给上层。
请参见图5,主机通过NVMe Identify过程发现虚拟网卡接口Namespace过程包括:
1、虚拟网卡接收到主机发出的Identify Namespace命令。
2、虚拟网卡开始构造Identify Namespace数据结构。
3、构造完Identify Namespace数据结构后,虚拟网卡将数据结构返回给主机。
4、主机在接收到数据结构后,通过查询数据结构中特定位置上的数据,确定是否为网卡设备标识符,如果符合,则在主机侧枚举出虚拟网卡。并从Identify Namespace数据结构中读取虚拟网卡的专有属性并进行配置。
配置完成后,网络数据包的发送过程请参见图6,图6示意了使用虚拟网卡设备发送网络数据包的流程,具体包括:
1、主机构造数据发送命令。
主机通过SGL描述符构造命令,该命令可以是NVMe标准的Write命令,也可以是厂商自定义命令。命令必须包含两个部分:a)目标网络接口的Namespace ID(即虚拟网卡的身份信息),用于表示当数据发送命令的目标网络接口标识符。b)数据包描述符指针,用于描述要发送数据包在内存中存放的缓冲区信息。
2、构造完毕后,命令被主机投递到NVMe PCIe设备的命令提交队列,主机通过写Doorbell寄存器通知虚拟网卡有新的命令。
3、虚拟网卡收到Doorbell通知后,基于SGL描述符将数据包搬移到物理网卡给的临时存储空间,解析命令。
4、虚拟网卡操作MAC层将数据包发送到网络介质。
5、虚拟网卡在完成队列中添加条目,通知主机数据包发送完成。
配置完成后,网络数据包的接收过程请参见图7,图7示意了使用虚拟网卡接收网络数据包的流程,具体包括:
1、主机构造数据接收命令。
该命令可以是NVMe标准的Read命令,也可以是厂商自定义命令。命令必须包含两个部分:a)目标网络接口的Namespace ID,用于表示当数据接收命令的目标网络接口标识符。b)数据包描述符指针,用于描述接收的接口数据包在内存中存放的缓冲区信息。
数据接收命令构造完毕后,命令被主机投递到NVMe设备的命令提交队列,然后主机通过Doorbell寄存器通知虚拟网卡有新的命令。
2、虚拟网卡收到Doorbell通知后,根据命令中的SGL将从MAC层接收到的数据包搬移到主机内存。
3、虚拟网卡在完成队列中添加条目,通知主机有新的数据包接收完成。
可见,本实施例能够基于一个物理网卡实体,通过设置多个NVMe Namespace来虚拟出多个网卡接口,即多个虚拟网卡。一个虚拟网卡对应一个Namespace,对应一个网卡接口,从而实现多个网卡接口。
如图8所示,一个智能物理网卡中有多个Namespace,每一个Namespace对应一个网卡接口,通过为每个Namespace设置不同的Namesapce ID来对这些Namesapce进行区分。智能网卡有一个或多个MAC接口,用于连接网络介质。智能网卡内部还有硬件实现的vSwtich交换机,Namespace对应的网络接口和MAC接口都连接在vSwitch交换机上。交换机负责在各个网络接口之间转发网络数据包。
对于主机而言,通过Identify过程发现多网卡接口,并枚举出多个虚拟网卡设备。每个虚拟网卡设备加载网络接口驱动,从而与主机内部的虚拟机通信,完成虚拟机网络数据的传输。虚拟机通过NVMe队列机制,在IOMMU的辅助下直接使用虚拟网卡收发数据,省去了数据包在虚拟机和主机之间的拷贝。
因此,在主机中设有虚拟机的情况下,虚拟机通过NVMe队列让虚拟网卡收发数据的过程可参见图9。
如图9所示,NVMe的队列分为两种,Admin队列和I/O队列。其中Admin队列只有一对,用于主机和虚拟网卡交互Admin命令,完成对虚拟网卡的控制。I/O队列可以有65535对,用于在主机和虚拟网卡之间传输数据。
在主机中设有虚拟机的情况下,Admin队列创建在主机的物理内存空间中,该队列由所有的虚拟网卡共享。
I/O队列创建在虚拟机占用的主机内存中,且I/O队列与网卡接口绑定。即:一个虚拟机与某一虚拟网卡绑定,那么该虚拟机所用的I/O队列与相应虚拟网卡的网卡接口绑定,该虚拟机仅使用该虚拟网卡。虚拟机的网络数据包存放在虚拟机占用的主机内存中。
具体的,虚拟机收发网络数据的流程包括:
1、在虚拟机占用的主机内存中构建数据包buffer,并向IO SQ队列中添加IO命令。
2、虚拟机通过其绑定的虚拟网卡的接口驱动更新对应Doorbell寄存器,以通知虚拟网卡有新的IO请求。
3、虚拟网卡在收到新的IO请求,调用内部的DMA控制器,在主机的IOMMU协助下,将IO命令搬移到网卡内部。
4、虚拟网卡解析命令,如果是数据发送命令,则在主机IOMMU的协助下,将主机内存中的数据包通过DMA搬移到网卡内部,并通过对应的MAC发送到网络介质。如果是数据接收命令,则在主机IOMMU的协助下,使用DMA控制器将从MAC层接收到的数据包搬移到主机内存。
5、虚拟网卡生成CQ条目,并在IOMMU的协助下将条目写入主机内存中的CQ队列,同时通过网卡Namespace接口通知虚拟机。
可见,虚拟机使用虚拟网卡收发数据的过程,与主机使用虚拟网卡收发数据的过程类似,只是需要留意收发数据所用的队列是否在虚拟机所用的主机内存中。
综上,本实施例可以在同一个PCIe物理网卡设备实现多网卡接口,据此进行数据传输时,有更好的数据传输效率。并且,NVMe标准在软件支持上较为成熟,因此实现的成本较低。
下面对本申请实施例提供的一种数据处理装置进行介绍,下文描述的一种数据处理装置与上文描述的一种数据处理方法可以相互参照。
参见图10所示,本申请实施例公开了一种数据处理装置,应用于主机,主机的物理网卡基于NVMe命名空间虚拟有至少两个虚拟网卡,主机的内存中设有SQ队列和CQ队列,包括:
接收模块1001,用于接收任一虚拟网卡发送的标识自身身份的数据结构;
配置模块1002,用于若数据结构中存在网卡标识符,则基于数据结构对虚拟网卡进行配置;
交互模块1003,用于若通过虚拟网卡与外界交互,则构造目标命令;目标命令包括:虚拟网卡的身份信息、处理目标命令所需的数据包在主机内存中的位置;
发送模块1004,用于将目标命令添加至SQ队列,以使虚拟网卡基于SQ队列中的目标命令从位置获取并处理数据包后,将处理结果添加至CQ队列。
在一种具体实施方式中,获取数据结构中特定位置的字符串,若字符串为网络接口设备的标识符,则确定数据结构中存在网卡标识符;否则,确定数据结构中不存在网卡标识符。
在一种具体实施方式中,配置模块具体用于:
从数据结构中获取虚拟网卡的传输属性信息;传输属性信息包括:MAC地址和最大传输速率;将传输属性信息配置于虚拟网卡。
在一种具体实施方式中,不同虚拟网卡的传输属性信息不同。
在一种具体实施方式中,物理网卡还包括:基于硬件资源实现的虚拟交换机,虚拟交换机用于连接至少两个虚拟网卡与多个MAC接口。
在一种具体实施方式中,若目标命令为发往外界的命令,则在主机IOMMU的辅助下,虚拟网卡基于SQ队列中的目标命令使用DMA方式从位置获取数据包后,将数据包发出,并将发送成功消息添加至CQ队列。
在一种具体实施方式中,若目标命令为接收外界数据的命令,则在主机IOMMU的辅助下,虚拟网卡基于SQ队列中的目标命令使用DMA方式从位置获取数据包后,接收与数据包匹配的外界数据,在主机IOMMU的辅助下,使用DMA方式将外界数据存储至主机内存,将接收成功消息添加至CQ队列。
在一种具体实施方式中,若主机中设有虚拟机,则虚拟机绑定至少一个虚拟网卡,虚拟机与绑定的虚拟网卡通过SQ队列和CQ队列进行交互;其中,SQ队列和CQ队列设置于虚拟机占用的主机内存中。
在一种具体实施方式中,位置通过至少一个数据包描述符记录,任一个数据包描述符包括:数据包在内存中的首地址、数据长度、用于指向下一数据包描述符的指针。
在一种具体实施方式中,一个SQ队列和一个CQ队列组成一对队列,各个虚拟网卡共享至少一对队列,或每一虚拟网卡绑定至少一对队列。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种数据处理装置,能够基于NVMe命名空间和一个物理网卡虚拟出至少两个虚拟网卡,提高主机和虚拟网卡之间传输效率,降低虚拟网卡对原物理网卡的资源占用。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种数据处理方法及装置可以相互参照。
参见图11所示,本申请实施例公开了一种电子设备,包括:
存储器1101,用于保存计算机程序;
处理器1102,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种数据处理方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据处理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种数据处理方法,其特征在于,应用于主机,所述主机的物理网卡基于NVMe命名空间虚拟有至少两个虚拟网卡,所述主机的主机内存中设有SQ队列和CQ队列,包括:
接收任一虚拟网卡发送的标识自身身份的数据结构;
若所述数据结构中存在网卡标识符,则基于所述数据结构对所述虚拟网卡进行配置;
若通过所述虚拟网卡与外界交互,则构造目标命令;所述目标命令包括:所述虚拟网卡的身份信息、处理所述目标命令所需的数据包在所述主机内存中的位置;
将所述目标命令添加至所述SQ队列,以使所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列;
其中,一个SQ队列和一个CQ队列组成一对队列,每一虚拟网卡绑定至少一对队列。
2.根据权利要求1所述的方法,其特征在于,
获取所述数据结构中特定位置的字符串,若所述字符串为网络接口设备的标识符,则确定所述数据结构中存在所述网卡标识符;否则,确定所述数据结构中不存在所述网卡标识符。
3.根据权利要求1所述的方法,其特征在于,所述基于所述数据结构对所述虚拟网卡进行配置,包括:
从所述数据结构中获取所述虚拟网卡的传输属性信息;所述传输属性信息包括:MAC地址和最大传输速率;
将所述传输属性信息配置于所述虚拟网卡。
4.根据权利要求3所述的方法,其特征在于,不同虚拟网卡的传输属性信息不同。
5.根据权利要求1所述的方法,其特征在于,所述物理网卡还包括:基于硬件资源实现的虚拟交换机,所述虚拟交换机用于连接所述至少两个虚拟网卡与多个MAC接口。
6.根据权利要求1所述的方法,其特征在于,所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列,包括:
若所述目标命令为发往外界的命令,则在主机IOMMU的辅助下,所述虚拟网卡基于所述SQ队列中的所述目标命令使用DMA方式从所述位置获取所述数据包后,将所述数据包发出,并将发送成功消息添加至所述CQ队列。
7.根据权利要求1所述的方法,其特征在于,所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列,包括:
若所述目标命令为接收外界数据的命令,则在主机IOMMU的辅助下,所述虚拟网卡基于所述SQ队列中的所述目标命令使用DMA方式从所述位置获取所述数据包后,接收与所述数据包匹配的外界数据,在主机IOMMU的辅助下,使用DMA方式将所述外界数据存储至所述主机内存,将接收成功消息添加至所述CQ队列。
8.根据权利要求1至7任一项所述的方法,其特征在于,
若所述主机中设有虚拟机,则所述虚拟机绑定至少一个虚拟网卡,所述虚拟机与绑定的虚拟网卡通过所述SQ队列和所述CQ队列进行交互;
其中,所述SQ队列和所述CQ队列设置于所述虚拟机占用的主机内存中。
9.根据权利要求1至7任一项所述的方法,其特征在于,
所述位置通过至少一个数据包描述符记录,任一个数据包描述符包括:数据包在内存中的首地址、数据长度、用于指向下一数据包描述符的指针。
10.一种数据处理装置,其特征在于,应用于主机,所述主机的物理网卡基于NVMe命名空间虚拟有至少两个虚拟网卡,所述主机的内存中设有SQ队列和CQ队列,包括:
接收模块,用于接收任一虚拟网卡发送的标识自身身份的数据结构;
配置模块,用于若所述数据结构中存在网卡标识符,则基于所述数据结构对所述虚拟网卡进行配置;
交互模块,用于若通过所述虚拟网卡与外界交互,则构造目标命令;所述目标命令包括:所述虚拟网卡的身份信息、处理所述目标命令所需的数据包在所述主机内存中的位置;
发送模块,用于将所述目标命令添加至所述SQ队列,以使所述虚拟网卡基于所述SQ队列中的所述目标命令从所述位置获取并处理所述数据包后,将处理结果添加至所述CQ队列;
其中,一个SQ队列和一个CQ队列组成一对队列,每一虚拟网卡绑定至少一对队列。
11.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至9任一项所述的方法。
12.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210144045.0A CN114201268B (zh) | 2022-02-17 | 2022-02-17 | 一种数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210144045.0A CN114201268B (zh) | 2022-02-17 | 2022-02-17 | 一种数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114201268A CN114201268A (zh) | 2022-03-18 |
CN114201268B true CN114201268B (zh) | 2022-05-24 |
Family
ID=80645479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210144045.0A Active CN114201268B (zh) | 2022-02-17 | 2022-02-17 | 一种数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114201268B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115408178B (zh) * | 2022-10-31 | 2023-02-21 | 北京登临科技有限公司 | 用于保护对片上资源的访问的方法、介质和电子设备 |
CN116723162B (zh) * | 2023-08-10 | 2023-11-03 | 浪潮电子信息产业股份有限公司 | 一种网络首包处理方法、系统、装置、介质及异构设备 |
CN117234972B (zh) * | 2023-08-30 | 2024-08-06 | 中科驭数(北京)科技有限公司 | 一种主机数据读取方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9501245B2 (en) * | 2014-05-02 | 2016-11-22 | Cavium, Inc. | Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host |
US10235097B2 (en) * | 2015-07-21 | 2019-03-19 | Samsung Electronics Co., Ltd. | Area and performance optimized namespace sharing method in virtualized PCIE based SSD controller |
CN111651269A (zh) * | 2020-05-18 | 2020-09-11 | 青岛镕铭半导体有限公司 | 实现设备虚拟化的方法、装置及计算机可读存储介质 |
CN113312143B (zh) * | 2021-03-03 | 2024-01-23 | 阿里巴巴新加坡控股有限公司 | 云计算系统、命令处理方法及虚拟化仿真装置 |
-
2022
- 2022-02-17 CN CN202210144045.0A patent/CN114201268B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114201268A (zh) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114201268B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US10997093B2 (en) | NVME data processing method and NVME device | |
CN109976925B (zh) | 一种基于混合多系统核间实时通信的方法和系统 | |
US9727503B2 (en) | Storage system and server | |
US11829309B2 (en) | Data forwarding chip and server | |
EP3614253A1 (en) | Data processing method and storage system | |
CN106874128B (zh) | 数据传输方法及装置 | |
CN108984465B (zh) | 一种消息传输方法及设备 | |
CN114553635B (zh) | Dpu网络设备中的数据处理方法、数据交互方法及产品 | |
US20220222016A1 (en) | Method for accessing solid state disk and storage device | |
JP6498844B2 (ja) | コンピュータデバイス及びコンピュータデバイスによりデータを読み取る/書き込むための方法 | |
US20230152978A1 (en) | Data Access Method and Related Device | |
CN104731635A (zh) | 一种虚拟机访问控制方法,及虚拟机访问控制系统 | |
CN115185880B (zh) | 一种数据存储方法及装置 | |
CN109857553B (zh) | 内存管理方法及装置 | |
CN107453845B (zh) | 应答确认方法及设备 | |
WO2020029619A1 (zh) | 数据处理的方法、设备和服务器 | |
US20240356886A1 (en) | Network Node Configuration Method and Apparatus, and Access Request Processing Method and Apparatus | |
CN114706531A (zh) | 数据处理方法、装置、芯片、设备及介质 | |
US20230342087A1 (en) | Data Access Method and Related Device | |
CN102855208B (zh) | 一种实现文件交互的系统及方法 | |
WO2023040330A1 (zh) | 数据处理的方法、装置以及系统 | |
US11979459B1 (en) | Configuration of data connections between a host and a shared network adapter | |
CN118519589B (zh) | 一种数据处理方法、分布式存储系统、产品、设备及介质 | |
CN102752223B (zh) | 并行系统间数据传输方法及其系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |