众核下网络数据的分发方法及系统技术方案

技术编号:12518588 阅读:117 留言:0更新日期:2015-12-16 17:23
本发明专利技术适用于通信技术领域,提供了一种众核下网络数据的分发方法及装置,所述方法包括:主机系统维护网卡的流表,所述网卡的流表保存在所述网卡内的独立内存块内;所述主机系统内的流表的内存区域与所述独立内存块通过主机系统内的直接内存访问DMA控制器形成映射;所述DMA控制器检测到所述主机系统内存的流表发生变化后,将变化后的主机系统内存的流表映射到所述网卡的独立内存内以完成所述网卡的流表的维护;所述主机系统禁止向所述网卡发送流表维护命令。本发明专利技术提供的技术方案具有交互开销小,提高网络吞吐量的优点。

【技术实现步骤摘要】
【国外来华专利技术】众核下网络数据的分发方法及系统
本专利技术属于通信
,尤其涉及一种众核下网络数据的分发方法及系统。
技术介绍
网络通信技术的快速发展促使网络带宽和流量不断增大,经验法则表明:1Mbps的网络数据需要1MHz的CPU处理能力,当千兆、万兆以上的网络出现后,网络数据协议处理占用大量的CPU计算时间,网络协议栈的处理能力逐渐成为系统总体性能的瓶颈。随着10Gbps网络适配器的到来,单核CPU已经不能完全满足网卡的需求,所以CPU向多核、众核方向发展。对于众核方向,考虑CPU的并行性是自然而然的事情,然而,使用众核通过单一、共享的队列提高吞吐量则需要软件锁定机制,软件锁定机制可能导致效率低下。为了提高效率,引用了RSS(英文全称:ReceiveSideScaling,中文:接收端扩展)俗称多队列网卡技术,通过多队列网卡驱动的支持,可以将各个队列通过中断绑定到众核中不同的核上,以满足网卡的需求。但是RSS有如下缺点:无法保证数据分发到应用程序所在的核上;无法配合软件分区技术;无法配合OS(英文全称:OperatingSystem,中文:操作系统)调度、负载均衡等。为了弥补RSS的缺点,在多队列网卡中引入了导向流表(FlowDirectorTable),该导向流表专用于记录网络流与应用所在CPU的对应关系,多队列网卡先进行导向流表匹配然后再进行RSS分发。导向流表位于网卡内存中,是一张hash(中文:哈希)表,每个表项都对应一个filter(滤波器),通过匹配的filter就可以将RXPacket传送到对应的硬件队列中,该hash表可以容纳8k~32k的表项。流表中表项的添加、删除、更新操作都是由网卡负责的,主机系统(应用程序或者OS)通过多队列网卡的寄存器接口向网卡发出请求,网卡完成相关操作后再将操作结果返回给主机系统。在实现现有技术的技术方案中,发现现有技术存在如下技术问题:主机系统与网卡之间交互的开销大;例如,网卡的驱动程序无法删除流表中的单个表项,因为驱动程序无法感知单个表项的连接是否处于激活状态;驱动程序需要周期性的flush(刷新)整个流表,测试结果表明,驱动程序调度内核去运行flush操作需要花费80000周期(约40us),另外,flush整个流表还需要花费70000周期(约35us)。如果网卡的驱动程序不采取周期性flush整个流表的策略,也需要花费大量时间周期性来确认流表中每个表项是否处于激活状态,以便将长时间处于未激活状态的表项所对应的filter从流表中删除。
技术实现思路
本专利技术实施例提供一种众核下网络数据的分发方法,以解决现有技术主机系统与网卡之间的交互开销大的问题。第一方面,一种众核下网络数据的分发方法,所述方法包括:主机系统维护网卡的流表,所述网卡的流表保存在所述网卡内的独立内存块内;所述主机系统内的流表的内存区域与所述独立内存块通过主机系统内的直接内存访问DMA控制器形成映射;所述DMA控制器检测到所述主机系统内存的流表发生变化后,将变化后的主机系统内存的流表映射到所述网卡的独立内存内以完成所述网卡的流表的维护;所述主机系统禁止向所述网卡发送流表维护命令。在第一方面的第一种可能实施方式中,所述流表的表条目TableEntry中包括:三个字段;所述三个字段分别为:流状态FlowState、延迟时间RelayTime和待处理的数据包指针PendingPacketsPtr;其中,字段FlowState,表示流当前处于的状态,所述状态包括:传输状态、迁移状态和关闭状态;字段RelayTime,表示所述FlowState为迁移状态时,需要延迟的时间;字段PendingPacketsPtr,表示FlowState为迁移状态时,接收数据包在待处理的数据包指针的先后顺序。结合第一方面的第一种可能实施方式,在第二种可能实施方式中,所述主机系统维护共享的流表包括:在网络中流的应用程序发生迁移时,所述主机系统修改所述主机系统内存的流表中迁移对应流的表条目;将新核newcore的核标识保存在所述表条目内,并将所述迁移对应流的状态修改成迁移状态;主机系统判断旧核oldcore的当前队列负载是否比newcore的当前队列负载小;当oldcore的当前队列负载比newcore的当前队列负载小时,主机系统延迟一个时间t后,将发生迁移的流的接收数据包分发到newcore进行处理,主机系统将t保存在所述RelayTime内;所述旧核为迁移发生前执行所述应用程序的核,所述新核为迁移发生后执行所述应用程序的核。结合第一方面的第二种可能实施方式,在第三种可能实施方式中,所述t的计算方法为:t=(oldcore当前负载—newcore当前负载)/协议栈单位时间内处理的数据包数。第二方面,一种众核下网络数据的发送方法,所述方法包括:网卡接收网络数据,依据网卡独立内存块内存储的流表对所述网络数据进行流分发;所述独立内存块通过主机系统内的直接内存访问DMA控制器与所述主机系统的流表的内存区域形成映射,所述流表由所述主机系统维护。第三方面,一种主机系统,所述主机系统包括:维护单元,用于维护网卡的流表,所述网卡的流表保存在所述网卡内的独立内存块内;所述主机系统内的流表的内存区域与所述独立内存块通过主机系统内的直接内存访问DMA控制器形成映射;DMA控制器,用于检测到所述主机系统内存的流表发生变化后,将变化后的主机系统内存的流表映射到所述网卡的独立内存内以完成所述网卡的流表的维护;禁止单元,用于禁止向所述网卡发送流表维护命令。在第三方面的第一种可能实施方式中,所述流表的表条目TableEntry中包括:三个字段;所述三个字段分别为:流状态FlowState、延迟时间RelayTime和待处理的数据包指针PendingPacketsPtr;其中,字段FlowState,表示流当前处于的状态,所述状态包括:传输状态、迁移状态和关闭状态;字段RelayTime,表示所述FlowState为迁移状态时,需要延迟的时间;字段PendingPacketsPtr,表示FlowState为迁移状态时,接收数据包在待处理的数据包指针的先后顺序。在第三方面的第二种可能实施方式中,所述维护单元包括:迁移修改模块,用于在网络中流的应用程序发生迁移时,修改所述主机系统内存的流表中迁移对应流的表条目;将新核newcore的核标识保存在所述表条目内,并将所述迁移对应流的状态修改成迁移状态;判断延时模块,用于判断旧核oldcore的当前队列负载是否比newcore的当前队列负载小;当oldcore的当前队列负载比newcore的当前队列负载小时,延迟一个时间t后,将发生迁移的流的接收数据包分发到newcore进行处理,将t保存在所述RelayTime内;所述旧核为迁移发生前执行所述应用程序的核,所述新核为迁移发生后执行所述应用程序的核。在第三方面的第三种可能实施方式中,所述t为:t=(oldcore当前负载—newcore当前负载)/协议栈单位时间内处理的数据包数。第四方面,一种网卡,所述网卡包括:接收单元,用于接收网络数据;流转发单元,用于依据网卡独立内存块内存储的流表对所述网络数据进行流分发;所述独立内存块通过主机系统内的直接内存访问DMA控制器与所本文档来自技高网
...

