CN103414535A - 数据发送方法和数据接收方法及相关装置 - Google Patents
数据发送方法和数据接收方法及相关装置 Download PDFInfo
- Publication number
- CN103414535A CN103414535A CN2013103302174A CN201310330217A CN103414535A CN 103414535 A CN103414535 A CN 103414535A CN 2013103302174 A CN2013103302174 A CN 2013103302174A CN 201310330217 A CN201310330217 A CN 201310330217A CN 103414535 A CN103414535 A CN 103414535A
- Authority
- CN
- China
- Prior art keywords
- formation
- user
- network interface
- interface card
- state
- 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.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了数据发送方法和数据接收方法及相关装置。一种数据发送方法可包括:基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址;向虚拟网卡发送第一数据发送指令,以便于虚拟网卡在确定出与K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与第一用户态虚拟内存空间地址具有映射关系的第一内核态物理内存空间地址,读取出第一数据,并基于与K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据。本发明实施例提供的技术方案有利于提高物理网卡聚合后的带宽利用率。
Description
技术领域
本发明涉及通信技术领域,具体涉及数据发送方法和数据接收方法及相关装置。
背景技术
随着计算机网络带宽的迅速发展,在高速网络环境中如何快速、完整的捕获网络数据包是高效转发数据包和准确分析处理网络报文的基础。由于专用的网络报文处理网卡价格昂贵以及缺乏灵活性,在运行Linux等操作***的计算节点(如服务器)上,通过普通网卡来实现基于软件的高速报文捕获***就变得尤为重要。
然而,单个普通网卡的带宽有限,很难达到高速报文***的要求。一些现有技术中通过链路聚集技术把多个网卡绑定在一起,可以以一种廉价、有效的方法扩展网络设备的带宽,提高网络的灵活性与可用性,从而达到高性能网络数据包捕获***的要求。其中,多块网卡通过例如bonding等链路聚集技术捆绑后可以获得成倍增长的带宽。但是,在一些例如小包作为网络中主要负载的情况下,每个物理网卡的传输率可能会远低于限速,以致于聚合体也远无法达到预期的带宽,带宽利用率可能较低。
发明内容
本发明实施例提供数据发送方法和数据接收方法及相关装置,以期提高物理网卡聚合后的带宽利用率。
本发明第一方面提供一种数据发送方法,可包括:
基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,所述第一用户态虚拟内存空间地址和所述第一内核态物理内存空间地址具有映射关系;
向虚拟网卡发送第一数据发送指令,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,所述第一数据发送指令携带有K个用户态网卡队列标识和所述第一用户态虚拟内存空间地址,以便于所述虚拟网卡在确定出与所述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示所述N个物理网卡从与所述第一用户态虚拟内存空间地址具有映射关系的所述第一内核态物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,所述K和N为正整数。
结合第一方面,在第一种可能的实施方式中,
所述向虚拟网卡发送第一数据发送指令之前还包括:
生成M个用户态网卡队列;
建立M个虚拟网卡队列与所述M个用户态网卡队列一一映射关系;
其中,所述K个用户态网卡队列为所述M个用户态网卡队列之中的部分或全部用户态网卡队列;所述M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
结合第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述第一用户态虚拟内存空间地址为第一客户机guest虚拟内存空间地址,所述第一内核态物理内存空间地址为第一guest物理内存空间地址,所述K个用户态网卡队列标识为K个guest用户态网卡队列标识。
结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量。
本发明第二方面提供一种数据发送方法,可包括:
接收来自虚拟机的第一数据发送指令,所述第一数据发送指令携带有K个客户机guest用户态网卡队列标识和所述第一guest物理内存空间地址,所述虚拟机的用户层基于第一guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,所述第一guest虚拟内存空间地址和所述第一guest物理内存空间地址具有映射关系;
将第一数据发送指令携带的第一guest物理内存空间地址替换为第一宿主机Host虚拟内存空间地址,并将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,所述第一guest物理内存空间地址与所述第一Host虚拟内存空间地址具有映射关系,所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与所述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
向虚拟网卡转发被替换了所述第一guest虚拟内存空间地址和所述K个guest用户态网卡队列标识的第一数据发送指令,以便于所述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与所述第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,其中,所述K和N为正整数,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡。
结合第二方面,在第一种可能的实施方式中,所述将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识之前还包括:
生成M个Host用户态网卡队列;建立M个虚拟网卡队列与所述M个Host用户态网卡队列一一映射关系;其中,M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个Host用户态网卡队列为所述M个Host用户态网卡队列之中的部分或全部Host用户态网卡队列,所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
结合第二方面或第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述Host用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述guest用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量。
本发明第三方面提供一种数据接收方法,可包括:
向虚拟网卡发送第一数据接收查询指令;
若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
结合第三方面,在第一种可能的实施方式中,所述向虚拟网卡发送第一数据接收查询指令,包括:向虚拟网卡发送携带了第一用户态网卡队列标识的第一数据接收查询指令。
本发明第四方面提供一种数据接收方法,可包括:
接收来自虚拟机的第一数据接收查询指令;
向所述虚拟网卡转发第一数据接收查询指令;
若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向所述虚拟机转发第一数据接收查询指令,以便于所述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
结合第四方面,在第一种可能的实施方式中,
第一数据接收查询指令携带了第一客户机guest用户态网卡队列标识;
所述方法还包括:将第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一宿主机Host用户态网卡队列标识,其中,所述第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与所述第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系;
所述向所述虚拟网卡转发第一数据接收查询指令,包括:
向所述虚拟网卡转发被替换了所述第一guest用户态网卡队列标识的第一数据发送指令。
本发明第五方面提供一种数据发送装置,可包括:
写入器,用于基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,所述第一用户态虚拟内存空间地址和所述第一内核态物理内存空间地址具有映射关系;
发送器,用于向虚拟网卡发送第一数据发送指令,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,所述第一数据发送指令携带有K个用户态网卡队列标识和所述第一用户态虚拟内存空间地址,以便于所述虚拟网卡在确定出与所述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示所述N个物理网卡从与所述第一用户态虚拟内存空间地址具有映射关系的所述第一内核态物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,所述K和N为正整数。
结合第五方面,在第一种可能的实施方式中,
所述数据发送装置还包括:
生成映射器,用于在所述发送器向虚拟网卡发送数据发送指令之前,生成M个用户态网卡队列;建立M个虚拟网卡队列与所述M个用户态网卡队列一一映射关系;其中,所述K个用户态网卡队列为所述M个用户态网卡队列之中的部分或全部用户态网卡队列;所述M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
结合第五方面或第五方面的第一种可能的实施方式,在第二种可能的实施方式中,所述第一用户态虚拟内存空间地址为第一客户机guest虚拟内存空间地址,所述第一内核态物理内存空间地址为第一guest物理内存空间地址,所述K个用户态网卡队列标识为K个guest用户态网卡队列标识。
结合第五方面或第五方面的第一种可能的实施方式或第五方面的第二种可能的实施方式,在第三种可能的实施方式中,所述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量。
本发明第六方面提供一种数据发送装置,可包括:
接收器,用于接收来自虚拟机的第一数据发送指令,所述第一数据发送指令携带有K个客户机guest用户态网卡队列标识和所述第一guest物理内存空间地址,所述虚拟机的用户层基于第一guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,所述第一guest虚拟内存空间地址和所述第一guest物理内存空间地址具有映射关系;
转换器,用于将第一数据发送指令携带的第一guest物理内存空间地址替换为第一宿主机Host虚拟内存空间地址,并将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,所述第一guest物理内存空间地址与所述第一Host虚拟内存空间地址具有映射关系,所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与所述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
转发器,用于向虚拟网卡转发被替换了所述第一guest虚拟内存空间地址和所述K个guest用户态网卡队列标识的第一数据发送指令,以便于所述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与所述第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,其中,所述K和N为正整数,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡。
结合第六方面,在第一种可能的实施方式,
所述数据发送装置还包括:
生成映射器,用于在所述转换器将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识之前,生成M个Host用户态网卡队列;建立M个虚拟网卡队列与所述M个Host用户态网卡队列一一映射关系;其中,M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个Host用户态网卡队列为所述M个Host用户态网卡队列之中的部分或全部Host用户态网卡队列,所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
本发明第七方面提供一种数据接收装置,可包括:
发送器,用于向虚拟网卡发送第一数据接收查询指令;
读取器,用于若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
结合第七方面,在第一种可能的实施方式中,
所述发送器具体用于,向虚拟网卡发送携带了第一用户态网卡队列标识的第一数据接收查询指令。
本发明第八方面提供一种数据接收装置,可包括:
接收器,用于接收来自虚拟机的第一数据接收查询指令;
转发器,用于向所述虚拟网卡转发第一数据接收查询指令;若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向所述虚拟机转发第一数据接收查询指令,以便于所述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
结合第八方面,在第一种可能的实施方式中,第一数据接收查询指令携带了第一guest用户态网卡队列标识;所述数据接收装置还包括:
转换器,用于将第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中,所述第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与所述第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系;
在向所述虚拟网卡转发第一数据接收查询指令的方面,所述转发器具体用于向所述虚拟网卡转发被替换了所述第一guest用户态网卡队列标识的第一数据发送指令。
本发明第九方面提供一种计算节点,可包括:
硬件层、运行在所述硬件层之上的宿主机Host,运行在所述Host之上的虚拟机;其中,所述硬件层包括N个物理网卡,N个物理网卡聚合形成虚拟网卡;
所述虚拟机的用户层,用于基于第一客户机guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,其中,所述第一guest虚拟内存空间地址和所述第一guest物理内存空间地址具有映射关系;发送第一数据发送指令,其中,所述第一数据发送指令携带有K个guest用户态网卡队列标识和所述第一guest虚拟内存空间地址;
所述虚拟机的内核层,用于将第一数据发送指令携带的第一guest虚拟内存空间地址替换为第一guest物理内存空间地址;发送被替换了第一guest虚拟内存空间地址的第一数据发送指令;
所述Host的用户层,用于接收被替换了第一guest虚拟内存空间地址的第一数据发送指令,将第一数据发送指令携带的第一guest物理内存空间地址替换为第一Host虚拟内存空间地址,并将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,所述第一guest物理内存空间地址与所述第一Host虚拟内存空间地址具有映射关系,所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与所述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
向虚拟网卡转发被替换了所述第一guest虚拟内存空间地址和所述K个guest用户态网卡队列标识的第一数据发送指令,以便于所述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与所述第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,其中,所述K和N为正整数。
结合第九方面,在第一种可能的实施方式中,
所述虚拟机的用户层还用于,向虚拟网卡发送第一数据发送指令之前生成M个用户态网卡队列;
建立M个虚拟网卡队列与所述M个用户态网卡队列一一映射关系;
其中,所述K个用户态网卡队列为所述M个用户态网卡队列之中的部分或全部用户态网卡队列;所述M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
结合第九方面或第九方面的第一种可能的实施方式,在第二种可能的实施方式中,所述Host的用户层还用于,将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识之前,生成M个Host用户态网卡队列;建立M个虚拟网卡队列与所述M个Host用户态网卡队列一一映射关系;其中,M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个Host用户态网卡队列为所述M个Host用户态网卡队列之中的部分或全部Host用户态网卡队列,所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
结合第九方面或第九方面的第一种可能的实施方式或第九方面的第二种可能的实施方式,在第三种可能的实施方式中,所述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述Host用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述guest用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量。
本发明第十方面提供一种计算节点,可包括:硬件层、运行在所述硬件层之上的宿主机Host,运行在所述Host之上的虚拟机;其中,所述硬件层包括N个物理网卡,N个物理网卡聚合形成虚拟网卡;
所述虚拟机,用于向虚拟网卡发送第一数据接收查询指令;若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系;
所述Host的用户层,用于接收来自所述虚拟机的第一数据接收查询指令;向所述虚拟网卡转发第一数据接收查询指令;若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向所述虚拟机转发第一数据接收查询指令,以便于所述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
结合第十方面,在第一种可能的实施方式中,
所述虚拟机向虚拟网卡发送的第一数据接收查询指令携带第一用户态网卡队列标识;
所述Host的用户层还用于,将接收到的第一数据接收查询指令携带的第一客户机guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中所述第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与所述第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系;
在向所述虚拟网卡转发第一数据接收查询指令的方面,所述Host的用户层具体用于,向所述虚拟网卡转发被替换了所述第一guest用户态网卡队列标识的第一数据发送指令。
可以看出,本发明一些实施例提供的技术方案中,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可方便部署网络冗余功能,有利于在高速网络环境中获得较高的并行性。
本发明另一些实施例提供的技术方案中,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了用户态网卡队列和物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可方便部署网络冗余功能,有利于在高速网络环境中获得较高的并行性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种网卡聚合***布局结构的示意图;
图2是本发明实施例提供的一种数据发送方法的流程示意图;
图3是本发明实施例提供的另一种数据发送方法的流程示意图;
图4是本发明实施例提供的另一种网卡聚合***布局结构的示意图;
图5是本发明实施例提供的另一种网卡聚合***布局结构的示意图;
图6是本发明实施例提供的一种数据接收方法的流程示意图;
图7是本发明实施例提供的一种数据接收方法的流程示意图;
图8是本发明实施例提供的一种数据发送装置的示意图;
图9是本发明实施例提供的另一种数据发送装置的示意图;
图10是本发明实施例提供的一种数据接收装置的示意图;
图11是本发明实施例提供的另一种数据接收装置的示意图;
图12是本发明实施例提供的一种计算节点的示意图;
图13是本发明实施例提供的另一种计算节点的示意图;
图14是本发明实施例提供的另一种计算节点的示意图。
具体实施方式
本发明实施例提供数据发送方法和数据接收方法及相关装置,以期提高物理网卡聚合后的带宽利用率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
以下分别进行详细说明。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素;
虚拟机VM:
通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作***和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层:
虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某计算节点的硬件层可包括中央处理器(CPUCentral Processing Unit)和内存,还可以包括网卡、存储器等等高速/低速输入/输出(I/O,Input/Output)设备,当然硬件层还可能包括具有特定处理功能的其它设备。
I/O虚拟功能:
具有I/O虚拟功能的I/O设备在启动I/O虚拟功能后,可以虚拟出对应的物理功能(PF,Physical Function)设备和若干个虚拟功能(VF,Virtual Function)设备,其中,I/O设备虚拟出的PF设备主要负责管理功能,VF设备主要负责处理功能。
宿主机(Host):
作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);此外,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机则运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。
如图1所示,在一些应用场景下,基于链路聚合技术在把物理网卡按照相关协议聚合后在内核会构建出1个虚拟网卡设备,其中,对该虚拟网卡收发数据包的通路会先经过内核网络协议栈,然后是***调用层,最后才到达用户态应用程序。从图1中可以看出,这种方式可能有如下一些因素会影响到该虚拟网卡收发包的性能:用户态的多线程无法对应到硬件的收发队列,从而无法实现每条队列绑定到一个特定的CPU;内核态和用户态之间的数据拷贝;对每个数据包的收发都有一定***调用开销;数据通路经过协议栈的多层比如网际互联协议(IP,Internet Protocol)层和传输层等,这种方式也会带来较多的处理开销。
本发明一种数据发送方法的一个实施例,其中,一种数据发送方法可以包括:基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,第一用户态虚拟内存空间地址和第一内核态物理内存空间地址具有映射关系;向虚拟网卡发送第一数据发送指令,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,第一数据发送指令携带有K个用户态网卡队列标识和第一用户态虚拟内存空间地址,以便于上述虚拟网卡在确定出与上述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示上述N个物理网卡从与第一用户态虚拟内存空间地址具有映射关系的第一内核态物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,上述K和N为正整数。
请参见图2,图2是本发明的一个实施例提供的一种数据发送方法的流程示意图。如图2所示,本发明的一个实施例提供的一种数据发送方法可包括以下内容:
201、基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,第一用户态虚拟内存空间地址和第一内核态物理内存空间地址具有映射关系。
202、向虚拟网卡发送第一数据发送指令,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;第一数据发送指令携带有K个用户态网卡队列标识和第一用户态虚拟内存空间地址,以便于上述虚拟网卡在确定出与上述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示上述N个物理网卡从与第一用户态虚拟内存空间地址具有映射关系的第一内核态物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,上述K和N为正整数。
在本发明的一些实施例中,在上述向上述虚拟网卡发送数据发送指令之前还可以包括:向虚拟网卡发送数据发送指令之前还包括:生成M个用户态网卡队列;建立M个虚拟网卡队列与上述M个用户态网卡队列一一映射关系;其中上述K个用户态网卡队列为上述M个用户态网卡队列之中的部分或全部用户态网卡队列;上述M个物理网卡队列与上述M个虚拟网卡队列具有一一映射关系;上述K个物理网卡队列为上述M个物理网卡队列之中的部分或全部物理网卡队列,上述K个虚拟网卡队列为上述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;其中,上述M个物理网卡队列为上述N个物理网卡对应的物理网卡队列,上述M为大于或等于上述K的正整数。
可以理解的是,本实施例的上述步骤可由虚拟机(如虚拟机的用户层)或Host的用户层等对象具体实施,例如虚拟机(如虚拟机的用户层)可基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,第一用户态虚拟内存空间地址和第一内核态物理内存空间地址具有映射关系;向虚拟网卡发送第一数据发送指令,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,第一数据发送指令携带有K个用户态网卡队列标识和第一用户态虚拟内存空间地址,以便于上述虚拟网卡在确定出与上述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示上述N个物理网卡从与第一用户态虚拟内存空间地址具有映射关系的第一内核态物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,上述K和N为正整数。
在本发明一些实施例中,对于虚拟机场景,上述M个用户态网卡队列可是M个客户机guest用户态网卡队列。K个用户态网卡队列标识可以是K个guest用户态网卡队列标识。其中,第一用户态虚拟内存空间地址为第一guest虚拟内存空间地址,第一内核态物理内存空间地址为第一guest物理内存空间地址。
其中,Host的用户层可接收来自虚拟机的第一数据发送指令,其中第一数据发送指令携带有K个guest用户态网卡队列标识和第一客户机guest物理内存空间地址,上述虚拟机的用户层基于第一guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,第一guest虚拟内存空间地址和第一guest物理内存空间地址具有映射关系;将第一数据发送指令携带的第一guest物理内存空间地址替换为第一宿主机Host虚拟内存空间地址,并将第一数据发送指令携带的上述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,第一guest物理内存空间地址与第一Host虚拟内存空间地址具有映射关系,其中,上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与上述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;向虚拟网卡转发被替换了第一guest虚拟内存空间地址和上述K个guest用户态网卡队列标识的第一数据发送指令,以便于上述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据。
在本发明一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明一些实施例中,用户态网卡队列(如guest用户态网卡队列或Host用户态网卡队列)中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某虚拟网卡队列具有映射关系的某用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同。与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中,与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以看出,本实施例提供的上述方案中,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
本发明数据发送方法的另一个实施例,其中,另一种数据发送方法可以包括:可接收来自虚拟机的第一数据发送指令,其中,第一数据发送指令携带有K个guest用户态网卡队列标识和第一客户机guest物理内存空间地址,上述虚拟机的用户层基于第一guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,第一guest虚拟内存空间地址和第一guest物理内存空间地址具有映射关系;将第一数据发送指令携带的第一guest物理内存空间地址替换为第一宿主机Host虚拟内存空间地址,并将第一数据发送指令携带的上述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,第一guest物理内存空间地址与第一Host虚拟内存空间地址具有映射关系,上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与上述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;向虚拟网卡转发被替换了第一guest虚拟内存空间地址和上述K个guest用户态网卡队列标识的第一数据发送指令,以便于上述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,其中,上述K和N为正整数,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡。
请参见图3,图3是本发明的另一个实施例提供的另一种数据发送方法的流程示意图。如图3所示,本发明的另一个实施例提供的另一种数据发送方法可包括以下内容:
301、接收来自虚拟机的第一数据发送指令,其中,第一数据发送指令携带有K个guest用户态网卡队列标识和第一客户机guest物理内存空间地址,上述虚拟机的用户层基于第一guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,第一guest虚拟内存空间地址和第一guest物理内存空间地址具有映射关系;
302、将第一数据发送指令携带的第一guest物理内存空间地址替换为第一宿主机Host虚拟内存空间地址,并将第一数据发送指令携带的上述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,第一guest物理内存空间地址与第一Host虚拟内存空间地址具有映射关系,上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与上述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
303、向虚拟网卡转发被替换了第一guest虚拟内存空间地址和上述K个guest用户态网卡队列标识的第一数据发送指令,以便于上述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,其中上述K和N为正整数,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡。
在本发明一些实施例中,将第一数据发送指令携带的上述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识之前还可包括:生成M个Host用户态网卡队列;建立M个虚拟网卡队列与上述M个Host用户态网卡队列一一映射关系;其中,M个物理网卡队列与上述M个虚拟网卡队列具有一一映射关系;上述K个Host用户态网卡队列为上述M个Host用户态网卡队列之中的部分或全部Host用户态网卡队列,上述K个物理网卡队列为上述M个物理网卡队列之中的部分或全部物理网卡队列,上述K个虚拟网卡队列为上述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;上述M个物理网卡队列为上述N个物理网卡对应的物理网卡队列,上述M为大于或等于上述K的正整数。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以看出,本实施例提供的上述方案中,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
为便于更好的理解和实施本发明实施例的上述方案,下面举例几个应用场景进行具体描述。
参见图4,图4为本发明一个实施例提供的一种网卡聚合***布局结构的示意图。假设计算节点的硬件层包括网卡NIC1和网卡NIC2,其中,网卡NIC1包括4个物理网卡队列401、网卡NIC2包括2个物理网卡队列401。网卡NIC1和网卡NIC2聚合形成一个虚拟网卡420。其中,通过初始化操作,虚拟网卡420中包括与6个物理网卡队列401建立起了一一映射关系的6个虚拟网卡队列402。用户层同样生成了6个用户态网卡队列403;并建立起了6个用户态网卡队列403与6个虚拟网卡队列402的一一映射关系。也就是说,6个用户态网卡队列403和6个物理网卡队列401之间也具有一一映射关系。
在本发明一些实施例中,各虚拟网卡队列402中记录有该队列大小、当前描述符指针和可用描述符数量等信息。在本发明一些实施例中,各用户态网卡队列403中记录有该队列大小、当前描述符指针和可用描述符数量等信息。在本发明一些实施例中,物理网卡队列401中可记录有该队列大小、当前描述符指针和可用描述符数量等信息。
在本发明的一些实施例中,与某虚拟网卡队列402具有映射关系的某用户态网卡队列403所记录的信息,可与该虚拟网卡队列402所记录的信息相同或部分相同。其中,与某物理网卡队列401具有映射关系的虚拟网卡队列402所记录的信息,可与该某物理网卡队列401所记录的信息相同或部分相同。
举例来说,若用户层(如用户层的某用户应用)需要发送第一数据,其可基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,第一用户态虚拟内存空间地址和第一内核态物理内存空间地址具有映射关系;而后向虚拟网卡420发送数据发送指令,其中,上述数据发送指令携带有K个(此处的K小于或等于6)用户态网卡队列标识和第一用户态虚拟内存空间地址;虚拟网卡420可以在根据用户态网卡队列与虚拟网卡队列之间的一一映射关系,确定出与上述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示上述2个物理网卡从与第一用户态虚拟内存空间地址具有映射关系的第一内核态物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据。
举例来说,对于数据接收场景,用户层(如用户层的某用户应用)可向虚拟网卡发送第一数据接收查询指令;若接收到虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若该可用描述符数量大于0,则基于该当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中该虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,第二数据是由该N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系。
可以看出,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可方便部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可以failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
参见图5,图5为本发明一个实施例提供的一种网卡聚合***布局结构的示意图。假设计算节点的硬件层包括网卡NIC1和网卡NIC2,其中,网卡NIC1包括4个物理网卡队列501、网卡NIC2包括2个物理网卡队列501。网卡NIC1和网卡NIC2聚合形成一个虚拟网卡520。其中,通过初始化操作,虚拟网卡520中包括与6个物理网卡队列501建立起了一一映射关系的6个虚拟网卡队列502。用户层中的Host同样生成了6个Host用户态网卡队列503;并建立起了6个Host用户态网卡队列503与6个虚拟网卡队列502的一一映射关系。即是说6个Host用户态网卡队列503和6个物理网卡队列501之间也具有一一映射关系。用户层中的虚拟机同样生成了6个guest用户态网卡队列504,并建立起了6个guest用户态网卡队列504与6个Host用户态网卡队列503的一一映射关系。也就是说,6个guest用户态网卡队列504和6个虚拟网卡队列502之间也具有一一映射关系,6个guest用户态网卡队列504和6个物理网卡队列501之间也具有一一映射关系。
在本发明一些实施例中,各虚拟网卡队列502中记录有该队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,各用户态网卡队列(如guest用户态网卡队列504、Host用户态网卡队列503等)中记录有该队列大小、当前描述符指针和可用描述符数量等等信息。在本发明的一些实施例中,各物理网卡队列501中可以记录有该队列大小、当前描述符指针和可用描述符数量等信息。
在本发明的一些实施例中,与某Host用户态网卡队列503具有映射关系的某guest用户态网卡队列504所记录的信息,可与该Host用户态网卡队列503所记录的信息相同或部分相同。其中,类似的,与某虚拟网卡队列502具有映射关系的某Host用户态网卡队列503所记录的信息,可与该虚拟网卡队列502所记录的信息相同或部分相同。其中,类似的,与某物理网卡队列501具有映射关系的虚拟网卡队列502所记录的信息,可与该某物理网卡队列501所记录的信息相同或部分相同。
举例来说,若某虚拟机中的用户层(如用户层中的某用户应用)需要发送第一数据,其中,虚拟机用户层可基于第一Guest虚拟内存空间地址,将待发送的第一数据写入与第一Guest虚拟内存空间地址具有映射关系的第一Guest物理内存空间地址,而后向虚拟网卡发送第一数据发送指令,其中,第一数据发送指令携带有K个(其中,此处的K小于或等于6)Guest用户态网卡队列标识和第一Guest虚拟内存空间地址;上述某虚拟机的内核层可将第一数据发送指令中携带的第一Guest虚拟内存空间地址替换为第一Guest物理内存空间地址,其中,第一Guest虚拟内存空间地址和第一Guest物理内存空间地址具有映射关系。
Host的用户层接收到第一数据发送指令之后,将第一数据发送指令中携带的第一Guest物理内存空间地址替换为第一Host虚拟内存空间地址,并将K个Guest用户态网卡队列标识替换为K个Host用户态网卡队列标识;第一Host虚拟内存空间地址和第一Guest物理内存空间地址具有映射关系,上述K个Guest用户态网卡队列标识所表示的Guest用户态网卡队列,与上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列之间具有一一映射关系。Host向虚拟网卡520转发修改后的第一数据发送指令。
虚拟网卡520接收到Host转发的第一数据发送指令之后,可在根据Host用户态网卡队列标识和虚拟网卡队列之间的一一映射关系,确定出与上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示上述2个物理网卡从与第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据。
在此应用场景下,除Host需通过mmap进行内存地址映射以外,虚拟机也做mmap以把guest用户态虚拟内存地址射成guest物理内存地址映。Host可在聚合的虚拟网卡和虚拟机间做零拷贝的直接转发或者提供虚拟环境下的网络安全隔离、网络故障分析、入侵检测、网络监控过滤等功能。
又举例来说,对于一些数据接收场景,虚拟机可向虚拟网卡发送第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,第一用户态网卡队列与第一物理网卡队列具有映射关系;
Host的用户层可接收来自上述虚拟机的第一数据接收查询指令;向上述虚拟网卡转发第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向上述虚拟机转发第一数据接收查询指令,以便于上述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系。
又举例来说,对于另一些数据接收场景,虚拟机可向虚拟网卡发送携带第一用户态网卡队列标识的第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,第一用户态网卡队列与第一物理网卡队列具有映射关系;
Host的用户层可接收来自虚拟机的携带第一用户态网卡队列标识的第一数据接收查询指令;将接收到的第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中,第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系;向上述虚拟网卡转发被替换了第一guest用户态网卡队列标识的第一数据发送指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向上述虚拟机转发第一数据接收查询指令,以便于上述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系。
可以看出,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
请参见图6,图6是本发明的另一个实施例提供的一种数据接收方法的流程示意图。如图6所示,本发明的另一个实施例提供的一种数据接收方法可包括以下内容:
601、向虚拟网卡发送第一数据接收查询指令。
602、若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令(其中,数据接收确认指令表示物理网卡接收到了数据),则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系。
在本发明的一些实施例中,上述向虚拟网卡发送第一数据接收查询指令可以包括:向虚拟网卡发送携带了第一用户态网卡队列标识的第一数据接收查询指令。
在本发明的一些实施例中,对于存在虚拟机的场景,上述步骤例如可在虚拟机(例如虚拟机的用户层)上具体实施。进一步的,Host的用户层可接收来自虚拟机的第一数据接收查询指令;向上述虚拟网卡转发第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令(其中,数据接收确认指令表示物理网卡接收到了数据),则向上述虚拟机转发第一数据接收查询指令,以便于上述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,其中,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,第一用户态网卡队列与第一物理网卡队列具有映射关系。
在本发明的一些实施例中,第一数据接收查询指令携带了第一guest用户态网卡队列标识;方法还可包括:将第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中,第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系。其中,上述向上述虚拟网卡转发第一数据接收查询指令,可以包括:向上述虚拟网卡转发被替换了第一guest用户态网卡队列标识的第一数据发送指令。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以看出,本实施例提供的上述方案中,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了用户态网卡队列和物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
请参见图7,图7是本发明的另一个实施例提供的另一种数据接收方法的流程示意图。如图7所示,本发明的另一个实施例提供的另一种数据接收方法可包括以下内容:
701、接收来自虚拟机的第一数据接收查询指令;
702、向上述虚拟网卡转发第一数据接收查询指令;
703、若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令(数据接收确认指令表示物理网卡接收到了数据),则向上述虚拟机转发第一数据接收查询指令,以便于上述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,其中第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,第一用户态网卡队列与第一物理网卡队列具有映射关系。
在本发明的一些实施例中,第一数据接收查询指令携带了第一guest用户态网卡队列标识;方法还可包括:将第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中,第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系。其中,上述向上述虚拟网卡转发第一数据接收查询指令,可以包括:向上述虚拟网卡转发被替换了第一guest用户态网卡队列标识的第一数据发送指令。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以看出,本实施例提供的上述方案中,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了用户态网卡队列和物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
下面还提供用于实施上述方案的相关装置。
参见图8,本发明实施例还提供一种数据发送装置800,可包括:写入器810和发送器820。
其中,写入器810,用于基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,第一用户态虚拟内存空间地址和第一内核态物理内存空间地址具有映射关系。
发送器820,用于向虚拟网卡发送第一数据发送指令,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,第一数据发送指令携带有K个用户态网卡队列标识和第一用户态虚拟内存空间地址,以便于上述虚拟网卡在确定出与上述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示上述N个物理网卡从与第一用户态虚拟内存空间地址具有映射关系的第一内核态物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,上述K和N为正整数。
在本发明的一些实施例中,数据发送装置800还可包括:
生成映射器,用于在上述发送器向虚拟网卡发送数据发送指令之前,生成M个用户态网卡队列;建立M个虚拟网卡队列与上述M个用户态网卡队列一一映射关系;其中,上述K个用户态网卡队列为上述M个用户态网卡队列之中的部分或全部用户态网卡队列;上述M个物理网卡队列与上述M个虚拟网卡队列具有一一映射关系;上述K个物理网卡队列为上述M个物理网卡队列之中的部分或全部物理网卡队列,上述K个虚拟网卡队列为上述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;上述M个物理网卡队列为上述N个物理网卡对应的物理网卡队列,上述M为大于或等于上述K的正整数。
在本发明的一些实施例中,第一用户态虚拟内存空间地址为第一客户机guest虚拟内存空间地址,第一内核态物理内存空间地址为第一guest物理内存空间地址,上述K个用户态网卡队列标识为K个guest用户态网卡队列标识。
在本发明的一些实施例中,对于存在虚拟机的场景,数据发送装置800可部署于虚拟机的用户层。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以理解,本实施例中描述的数据发送装置800的各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
可以看出,本实施例提供的上述方案中,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
参见图9,本发明实施例还提供一种数据发送装置900,可包括:
接收器910、转换器920和转发器930。
其中,接收器910,用于接收来自虚拟机的第一数据发送指令,第一数据发送指令携带有K个guest用户态网卡队列标识和第一客户机guest物理内存空间地址,上述虚拟机的用户层基于第一guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,第一guest虚拟内存空间地址和第一guest物理内存空间地址具有映射关系;
转换器920,用于将第一数据发送指令携带的第一guest物理内存空间地址替换为第一宿主机Host虚拟内存空间地址,并将第一数据发送指令携带的上述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,第一guest物理内存空间地址与第一Host虚拟内存空间地址具有映射关系,上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与上述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
转发器930,用于向虚拟网卡转发被替换了第一guest虚拟内存空间地址和上述K个guest用户态网卡队列标识的第一数据发送指令,以便于上述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,其中,上述K和N为正整数,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡。
在本发明的一些实施例中,数据发送装置900还可包括:
生成映射器,用于在上述转换器将第一数据发送指令携带的上述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识之前,生成M个Host用户态网卡队列;建立M个虚拟网卡队列与上述M个Host用户态网卡队列一一映射关系;其中,M个物理网卡队列与上述M个虚拟网卡队列具有一一映射关系;上述K个Host用户态网卡队列为上述M个Host用户态网卡队列之中的部分或全部Host用户态网卡队列,上述K个物理网卡队列为上述M个物理网卡队列之中的部分或全部物理网卡队列,上述K个虚拟网卡队列为上述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;上述M个物理网卡队列为上述N个物理网卡对应的物理网卡队列,上述M为大于或等于上述K的正整数。
在本发明的一些实施例中,数据发送装置900可部署于Host的用户层。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以理解,本实施例中描述的数据发送装置900的各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
可以看出,本实施例提供的上述方案中,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
参见图10,本发明实施例还提供一种数据接收装置1000,可包括:
发送器1010和读取器1010。
发送器1010,用于向虚拟网卡发送第一数据接收查询指令;
读取器1010,用于若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系。
在本发明的一些实施例中,发送器1010可具体用于,向虚拟网卡发送携带了第一用户态网卡队列标识的第一数据接收查询指令。
在本发明的一些实施例中,进一步的,Host的用户层可接收来自数据接收装置1000的第一数据接收查询指令;向上述虚拟网卡转发第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令(其中,数据接收确认指令表示物理网卡接收到了数据),则向数据接收装置1000转发第一数据接收查询指令,以便于数据接收装置1000查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,其中,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,第一用户态网卡队列与第一物理网卡队列具有映射关系。
在本发明的一些实施例中,第一数据接收查询指令携带了第一guest用户态网卡队列标识;Host的用户层还可将第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中,第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系。其中,上述向上述虚拟网卡转发第一数据接收查询指令,可以包括:向上述虚拟网卡转发被替换了第一guest用户态网卡队列标识的第一数据发送指令。
在本发明的一些实施例中,对于存在虚拟机的场景,数据接收装置1000可部署于虚拟机的用户层。
可以理解,本实施例中描述的数据接收装置1000的各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
可以看出,本实施例提供的上述方案中,把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
参见图11,本发明实施例还提供一种数据接收装置1100,可包括:接收器1110和转发器1120。
其中,接收器1110,用于接收来自虚拟机的第一数据接收查询指令;
转发器1120,用于向上述虚拟网卡转发第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向上述虚拟机转发第一数据接收查询指令,以便于上述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系。
在本发明的一些实施例中,第一数据接收查询指令携带了第一guest用户态网卡队列标识;
数据接收装置1100还包括:转换器,用于将第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中,第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系;在向上述虚拟网卡转发第一数据接收查询指令的方面,转发器1120具体用于向上述虚拟网卡转发被替换了第一guest用户态网卡队列标识的第一数据发送指令。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以理解,本实施例中描述的数据接收装置1100的各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
可以看出,本实施例提供的上述方案中,把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
参见图12,本发明实施例还提供一种计算节点1200,可包括:
硬件层1210、运行在上述硬件层之上的Host1220,运行在上述Host之上的虚拟机1230;其中,硬件层1210包括N个物理网卡1211,N个物理网卡1211聚合形成虚拟网卡。
虚拟机1230的用户层,用于基于第一客户机guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,其中,第一guest虚拟内存空间地址和第一guest物理内存空间地址具有映射关系;发送第一数据发送指令,其中,第一数据发送指令携带有K个guest用户态网卡队列标识和第一guest虚拟内存空间地址;
虚拟机1230的内核层,用于将第一数据发送指令携带的第一guest虚拟内存空间地址替换为第一guest物理内存空间地址;发送被替换了第一guest虚拟内存空间地址的第一数据发送指令;
Host1220的用户层,用于接收被替换了第一guest虚拟内存空间地址的第一数据发送指令,将第一数据发送指令携带的第一guest物理内存空间地址替换为第一Host虚拟内存空间地址,并将第一数据发送指令携带的上述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,第一guest物理内存空间地址与第一Host虚拟内存空间地址具有映射关系,上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与上述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
向虚拟网卡转发被替换了第一guest虚拟内存空间地址和上述K个guest用户态网卡队列标识的第一数据发送指令,以便于上述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,其中,上述K和N为正整数。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以理解,本实施例中描述的计算节点1200的各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
可以看出,本实施例提供的上述方案中,计算节点1200把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
参见图13,本发明实施例还提供一种计算节点1300,可包括:
硬件层1310、运行在上述硬件层之上的Host1320,运行在上述Host之上的虚拟机1330;其中,硬件层1310包括N个物理网卡1311,N个物理网卡1311聚合形成虚拟网卡。
虚拟机1330,用于向虚拟网卡发送第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系;
Host1320的用户层,用于接收来自上述虚拟机的第一数据接收查询指令;向上述虚拟网卡转发第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向上述虚拟机转发第一数据接收查询指令,以便于上述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系。
在本发明的一些实施例中,虚拟机1330还可用于向虚拟网卡发送的第一数据接收查询指令携带第一用户态网卡队列标识。
Host1320的用户层还用于,将接收到的第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中,第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系。
在向上述虚拟网卡转发第一数据接收查询指令的方面,Host1320的用户层具体用于,向上述虚拟网卡转发被替换了第一guest用户态网卡队列标识的第一数据发送指令。
在本发明的一些实施例中,虚拟机1330的用户层,用于基于第一客户机guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,其中,第一guest虚拟内存空间地址和第一guest物理内存空间地址具有映射关系;发送第一数据发送指令,其中,第一数据发送指令携带有K个guest用户态网卡队列标识和第一guest虚拟内存空间地址;
虚拟机1330的内核层,用于将第一数据发送指令携带的第一guest虚拟内存空间地址替换为第一guest物理内存空间地址;发送被替换了第一guest虚拟内存空间地址的第一数据发送指令;
Host1320的用户层,用于接收被替换了第一guest虚拟内存空间地址的第一数据发送指令,将第一数据发送指令携带的第一guest物理内存空间地址替换为第一Host虚拟内存空间地址,并将第一数据发送指令携带的上述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,第一guest物理内存空间地址与第一Host虚拟内存空间地址具有映射关系,上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与上述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
向虚拟网卡转发被替换了第一guest虚拟内存空间地址和上述K个guest用户态网卡队列标识的第一数据发送指令,以便于上述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与上述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,其中,上述K和N为正整数。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可以理解,本实施例中描述的计算节点1300的各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
可以看出,本实施例提供的上述方案中,计算节点1300把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
图14描述了本发明实施例提供的一种计算节点1400的结构,该计算节点1400包括:至少一个处理器1401,例如CPU,至少一个网络接口1404或者其他用户接口1403、存储器1405、至少一个通信总线1402。其中,少一个网络接口1404包括N个物理网卡。通信总线1402用于实现这些组件之间的连接通信。该计算节点1400可选的包含用户接口1403,包括显示器,键盘或者点击设备(例如鼠标,轨迹球(trackball),触感板或者触感显示屏)。其中,存储器1405可能包含高速RAM存储器,也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1405可选的可以包含至少一个位于远离前述处理器1401的存储装置。
在一些实施方式中,存储器1405存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作***14051,包含各种***程序,用于实现各种基础业务以及处理基于硬件的任务;
应用程序模块14052,包含各种应用程序,用于实现各种应用业务。
应用程序模块14052中包括但不限于写入器810和发送器820、和/或发送器1010和读取器1010、和/或接收器1110和转发器1120、和/或接收器910、转换器920和转发器930等模块。
在一些实施方式中,应用程序模块14052中还可进一步包括生成映射器。
应用程序模块14052中各模块的具体实现参见图8~图12所示实施例中的相应模块,在此不赘述。
在本发明实施例中,通过调用存储器1405存储的程序或指令,处理器1401可用于:基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,第一用户态虚拟内存空间地址和第一内核态物理内存空间地址具有映射关系;向虚拟网卡发送第一数据发送指令,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,第一数据发送指令携带有K个用户态网卡队列标识和第一用户态虚拟内存空间地址,以便于上述虚拟网卡在确定出与上述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示上述N个物理网卡从与第一用户态虚拟内存空间地址具有映射关系的第一内核态物理内存空间地址,读取出第一数据,并基于与上述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据,上述K和N为正整数。
在本发明的一些实施例中,在上述向上述虚拟网卡发送数据发送指令之前还可以包括:处理器1401向虚拟网卡发送数据发送指令之前还包括:生成M个用户态网卡队列;建立M个虚拟网卡队列与上述M个用户态网卡队列一一映射关系;其中上述K个用户态网卡队列为上述M个用户态网卡队列之中的部分或全部用户态网卡队列;上述M个物理网卡队列与上述M个虚拟网卡队列具有一一映射关系;上述K个物理网卡队列为上述M个物理网卡队列之中的部分或全部物理网卡队列,上述K个虚拟网卡队列为上述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;其中,上述M个物理网卡队列为上述N个物理网卡对应的物理网卡队列,上述M为大于或等于上述K的正整数。
在本发明实施例中,通过调用存储器1405存储的程序或指令,处理器1401还可用于:向虚拟网卡发送第一数据接收查询指令;若接收到上述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若上述可用描述符数量大于0,则基于上述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,上述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,第二数据是由上述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,第一用户态网卡队列与第一物理网卡队列具有映射关系。
在本发明的一些实施例中,处理器1401向虚拟网卡发送第一数据接收查询指令可以包括:处理器1401向虚拟网卡发送携带了第一用户态网卡队列标识的第一数据接收查询指令。
在本发明的一些实施例中,上述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,上述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量等信息。在本发明的一些实施例中,物理网卡队列中可记录有队列大小、当前描述符指针和可用描述符数量等信息。
在本发明一些实施例中,与某物理网卡队列具有映射关系的虚拟网卡队列所记录的信息,可与该某物理网卡队列所记录的信息相同或部分相同。其中与某虚拟网卡队列具有映射关系的某Host用户态网卡队列所记录信息,可与该某虚拟网卡队列所记录信息相同或部分相同;与某Host用户态网卡队列具有映射关系的某guest用户态网卡队列所记录信息,可与该某Host用户态网卡队列所记录信息相同或部分相同。
可见,采用上述方案后,由于把多块物理网卡聚合形成虚拟网卡,有利于获得更高的整合处理性能,并且,获得低时延和高吞吐量的同时具有较好可扩展性,由于建立起了N个用户态网卡队列、N个虚拟网卡队列和N个物理网卡队列之间的一一映射关系,因此,有利于充分发挥物理网卡多队列的功能和当前多核处理器并行性的优势,方便按照应用场景进行带宽控制,用户层的用户应用可方便的直接控制那些物理网卡队列参与数据发送,简单的实现用户态线程和物理网卡队列的绑定,有利于提高物理网卡聚合后的带宽利用率,可以方便的部署网络冗余功能,有利于在高速网络环境中获得较高的并行性;并且如果其中的某些物理网卡队列发生故障,可failover到剩余的物理网卡队列上继续工作,故障应急能力获得极大提高。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的数据发送方法的部分或全部步骤。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的数据接收方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (23)
1.一种数据发送方法,其特征在于,包括:
基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,所述第一用户态虚拟内存空间地址和所述第一内核态物理内存空间地址具有映射关系;
向虚拟网卡发送第一数据发送指令,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,所述第一数据发送指令携带有K个用户态网卡队列标识和所述第一用户态虚拟内存空间地址,以便于所述虚拟网卡在确定出与所述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示所述N个物理网卡从与所述第一用户态虚拟内存空间地址具有映射关系的所述第一内核态物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,所述K和N为正整数。
2.根据权利要求1所述的方法,其特征在于,
所述向虚拟网卡发送第一数据发送指令之前还包括:
生成M个用户态网卡队列;
建立M个虚拟网卡队列与所述M个用户态网卡队列一一映射关系;
其中,所述K个用户态网卡队列为所述M个用户态网卡队列之中的部分或全部用户态网卡队列;所述M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
3.根据权利要求1所述的方法,其特征在于,所述第一用户态虚拟内存空间地址为第一客户机guest虚拟内存空间地址,所述第一内核态物理内存空间地址为第一guest物理内存空间地址,所述K个用户态网卡队列标识为K个guest用户态网卡队列标识。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量。
5.一种数据发送方法,其特征在于,包括:
接收来自虚拟机的第一数据发送指令,所述第一数据发送指令携带有K个客户机guest用户态网卡队列标识和所述第一guest物理内存空间地址,所述虚拟机的用户层基于第一guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,所述第一guest虚拟内存空间地址和所述第一guest物理内存空间地址具有映射关系;
将第一数据发送指令携带的第一guest物理内存空间地址替换为第一宿主机Host虚拟内存空间地址,并将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,所述第一guest物理内存空间地址与所述第一Host虚拟内存空间地址具有映射关系,所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与所述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
向虚拟网卡转发被替换了所述第一guest虚拟内存空间地址和所述K个guest用户态网卡队列标识的第一数据发送指令,以便于所述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与所述第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,其中,所述K和N为正整数,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡。
6.根据权利要求5所述的方法,其特征在于,所述将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识之前还包括:
生成M个Host用户态网卡队列;建立M个虚拟网卡队列与所述M个Host用户态网卡队列一一映射关系;其中,M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个Host用户态网卡队列为所述M个Host用户态网卡队列之中的部分或全部Host用户态网卡队列,所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
7.根据权利要求5或6所述的方法,其特征在于,所述虚拟网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述Host用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量;和/或,所述guest用户态网卡队列中记录有队列大小、当前描述符指针和可用描述符数量。
8.一种数据接收方法,其特征在于,包括:
向虚拟网卡发送第一数据接收查询指令;
若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
9.根据权利要求8所述的方法,其特征在于,所述向虚拟网卡发送第一数据接收查询指令,包括:向虚拟网卡发送携带了第一用户态网卡队列标识的第一数据接收查询指令。
10.一种数据接收方法,其特征在于,包括:
接收来自虚拟机的第一数据接收查询指令;
向所述虚拟网卡转发第一数据接收查询指令;
若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向所述虚拟机转发第一数据接收查询指令,以便于所述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
11.根据权利要求10所述的方法,其特征在于,
第一数据接收查询指令携带了第一客户机guest用户态网卡队列标识;
所述方法还包括:将第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一宿主机Host用户态网卡队列标识,其中,所述第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与所述第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系;
所述向所述虚拟网卡转发第一数据接收查询指令,包括:
向所述虚拟网卡转发被替换了所述第一guest用户态网卡队列标识的第一数据发送指令。
12.一种数据发送装置,其特征在于,包括:
写入器,用于基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,所述第一用户态虚拟内存空间地址和所述第一内核态物理内存空间地址具有映射关系;
发送器,用于向虚拟网卡发送第一数据发送指令,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,所述第一数据发送指令携带有K个用户态网卡队列标识和所述第一用户态虚拟内存空间地址,以便于所述虚拟网卡在确定出与所述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示所述N个物理网卡从与所述第一用户态虚拟内存空间地址具有映射关系的所述第一内核态物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,所述K和N为正整数。
13.根据权利要求12所述的装置,其特征在于,
所述数据发送装置还包括:
生成映射器,用于在所述发送器向虚拟网卡发送数据发送指令之前,生成M个用户态网卡队列;建立M个虚拟网卡队列与所述M个用户态网卡队列一一映射关系;其中,所述K个用户态网卡队列为所述M个用户态网卡队列之中的部分或全部用户态网卡队列;所述M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
14.根据权利要求12或13所述的装置,其特征在于,所述第一用户态虚拟内存空间地址为第一客户机guest虚拟内存空间地址,所述第一内核态物理内存空间地址为第一guest物理内存空间地址,所述K个用户态网卡队列标识为K个guest用户态网卡队列标识。
15.一种数据发送装置,其特征在于,包括:
接收器,用于接收来自虚拟机的第一数据发送指令,所述第一数据发送指令携带有K个客户机guest用户态网卡队列标识和所述第一guest物理内存空间地址,所述虚拟机的用户层基于第一guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,所述第一guest虚拟内存空间地址和所述第一guest物理内存空间地址具有映射关系;
转换器,用于将第一数据发送指令携带的第一guest物理内存空间地址替换为第一宿主机Host虚拟内存空间地址,并将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,所述第一guest物理内存空间地址与所述第一Host虚拟内存空间地址具有映射关系,所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与所述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
转发器,用于向虚拟网卡转发被替换了所述第一guest虚拟内存空间地址和所述K个guest用户态网卡队列标识的第一数据发送指令,以便于所述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与所述第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,其中,所述K和N为正整数,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡。
16.根据权利要求15所述的装置,其特征在于,
所述数据发送装置还包括:
生成映射器,用于在所述转换器将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识之前,生成M个Host用户态网卡队列;建立M个虚拟网卡队列与所述M个Host用户态网卡队列一一映射关系;其中,M个物理网卡队列与所述M个虚拟网卡队列具有一一映射关系;所述K个Host用户态网卡队列为所述M个Host用户态网卡队列之中的部分或全部Host用户态网卡队列,所述K个物理网卡队列为所述M个物理网卡队列之中的部分或全部物理网卡队列,所述K个虚拟网卡队列为所述M个虚拟网卡队列之中的部分或全部虚拟网卡队列;所述M个物理网卡队列为所述N个物理网卡对应的物理网卡队列,所述M为大于或等于所述K的正整数。
17.一种数据接收装置,其特征在于,包括:
发送器,用于向虚拟网卡发送第一数据接收查询指令;
读取器,用于若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
18.根据权利要求17所述的装置,其特征在于,
所述发送器具体用于,向虚拟网卡发送携带了第一用户态网卡队列标识的第一数据接收查询指令。
19.一种数据接收装置,其特征在于,包括:
接收器,用于接收来自虚拟机的第一数据接收查询指令;
转发器,用于向所述虚拟网卡转发第一数据接收查询指令;若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向所述虚拟机转发第一数据接收查询指令,以便于所述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
20.根据权利要求19所述的装置,其特征在于,第一数据接收查询指令携带了第一guest用户态网卡队列标识;
所述数据接收装置还包括:
转换器,用于将第一数据接收查询指令携带的第一guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中,所述第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与所述第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系;
在向所述虚拟网卡转发第一数据接收查询指令的方面,所述转发器具体用于向所述虚拟网卡转发被替换了所述第一guest用户态网卡队列标识的第一数据发送指令。
21.一种计算节点,其特征在于,包括:
硬件层、运行在所述硬件层之上的宿主机Host,运行在所述Host之上的虚拟机;其中,所述硬件层包括N个物理网卡,N个物理网卡聚合形成虚拟网卡;
所述虚拟机的用户层,用于基于第一客户机guest虚拟内存空间地址,将待发送的第一数据写入第一guest物理内存空间地址,其中,所述第一guest虚拟内存空间地址和所述第一guest物理内存空间地址具有映射关系;发送第一数据发送指令,其中,所述第一数据发送指令携带有K个guest用户态网卡队列标识和所述第一guest虚拟内存空间地址;
所述虚拟机的内核层,用于将第一数据发送指令携带的第一guest虚拟内存空间地址替换为第一guest物理内存空间地址;发送被替换了第一guest虚拟内存空间地址的第一数据发送指令;
所述Host的用户层,用于接收被替换了第一guest虚拟内存空间地址的第一数据发送指令,将第一数据发送指令携带的第一guest物理内存空间地址替换为第一Host虚拟内存空间地址,并将第一数据发送指令携带的所述K个guest用户态网卡队列标识替换为K个Host用户态网卡队列标识,其中,所述第一guest物理内存空间地址与所述第一Host虚拟内存空间地址具有映射关系,所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列,与所述K个guest用户态网卡队列标识所表示的K个guest用户态网卡队列具有映射关系;
向虚拟网卡转发被替换了所述第一guest虚拟内存空间地址和所述K个guest用户态网卡队列标识的第一数据发送指令,以便于所述虚拟网卡在根据Host用户态网卡队列和虚拟网卡队列之间的一一映射关系,确定出与所述K个Host用户态网卡队列标识所表示的K个Host用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与所述第一Host虚拟内存空间地址具有映射关系的第一Host物理内存空间地址,读取出所述第一数据,并基于与所述K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送所述第一数据,其中,所述K和N为正整数。
22.一种计算节点,其特征在于,包括:硬件层、运行在所述硬件层之上的宿主机Host,运行在所述Host之上的虚拟机;其中,所述硬件层包括N个物理网卡,N个物理网卡聚合形成虚拟网卡;
所述虚拟机,用于向虚拟网卡发送第一数据接收查询指令;若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,其中,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系;
所述Host的用户层,用于接收来自所述虚拟机的第一数据接收查询指令;向所述虚拟网卡转发第一数据接收查询指令;若接收到所述虚拟网卡响应第一数据接收查询指令而发送的第一数据接收确认指令,则向所述虚拟机转发第一数据接收查询指令,以便于所述虚拟机查询得到第一用户态网卡队列记录的当前描述符指针和可用描述符数量,若所述可用描述符数量大于0,则基于所述当前描述符指针所指向第二用户态虚拟内存空间地址,从与第二用户态虚拟内存空间地址具有映射关系的第二内核态物理内存空间地址读取第二数据,所述第二数据是由所述N个物理网卡中的其中一个物理网卡基于第一物理网卡队列接收到的,其中,所述第一用户态网卡队列与所述第一物理网卡队列具有映射关系。
23.根据权利要求22所述的计算节点,其特征在于,
所述虚拟机向虚拟网卡发送的第一数据接收查询指令携带第一用户态网卡队列标识;
所述Host的用户层还用于,将接收到的第一数据接收查询指令携带的第一客户机guest用户态网卡队列标识替换为第一Host用户态网卡队列标识,其中所述第一Host用户态网卡队列标识所表示的第一Host用户态网卡队列,与所述第一guest用户态网卡队列标识所表示的第一guest用户态网卡队列具有映射关系;
在向所述虚拟网卡转发第一数据接收查询指令的方面,所述Host的用户层具体用于,向所述虚拟网卡转发被替换了所述第一guest用户态网卡队列标识的第一数据发送指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310330217.4A CN103414535B (zh) | 2013-07-31 | 2013-07-31 | 数据发送方法和数据接收方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310330217.4A CN103414535B (zh) | 2013-07-31 | 2013-07-31 | 数据发送方法和数据接收方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103414535A true CN103414535A (zh) | 2013-11-27 |
CN103414535B CN103414535B (zh) | 2017-04-19 |
Family
ID=49607522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310330217.4A Expired - Fee Related CN103414535B (zh) | 2013-07-31 | 2013-07-31 | 数据发送方法和数据接收方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103414535B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634225A (zh) * | 2013-12-18 | 2014-03-12 | 武汉朋客云计算有限公司 | 云计算网络虚拟化中的业务带宽扩展方法 |
CN104615495A (zh) * | 2015-01-28 | 2015-05-13 | 上海交通大学 | 嵌入式网络虚拟化环境中优化网络吞吐量的方法 |
CN105975407A (zh) * | 2016-03-22 | 2016-09-28 | 华为技术有限公司 | 一种内存地址的映射方法及设备 |
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN107005495A (zh) * | 2017-01-20 | 2017-08-01 | 华为技术有限公司 | 用于转发数据包的方法、网卡、主机设备和计算机*** |
CN107749893A (zh) * | 2017-11-09 | 2018-03-02 | 北京精强远科技有限公司 | 一种共享文件***中实现快速接收和储存数据的方法 |
WO2019056380A1 (zh) * | 2017-09-25 | 2019-03-28 | 华为技术有限公司 | 一种数据访问的方法和装置 |
CN109634723A (zh) * | 2018-12-20 | 2019-04-16 | 国网新疆电力有限公司信息通信公司 | 融合存载模块的通信方法及融合存载模块 |
CN109688058A (zh) * | 2018-12-19 | 2019-04-26 | 迈普通信技术股份有限公司 | 报文处理方法、装置及网络设备 |
CN111478794A (zh) * | 2020-03-05 | 2020-07-31 | 视联动力信息技术股份有限公司 | 一种信令报文交互方法、装置、终端设备和存储介质 |
CN112491570A (zh) * | 2019-09-11 | 2021-03-12 | 中兴通讯股份有限公司 | 一种虚拟网卡链路状态设置方法、装置及存储介质 |
CN113098955A (zh) * | 2021-03-30 | 2021-07-09 | 山东英信计算机技术有限公司 | 一种数据传输方法、装置、设备及计算机可读存储介质 |
CN113438184A (zh) * | 2021-06-25 | 2021-09-24 | 北京汇钧科技有限公司 | 网卡的队列管理方法、装置及电子设备 |
WO2022001417A1 (zh) * | 2020-06-28 | 2022-01-06 | 华为技术有限公司 | 一种数据传输方法、处理器***及内存访问*** |
CN113992425A (zh) * | 2021-11-12 | 2022-01-28 | 北京天融信网络安全技术有限公司 | 一种收发网络数据包的方法、网络设备以及通信*** |
CN114201317A (zh) * | 2021-12-16 | 2022-03-18 | 北京有竹居网络技术有限公司 | 数据传输方法、装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866202A (zh) * | 2005-05-18 | 2006-11-22 | 大唐移动通信设备有限公司 | 嵌入式设备的驱动方法 |
CN101917350A (zh) * | 2010-09-13 | 2010-12-15 | 南京中兴特种软件有限责任公司 | 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法 |
CN102567226A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据访问的实现方法和装置 |
US20130159580A1 (en) * | 2009-12-17 | 2013-06-20 | Yaozu Dong | Cooperated interrupt moderation for a virtualization environment |
-
2013
- 2013-07-31 CN CN201310330217.4A patent/CN103414535B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866202A (zh) * | 2005-05-18 | 2006-11-22 | 大唐移动通信设备有限公司 | 嵌入式设备的驱动方法 |
US20130159580A1 (en) * | 2009-12-17 | 2013-06-20 | Yaozu Dong | Cooperated interrupt moderation for a virtualization environment |
CN101917350A (zh) * | 2010-09-13 | 2010-12-15 | 南京中兴特种软件有限责任公司 | 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法 |
CN102567226A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据访问的实现方法和装置 |
Non-Patent Citations (3)
Title |
---|
XIA XIE: "I/O Scheduling by Using Multi-network Interfaces of Virtualization System", 《TRUST,SECURITY AND PRIVACY IN COMPUTING AND COMMUNICATIONS (TRUSTICOM),2011 IEEE 10TH INTERNATIONAL CONFERENCE ON》, 18 November 2011 (2011-11-18) * |
XIAOFEI DONG等: "Research and Implementation of Multi-network Adapter Bonding Technology Based on Multi-core Processor", 《COMPUTER SCIENCE AND AUTOMATION ENGINEERING(CSAE),2012 IEEE INTERNATIONAL CONFERENCE ON》, 27 May 2012 (2012-05-27) * |
陈卫屏: "《中国优秀硕士学位论文全文全文数据库(电子期刊)》", 30 November 2009, article "网络数据流高速采集***设计与实现" * |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634225A (zh) * | 2013-12-18 | 2014-03-12 | 武汉朋客云计算有限公司 | 云计算网络虚拟化中的业务带宽扩展方法 |
CN104615495A (zh) * | 2015-01-28 | 2015-05-13 | 上海交通大学 | 嵌入式网络虚拟化环境中优化网络吞吐量的方法 |
CN105975407A (zh) * | 2016-03-22 | 2016-09-28 | 华为技术有限公司 | 一种内存地址的映射方法及设备 |
CN105975407B (zh) * | 2016-03-22 | 2020-10-09 | 华为技术有限公司 | 一种内存地址的映射方法及设备 |
CN107005495B (zh) * | 2017-01-20 | 2020-03-27 | 华为技术有限公司 | 用于转发数据包的方法、网卡、主机设备和计算机*** |
CN107005495A (zh) * | 2017-01-20 | 2017-08-01 | 华为技术有限公司 | 用于转发数据包的方法、网卡、主机设备和计算机*** |
US11805058B2 (en) | 2017-01-20 | 2023-10-31 | Huawei Technologies Co., Ltd. | Data packet forwarding method, network adapter, host device, and computer system |
WO2018133035A1 (zh) * | 2017-01-20 | 2018-07-26 | 华为技术有限公司 | 用于转发数据包的方法、网卡、主机设备和计算机*** |
US11252087B2 (en) | 2017-01-20 | 2022-02-15 | Huawei Technologies Co., Ltd. | Data packet forwarding method, network adapter, host device, and computer system |
US10462056B2 (en) | 2017-01-20 | 2019-10-29 | Huawei Technologies Co., Ltd. | Data packet forwarding method, network adapter, host device, and computer system |
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
US11249934B2 (en) | 2017-09-25 | 2022-02-15 | Huawei Technologies Co., Ltd. | Data access method and apparatus |
WO2019056380A1 (zh) * | 2017-09-25 | 2019-03-28 | 华为技术有限公司 | 一种数据访问的方法和装置 |
CN107749893A (zh) * | 2017-11-09 | 2018-03-02 | 北京精强远科技有限公司 | 一种共享文件***中实现快速接收和储存数据的方法 |
CN109688058A (zh) * | 2018-12-19 | 2019-04-26 | 迈普通信技术股份有限公司 | 报文处理方法、装置及网络设备 |
CN109688058B (zh) * | 2018-12-19 | 2021-03-02 | 迈普通信技术股份有限公司 | 报文处理方法、装置及网络设备 |
CN109634723A (zh) * | 2018-12-20 | 2019-04-16 | 国网新疆电力有限公司信息通信公司 | 融合存载模块的通信方法及融合存载模块 |
CN112491570A (zh) * | 2019-09-11 | 2021-03-12 | 中兴通讯股份有限公司 | 一种虚拟网卡链路状态设置方法、装置及存储介质 |
CN111478794A (zh) * | 2020-03-05 | 2020-07-31 | 视联动力信息技术股份有限公司 | 一种信令报文交互方法、装置、终端设备和存储介质 |
CN111478794B (zh) * | 2020-03-05 | 2022-11-15 | 视联动力信息技术股份有限公司 | 一种信令报文交互方法、装置、终端设备和存储介质 |
WO2022001417A1 (zh) * | 2020-06-28 | 2022-01-06 | 华为技术有限公司 | 一种数据传输方法、处理器***及内存访问*** |
CN113098955A (zh) * | 2021-03-30 | 2021-07-09 | 山东英信计算机技术有限公司 | 一种数据传输方法、装置、设备及计算机可读存储介质 |
CN113438184B (zh) * | 2021-06-25 | 2022-09-06 | 北京汇钧科技有限公司 | 网卡的队列管理方法、装置及电子设备 |
CN113438184A (zh) * | 2021-06-25 | 2021-09-24 | 北京汇钧科技有限公司 | 网卡的队列管理方法、装置及电子设备 |
CN113992425B (zh) * | 2021-11-12 | 2022-09-23 | 北京天融信网络安全技术有限公司 | 一种收发网络数据包的方法、网络设备以及通信*** |
CN113992425A (zh) * | 2021-11-12 | 2022-01-28 | 北京天融信网络安全技术有限公司 | 一种收发网络数据包的方法、网络设备以及通信*** |
CN114201317A (zh) * | 2021-12-16 | 2022-03-18 | 北京有竹居网络技术有限公司 | 数据传输方法、装置、存储介质及电子设备 |
CN114201317B (zh) * | 2021-12-16 | 2024-02-02 | 北京有竹居网络技术有限公司 | 数据传输方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103414535B (zh) | 2017-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103414535A (zh) | 数据发送方法和数据接收方法及相关装置 | |
US10936535B2 (en) | Providing remote, reliant and high performance PCI express device in cloud computing environments | |
US9798682B2 (en) | Completion notification for a storage device | |
US10498645B2 (en) | Live migration of virtual machines using virtual bridges in a multi-root input-output virtualization blade chassis | |
US10824466B2 (en) | Container migration | |
CN102609298B (zh) | 基于硬件队列扩展的网卡虚拟化***及其方法 | |
CN104636076B (zh) | 一种用于云存储的分布式块设备驱动方法和*** | |
US20180198842A1 (en) | Address space management with respect to a coherent accelerator processor interface architecture | |
CN103763173A (zh) | 数据传输方法和计算节点 | |
US10095540B2 (en) | Virtual network provisioning prior to virtual machine manager launch by loading a partitioned network device with attribute data | |
CN103942087A (zh) | 虚拟机热迁移方法及相关装置和集群*** | |
CN104199718A (zh) | 一种基于numa高性能网络缓存资源亲和度的虚拟处理器的调度方法 | |
US20180165177A1 (en) | Debugging distributed web service requests | |
US11379387B2 (en) | Storage system with submission queue selection utilizing application and submission queue priority | |
CN106778275A (zh) | 基于虚拟化环境下的安全防护方法及***和物理主机 | |
US11379390B1 (en) | In-line data packet transformations | |
CN104580194A (zh) | 面向视频应用的虚拟化资源管理方法及装置 | |
US20180336085A1 (en) | Crash dump extraction of guest failure | |
US9817683B2 (en) | Optimized remediation policy in a virtualized environment | |
CN104123173A (zh) | 一种实现虚拟机间通信的方法及装置 | |
US9053092B2 (en) | System authorizing direct data transfers between memories of several components of that system | |
CN108228099A (zh) | 一种数据存储的方法及装置 | |
CN103795621A (zh) | 一种虚拟机的数据交换方法、装置及物理主机 | |
CN107147532B (zh) | 一种分布式设备的虚拟化方法和装置 | |
CN108415779A (zh) | 用于通过主机结构接口的队列管理的技术 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170419 Termination date: 20180731 |