数据发送方法和数据接收方法及相关装置与流程

文档序号:11965324阅读:343来源:国知局
数据发送方法和数据接收方法及相关装置与流程
本发明涉及通信技术领域,具体涉及数据发送方法和数据接收方法及相关装置。

背景技术:
随着计算机网络带宽的迅速发展,在高速网络环境中如何快速、完整的捕获网络数据包是高效转发数据包和准确分析处理网络报文的基础。由于专用的网络报文处理网卡价格昂贵以及缺乏灵活性,在运行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:通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机,而这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。硬件层:虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如某计算节点的硬件层可包括中央处理器(CPUCentralProcessingUnit)和内存,还可以包括网卡、存储器等等高速/低速输入/输出(I/O,Input/Output)设备,当然硬件层还可能包括具有特定处理功能的其它设备。I/O虚拟功能:具有I/O虚拟功能的I/O设备在启动I/O虚拟功能后,可以虚拟出对应的物理功能(PF,PhysicalFunction)设备和若干个虚拟功能(VF,VirtualFunction)设备,其中,I/O设备虚拟出的PF设备主要负责管理功能,VF设备主要负责处理功能。宿主机(Host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);此外,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机则运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。如图1所示,在一些应用场景下,基于链路聚合技术在把物理网卡按照相关协议聚合后在内核会构建出1个虚拟网卡设备,其中,对该虚拟网卡收发数据包的通路会先经过内核网络协议栈,然后是系统调用层,最后才到达用户态应用程序。从图1中可以看出,这种方式可能有如下一些因素会影响到该虚拟网卡收发包的性能:用户态的多线程无法对应到硬件的收发队列,从而无法实现每条队列绑定到一个特定的CPU;内核态和用户态之间的数据拷贝;对每个数据包的收发都有一定系统调用开销;数据通路经过协议栈的多层比如网际互联协议(IP,InternetProtocol)层和传输层等,这种方式也会带来较多的处理开销。本发明一种数据发送方法的一个实施例,其中,一种数据发送方法可以包括:基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,第一用户态虚拟内存空间地址和第一内核态物理内存空间地址具有映射关系;向虚拟网卡发送第一数据发送指令,其中,上述虚拟网卡为聚合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-volatilememory),例如至少一个磁盘存储器。存储器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-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1