【技术保护点】
PCT国内申请,权利要求书已公开。

【技术特征摘要】
【国外来华专利技术】1.一种众核下网络数据的分发方法,其特征在于,所述方法包括:主机系统维护网卡的流表,所述网卡的流表保存在所述网卡内的独立内存块内;所述主机系统内的流表的内存区域与所述独立内存块通过主机系统内的直接内存访问DMA控制器形成映射;所述DMA控制器检测到所述主机系统内存的流表发生变化后,将变化后的主机系统内存的流表映射到所述网卡的独立内存内以完成所述网卡的流表的维护;所述主机系统禁止向所述网卡发送流表维护命令;所述流表的表条目TableEntry中包括两个字段:延迟时间RelayTime和字段FlowState;字段RelayTime,表示FlowState为迁移状态时,需要延迟的时间;其中,所述字段FlowState,表示流当前处于的状态,所述状态包括:传输状态、迁移状态和关闭状态;所述主机系统维护共享的流表包括:在网络中流的应用程序发生迁移时,所述主机系统修改所述主机系统内存的流表中迁移对应流的表条目;将新核newcore的核标识保存在所述表条目内,并将所述迁移对应流的状态修改成迁移状态;主机系统判断旧核oldcore的当前队列负载是否比newcore的当前队列负载小;当oldcore的当前队列负载比newcore的当前队列负载小时,主机系统延迟一个时间t后,将发生迁移的流的接收数据包分发到newcore进行处理,主机系统将t保存在所述RelayTime内;所述旧核为迁移发生前执行所述应用程序的核,所述新核为迁移发生后执行所述应用程序的核。2.根据权利要求1所述的方法,其特征在于,所述流表的表条目TableEntry中还包括待处理的数据包指针PendingPacketsPtr;字段PendingPacketsPtr,表示FlowState为迁移状态时,接收数据包在待处理的数据包指针的先后顺序。3.根据权利要求1所述的方法,其特征在于,所述t的计算方法为:t=(oldcore当前负载-newcore当前负载)/协议栈单位时间内处理的数据包数。4.一种众核下网络数据的发送方法,其特征在于,所述方法包括:网卡接收网络数据,依据网卡独立内存块内存储的流表对所述网络数据进行流分发;所述独立内存块通过主机系统内的直接内存访问DMA控制器与所述主机系统的流表的内存区域形成映射,所述流表由所述主机系统维护;所述流表的表条目TableEntry中包括两个字段:延迟时间RelayTime和字段FlowState;字段RelayTime,表示FlowState为迁移状态时,需要延迟的时间;其中,所述字段FlowState,表示流当前处于的状态,所述状态包括:传输状态、迁移状态和关闭状态;所述主机系统维护共享的流表包括:在网络中流的应用程序发生迁移时,所述主机系统修改所述主机系统内存的流表中迁移对应流的表条目;将新核newcore的核标识保存在所述表条目内,并将所述迁移对应流的状态修改成迁移状态;主机系统判断旧核oldcore的当前队列负载是否比newcore的当前队列负载小;当oldcore的当前队列负载比newcore的当前队列负载小时,主机系统延迟一个时间t后,将发生迁移的流的接收数据包分发到newcore进行处理,主机系统将t保存在所述RelayTime内;所述旧核为迁移发生前执行所述应用程序的核,所述新核为迁移发生后执行所述应用程序的核。5.一种主机系统,其特征在于,所述主机系统包括:维护单元,用于维护网卡的流表,所述网卡的流表保存在所述网卡内的独立内存块内;所述主机系统内的流表的内存区域与所述独立内存块通过主机系统内的直接内存访问DMA控制器形成映射;DMA控制器,用于检测到所述主机系统内存的流表发生变化后,将变化后的主机系统内存的流表映射到所述网卡的独立内存内以完成所述网卡的流表的维护;禁止单元,用于禁止向所述网卡发送流表维护命令;所述流表的表条目TableEntry中包括两个字段:延迟时间RelayTime和字段FlowState;字段RelayTime,表示FlowState为迁移状态时,需要延迟的时间;其中,所述字段FlowState,表示流当前处于的状态,所述状态包括:传输状态、迁移状态和关闭状态;所述维护单元包括:迁移修改模块,用于在网络中流的应用程序发生迁移时,修改所述主机系统内存的流表中迁移对应流的表条目;将新核newcore的核标识保存在所述表条目内,并将所述迁移对应流的状态修改成迁移状态;判断延时模块,用于判断旧核oldcore的当前队列负载是否比newcore的当前队列负载小;当oldcore的当前队列负载比newcore的当前队列负载小时,延迟一个时间t后,将发生迁移的流的接收数据包分发到newcore进行处理,将t保存在所述字段RelayTime内;所述旧核为迁移发生前执行所述应用程序的核,所述新核为迁移发生后执行所述应用程序的核。6.根据权利要求5所述的主机系统,其特征在于,所述流表的表条目TableEntry中包括待处理的数据包指针PendingPacketsPtr;字段PendingPacketsPtr,表示FlowState为迁移状态时,接收数据包在待处理的数据包指针的先后顺序。7.根据权...

【专利技术属性】
技术研发人员:唐继元王伟蔡毅
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1