数据发送方法和数据接收方法及相关装置制造方法及图纸

技术编号:9383469 阅读:107 留言:0更新日期:2013-11-28 01:27
本发明专利技术实施例公开了数据发送方法和数据接收方法及相关装置。一种数据发送方法可包括:基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址;向虚拟网卡发送第一数据发送指令,以便于虚拟网卡在确定出与K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示N个物理网卡从与第一用户态虚拟内存空间地址具有映射关系的第一内核态物理内存空间地址,读取出第一数据,并基于与K个虚拟网卡队列具有一一映射关系的K个物理网卡队列发送第一数据。本发明专利技术实施例提供的技术方案有利于提高物理网卡聚合后的带宽利用率。

【技术实现步骤摘要】
数据发送方法和数据接收方法及相关装置
本专利技术涉及通信
,具体涉及数据发送方法和数据接收方法及相关装置。
技术介绍
随着计算机网络带宽的迅速发展,在高速网络环境中如何快速、完整的捕获网络数据包是高效转发数据包和准确分析处理网络报文的基础。由于专用的网络报文处理网卡价格昂贵以及缺乏灵活性,在运行Linux等操作系统的计算节点(如服务器)上,通过普通网卡来实现基于软件的高速报文捕获系统就变得尤为重要。然而,单个普通网卡的带宽有限,很难达到高速报文系统的要求。一些现有技术中通过链路聚集技术把多个网卡绑定在一起,可以以一种廉价、有效的方法扩展网络设备的带宽,提高网络的灵活性与可用性,从而达到高性能网络数据包捕获系统的要求。其中,多块网卡通过例如bonding等链路聚集技术捆绑后可以获得成倍增长的带宽。但是,在一些例如小包作为网络中主要负载的情况下,每个物理网卡的传输率可能会远低于限速,以致于聚合体也远无法达到预期的带宽,带宽利用率可能较低。
技术实现思路
本专利技术实施例提供数据发送方法和数据接收方法及相关装置,以期提高物理网卡聚合后的带宽利用率。本专利技术第一方面提供一种数据发送方法,本文档来自技高网...
数据发送方法和数据接收方法及相关装置

【技术保护点】
一种数据发送方法,其特征在于,包括:基于第一用户态虚拟内存空间地址,将待发送的第一数据写入第一内核态物理内存空间地址,其中,所述第一用户态虚拟内存空间地址和所述第一内核态物理内存空间地址具有映射关系;向虚拟网卡发送第一数据发送指令,其中,所述虚拟网卡为聚合N个物理网卡而形成的虚拟网卡;其中,所述第一数据发送指令携带有K个用户态网卡队列标识和所述第一用户态虚拟内存空间地址,以便于所述虚拟网卡在确定出与所述K个用户态网卡队列标识所表示的K个用户态网卡队列具有一一映射关系的K个虚拟网卡队列之后,指示所述N个物理网卡从与所述第一用户态虚拟内存空间地址具有映射关系的所述第一内核态物理内存空间地址,读取出...

【技术特征摘要】
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.一种数据发送装置,其特征在于,包括:接收器,用于接收来自虚拟机的第一数据发送指令,所述第一数据发送指令...

【专利技术属性】
技术研发人员:朱国庆
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1