一种基于控制块预分配的分组接收方法和装置制造方法及图纸

技术编号:14973195 阅读:82 留言:0更新日期:2017-04-03 01:10
本发明专利技术涉及一种基于控制块预分配的分组接收方法和装置。通过软件对缓冲区进行预取,下发描述符由硬件管理缓冲区,将报文的控制块和数据块存放在同一块缓冲区中,从而避免了操作系统对报文控制块和数据块的分配开销。通过硬件对报文控制块进行初始化,驱动对报文控制块一些字段进行修改,从而减小报文控制块的赋值开销。通过写寄存器的方式将缓冲区描述符直接回收给硬件进行重利用,不用对缓冲区中数据进行修改,从而避免操作系统对报文的释放开销。解决协议栈处理中报文控制块申请和释放开销大的问题。

【技术实现步骤摘要】

本专利技术涉及高速网络处理领域。尤其是在高速网络处理过程中对协议栈处理的报文进行管理。
技术介绍
目前,网络流量的不断增长对网络报文处理能力提出更高的要求。现有的许多网络处理应用都是基于内核中的协议栈进行处理,比如OVS。协议栈处理的报文分为控制块和数据块,控制块和数据块分别存放在不同的内存区域内。在FreeBSD操作系统中,报文的控制块结构为mbuf;在Linux操作系统中,报文的控制块结构为sk_buff。控制块用于维护socketbuffer的状态和描述信息,其成员变量在一层向一层传递时会发生修改。数据块用于存储实际报文数据。Linux操作系统维护了skbuffcache和generalcache两种slab缓存,通过slab分配器从skbuffcache中进行控制块的申请和释放,从generalcache中进行数据块的申请和释放,如图1所示。传统机制中,每个报文的控制块和数据块都需要从slab缓存中进行申请,如果slab缓存中没有足够空间,则需要从内存中进行申请。并且在将控制块和数据块回收到slab缓存时,需要查表获取回收的位置,如果释放报文本文档来自技高网...

【技术保护点】
一种基于控制块预分配的分组接收方法,通过在缓冲区初始化过程中,软件首先预申请报文缓冲区块,通过下发描述符的方式由硬件管理这些缓冲区,其特征在于,每个报文缓冲区大小为2K,依次由32B的描述信息、32B的预留字段headroom、报文数据块、32B的预留字段tailroom和报文控制块组成,基于控制块预分配的分组接收方法的处理流程分为以下几步:A、通过在系统初始化阶段,驱动预先申请报文缓冲区,将报文描述符信息下发给硬件进行管理,从而不需要在软件中构造描述符环进行管理;B、网卡接收到报文,由硬件为报文添加描述信息和报文控制块,请求DMA进行发送,DMA从硬件的描述符池中申请一个报文描述符,将报文写...

【技术特征摘要】
1.一种基于控制块预分配的分组接收方法,通过在缓冲区初始化过程中,软件首先预申请报文缓冲区块,通过下发描述符的方式由硬件管理这些缓冲区,其特征在于,每个报文缓冲区大小为2K,依次由32B的描述信息、32B的预留字段headroom、报文数据块、32B的预留字段tailroom和报文控制块组成,
基于控制块预分配的分组接收方法的处理流程分为以下几步:
A、通过在系统初始化阶段,驱动预先申请报文缓冲区,将报文描述符信息下发给硬件进行管理,从而不需要在软件中构造描述符环进行管理;
B、网卡接收到报文,由硬件为报文添加描述信息和报文控制块,请求DMA进行发送,DMA从硬件的描述符池中申请一个报文描述符,将报文写入对应的内存区域中;
C、驱动根据报文首地址对报文链进行轮询,对于需要发送到协议栈的报文,驱动会根据报文的相关信息对控制块字段进行修改,然后将报文发送到协议栈;
D、协议栈对报文进行处理后,调用驱动的发送函数,驱动通过写寄存器的方式完成报文发送;
E、调用驱动的报文释放函数,驱动通过写寄存器的方式进行缓冲区回收;
所述步骤B包括:
B1、硬件首先构造描述信息,根据报文的相关信息对其进行赋值,并在报文的headroom中设置报文标记;
B2、硬件在报文尾部构造报文控制块,并根据报文的相关信息对其中字段进行赋值;
所述步骤D包括:
D1、软件对网卡接收的报文进行发送时,驱动通过写寄存器的方式告诉硬件报文的描述符,然后DMA根据描述符将对应的FP报文读入网卡中,最后网卡发送报文;
D2、软件对系统构造的报文进行发送时,将报文数据拷贝到软件管理的FP报文缓冲区中,然后驱动通过写寄存器进行发送;
所述步骤E包括:
E1、软件对网卡接收的报文进行释放时,驱动通过直接写寄存器的方式告诉硬件需要回收的报文的描述符信息,硬件将只对描述符进行回收,而不对报文进行处理,这样只通过一次寄存器写操作,完成报文控制块和数据块的回收;
E2、软件对系统构造的报文进行释放时...

【专利技术属性】
技术研发人员:孙志刚严锦立李韬吕高锋韩彪唐路徐东来毛健彪
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南;43

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

1