CN107515775B - 一种数据传输方法及装置 - Google Patents

一种数据传输方法及装置 Download PDF

Info

Publication number
CN107515775B
CN107515775B CN201610428164.3A CN201610428164A CN107515775B CN 107515775 B CN107515775 B CN 107515775B CN 201610428164 A CN201610428164 A CN 201610428164A CN 107515775 B CN107515775 B CN 107515775B
Authority
CN
China
Prior art keywords
virtual
accelerated
accelerator
data
target
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
Application number
CN201610428164.3A
Other languages
English (en)
Other versions
CN107515775A (zh
Inventor
龚磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to CN201610428164.3A priority Critical patent/CN107515775B/zh
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111358155.9A priority patent/CN114217902A/zh
Priority to CN202111358195.3A priority patent/CN114218133A/zh
Priority to EP17812658.7A priority patent/EP3460658A4/en
Priority to PCT/CN2017/087890 priority patent/WO2017215547A1/zh
Publication of CN107515775A publication Critical patent/CN107515775A/zh
Priority to US16/214,551 priority patent/US11182190B2/en
Priority to US17/517,862 priority patent/US11922202B2/en
Application granted granted Critical
Publication of CN107515775B publication Critical patent/CN107515775B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

本发明实施例公开了一种数据传输方法及装置,应用于宿主机中的守护进程,该方法包括:获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息,所述执行加速操作所需的信息采用预定义的数据结构,所述数据结构占用所述目标虚拟加速器的虚拟输入/输出环的一个单元项;根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息;将所述硬件加速器能够识别的信息发送给所述硬件加速器,所述硬件加速器用于根据所述硬件加速器能够识别的信息获取待加速数据,并对所述待加速数据执行加速操作。实施本发明实施例可以提高数据包的传输效率。

Description

一种数据传输方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种数据传输方法及装置。
背景技术
网络功能虚拟化(Network Function Virtualization,NFV)以“软件+通用硬件”的组合形态,实现了硬件通用化,使得网络设备功能不再依赖于专用硬件,硬件资源可以充分灵活共享,实现新业务的快速开发和部署,并基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等。
然而,NFV硬件通用化后,通用硬件设备处理能力不足,导致数据包的处理时间延长,吞吐不足,故需要引入硬件加速设备加速数据包的处理。可见,如何增强数据包的吞吐能力,提高数据包的传输效率是一个亟待解决的技术难题。
发明内容
本发明实施例提供了一种数据传输方法及装置,可以提高数据包的传输效率。
本发明实施例第一方面公开了一种数据传输方法,应用于宿主机中的守护进程,所述宿主机上部署有虚拟机,所述宿主机中还部署有硬件加速器以及为所述虚拟机配置的至少一个虚拟加速器,所述方法包括:获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息,所述执行加速操作所需的信息采用预定义的数据结构,所述数据结构占用所述目标虚拟加速器的虚拟输入/输出环的一个单元项;根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息;将所述硬件加速器能够识别的信息发送给所述硬件加速器,所述硬件加速器用于根据所述硬件加速器能够识别的信息获取待加速数据,并对所述待加速数据执行加速操作。
其中,该执行加速操作所需的信息包括待加速数据的虚拟机物理地址、待加速数据的长度和存放加速结果的虚拟机物理地址,可选的,还可以包括加速类型参数(如算法类型、操作类型)等。该待加速数据可以包括但不限于网络包、存储包以及待加密的文件等,待加速数据都存储在内存(主机内存缓冲区或虚拟机内存)中。
其中,硬件加速器可以为多队列硬件加速器(即支持多个虚拟功能VF,每个VF相当于一个硬件加速器),或者,硬件加速器也可以为单队列硬件加速器。
可见,执行加速操作所需的信息采用了预定义的数据结构进行封装,该数据结构占用目标虚拟加速器的虚拟输入/输出环的一个单元项,这可以极大增强了虚拟输入/输出环的吞吐能力,在单位时间内,传输的数据包更多,从而能够提高数据包的传输效率。
此外,宿主机中的守护进程运行在宿主机用户态中,不经过内核协议栈,在用户态直接访问硬件加速器,从而能够最大限度的减少内核态与用户态的上下文切换次数,降低切换开销。
在一个可能的实施方式中,所述根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息包括:根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机物理地址的映射关系,确定所述待加速数据的主机物理地址;所述将所述硬件加速器能够识别的信息发送给所述硬件加速器包括:将所述待加速数据的主机物理地址发送给所述硬件加速器;其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
在这种可能的实施方式中,由于预先建立了虚拟机物理地址与主机物理地址的映射关系,硬件加速器能识别主机物理地址,故虚拟机不需要将虚拟内存中的待加速数据拷贝到主机内存缓冲区中,从而实现了发包方向零拷贝。发包方向零拷贝指虚拟机将执行加速操作所需的信息下发给硬件加速器的过程中不需要将虚拟机内存中的待加速数据拷贝到主机内存缓冲区中。
在一个可能的实施方式中,所述硬件加速器支持多个虚拟功能VF,所述确定所述待加速数据的主机物理地址之后,所述方法还包括:从预设的虚拟加速器与VF的绑定关系中,查询所述目标虚拟加速器绑定的目标VF;所述将所述待加速数据的主机物理地址发送给所述硬件加速器包括:将所述待加速数据的主机物理地址发送给所述目标VF,所述目标VF用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
其中,预先建立虚拟加速器与VF的绑定关系,使得各个虚拟加速器互不干扰,最大限度地利用硬件加速器的加速能力,性能最优。
在一个可能的实施方式中,所述方法还包括:当所述待加速数据被加速处理完之后,根据所述绑定关系中所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
这样,有利于目标虚拟加速器对应的虚拟机可以根据目标虚拟加速器的虚拟输入/输出环中单元项的标识,获取虚拟机内存中待加速数据被加速处理完之后生成的加速结果,这种方式实现了收包方向零拷贝。其中,收包方向零拷贝是指硬件加速器(目标VF)对待加速数据进行加速处理完之后,生成的加速结果也不需要从主机内存缓冲区中拷贝到虚拟机内存中。
可见,针对多队列硬件加速器的情况,可以从绑定关系中获得目标虚拟加速器的标识,上述采用了收发双向零拷贝方案(即发包方向零拷贝以及收包方向零拷贝)。在收发双向零拷贝的整个过程中,待加速数据以及生成的加速结果一直存储在虚拟机内存中。整个加速数据流全路径零拷贝,几乎无额外的CPU消耗。同时,本发明方案保留了半虚拟化技术的优势,如VM的可迁移性及虚拟网络功能容器VNFC代码的可移植性(即硬件不感知性)。
在一个可能的实施方式中,所述获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息之前,所述方法还包括:若所述硬件加速器支持多个虚拟功能VF,从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系。其中,该目标VF为未被使用的VF中的任一个。
在一个可能的实施方式中,所述将所述待加速数据的主机物理地址发送给所述硬件加速器之前,所述方法还包括:记录所述目标虚拟加速器的标识。
其中,可以在主机内存缓冲区的指定位置记录目标虚拟加速器的标识。该指定位置比如:偏移4个字节的空间、偏移8个字节的空间等。
在一个可能的实施方式中,所述方法还包括:当所述待加速数据被加速处理完后,根据记录的所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
这样,有利于目标虚拟加速器对应的虚拟机可以根据目标虚拟加速器的虚拟输入/输出环中单元项的标识,获取虚拟机内存中待加速数据被加速处理完之后生成的加速结果,这种方式实现了收包方向零拷贝。
可见,针对单队列硬件加速器的情况,可以从记录的信息中获取目标虚拟加速器的标识,上述采用了收发双向零拷贝方案。在收发双向零拷贝的整个过程中,待加速数据以及生成的加速结果一直存储在虚拟机内存中。整个加速数据流全路径零拷贝,几乎无额外的CPU消耗。同时,本发明方案保留了半虚拟化技术的优势,如VM的可迁移性及VNFC代码的可移植性(即硬件不感知性)。
在一个可能的实施方式中,所述根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息包括:根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机虚拟地址的映射关系,确定所述待加速数据在虚拟机内存中的主机虚拟地址;根据所述待加速数据在所述虚拟机内存中的所述主机虚拟地址,将所述待加速数据拷贝到主机内存缓冲区中;根据所述待加速数据在所述主机内存缓冲区中的主机虚拟地址,以及预设的主机虚拟地址与主机物理地址的映射关系,确定所述待加速数据在所述主机内存缓冲区中的主机物理地址;所述将所述硬件加速器能够识别的信息发送给所述硬件加速器包括:将所述待加速数据的主机物理地址发送给所述硬件加速器。其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述主机内存缓冲区中获取所述待加速数据,并对所述待加速数据执行加速操作。
其中,该可能的实施方式中,由于预先只建立了虚拟机物理地址与主机虚拟地址的映射关系,未建立虚拟机物理地址与主机物理地址的映射关系,而硬件加速器只能识别主机物理地址,故需要将待加速数据的主机虚拟地址转换为硬件加速器能够识别的待加速数据的主机物理地址。这种方式中,虚拟机需要将虚拟内存中的待加速数据拷贝到主机内存缓冲区中。
在一个可能的实施方式中,所述方法还包括:当所述待加速数据被加速处理完之后,将生成的加速结果拷贝到所述虚拟机内存中;根据所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
其中,当待加速数据被加速处理完之后,宿主机中的守护进程还需要将生成的加速结果从主机内存缓冲区拷贝到虚拟机内存中,以便于后续虚拟机从虚拟机内存中获取加速结果。
在一个可能的实施方式中,所述将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中之后,所述方法还包括:向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以触发所述虚拟机根据所述目标虚拟加速器的标识查询所述目标虚拟加速器的虚拟输入/输出环中的所述单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果。
具体的,宿主机中的守护进程可以利用Linux内核的eventfd(事件句柄)机制来向目标虚拟加速器对应的虚拟机发送携带有目标虚拟加速器的标识的中断请求。
本发明实施例第二方面公开了一种数据传输方法,应用于宿主机中的守护进程,所述宿主机上部署有虚拟机,所述宿主机中还部署有硬件加速器以及为所述虚拟机配置的至少一个虚拟加速器,所述方法包括:当待加速数据被加速处理完之后,获取目标虚拟加速器的标识;根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果,其中,所述至少一个单元项存储有对所述待加速数据执行加速操作所需的信息。
这种方式中,无论对待加速数据执行加速操作所需的信息占用的是一个单元项还是多个单元项,在待加速数据被加速处理完后,均可以获取到目标虚拟加速器的标识,并将至少一个单元项的标识添加到目标虚拟加速器的虚拟输入/输出环,这样,有利于目标虚拟加速器对应的虚拟机根据至少一个单元项的标识,获取待加速数据被加速处理完之后生成的加速结果。可见,整个过程没有进行内存拷贝,实现了收包方向零拷贝。
在一个可能的实施方式中,所述硬件加速器支持多个虚拟功能VF,所述当待加速数据被加速处理完之后,获取目标虚拟加速器的标识之前,所述方法还包括:从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系;其中,所述目标虚拟加速器的标识是从所述绑定关系中获取的。
在一个可能的实施方式中,所述当待加速数据被加速处理完之后,获取目标虚拟加速器的标识之前,所述方法还包括:记录目标虚拟加速器的标识。
其中,可以在主机内存缓冲区的指定位置记录目标虚拟加速器的标识。该指定位置比如:偏移4个字节的空间、偏移8个字节的空间等。
在一个可能的实施方式中,所述根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果的方式具体为:根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,并向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以便于所述虚拟机响应所述中断请求,查询所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果;或,根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机监测所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,并根据所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果。
其中,提供了2种方式:可以向目标虚拟加速器对应的虚拟机发送携带有目标虚拟加速器的标识的中断请求,以触发虚拟机去查询目标虚拟加速器的虚拟输入/输出环中的至少一个单元项的标识;或者,虚拟机可以主动监测目标虚拟加速器的虚拟输入/输出环,以获取至少一个单元项的标识。
本发明实施例第三方面公开了一种数据传输装置,应用于宿主机中的守护进程,所述宿主机上部署有虚拟机,所述宿主机中还部署有硬件加速器以及为所述虚拟机配置的至少一个虚拟加速器,所述数据传输装置包括用于执行本发明实施例第一方面任一方法的部分或全部步骤的功能单元。其中,该数据传输装置执行第一方面任一方法的部分或全部步骤时可以提高数据包的传输效率。
本发明实施例第四方面公开了数据传输装置,应用于宿主机中的守护进程,所述宿主机上部署有虚拟机,所述宿主机中还部署有硬件加速器以及为所述虚拟机配置的至少一个虚拟加速器,所述数据传输装置包括用于执行本发明实施例第二方面任一方法的部分或全部步骤的功能单元。其中,该数据传输装置执行第二方面任一方法的部分或全部步骤时可以减少CPU资源的消耗。
本发明实施例第五方面公开了一种宿主机,所述宿主机包括:处理器、硬件加速器以及存储器,所述存储器被配置用于存储指令,所述处理器被配置用于运行所述指令,所述处理器运行所述指令以执行本发明实施例第一方面任一方法的部分或全部步骤。其中,该宿主机执行第一方面任一方法的部分或全部步骤时可以提高数据包的传输效率。
本发明实施例第六方面公开了一种宿主机,所述宿主机包括:处理器、硬件加速器以及存储器,所述存储器被配置用于存储指令,所述处理器被配置用于运行所述指令,所述处理器运行所述指令以执行本发明实施例第二方面任一方法的部分或全部步骤。其中,该宿主机执行第二方面任一方法的部分或全部步骤时可以提高数据包的传输效率。
本发明实施例第七方面公开了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序具体包括用于执行本发明实施例第一方面任一方法的部分或全部步骤的指令。
本发明实施例第八方面公开了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序具体包括用于执行本发明实施例第二方面任一方法的部分或全部步骤的指令。
在一些可行的实施方式中,在将单元项的标识添加到目标虚拟加速器的虚拟输入/输出环中之后,虚拟机上的VNF还可以主动监测目标虚拟加速器的虚拟输入/输出环,以获取待加速数据被加速处理完之后生成的加速结果。具体的,虚拟机上的VNF可以采用轮询的方式,主动监测目标虚拟加速器的虚拟输入/输出环的vring_used表,若vring_used表有更新,则获取vring_used表中记录的vring_desc表的单元项的标识,其中,该单元项为已经完成加速的vring_desc表项,进一步地,虚拟机可以根据单元项的标识,从虚拟输入/输出环的vring_desc表项中获取对应的单元项内容(即存放执行加速操作所需信息的数据结构),更进一步地,虚拟机就可以从数据结构记录的存放加速结果的虚拟机物理地址对应的虚拟机内存中获取加速结果。
这种方式,完全无中断产生,可以防止虚拟机执行中断处理操作而打断当前CPU处理逻辑,降低中断开销,能够提升虚拟网络功能VNF的性能。
在一些可行的实施方式中,虚拟机下发的执行加速操作所需的信息所采用的数据结构占用目标虚拟加速器的虚拟输入/输出环的至少一个单元项,收发双向均采用零拷贝方案。这种方式,虽然不能增强了虚拟输入/输出环的吞吐能力,但是收发双向均不需要进行内存拷贝,相对于现有技术来说可以减少CPU资源的消耗。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种VNF系统的网络架构示意图;
图2是本发明实施例公开的一种VM内部加速系统架构示意图;
图3是本发明实施例公开的一种Hypervisor内部加速系统架构示意图;
图4是本发明实施例公开的另一种VNF系统的网络架构示意图;
图5是本发明实施例公开的一种数据传输方法的流程示意图;
图5.1是本发明实施例公开的一种执行加速操作所需的信息在Vring中的存储形式;
图5.2是本发明实施例公开的另一种执行加速操作所需的信息在Vring环中的存储形式;
图6是本发明实施例公开的另一种数据传输方法的流程示意图;
图7是本发明实施例公开的另一种数据传输方法的流程示意图;
图8是本发明实施例公开的一种数据传输装置的结构示意图;
图9是本发明实施例公开的另一种数据传输装置的结构示意图;
图10是本发明实施例公开的另一种数据传输装置的结构示意图;
图11是本发明实施例公开的另一种数据传输装置的结构示意图;
图12是本发明实施例公开的一种宿主机的结构示意图图;
图13是本发明实施例公开的另一种宿主机的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”以及“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明实施例公开了一种数据传输方法及装置,可以提高数据包的传输效率。以下分别进行详细说明。
为了更好理解本发明实施例公开的一种数据传输方法,下面先对本发明实施例适用的网络架构进行描述。
请参见图1,图1是本发明实施例公开的一种VNF系统的网络架构示意图,其中,VNF(Virtualized Network Function,虚拟网络功能)。如图1所示,该VNF系统包括:虚拟机(Virtual Manufacturing,VM)101、虚拟机管理程序(Hypervisor)102以及硬件103。
其中,VM101可以包括虚拟网络功能VNF、客户操作系统、虚拟处理器、虚拟内存以及虚拟硬盘等。
其中,Hypervisor102可以为每个虚拟机模拟至少一个虚拟加速器。
其中,硬件103可以包括但不限于能够提供特殊指令的CPU(Central ProcessingUnit,中央处理器)、SoC芯片(System-on-a-Chip)以及其它可提供加速功能的硬件设备,比如:GPU(Graphics Processing Unit,图形处理器)、FPGA(Field-Programmable GateArray,现场可编程门阵列)等。其中,加速是指将程序中的部分功能,卸载到硬件上执行,达到缩短程序执行时间的效果。常用的加速功能有加解密、压缩/解压缩、音视频编解码、包处理等。
请参见图2,图2是本发明实施例公开的一种VM内部加速系统架构示意图。如图2所示,VM内部加速系统包括虚拟网络功能应用层201、加速器抽象层202、加速器核心层203以及软件输入输出接口层204。其中,虚拟网络功能应用层(Virtualization NetworkFunction Applications)201为需要使用虚拟加速器的VM,加速器抽象层(AbstractAcceleration Layer,AAL)202主要用于为不同的虚拟加速器提供通用API(ApplicationProgramming Interface,应用程序编程接口)的接口层,加速器核心层(AccelerationCore,AC)203,比如:DPDK(Data Plane Development Kit,数据平面开发包)、ODP(OpenData Plane,开放数据平面)或其他的高性能加速软件实现框架,AC包括加速器核心层指定接口(AC specific APIs,s-API)2031以及为每个虚拟加速器配置的前端驱动2032。其中,虚拟加速器是对物理的硬件加速器的一种虚拟化存在形态,可以理解为虚拟的硬件加速器。虚拟机只能看到虚拟化后的虚拟加速器,虚拟加速器类似于虚拟网卡、虚拟磁盘,虚拟加速器比如:VirtIO-crypto、VirtIO-ipsec、VirtIO-compression。软件输入输出接口层(software I/O interface,sio)204包括多个虚拟加速器数据包头,比如:VirtIO-cryptoheader、VirtIO-ipsec header,其中,sio为各种虚拟加速加速器前端驱动与后端设备(Hypervisor)进行数据传输的接口,比如:VirtIO(Virtual In/Out,虚拟I/O)接口。
请参见图3,图3是本发明实施例公开的一种Hypervisor内部加速系统架构示意图。如图3所示,该Hypervisor内部加速系统包括VirtIO后端加速器301、基于VirtIO的用户态接口302、加速器核心层303以及加速层304。其中,VirtIO后端加速器(backend device)301为由虚拟机模拟器(Qemu)模拟的虚拟加速器。基于VirtIO的用户态接口(User spacebased VirtIO interface,vHost-user)302采用用户态方案,通过虚拟机与主机的高速数据传输通道,基于VirtIO接口实现快速传输的技术。加速器核心层303包括加速器核心层指定接口3031、硬件资源管理、包管理3033以及通用驱动层3034。其中,硬件资源管理(hardware management)3032支持普通硬件加速器(在本发明中称为单队列硬件加速器)和支持SR-IOV功能的硬件加速器(本发明中称为多队列硬件加速器)。针对多队列硬件加速器,提供队列的分配、回收机制,支持SR-IOV功能的硬件加速器可以虚拟出多个VF(VirtualFunction,虚拟功能),每个VF相对于一个硬件加速器。包管理(packet management)依托AC的内存管理机制,针对单队列加速器,提供加速数据包的标识功能。加速层(Acceleration)304为各种加速器软、硬件及CPU指令加速资源等。
请参见图4,图4是本发明实施例公开的另一种VNF系统的网络架构示意图,其中,图4是图1的一种具体形式。如图4所示,每个VM配置有至少一个虚拟加速器,每个虚拟加速器均有对应的虚拟加速器前端驱动以及Vring(Virtual I/O ring,虚拟输入输出环),比如:VM1-401配置有虚拟机加速器1前端驱动4011以及Vring1、虚拟机加速器2前端驱动4012以及Vring2,虚拟机加速器3前端驱动4013以及Vring3,VM2-402配置有虚拟机加速器前端驱动4021以及Vring4。Hypervisor-403模拟出多个虚拟加速器,比如:虚拟加速器1-4031,虚拟加速器2-4032,虚拟加速器3-4033,虚拟加速器4-4034。
在图4所示的VNF系统中,VM发出的执行加速操作所需的信息经虚拟加速器前端驱动,在虚拟加速器前端驱动中将执行加速操作所需的信息添加到预定义的数据结构中,进一步地,将数据结构存储在虚拟加速器的Vring中,经Hypervisor-403最终传递给硬件加速器404,硬件加速器对待加速数据进行加速处理,其中,待加速数据可以包括但不限于网络包、存储包以及待加密的文件等,待加速数据都存储在内存中(主机内存缓冲区或虚拟机内存)。宿主机中的守护进程可以轮询监测硬件加速器是否完成对待加速数据的加速处理操作,若监测到已完成,宿主机中的守护进程可以将单元项的标识添加到目标虚拟加速器的虚拟输入/输出环中,并经虚拟加速器前端驱动的解析处理,最终传递给VM的VNF。需要说明的是,执行加速操作所需的信息不包括需要进行加速处理的待加速数据,该执行加速操作所需的信息比如包长度、加解密算法类型、密钥长度、待加速数据长度和相关的GPA(GuestPhysical Address,虚拟机物理地址,也可称为客户机物理地址),如待加速数据的GPA、存放加速结果的GPA等。
可选的,若硬件加速器支持多个VF,则为VM创建虚拟加速器时,即刻在守护进程为虚拟加速器绑定一个未被使用的VF,这样就可以做到从指定VF收取的数据包就可以通知虚拟加速器对应的虚拟机,而不需要进行内存拷贝。可选的,若硬件加速器为普通单队列硬件加速器,则守护进程在发送数据包时,使用mbuf(Memory Buffer,内存缓冲区)的指定位置(比如偏移4个字节的空间)记录虚拟机的虚拟加速器的标识,待硬件加速器将待加速数据加速处理完成之后,守护进程取出mbuf中记录的虚拟加速器的标识,就可以通知虚拟加速器对应的虚拟机,而不需要进行内存拷贝。
请参见图5,图5是本发明实施例公开的一种数据传输方法的流程示意图,其中,该方法是从虚拟机、宿主机中的守护进程以及硬件加速器等多侧撰写的,该方法采用双向零拷贝方案。如图5所示,该方法可以包括以下步骤。
501、若硬件加速器支持多个虚拟功能VF,宿主机中的守护进程从多个VF中选择未被使用的目标VF,并建立目标虚拟加速器与目标VF的绑定关系。
本发明实施例中,宿主机上部署有虚拟机、硬件加速器以及为虚拟机配置的至少一个虚拟加速器。其中,硬件加速器可以为单队列硬件加速器,也可以多队列硬件加速器(即硬件加速器支持多个虚拟功能VF,每个VF相对于一个硬件加速器)。
若硬件加速器支持多个VF,宿主机中的守护进程可以在初始化阶段从多个VF中选择未被使用的目标VF,并建立目标虚拟加速器与目标VF的绑定关系。其中,该目标VF可以为未被使用的VF中的任一个。
需要说明的是,本发明实施例中,可以建立多个绑定关系。建立多个绑定关系之后,各个虚拟加速器之间互不干扰,性能最优。目标虚拟加速器
作为一种可选的实施方式,在步骤501之前,该方法还包括以下步骤:
11)在宿主机上启动守护进程以及全轮询服务。
12)宿主机上的守护进程创建主机内存缓冲区池。
13)为虚拟机配置至少一个虚拟加速器。
14)虚拟机模拟器(Qemu)创建虚拟机。
15)Qemu通过vhost-user协议向宿主机上的守护进程发送虚拟机的物理内存地址布局。
16)宿主机中的守护进程根据虚拟机的物理内存地址布局,建立GPA与主机物理地址HPA的映射关系,以及建立GPA与主机虚拟地址HVA的映射关系。
在该可选的实施方式,宿主机中的守护进程同时作为宿主机的一个服务,在宿主机开机后自启动。宿主机中的守护进程启动后即刻扫描硬件加速器,初始化硬件加速器管理结构体,创建主机内存缓冲区池,注册vhost-user服务端监听端口。管理员为虚拟机配置至少一个虚拟加速器(可以称为目标虚拟加速器),并启动QEMU进程,创建虚拟机。QEMU进程通过vhost-user协议发送unix消息给守护进程;宿主机中的守护进程在接收到QEMU进程发送过来的消息后,创建一个服务器端虚拟加速器。QEMU进程通过vhost-user协议向宿主机中的守护进程发送虚拟机的物理内存地址布局。宿主机中的守护进程收到消息后,根据虚拟机的物理内存地址布局,建立GPA与主机物理地址HPA的映射关系,并建立GPA与主机虚拟地址HVA的映射关系。
502、虚拟机将执行加速操作所需的信息添加到预定义的数据结构中。
其中,该执行加速操作所需的信息可以包括但不限于待加速数据的虚拟机物理地址、待加速数据的长度、存放加速结果的虚拟机物理地址以及加速类型参数(比如:算法类型、操作类型)等。
常见的加速功能有加解密、压缩/解压缩、音视频编解码、包处理等,以加解密为例,如果要进行一次带联数据的对称加密操作,需要传递给硬件加速器的信息(即执行加速操作所需的信息)包括:初始化向量(iv)、关联数据(auth_data)、待加密的源数据(src_data)、加密结果(dst_data)、摘要结果(digest_result)、加解密校验成功标识(inhdr)。该待加速数据可以包括但不限于网络包、存储包以及待加密的文件等,待加速数据都存储在内存(主机内存缓冲区或虚拟机内存)中。
现有技术中,这样一次加解密数据包需要占用虚拟加速器的虚拟输入/输出环(Virtual I/O ring,Vring)中的6个entry项。请一并参见图5.1,图5.1是本发明实施例公开的一种执行加速操作所需的信息在Vring中的存储形式。如图5.1所示,以加解密为例,需要给硬件加速器传递6个数据参数信息(即执行加速操作所需的信息),其中,每个数据参数信息占用Vring的一个单元项(即entry项)。假设为加解密虚拟加速器创建的Vring的大小为4096,则一次最多存放的加解密封包就是682个(4096/6)。
本发明实施例中,为了提高数据包的吞吐量,预先定义了一种数据结构,该数据结构包括执行加速操作所需的信息,比如:待加速数据的虚拟机物理地址(Guest PhysicalAddress,GPA)、待加速数据的长度、存放加速结果的虚拟机物理地址GPA以及加速类型参数(如算法类型、操作类型),其中,GPA也可以称为客户机物理地址。
以加解密虚拟加速器为例,针对加解密操作定义如下数据结构:
Figure BDA0001017751920000141
虚拟网络功能(Virtualized Network Function,VNF)的应用程序只需按照上述数据结构,将struct virtio_crypto_sym_op_data中记录的参数信息传递给加解密虚拟加速器的前端驱动,加解密虚拟加速器加速器的前端驱动直接赋值struct virtio_crypto_sym_op_data数据结构,然后将该数据结构作为一个单元项(即entry项)加入虚拟加速器的Vring中。故针对加解密虚拟加速器,每一次对称加解密算法只需要占用Vring中的一项。其中:
vring_desc.addr=struct virtio_crypto_sym_op_data/----数据结构的GPA地址
vring_desc.len=sizeof(struct virtio_crypto_sym_op_data)/----数据结构的长度
vring_desc.flag=~NEXT/----表项结束标志
请一并参见图5.2,图5.2是本发明实施例公开的另一种执行加速操作所需的信息在Vring环中的存储形式。从图5.2可以看出,该数据结构占用虚拟加速器的虚拟输入/输出环的一个单元项(即一个entry);对4096大小的Vring就可以一次存放4096个加解密数据包,图5.2中的执行加速操作所需的信息在Vring环中的存储形式相对于图5.1所示的传统方案,性能提升了5倍,有效增强了虚拟输入/输出环的数据包的吞吐能力。
503、虚拟机将数据结构存储在目标虚拟加速器的虚拟输入/输出环中。
本发明实施例中,目标虚拟加速器为为虚拟机配置的多个虚拟加速器中的任一个,为了后续描述方便,称为目标虚拟加速器。
具体的,虚拟机的VNF调用虚拟加速器前端驱动API,将执行加速操作所需的信息(包括待加速数据的GPA,存放加速结果的GPA等)传入前端驱动。前端驱动在主机内存缓冲区池中申请一个主机内存缓冲区,使用这些信息构造执行加速操作所需的信息。最后前端驱动调用VirtIO API,将执行加速操作所需的信息的GPA及长度放入Vring的vring_desc表中。
本发明实施例中,Vring共享区域总共有三个表:vring_desc表,用于存放虚拟机产生的IO请求的地址;vring_avail表,用于指明vring_desc中哪些项是可用的;vring_used表,用于指明vring_desc中哪些项已经被递交到硬件。
针对vring_desc表,存储虚拟机产生的IO请求在虚拟机内存中的地址(比如GPA地址),在这个表中每一行都包含四个域:Addr、len、flags以及next。如下所示:
Figure BDA0001017751920000151
其中,Addr存储IO请求在虚拟机内的内存地址,通常为一个GPA值;len表示这个IO请求在内存中的长度;flags指示这一行的数据是可读、可写,是否是一个IO请求的最后一项;每个IO请求都有可能包含了vring_desc表中的多行,next域就指明了这个IO请求的下一项在哪一行。通过next就可以将一个IO请求在vring_desc中存储的多行连接成了一个链表,当flag=~VRING_DESC_F_NEXT,就表示这个链表到了末尾。
针对vring_avail表,存储的是每个IO请求在vring_desc中连接成的链表的表头位置。数据结构如下所示:
Figure BDA0001017751920000161
其中,在vring_desc表中,通过next域连接起来的链表的表头在vring_desc表中的位置,存储到ring[]这个数组中;idx,指向的是ring数组中下一个可用的空闲位置;flags是一个标志域。
针对vring_used表,当待加速数据被加速处理完之后,宿主机上的守护进程就可以更新这个数据结构:
Figure BDA0001017751920000162
其中,vring_uesd中ring[]数组有两个成员:id以及len。id表示处理完成的IO请求在vring_desc表中的组成的链表的头结点位置;len表示链表的长度。idx指向了ring数组中下一个可用的位置;flags是标记位。
需要说明的是,上述IO请求可以理解为本发明实施例所述的包括执行加速操作所需的信息的数据结构。
504、宿主机中的守护进程获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息。
本发明实施例中,宿主机中的守护进程(Daemon进程)运行在vhost-user用户态,不用经过内核协议栈,在用户态直接访问硬件加速器,最大限度的减少内核态与用户态的上下文切换次数,降低切换开销。其中,宿主机中的守护进程位于Hypervisor中。
可选的,宿主机中的守护进程获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息的具体实现方式可以为:
宿主机中的守护进程采用全轮询的方式,实时监测每个虚拟加速器的虚拟输入/输出环,以获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息。
其中,在该可选的实施方式中,具体的,宿主机中的守护进程可以采用全轮询的方式,实时监测每个虚拟加速器的虚拟输入/输出环中的vring_desc表,以获取虚拟输入/输出环中的vring_desc表中的执行加速操作所需的信息。这种方式减少了中断处理开销。
可选的,宿主机中的守护进程获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息的具体实现方式可以为:
虚拟机向宿主机中的守护进程发送携带有目标虚拟加速器的标识的信息获取通知,宿主机中的守护进程根据目标虚拟加速器的标识,从目标虚拟加速器的虚拟输入/输出环中获取执行加速操作所需的信息。
其中,在该可选的实施方式中,具体的,虚拟机向宿主机中的守护进程发送携带有目标虚拟加速器的标识的消息通知,宿主机中的守护进程接收到该消息通知之后,根据目标虚拟加速器的标识,从目标虚拟加速器的虚拟输入/输出环的vring_desc表中获取执行加速操作所需的信息。
这种方式未采用全轮询的方式,可以减少CPU资源的消耗,但会加大虚拟化上下文切换开销(即从虚拟机非根模式退出到Hypervisor根模式)。
505、宿主机中的守护进程根据执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机物理地址的映射关系,确定待加速数据的主机物理地址。
本发明实施例中,硬件加速器只能识别主机物理地址(Host Physical Address,HPA),虚拟机传给宿主机中的守护进程的内存地址是待加速数据的虚拟机物理地址(GuestPhysical Address,GPA),无法直接传递给硬件加速器使用。
在初始化阶段,宿主机中的守护进程已经预先建立虚拟机物理地址GPA与主机物理地址HPA的映射关系,有了这个映射关系之后,在后续处理待加速数据时,就可以不进行内存拷贝(即零拷贝),只是单纯的地址转换。举例来说,待加速数据最初存储在GPA对应的VM内存中,宿主机中的守护进程在建立GPA与HPA的映射关系之后,不需要将VM内存中的待加速数据拷贝到主机预申请的主机内存缓冲区中,只需要将GPA转换为HPA,就可以从HPA对应的主机内存缓冲区中获取待加速数据。
506、宿主机中的守护进程从预设的虚拟加速器与VF的绑定关系中,查询目标虚拟加速器绑定的目标VF。
本发明实施例中,支持SR-IOV功能的硬件加速器可以虚拟出多个VF(VirtualFunction,虚拟功能),每个VF相对于一个硬件加速器。其中,SR-IOV(Single-Root I/OVirtualization)技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV标准允许在虚拟机之间高效共享PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与宿主机性能媲美的I/O性能。
SR-IOV中的两种新功能类型是:物理功能(Physical Function,PF)用于支持SR-IOV功能的PCI功能,如SR-IOV规范中定义。PF包含SR-IOV功能结构,用于管理SR-IOV功能。PF是全功能的PCIe功能,可以像其他任何PCIe设备一样进行发现、管理和处理。PF拥有完全配置资源,可以用于配置或控制PCIe设备。VF与物理功能关联的一种功能。VF是一种轻量级PCIe功能,可以与物理功能以及与同一物理功能关联的其他VF共享一个或多个物理资源。VF仅允许拥有用于其自身行为的配置资源。
每个SR-IOV设备都可有一个PF,并且每个PF最多可有64,000个与其关联的VF。PF可以通过寄存器创建VF,这些寄存器设计有专用于此目的的属性。
本发明实施例中,在初始化阶段已经建立了虚拟加速器与VF的绑定关系,此时,宿主机中的守护进程就可以从预设的虚拟加速器与VF的绑定关系中,查询目标虚拟加速器绑定的目标VF。
507、宿主机中的守护进程将待加速数据的主机物理地址发送给目标VF。
具体的,宿主机中的守护进程可以调用硬件加速器的(Application ProgrammingInterface,应用程序编程接口)API,将待加速数据的主机物理地址。可选的,还可以将其他执行加速操作所需的参数(比如:待加速数据长度、初始化向量、关联数据等)发送给目标VF。
508、目标VF根据待加速数据的主机物理地址从待加速数据的虚拟机物理地址对应的虚拟机内存中获取待加速数据,并对待加速数据执行加速操作。
本发明实施例中,目标VF接收到待加速数据的主机物理地址之后,硬件加速器驱动程序会根据待加速数据的主机物理地址HPA,从待加速数据的虚拟机物理地址对应的虚拟机内存中获取待加速数据,并对待加速数据执行加速操作。
509、当待加速数据被加速处理完之后,宿主机中的守护进程根据绑定关系中目标虚拟加速器的标识,将单元项的标识添加到目标虚拟加速器的虚拟输入/输出环中。
本发明实施例中,由于采用的是零拷贝技术,VM在下发执行加速操作所需的信息时,不需要将GPA对应的虚拟机内存中的待加速数据拷贝到HVA对应的主机内存缓冲区中,故待加速数据以及待加速数据被加速处理完之后生成的加速结果均存储在GPA对应的虚拟机内存中。宿主机中的守护进程可以轮询监测目标VF是否完成对待加速数据的加速处理操作,若监测到已完成,宿主机中的守护进程可以根据绑定关系中目标虚拟加速器的标识,将单元项的标识添加到目标虚拟加速器的虚拟输入/输出环的vring_used表中。
510、虚拟机监测目标虚拟加速器的虚拟输入/输出环,以获取待加速数据被加速处理完之后生成的加速结果。
具体的,在该可选的实施方式中,虚拟机可以采用轮询的方式,实时监测目标虚拟加速器的虚拟输入/输出环的vring_used表,若vring_used表有更新,则获取vring_used表中的单元项的标识,其中,该单元项为已经加速完成的,进一步地,虚拟机可以根据单元项的标识,从虚拟输入/输出环的vring_desc表中获取存放加速结果的虚拟机物理地址,更进一步地,虚拟机就可以从存放加速结果的虚拟机物理地址对应的虚拟机内存中获取加速结果。可选的,虚拟机上的VNF还可以对加速结果做下一步地处理,比如:向外部网络发送执行完加速操作的网络封包。
其中,虚拟机的这种自动监测目标虚拟加速器的虚拟输入/输出环的方式,有利于减少中断开销,节约资源。
作为另一种可选的实施方式,可以不执行步骤510,而用如下步骤代替:
21)宿主机中的守护进程向目标虚拟加速器对应的虚拟机发送携带有目标虚拟加速器的标识的中断请求;
22)虚拟机根据目标虚拟加速器的标识查询目标虚拟加速器的虚拟输入/输出环中的单元项的标识;
23)虚拟机根据单元项的标识,获取存放加速结果的虚拟机物理地址,并从从存放加速结果的虚拟机物理地址对应的虚拟机内存中获取加速结果。
在该可选的实施方式中,宿主机中的守护进程将加速完成的单元项的标识添加到目标虚拟加速器的虚拟输入/输出环中之后,宿主机中的守护进程可以利用Linux内核的eventfd机制来向目标虚拟加速器对应的虚拟机发送携带有目标虚拟加速器的标识的中断请求。其中,在虚拟机创建的时候,Qemu进程为虚拟加速器的Vring环创建好了eventfd(事件句柄)。
虚拟机接收到该中断请求之后,就可以停止执行当前程序,转而根据目标虚拟加速器的标识,查询目标虚拟加速器的虚拟输入/输出环的vring_used表中的单元项的标识,并根据单元项的标识,从目标虚拟加速器的虚拟输入/输出环的vring_desc表中获取存放加速结果的虚拟机物理地址,进一步地,虚拟机就可以从存放加速结果的虚拟机物理地址对应的虚拟机内存中获取加速结果。
可见,本发明实施例中采用了收发双向零拷贝方案(即发包方向零拷贝以及收包方向零拷贝),整个加速数据流全路径零拷贝,几乎无额外的CPU消耗。同时,本发明方案保留了半虚拟化技术的优势,如VM的可迁移性及VNFC代码的可移植性(即硬件不感知性)。其中,发包方向零拷贝指虚拟机将执行加速操作所需的信息下发给硬件加速器的过程中不需要将虚拟机内存中的待加速数据拷贝到主机内存缓冲区中,收包方向零拷贝是指硬件加速器对待加速数据进行加速处理完之后,生成的加速结果也不需要从主机内存缓冲区中拷贝到虚拟机内存中。在收发双向零拷贝的整个过程中,待加速数据以及加速结果一直存储在虚拟机内存中。
需要说明的是,上述的宿主机中的守护进程适用于各种类型的虚拟机。
在图5所描述的方法流程中,虚拟机下发的执行加速操作所需的信息采用了预定义的数据结构进行封装,该数据结构占用目标虚拟加速器的虚拟输入/输出环的一个单元项,这可以极大增强了虚拟输入/输出环的吞吐能力,在单位时间内,传输的数据包更多,从而能够提高数据包的传输效率。
请参见图6,图6是本发明实施例公开的另一种数据传输方法的流程示意图,其中,该方法是从虚拟机、宿主机中的守护进程以及硬件加速器等多侧撰写的,该方法采用双向拷贝方案。如图6所示,该方法可以包括以下步骤。
601、虚拟机将执行加速操作所需的信息添加到预定义的数据结构中。
602、虚拟机将执行加速操作所需的信息放入目标虚拟加速器的虚拟输入/输出环中。
606、宿主机中的守护进程获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息。
604、宿主机中的守护进程根据执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机物理地址的映射关系,确定待加速数据的主机物理地址。
605、宿主机中的守护进程记录目标虚拟加速器的标识。
具体的,宿主机中的守护进程可以在主机内存缓冲区的指定位置记录目标虚拟加速器的标识。其中,该主机内存缓冲区的指定位置比如:偏移4个字节的空间、偏移8个字节的空间。该主机内存缓冲区为在初始化阶段申请的主机内存缓冲区池中的任一个。
606、宿主机中的守护进程将待加速数据的主机物理地址发送给硬件加速器。
607、硬件加速器根据待加速数据的主机物理地址从待加速数据的虚拟机物理地址对应的虚拟机内存中获取待加速数据,并对待加速数据执行加速操作。
608、当待加速数据被加速处理完之后,宿主机中的守护进程根据记录的目标虚拟加速器的标识,将单元项的标识添加到目标虚拟加速器的虚拟输入/输出环中。
具体的,当待加速数据被硬件加速器加速处理完之后,宿主机中的守护进程可以查询主机内存缓冲区的指定位置(如偏移4个字节的空间)所记录的目标虚拟加速器的标识,将加速完成的单元项的标识添加到目标虚拟加速器的虚拟输入/输出环的vring_used表中。
609、宿主机中的守护进程向目标虚拟加速器对应的虚拟机发送携带有目标虚拟加速器的标识的中断请求。
具体的,宿主机中的守护进程可以利用Linux内核的eventfd机制来向目标虚拟加速器对应的虚拟机发送携带有目标虚拟加速器的标识的中断请求。其中,在虚拟机创建的时候,Qemu进程为虚拟加速器的Vring环创建好了eventfd(事件句柄)。
610、虚拟机根据目标虚拟加速器的标识查询目标虚拟加速器的虚拟输入/输出环中的单元项的标识。
其中,虚拟机接收到该中断请求之后,就可以停止执行当前程序,转而根据目标虚拟加速器的标识,查询目标虚拟加速器的虚拟输入/输出环的vring_used表的单元项的标识。
611、虚拟机根据单元项的标识,获取存放加速结果的虚拟机物理地址,并从存放加速结果的虚拟机物理地址对应的虚拟机内存中获取加速结果。
具体的,虚拟机可以根据单元项的标识,从目标虚拟加速器的虚拟输入/输出环的vring_desc表中获取存放加速结果的虚拟机物理地址,并从存放加速结果的虚拟机物理地址对应的虚拟机内存中获取加速结果。可选的,虚拟机上的VNF还可以对加速结果做下一步地处理,比如:向外部网络发送执行完加速操作的网络封包。
作为另一种可选的实施方式,可以不执行609-611,而执行以下步骤:
虚拟机监测目标虚拟加速器的虚拟输入/输出环,以获取待加速数据被加速处理完之后生成的加速结果。
具体的,在该可选的实施方式中,虚拟机上的VNF可以采用轮询的方式,实时监测目标虚拟加速器的虚拟输入/输出环的vring_used表,若vring_used表有更新,则获取vring_used表中记录的vring_desc表的单元项的标识,其中,该单元项为已经完成加速的vring_desc表项,进一步地,虚拟机可以根据单元项的标识,从虚拟输入/输出环的vring_desc表中获取对应的单元项内容(即存放执行加速操作所需信息的数据结构),更进一步地,虚拟机就可以从数据结构记录的存放加速结果的虚拟机物理地址对应的虚拟机内存中获取加速结果。可选的,虚拟机上的VNF还可以对加速结果做下一步地处理,比如:向外部网络发送执行完加速操作的网络封包。
其中,虚拟机的这种自动监测目标虚拟加速器的虚拟输入/输出环的方式,有利于减少中断开销,节约资源。
在图6所描述的方法流程中,虚拟机下发的执行加速操作所需的信息采用了预定义的数据结构进行封装,该数据结构占用目标虚拟加速器的虚拟输入/输出环的一个单元项,这可以极大增强了虚拟输入/输出环的吞吐能力,在单位时间内,传输的数据包更多,从而能够提高数据包的传输效率,同时,硬件加速器为单队列硬件加速器,采用记录目标虚拟加速器的标识的方式,使得整个加速数据流全路径零拷贝,几乎无额外的CPU消耗,也使得本发明方案保留了半虚拟化技术的优势,如VM的可迁移性及VNFC代码的可移植性(即硬件不感知性)。
请参见图7,图7是本发明实施例公开的另一种数据传输方法的流程示意图,其中,该方法是从虚拟机、宿主机中的守护进程以及硬件加速器等多侧撰写的,该方法采用双向拷贝方案。如图7所示,该方法可以包括以下步骤。
701、若硬件加速器支持多个虚拟功能VF,宿主机中的守护进程从多个VF中选择未被使用的目标VF,并建立目标虚拟加速器与目标VF的绑定关系。
702、虚拟机将执行加速操作所需的信息添加到预定义的数据结构中。
703、虚拟机将数据结构存储在目标虚拟加速器的虚拟输入/输出环中。
707、宿主机中的守护进程获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息。
705、宿主机中的守护进程根据执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机虚拟地址的映射关系,确定待加速数据在虚拟机内存中的主机虚拟地址。
本发明实施例中,宿主机中的守护进程只能识别HVA,而不能识别虚拟机物理地址GPA,故在初始化阶段,预先建立了虚拟机物理地址GPA与主机虚拟地址HVA的映射关系。当宿主机中的守护进程获得待加速数据的虚拟机物理地址GPA后,就可以根据设的虚拟机物理地址与主机虚拟地址的映射关系,确定待加速数据的主机虚拟地址。
需要说明的是,本发明实施例中,在初始化阶段,未建立虚拟机物理地址GPA与主机物理地址HPA的映射关系,只建立了GPA与HVA的映射关系。
706、宿主机中的守护进程根据待加速数据在虚拟机内存中的主机虚拟地址,将待加速数据拷贝到主机内存缓冲区中。
本发明实施例中,由于未建立虚拟机物理地址GPA与主机物理地址HPA的映射关系,宿主机中的守护进程需要根据待加速数据在虚拟机内存中的主机虚拟地址,将待加速数据拷贝到主机内存缓冲区中,以便于后续地址的转换。行
707、宿主机中的守护进程根据待加速数据在主机内存缓冲区中的主机虚拟地址,以及预设的主机虚拟地址与主机物理地址的映射关系,确定待加速数据在主机内存缓冲区中的主机物理地址。
本发明实施例中,在初始化阶段,未建立GPA与HPA的映射关系,而硬件加速器只能识别待加速数据的主机物理地址HPA,宿主机中的守护进程需要将待加速数据在主机内存缓冲区中的主机虚拟地址HVA转换为硬件加速器能够识别的待加速数据在主机内存缓冲区中的主机物理地址HPA。
具体的,宿主机中的守护进程可以在Linux系统中根据/proc/pid/pagemap文件查询到待加速数据在主机内存缓冲区中的HVA对应的HPA。
708、宿主机中的守护进程将待加速数据的主机物理地址发送给目标VF。
709、目标VF根据待加速数据的主机物理地址从待加速数据的虚拟机物理地址对应的虚拟机内存中获取待加速数据,并对待加速数据执行加速操作
710、当待加速数据被加速处理完之后,宿主机中的守护进程将生成的加速结果拷贝到虚拟机内存中。
具体的,当待加速数据被加速处理完之后,宿主机中的守护进程还需要将生成的加速结果从主机内存缓冲区拷贝到虚拟机内存中,以便于后续虚拟机从虚拟机内存中获取加速结果。
711、宿主机中的守护进程根据目标虚拟加速器的标识,将单元项的标识添加到目标虚拟加速器的虚拟输入/输出环中。
712、虚拟机监测目标虚拟加速器的虚拟输入/输出环,以获取待加速数据被加速处理完之后生成的加速结果。
在图7所描述的方法流程中,虚拟机下发的执行加速操作所需的信息采用了预定义的数据结构进行封装,该数据结构占用目标虚拟加速器的虚拟输入/输出环的一个单元项,这可以极大增强了虚拟输入/输出环的吞吐能力,在单位时间内,传输的数据包更多,从而能够提高数据包的传输效率。
请参见图8,图8是本发明实施例公开的一种数据传输装置的结构示意图,其中,该数据传输装置800可以用于执行图5所公开的数据传输方法中的全部或部分步骤,具体请参照图5所描述的,在此不再赘述。如图8所示,该数据传输装置800可以包括:
获取单元801,用于获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息,所述执行加速操作所需的信息采用预定义的数据结构,所述数据结构占用所述目标虚拟加速器的虚拟输入/输出环的一个单元项;
其中,所述执行加速操作所需的信息包括待加速数据的虚拟机物理地址、待加速数据的长度、存放加速结果的虚拟机物理地址以及加速类型参数。
确定单元802,用于根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息;
发送单元803,用于将所述硬件加速器能够识别的信息发送给所述硬件加速器,所述硬件加速器用于根据所述硬件加速器能够识别的信息获取待加速数据,并对所述待加速数据执行加速操作。
作为一种可选的实施方式,所述确定单元802根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息的方式具体为:
根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机物理地址的映射关系,确定所述待加速数据的主机物理地址;
所述发送单元803将所述硬件加速器能够识别的信息发送给所述硬件加速器的方式具体为:
将所述待加速数据的主机物理地址发送给所述硬件加速器;
其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
作为一种可选的实施方式,所述硬件加速器支持多个虚拟功能VF,图8所示的数据传输装置800还包括:
查询单元804,用于在所述确定单元802确定所述待加速数据的主机物理地址之后,从预设的虚拟加速器与VF的绑定关系中,查询所述目标虚拟加速器绑定的目标VF;
所述发送单元803将所述待加速数据的主机物理地址发送给所述硬件加速器的方式具体为:
将所述待加速数据的主机物理地址发送给所述目标VF,所述目标VF用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
作为另一种可选的实施方式,图8所示的数据传输装置800还包括:
第一添加单元808,用于当所述待加速数据被加速处理完之后,根据所述绑定关系中所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
作为另一种可选的实施方式,图8所示的数据传输装置800还包括:
建立单元806,用于在所述获取单元801获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息之前,若所述硬件加速器支持多个虚拟功能VF,从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系。
作为一种可选的实施方式,所述发送单元803还用于向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以触发所述虚拟机根据所述目标虚拟加速器的标识查询所述目标虚拟加速器的虚拟输入/输出环中的所述单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果。
请参见图9,图9是本发明实施例公开的另一种数据传输装置的结构示意图,其中,该数据传输装置900可以用于执行图6所公开的数据传输方法中的全部或部分步骤,具体请参照图6所描述的,在此不再赘述。如图9所示,该数据传输装置900可以包括:
获取单元901,用于于获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息,所述执行加速操作所需的信息采用预定义的数据结构,所述数据结构占用所述目标虚拟加速器的虚拟输入/输出环的一个单元项;
其中,所述执行加速操作所需的信息包括待加速数据的虚拟机物理地址、待加速数据的长度、存放加速结果的虚拟机物理地址以及加速类型参数。
确定单元902,用于根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息;
发送单元903,用于将所述硬件加速器能够识别的信息发送给所述硬件加速器,所述硬件加速器用于根据所述硬件加速器能够识别的信息获取待加速数据,并对所述待加速数据执行加速操作。
作为一种可选的实施方式,图9所示的数据传输装置900还包括:
记录单元,用于在所述发送单元903将所述待加速数据的主机物理地址发送给所述硬件加速器之前,记录所述目标虚拟加速器的标识。
作为一种可选的实施方式,图9所示的数据传输装置900还包括:
第二添加单元905,用于当所述待加速数据被加速处理完后,根据记录的所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
作为一种可选的实施方式,所述发送单元903还用于向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以触发所述虚拟机根据所述目标虚拟加速器的标识查询所述目标虚拟加速器的虚拟输入/输出环中的所述单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果。
请参见图10,图10是本发明实施例公开的另一种数据传输装置的结构示意图,其中,该数据传输装置1000可以用于执行图5或图7所公开的数据传输方法中的部分步骤,具体请参照图5或图7所描述的,在此不再赘述。如图10所示,该数据传输装置1000可以包括:
获取单元1001,用于获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息,所述执行加速操作所需的信息采用预定义的数据结构,所述数据结构占用所述目标虚拟加速器的虚拟输入/输出环的一个单元项;
其中,所述执行加速操作所需的信息包括待加速数据的虚拟机物理地址、待加速数据的长度、存放加速结果的虚拟机物理地址以及加速类型参数。
确定单元1002,用于根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息;
发送单元1003,用于将所述硬件加速器能够识别的信息发送给所述硬件加速器,所述硬件加速器用于根据所述硬件加速器能够识别的信息获取待加速数据,并对所述待加速数据执行加速操作。
作为一种可选的实施方式,所述确定单元1002包括:
确定子单元10021,用于根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机虚拟地址的映射关系,确定所述待加速数据在虚拟机内存中的主机虚拟地址;
拷贝子单元10022,用于根据所述待加速数据在所述虚拟机内存中的所述主机虚拟地址,将所述待加速数据拷贝到主机内存缓冲区中;
所述确定子单元10021,还用于根据所述待加速数据在所述主机内存缓冲区中的主机虚拟地址,以及预设的主机虚拟地址与主机物理地址的映射关系,确定所述待加速数据在所述主机内存缓冲区中的主机物理地址;
所述发送单元1003具体用于将所述待加速数据的主机物理地址发送给所述硬件加速器。
其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述主机内存缓冲区中获取所述待加速数据,并对所述待加速数据执行加速操作。
作为一种可选的实施方式,图10所示的数据传输装置1000还包括:
拷贝单元1004,用于当所述待加速数据被加速处理完之后,将生成的加速结果拷贝到所述虚拟机内存中;
第三添加单元1005,用于根据所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
作为一种可选的实施方式,所述发送单元1003还用于向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以触发所述虚拟机根据所述目标虚拟加速器的标识查询所述目标虚拟加速器的虚拟输入/输出环中的所述单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果。
在图8~图10所描述的数据传输装置中,虚拟机下发的执行加速操作所需的信息仍然采用的是预定义的数据结构进行封装,该数据结构占用目标虚拟加速器的虚拟输入/输出环的一个单元项,这可以极大增强了虚拟输入/输出环的吞吐能力,在单位时间内,传输的数据包更多,从而能够提高数据包的传输效率。
请参见图11,图11是本发明实施例公开的另一种数据传输装置的结构示意图,其中,该数据传输装置1100可以用于执行图5或图6所公开的数据传输方法中的部分步骤,具体请参照图5或图6所描述的,在此不再赘述。如图11所示,该数据传输装置1100可以包括:
获取单元1101,用于当待加速数据被加速处理完之后,获取目标虚拟加速器的标识;
添加单元1102,用于根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果,其中,所述至少一个单元项存储有对所述待加速数据执行加速操作所需的信息。
可选的,所述硬件加速器支持多个虚拟功能VF,图11所示的数据传输装置1100还包括:
建立单元1103,用于在所述获取单元1101待加速数据被加速处理完之后,获取目标虚拟加速器的标识之前,从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系;
其中,所述目标虚拟加速器的标识是从所述绑定关系中获取的。
可选的,图11所示的数据传输装置1100还包括:
记录单元1104,用于在所述获取单元待加速数据被加速处理完之后,获取目标虚拟加速器的标识之前,记录目标虚拟加速器的标识。
其中,所述添加单元1102根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果的方式具体为:
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,并向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以便于所述虚拟机响应所述中断请求,查询所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果;或,
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机监测所述目标虚拟加速器的虚拟输入/输出环,并根据所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个所述单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果。
在图11所描述的数据传输装置1100中,执行加速操作所需的信息所采用的数据结构占用目标虚拟加速器的虚拟输入/输出环的至少一个单元项,收发双向均采用零拷贝方案。这种方式,虽然不能增强了虚拟输入/输出环的吞吐能力,但是收发双向均不需要进行内存拷贝,相对于现有技术来说可以减少CPU资源的消耗。
请参见图12,图12是本发明实施例公开的一种宿主机的结构示意图,其中,该宿主机1200可以用于执行图5~图7所公开的数据传输方法中的全部或部分步骤,具体请参照图5~图7所描述的,在此不再赘述。如图12所示,该宿主机1200可以包括:至少一个处理器1201,例如CPU(Central Processing Unit,中央处理器),硬件加速器1202以及存储器1203,其中,所述处理器1201、硬件加速器1202以及存储器1203分别连接通信总线。存储器1203可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory)。本领域技术人员可以理解,图12中示出的宿主机1200的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图12所示的更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,处理器1201为宿主机1200的控制中心,可以是中央处理器(CentralProcessing Unit,CPU),处理器1201利用各种接口和线路连接整个宿主机1200的各个部分,通过运行或执行存储在存储器1203内的软件程序和/或模块,以及调用存储在存储器1203内存储的程序代码,用于执行以下操作:
获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息,所述执行加速操作所需的信息采用预定义的数据结构,所述数据结构占用所述目标虚拟加速器的虚拟输入/输出环的一个单元项;
根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息;
将所述硬件加速器能够识别的信息发送给所述硬件加速器,所述硬件加速器用于根据所述硬件加速器能够识别的信息获取待加速数据,并对所述待加速数据执行加速操作。
其中,所述执行加速操作所需的信息包括待加速数据的虚拟机物理地址、待加速数据的长度、存放加速结果的虚拟机物理地址以及加速类型参数。
可选的,处理器1201根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息的方式具体为:
根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机物理地址的映射关系,确定所述待加速数据的主机物理地址;
所述处理器1201将所述硬件加速器能够识别的信息发送给所述硬件加速器的方式具体为::
将所述待加速数据的主机物理地址发送给所述硬件加速器;
其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
可选的,所述硬件加速器支持多个虚拟功能VF,所述处理器1201在确定所述待加速数据的主机物理地址之后,还可以调用存储在存储器1203内存储的程序代码,用于执行以下操作:
从预设的虚拟加速器与VF的绑定关系中,查询所述目标虚拟加速器绑定的目标VF;
所述处理器1201将所述待加速数据的主机物理地址发送给所述硬件加速器包括:
将所述待加速数据的主机物理地址发送给所述目标VF,所述目标VF用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
可选的,处理器1201还可以调用存储在存储器1203内存储的程序代码,用于执行以下操作:
当所述待加速数据被加速处理完之后,根据所述绑定关系中所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
可选的,处理器1201获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息之前,还可以调用存储在存储器1203内存储的程序代码,用于执行以下操作:
若所述硬件加速器支持多个虚拟功能VF,从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系。
可选的,处理器1201将所述待加速数据的主机物理地址发送给所述硬件加速器之前,还可以调用存储在存储器1203内存储的程序代码,用于执行以下操作:
记录所述目标虚拟加速器的标识。
可选的,处理器1201还可以调用存储在存储器1203内存储的程序代码,用于执行以下操作:
当所述待加速数据被加速处理完后,根据记录的所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
可选的,处理器1201根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息的方式具体为:
根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机虚拟地址的映射关系,确定所述待加速数据在虚拟机内存中的主机虚拟地址;
根据所述待加速数据在虚拟机内存中的所述主机虚拟地址,将所述待加速数据拷贝到主机内存缓冲区中;
根据所述待加速数据在所述主机内存缓冲区中的主机虚拟地址,以及预设的主机虚拟地址与主机物理地址的映射关系,确定所述待加速数据在所述主机内存缓冲区中的主机物理地址;
所述处理器1201将所述硬件加速器能够识别的信息发送给所述硬件加速器包括:
将所述待加速数据的主机物理地址发送给所述硬件加速器。
其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述主机内存缓冲区中获取所述待加速数据,并对所述待加速数据执行加速操作。
可选的,处理器1201还可以调用存储在存储器1203内存储的程序代码,用于执行以下操作:
当所述待加速数据被加速处理完之后,将生成的加速结果拷贝到所述虚拟机内存中;
根据所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
可选的,处理器1201将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中之后,还可以调用存储在存储器1203内存储的程序代码,用于执行以下操作:
向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以触发所述虚拟机根据所述目标虚拟加速器的标识查询所述目标虚拟加速器的虚拟输入/输出环中的所述单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果。
在图12所描述的宿主机中,虚拟机下发的执行加速操作所需的信息仍然采用的是预定义的数据结构,该数据结构占用目标虚拟加速器的虚拟输入/输出环的一个单元项,这可以极大增强了虚拟输入/输出环的吞吐能力,在单位时间内,传输的数据包更多,从而能够提高数据包的传输效率。
请参见图13,图13是本发明实施例公开的另一种宿主机的结构示意图,其中,该宿主机1300可以用于执行图5~图7所公开的数据传输方法中的全部或部分步骤,具体请参照图5~图7所描述的,在此不再赘述。如图13所示,该宿主机1300可以包括:至少一个处理器1301,例如CPU(Central Processing Unit,中央处理器),硬件加速器1302以及存储器1303,其中,所述处理器1301、硬件加速器1302以及存储器1303分别连接通信总线。存储器1303可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory)。本领域技术人员可以理解,图13中示出的宿主机1300的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图13所示的更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,处理器1301为宿主机1300的控制中心,可以是中央处理器(CentralProcessing Unit,CPU),处理器1301利用各种接口和线路连接整个宿主机1300的各个部分,通过运行或执行存储在存储器1303内的软件程序和/或模块,以及调用存储在存储器1303内存储的程序代码,用于执行以下操作:
当待加速数据被加速处理完之后,获取目标虚拟加速器的标识;
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果,其中,所述单元项存储有对所述待加速数据执行加速操作所需的信息。
可选的,所述硬件加速器支持多个虚拟功能VF,当待加速数据被加速处理完之后,处理器1301获取目标虚拟加速器的标识之前,还可以调用存储在存储器1303内存储的程序代码,用于执行以下操作:
从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系;
其中,所述目标虚拟加速器的标识是从所述绑定关系中获取的。
可选的,当待加速数据被加速处理完之后,处理器1301获取目标虚拟加速器的标识之前,还可以调用存储在存储器1303内存储的程序代码,用于执行以下操作:
记录目标虚拟加速器的标识。
可选的,处理器1301根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于述目标虚拟加速器对应的虚拟机根据至少一个所述单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果的方式具体为:
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,并向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以便于所述虚拟机响应所述中断请求,查询所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果;或,
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机监测所述目标虚拟加速器的虚拟输入/输出环,并根据所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果。
在图13所描述的宿主机中,待加速数据最初存储在虚拟机内存中,该待加速数据被加速处理完后生成的加速结果也存储在虚拟机内存中,整个过程未进程拷贝,减少了CPU资源的占用。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (28)

