[发明专利]一种基于控制块预分配的分组接收方法和装置有效
| 申请号: | 201610034905.X | 申请日: | 2016-01-20 |
| 公开(公告)号: | CN105656805B | 公开(公告)日: | 2018-09-25 |
| 发明(设计)人: | 孙志刚;严锦立;李韬;吕高锋;韩彪;唐路;徐东来;毛健彪 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
| 主分类号: | H04L12/861 | 分类号: | H04L12/861;H04L12/879;H04L12/883;H04L12/925;H04L12/741 |
| 代理公司: | 湖南省国防科技工业局专利中心 43102 | 代理人: | 冯青 |
| 地址: | 410073 *** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 控制 分配 分组 接收 方法 装置 | ||
1.一种基于控制块预分配的分组接收方法,通过在缓冲区初始化过程中,软件首先预申请报文缓冲区,通过下发描述符的方式由硬件管理这些缓冲区,其特征在于,每个报文缓冲区大小为2KB,依次由32B的描述信息、32B的预留字段headroom、报文数据块、32B的预留字段tailroom和报文控制块组成,
基于控制块预分配的分组接收方法的处理流程分为以下几步:
A、通过在系统初始化阶段,驱动预先申请报文缓冲区,将报文描述符信息下发给硬件进行管理,从而不需要在软件中构造描述符环进行管理;
B、网卡接收到报文,由硬件为报文添加描述信息和报文控制块,请求DMA进行发送,DMA从硬件的描述符池中申请一个报文描述符,将报文写入对应的内存区域中;
C、驱动根据报文首地址对报文链进行轮询,对于需要发送到协议栈的报文,驱动会根据报文的相关信息对控制块字段进行修改,然后将报文发送到协议栈;
D、协议栈对报文进行处理后,调用驱动的发送函数,驱动通过写寄存器的方式完成报文发送;
E、调用驱动的报文释放函数,驱动通过写寄存器的方式进行缓冲区回收;
所述步骤B包括:
B1、硬件首先构造描述信息,根据报文的相关信息对其进行赋值,并在报文的headroom中设置报文标记;
B2、硬件在报文尾部构造报文控制块,并根据报文的相关信息对其中字段进行赋值;
所述步骤D包括:
D1、软件对网卡接收的报文进行发送时,驱动通过写寄存器的方式告诉硬件报文的描述符,然后DMA根据描述符将对应的FP报文读入网卡中,最后网卡发送报文;FP为FastProcessing Packet;
D2、软件对系统构造的报文进行发送时,将报文数据拷贝到软件管理的FP报文缓冲区中,然后驱动通过写寄存器进行发送;
所述步骤E包括:
E1、软件对网卡接收的报文进行释放时,驱动直接通过写寄存器的方式告诉硬件需要回收的报文的描述符信息,硬件将只对描述符进行回收,而不对报文进行处理,这样只通过一次寄存器写操作,完成报文控制块和数据块的回收;
E2、软件对系统构造的报文进行释放时,驱动调用操作系统的释放机制,首先释放报文数据块,然后释放报文控制块。
2.根据权利要求1所述的一种基于控制块预分配的分组接收方法,其特征在于,所述描述信息包含报文长度、DMA传输使用的DMA地址、下一跳报文虚拟地址、发送和回收报文的寄存器地址的压缩控制信息。
3.根据权利要求1所述的一种基于控制块预分配的分组接收方法,其特征在于,所述预留字段headroom和预留字段tailroom用于在报文首尾添加信息,headroom中报文标记用于区分报文是从网卡接收的报文还是系统构造的报文。
4.根据权利要求1所述的一种基于控制块预分配的分组接收方法,其特征在于,所述报文控制块用于在协议栈中处理使用。
5.根据权利要求1所述的一种基于控制块预分配的分组接收方法,其特征在于,所述描述信息、预留字段headroom和报文数据块组成FP报文,FP为Fast Processing Packet,用于在驱动或者通过旁路协议栈在用户空间进行快速处理,当报文发送时,通过写寄存器通知硬件进行发送,当发送完成需要进行缓冲区回收时,只需要通过写寄存器的方式将报文描述符交给硬件,不需要对缓冲区数据进行修改,从而实现对缓冲区的重利用。
6.一种基于控制块预分配的分组接收装置,包括描述信息生成模块,控制块生成模块,控制块修改模块,发送回收模块,其特征在于,在硬件中实现描述信息生成模块和控制块生成模块,在驱动中实现控制块修改模块和发送回收模块;
所述描述信息生成模块用于在网卡接收到报文后,硬件根据报文的相关信息构造压缩的控制信息,包括报文长度,DMA地址,下一跳报文虚拟地址,寄存器地址信息;
所述控制块生成模块用于根据报文的相关信息构造报文控制块;
所述控制块修改模块用于驱动根据报文相关信息对报文控制块中字段进行修改;
所述发送回收模块用于对报文标记进行判断,如果是网卡接收的报文,则通过写寄存器方式进行发送和回收;如果是系统构造的报文,将报文数据拷贝到软件管理的FP报文缓冲区中,FP为Fast Processing Packet,然后驱动通过写寄存器进行发送,最后通过系统的报文回收机制进行报文回收。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610034905.X/1.html,转载请声明来源钻瓜专利网。