1.一种数据传输方法,其特征在于,应用于宿主机中的守护进程,所述宿主机上部署有虚拟机,所述宿主机中还部署有硬件加速器以及为所述虚拟机配置的至少一个虚拟加速器,所述方法包括:
获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息,所述执行加速操作所需的信息采用预定义的数据结构,所述数据结构占用所述目标虚拟加速器的虚拟输入/输出环的一个单元项;所述执行加速操作所需的信息包括待加速数据的虚拟机物理地址、待加速数据的长度和存放加速结果的虚拟机物理地址;其中,虚拟机发出的所述执行加速操作所需的信息经虚拟加速器前端驱动时,所述虚拟机的应用程序只需按照所述数据结构,将其记录的参数信息传递给虚拟加速器的前端驱动,所述虚拟加速器的前端驱动直接赋值所述数据结构后,将所述数据结构作为一个单元项加入所述虚拟输入/输出环中;其中,针对加速功能的一次操作只需占用所述虚拟输入/输出环中的一个单元项;
根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息;
将所述硬件加速器能够识别的信息发送给所述硬件加速器,所述硬件加速器用于根据所述硬件加速器能够识别的信息获取待加速数据,并对所述待加速数据执行加速操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息包括:
根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机物理地址的映射关系,确定所述待加速数据的主机物理地址;
所述将所述硬件加速器能够识别的信息发送给所述硬件加速器包括:
将所述待加速数据的主机物理地址发送给所述硬件加速器;
其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
3.根据权利要求2所述的方法,其特征在于,所述硬件加速器支持多个虚拟功能VF,所述确定所述待加速数据的主机物理地址之后,所述方法还包括:
从预设的虚拟加速器与VF的绑定关系中,查询所述目标虚拟加速器绑定的目标VF;
所述将所述待加速数据的主机物理地址发送给所述硬件加速器包括:
将所述待加速数据的主机物理地址发送给所述目标VF,所述目标VF用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述待加速数据被加速处理完之后,根据所述绑定关系中所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
5.根据权利要求3或4所述的方法,其特征在于,所述获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息之前,所述方法还包括:
若所述硬件加速器支持多个虚拟功能VF,从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系。
6.根据权利要求2所述的方法,其特征在于,所述将所述待加速数据的主机物理地址发送给所述硬件加速器之前,所述方法还包括:
记录所述目标虚拟加速器的标识。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述待加速数据被加速处理完后,根据记录的所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
8.根据权利要求1所述的方法,其特征在于,所述根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息包括:
根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机虚拟地址的映射关系,确定所述待加速数据在虚拟机内存中的主机虚拟地址;
根据所述待加速数据在所述虚拟机内存中的所述主机虚拟地址,将所述待加速数据拷贝到主机内存缓冲区中;
根据所述待加速数据在所述主机内存缓冲区中的主机虚拟地址,以及预设的主机虚拟地址与主机物理地址的映射关系,确定所述待加速数据在所述主机内存缓冲区中的主机物理地址;
所述将所述硬件加速器能够识别的信息发送给所述硬件加速器包括:
将所述待加速数据的主机物理地址发送给所述硬件加速器;
其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述主机内存缓冲区中获取所述待加速数据,并对所述待加速数据执行加速操作。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述待加速数据被加速处理完之后,将生成的加速结果拷贝到所述虚拟机内存中;
根据所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
10.根据权利要求4、7或9所述的方法,其特征在于,所述将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中之后,所述方法还包括:
向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以触发所述虚拟机根据所述目标虚拟加速器的标识查询所述目标虚拟加速器的虚拟输入/输出环中的所述单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果。
11.一种数据传输方法,其特征在于,应用于宿主机中的守护进程,所述宿主机上部署有虚拟机,所述宿主机中还部署有硬件加速器以及为所述虚拟机配置的至少一个虚拟加速器,所述方法包括:
当待加速数据被加速处理完之后,获取目标虚拟加速器的标识;
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果,其中,所述至少一个单元项存储有对所述待加速数据执行加速操作所需的信息;虚拟机发出的所述执行加速操作所需的信息经虚拟加速器前端驱动时,所述虚拟机的应用程序只需按照数据结构,将其记录的参数信息传递给虚拟加速器的前端驱动,所述虚拟加速器的前端驱动直接赋值所述数据结构后,将所述数据结构作为一个单元项加入所述虚拟输入/输出环中;其中,针对加速功能的一次操作只需占用所述虚拟输入/输出环中的一个单元项。
12.根据权利要求11所述的方法,其特征在于,所述硬件加速器支持多个虚拟功能VF,所述当待加速数据被加速处理完之后,获取目标虚拟加速器的标识之前,所述方法还包括:
从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系;
其中,所述目标虚拟加速器的标识是从所述绑定关系中获取的。
13.根据权利要求11所述的方法,其特征在于,所述当待加速数据被加速处理完之后,获取目标虚拟加速器的标识之前,所述方法还包括:
记录目标虚拟加速器的标识。
14.根据权利要求11~13任一项所述的方法,其特征在于,所述根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果的方式具体为:
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,并向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以便于所述虚拟机响应所述中断请求,查询所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果;
或,
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机监测所述目标虚拟加速器的虚拟输入/输出环,并根据所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果。
15.一种数据传输装置,其特征在于,包括:
获取单元,用于获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息,所述执行加速操作所需的信息采用预定义的数据结构,所述数据结构占用所述目标虚拟加速器的虚拟输入/输出环的一个单元项;所述执行加速操作所需的信息包括待加速数据的虚拟机物理地址、待加速数据的长度和存放加速结果的虚拟机物理地址;其中,虚拟机发出的所述执行加速操作所需的信息经虚拟加速器前端驱动时,所述虚拟机的应用程序只需按照所述数据结构,将其记录的参数信息传递给虚拟加速器的前端驱动,所述虚拟加速器的前端驱动直接赋值所述数据结构后,将所述数据结构作为一个单元项加入所述虚拟输入/输出环中;其中,针对加速功能的一次操作只需占用所述虚拟输入/输出环中的一个单元项;
确定单元,用于根据所述执行加速操作所需的信息,确定硬件加速器能够识别的信息;
发送单元,用于将所述硬件加速器能够识别的信息发送给所述硬件加速器,所述硬件加速器用于根据所述硬件加速器能够识别的信息获取待加速数据,并对所述待加速数据执行加速操作。
16.根据权利要求15所述的装置,其特征在于,所述确定单元根据所述执行加速操作所需的信息,确定所述硬件加速器能够识别的信息的方式具体为:
根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机物理地址的映射关系,确定所述待加速数据的主机物理地址;
所述发送单元将所述硬件加速器能够识别的信息发送给所述硬件加速器的方式具体为:
将所述待加速数据的主机物理地址发送给所述硬件加速器;
其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
17.根据权利要求16所述的装置,其特征在于,所述硬件加速器支持多个虚拟功能VF,所述装置还包括:
查询单元,用于在所述确定单元确定所述待加速数据的主机物理地址之后,从预设的虚拟加速器与VF的绑定关系中,查询所述目标虚拟加速器绑定的目标VF;
所述发送单元将所述待加速数据的主机物理地址发送给所述硬件加速器的方式具体为:
将所述待加速数据的主机物理地址发送给所述目标VF,所述目标VF用于根据所述待加速数据的主机物理地址从所述待加速数据的虚拟机物理地址对应的虚拟机内存中获取所述待加速数据,并对所述待加速数据执行加速操作。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
第一添加单元,用于当所述待加速数据被加速处理完之后,根据所述绑定关系中所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
19.根据权利要求17或18所述的装置,其特征在于,所述装置还包括:
建立单元,用于在所述获取单元获取目标虚拟加速器的虚拟输入/输出环中的执行加速操作所需的信息之前,若所述硬件加速器支持多个虚拟功能VF,从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系。
20.根据权利要求16所述的装置,其特征在于,所述装置还包括:
记录单元,用于在所述发送单元将所述待加速数据的主机物理地址发送给所述硬件加速器之前,记录所述目标虚拟加速器的标识。
21.根据权利要求20所述的装置,其特征在于,所述装置还包括:
第二添加单元,用于当所述待加速数据被加速处理完后,根据记录的所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
22.根据权利要求15所述的装置,其特征在于,所述确定单元包括:
确定子单元,用于根据所述执行加速操作所需的信息中的待加速数据的虚拟机物理地址,以及预设的虚拟机物理地址与主机虚拟地址的映射关系,确定所述待加速数据在虚拟机内存中的主机虚拟地址;
拷贝子单元,用于根据所述待加速数据在所述虚拟机内存中的所述主机虚拟地址,将所述待加速数据拷贝到主机内存缓冲区中;
所述确定子单元,还用于根据所述待加速数据在所述主机内存缓冲区中的主机虚拟地址,以及预设的主机虚拟地址与主机物理地址的映射关系,确定所述待加速数据在所述主机内存缓冲区中的主机物理地址;
所述发送单元具体用于将所述待加速数据的主机物理地址发送给所述硬件加速器;
其中,所述硬件加速器用于根据所述待加速数据的主机物理地址从所述主机内存缓冲区中获取所述待加速数据,并对所述待加速数据执行加速操作。
23.根据权利要求22所述的装置,其特征在于,所述装置还包括:
拷贝单元,用于当所述待加速数据被加速处理完之后,将生成的加速结果拷贝到所述虚拟机内存中;
第三添加单元,用于根据所述目标虚拟加速器的标识,将所述单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中。
24.根据权利要求18、21、或23所述的装置,其特征在于,所述发送单元还用于向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以触发所述虚拟机根据所述目标虚拟加速器的标识查询所述目标虚拟加速器的虚拟输入/输出环中的所述单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果。
25.一种数据传输装置,其特征在于,包括:
获取单元,用于当待加速数据被加速处理完之后,获取目标虚拟加速器的标识;
添加单元,用于根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果,其中,所述至少一个单元项存储有对所述待加速数据执行加速操作所需的信息;虚拟机发出的所述执行加速操作所需的信息经虚拟加速器前端驱动时,所述虚拟机的应用程序只需按照数据结构,将其记录的参数信息传递给虚拟加速器的前端驱动,所述虚拟加速器的前端驱动直接赋值所述数据结构后,将所述数据结构作为一个单元项加入所述虚拟输入/输出环中;其中,针对加速功能的一次操作只需占用所述虚拟输入/输出环中的一个单元项。
26.根据权利要求25所述的装置,其特征在于,硬件加速器支持多个虚拟功能VF,所述装置还包括:
建立单元,用于在所述获取单元待加速数据被加速处理完之后,获取目标虚拟加速器的标识之前,从所述多个VF中选择未被使用的目标VF,并建立所述目标虚拟加速器与所述目标VF的绑定关系;
其中,所述目标虚拟加速器的标识是从所述绑定关系中获取的。
27.根据权利要求25所述的装置,其特征在于,所述装置还包括:
记录单元,用于在所述获取单元待加速数据被加速处理完之后,获取目标虚拟加速器的标识之前,记录目标虚拟加速器的标识。
28.根据权利要求25~27任一项所述的装置,其特征在于,所述添加单元根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机根据所述至少一个单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果的方式具体为:
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,并向所述目标虚拟加速器对应的虚拟机发送携带有所述目标虚拟加速器的标识的中断请求,以便于所述虚拟机响应所述中断请求,查询所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个单元项的标识,并获取所述待加速数据被加速处理完之后生成的加速结果;
或,
根据所述目标虚拟加速器的标识,将至少一个单元项的标识添加到所述目标虚拟加速器的虚拟输入/输出环中,以便于所述目标虚拟加速器对应的虚拟机监测所述目标虚拟加速器的虚拟输入/输出环,并根据所述目标虚拟加速器的虚拟输入/输出环中的所述至少一个所述单元项的标识,获取所述待加速数据被加速处理完之后生成的加速结果。
CN201610428164.3A 2016-06-15 2016-06-15 一种数据传输方法及装置 Active CN107515775B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN202111358155.9A CN114217902A (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置
CN202111358195.3A CN114218133A (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置
CN201610428164.3A CN107515775B (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置
PCT/CN2017/087890 WO2017215547A1 (zh) 2016-06-15 2017-06-12 一种数据传输方法及装置
EP17812658.7A EP3460658A4 (en) 2016-06-15 2017-06-12 DATA TRANSFER METHOD AND DEVICE
US16/214,551 US11182190B2 (en) 2016-06-15 2018-12-10 Data transmission method and apparatus
US17/517,862 US11922202B2 (en) 2016-06-15 2021-11-03 Data transmission method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610428164.3A CN107515775B (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202111358195.3A Division CN114218133A (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置
CN202111358155.9A Division CN114217902A (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置

Publications (2)

Publication Number Publication Date
CN107515775A CN107515775A (zh) 2017-12-26
CN107515775B true CN107515775B (zh) 2021-11-19

Family

ID=60663256

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201610428164.3A Active CN107515775B (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置
CN202111358195.3A Pending CN114218133A (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置
CN202111358155.9A Pending CN114217902A (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202111358195.3A Pending CN114218133A (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置
CN202111358155.9A Pending CN114217902A (zh) 2016-06-15 2016-06-15 一种数据传输方法及装置

Country Status (4)

Country Link
US (2) US11182190B2 (zh)
EP (1) EP3460658A4 (zh)
CN (3) CN107515775B (zh)
WO (1) WO2017215547A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9560078B2 (en) * 2015-02-04 2017-01-31 Intel Corporation Technologies for scalable security architecture of virtualized networks
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
CN107872545B (zh) * 2017-09-26 2022-12-06 中兴通讯股份有限公司 一种报文传输方法及装置、计算机可读存储介质
WO2019178855A1 (zh) * 2018-03-23 2019-09-26 华为技术有限公司 一种虚拟机访问远端加速设备方法及系统
US20190042329A1 (en) * 2018-06-29 2019-02-07 Utkarsh Y. Kakaiya System with programmable multi-context accelerator circuitry
US10795718B2 (en) * 2019-02-08 2020-10-06 Microsoft Technology Licensing, Llc Updating hardware with reduced virtual machine downtime
CN109918174A (zh) * 2019-03-15 2019-06-21 合肥谐桐科技有限公司 基于加速卡实现虚拟机热迁移优化处理的系统及其方法
CN110083387B (zh) * 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 使用轮询机制的处理系统及其访存方法
CN110083388B (zh) * 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 用于调度的处理系统及其访存方法
CN110058931B (zh) * 2019-04-19 2022-03-22 上海兆芯集成电路有限公司 用以任务调度的处理系统及其加速方法
US11405336B2 (en) * 2019-11-22 2022-08-02 Baidu Usa Llc Method for key sharing between accelerators in virtual channel with switch
US20210165675A1 (en) * 2019-12-02 2021-06-03 Xiao Wang Live migration for hardware accelerated para-virtualized io device
CN111459687B (zh) * 2020-04-02 2023-06-16 北京明朝万达科技股份有限公司 一种监控宿主机向虚拟机传递文件的方法及系统
US11409619B2 (en) 2020-04-29 2022-08-09 The Research Foundation For The State University Of New York Recovering a virtual machine after failure of post-copy live migration
CN113721972B (zh) * 2020-05-25 2024-04-16 Oppo广东移动通信有限公司 硬件加速器配置信息的配置方法、装置及存储介质
CN111708526B (zh) * 2020-06-05 2024-03-01 苏州瑞泰信息技术有限公司 一种api撰写方法
CN114095572B (zh) * 2020-07-30 2023-04-07 大唐移动通信设备有限公司 数据搬运方法及装置
CN112487393A (zh) * 2020-11-23 2021-03-12 苏州浪潮智能科技有限公司 一种实现虚拟机中访问pci密码卡的方法及装置
US20220197651A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Processing of data by multiple graphic processing devices
US20220283841A1 (en) * 2021-03-05 2022-09-08 Vmware, Inc. Using hypervisor to provide virtual hardware accelerators in an o-ran system
US11960919B2 (en) * 2021-07-19 2024-04-16 VMware LLC Virtual accelerators in a virtualized computing system
CN117411842B (zh) * 2023-12-13 2024-02-27 苏州元脑智能科技有限公司 事件抑制方法、装置、设备、异构平台及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428582A (zh) * 2013-09-02 2013-12-04 贝壳网际(北京)安全技术有限公司 播放视频的方法、装置和客户端
CN104021063A (zh) * 2014-05-14 2014-09-03 南京大学 一种基于硬件虚拟化的模块化计算机取证系统及其方法
CN105389199A (zh) * 2015-10-21 2016-03-09 同济大学 一种基于Xen的FPGA加速器虚拟化平台及应用

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620955B1 (en) * 2001-06-08 2009-11-17 Vmware, Inc. High-performance virtual machine networking
EP1495412B1 (en) * 2002-03-22 2012-11-28 Alandro Consulting NY LLC Scalable high performance 3d graphics
US6901463B2 (en) * 2003-03-05 2005-05-31 Sun Microsystems, Inc. Method and device for linking work requests with completion queue entries
US7492771B2 (en) * 2005-04-01 2009-02-17 International Business Machines Corporation Method for performing a packet header lookup
US7721299B2 (en) * 2005-08-05 2010-05-18 Red Hat, Inc. Zero-copy network I/O for virtual hosts
US20070162639A1 (en) * 2005-11-30 2007-07-12 Chu Hsiao-Keng J TCP-offload-engine based zero-copy sockets
US8521912B2 (en) * 2006-01-12 2013-08-27 Broadcom Corporation Method and system for direct device access
US8141092B2 (en) * 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition
US8141094B2 (en) * 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US8667187B2 (en) * 2008-09-15 2014-03-04 Vmware, Inc. System and method for reducing communication overhead between network interface controllers and virtual machines
FR2958427B1 (fr) * 2010-03-30 2016-11-18 Eurocopter France Procede d'agencement d'un logiciel d'application sur le materiel informatique d'un equipement reel ou virtuel et architecture de commande de l'equipement comprenant un tel logiciel
US9213567B2 (en) * 2010-10-01 2015-12-15 Futurewei Technologies, Inc. System and method for controlling the input/output of a virtualized network
US8839240B2 (en) * 2010-11-29 2014-09-16 International Business Machines Corporation Accessing vendor-specific drivers for configuring and accessing a self-virtualizing input/output device
US8537706B2 (en) * 2011-01-11 2013-09-17 International Business Machines Corporation Preserving traffic class priority QoS with self-virtualizing input/output device
CN102103518B (zh) * 2011-02-23 2013-11-13 运软网络科技(上海)有限公司 一种在虚拟化环境中管理资源的系统及其实现方法
US9092274B2 (en) * 2011-12-07 2015-07-28 International Business Machines Corporation Acceleration for virtual bridged hosts
US9424199B2 (en) * 2012-08-29 2016-08-23 Advanced Micro Devices, Inc. Virtual input/output memory management unit within a guest virtual machine
CN103870311B (zh) * 2012-12-10 2016-12-21 华为技术有限公司 通过半虚拟化驱动访问硬件的方法、后端驱动及前端驱动
WO2015042684A1 (en) * 2013-09-24 2015-04-02 University Of Ottawa Virtualization of hardware accelerator
US10261813B2 (en) * 2013-09-25 2019-04-16 Arm Limited Data processing system for dispatching tasks from a plurality of applications to a shared resource provided by an accelerator
CN104951353B (zh) * 2014-03-28 2018-09-21 华为技术有限公司 一种对vnf实现加速处理的方法及装置
US9575822B2 (en) * 2014-08-01 2017-02-21 Globalfoundries Inc. Tracking a relative arrival order of events being stored in multiple queues using a counter using most significant bit values
CN104615495B (zh) * 2015-01-28 2018-05-01 上海交通大学 嵌入式网络虚拟化环境中优化网络吞吐量的方法
CN104618158B (zh) * 2015-01-28 2018-05-04 上海交通大学 嵌入式网络虚拟化环境中VirtIO网络虚拟化工作方法
US9838277B2 (en) * 2015-06-25 2017-12-05 Keysight Technologies Singapore (Holdings) Pte Ltd Packet copy management for service chain processing within virtual processing systems
CN105159753B (zh) 2015-09-25 2018-09-28 华为技术有限公司 加速器虚拟化的方法、装置及集中资源管理器
CN106559471B (zh) 2015-09-30 2020-09-29 中兴通讯股份有限公司 加速资源的处理、管理方法及装置
CN105335211B (zh) * 2015-10-21 2018-10-26 同济大学 一种基于Xen虚拟化集群的FPGA加速器调度系统及方法
CN106886429B (zh) * 2015-12-16 2020-11-06 华为技术有限公司 一种加载驱动程序的方法和服务器
US9912774B2 (en) * 2015-12-22 2018-03-06 Intel Corporation Accelerated network packet processing
US10048977B2 (en) * 2015-12-22 2018-08-14 Intel Corporation Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration
US10747554B2 (en) * 2016-03-24 2020-08-18 Google Llc Contextual task shortcuts
US11082297B2 (en) * 2016-03-31 2021-08-03 Nec Corporation Network system and management method and apparatus thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428582A (zh) * 2013-09-02 2013-12-04 贝壳网际(北京)安全技术有限公司 播放视频的方法、装置和客户端
CN104021063A (zh) * 2014-05-14 2014-09-03 南京大学 一种基于硬件虚拟化的模块化计算机取证系统及其方法
CN105389199A (zh) * 2015-10-21 2016-03-09 同济大学 一种基于Xen的FPGA加速器虚拟化平台及应用

Also Published As

Publication number Publication date
US11182190B2 (en) 2021-11-23
CN107515775A (zh) 2017-12-26
CN114217902A (zh) 2022-03-22
WO2017215547A9 (zh) 2018-02-15
EP3460658A4 (en) 2020-02-19
EP3460658A1 (en) 2019-03-27
US11922202B2 (en) 2024-03-05
WO2017215547A1 (zh) 2017-12-21
US20190114197A1 (en) 2019-04-18
CN114218133A (zh) 2022-03-22
US20220129297A1 (en) 2022-04-28

Similar Documents

Publication Publication Date Title
CN107515775B (zh) 一种数据传输方法及装置
US11892967B2 (en) Flexible remote direct memory access
Rizzo et al. Vale, a switched ethernet for virtual machines
US7996569B2 (en) Method and system for zero copy in a virtualized network environment
US20170324609A1 (en) Virtual Machine Fault Tolerance Method, Apparatus, and System
US11757796B2 (en) Zero-copy processing
US20130047157A1 (en) Information processing apparatus and interrupt control method
CN104994032B (zh) 一种信息处理的方法和装置
US9910687B2 (en) Data flow affinity for heterogenous virtual machines
EP3771169B1 (en) Message processing method and related device
CN113614722A (zh) 网络功能虚拟化基础设施中的进程到进程安全数据移动
CN108491278B (zh) 一种处理业务数据的方法和网络设备
Chatras et al. Network functions virtualization: The portability challenge
US9836338B2 (en) Method and apparatus for message interactive processing
CN112650558A (zh) 数据处理方法、装置、可读介质和电子设备
WO2015121750A1 (en) System and method for data communication between virtual interfaces
Zhang et al. Workload adaptive shared memory management for high performance network i/o in virtualized cloud
Ma et al. InfiniBand virtualization on KVM
CN106790162B (zh) 虚拟网络优化方法与系统
US20230153153A1 (en) Task processing method and apparatus
Tang et al. Towards high-performance packet processing on commodity multi-cores: current issues and future directions
CN116628717A (zh) 数据处理方法、装置、电子设备及存储介质
Jung et al. Virtualizing GPU direct packet I/O on commodity Ethernet to accelerate GPU-NFV
Bie et al. Vhost-User
Das et al. Memory Management in ActiveRMT: Towards Runtime-programmable Switches

Legal Events

Date Code Title Description
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