[发明专利]一种零拷贝缓冲区队列网络数据接收的管理方法无效
申请号: | 200710177370.2 | 申请日: | 2007-11-15 |
公开(公告)号: | CN101150486A | 公开(公告)日: | 2008-03-26 |
发明(设计)人: | 历军;聂华;曾宇;刘朝辉 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | H04L12/54 | 分类号: | H04L12/54;G06F13/28 |
代理公司: | 北京安博达知识产权代理有限公司 | 代理人: | 徐国文 |
地址: | 100084*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 拷贝 缓冲区 队列 网络 数据 接收 管理 方法 | ||
1.一种零拷贝缓冲区队列网络数据接收的管理方法,其特征在于,所述方法包括如下操作步骤:
A、在用户空间分配连续的内存作为报文的DMA缓冲区;
B、在内核驱动中建立缓冲区的控制句柄,把缓冲区划分为4个环形队列来管理,发送和接收报文有两个队列,避免使用互斥锁,在控制句柄中设置DMA物理地址表,计算并保存每个DMA缓冲区的物理地址;
C、应用程序通过接口库映射控制句柄,实现对缓冲区的操作;
D、接收报文时,驱动从接收报文的空缓冲区队列取出一个空缓冲区索引,查找物理地址表,把空缓冲区的物理地址写入网卡,当网卡把缓冲区填充了报文后,驱动把填满报文的缓冲区索引放入满缓冲区队列,应用从满缓冲区队列取出一个填充了报文的缓冲区,分析报文内容后把缓冲区放入空缓冲区队列。
2.如权利要求1所述的零拷贝缓冲区队列网络数据接收的管理方法,其特征在于,所述操作步骤A具体操作过程如下:
A1、应用程序用一系列参数调用接口库打开设备函数,参数中有应用所需要的报文缓冲区的总容量,以及其中发送缓冲区占的百分比;
A2、接口库函数根据缓冲区参数申请一片连续的内存,但不对这片内存划分缓冲区队列,不构造管理结构,而是把缓冲区地址和参数传给内核驱动。
3.如权利要求1所述的零拷贝缓冲区队列网络数据接收的管理方法,其特征在于,所述操作步骤B具体操作过程如下:
B1、内核驱动根据缓冲区内存的大小计算管理句柄的大小,申请一片连续的空间作为句柄结构;
B2、驱动根据缓冲区参数,初始化句柄中的4个队列,把整个缓冲区内存划分为多个2K字节大小的缓冲区,把每个缓冲区的索引保存在句柄的队列中,从而可以通过句柄控制用户空间的整个缓冲区内存,因为句柄中的队列会被应用和驱动同时访问,接收和发送分别实现两个队列,可以避免使用互斥锁,减少系统开销;
B3、驱动根据缓冲区大小构造缓冲区的物理地址表,把每个缓冲区的物理地址计算出来保存到表中,以便设置网卡DMA时使用;
B4、驱动把句柄物理地址返回给接口库函数。
4.如权利要求1所述的零拷贝缓冲区队列网络数据接收的管理方法,其特征在于,所述操作步骤C具体操作过程如下:
C1、接口库函数根据驱动返回的句柄的物理地址,通过内存映射把句柄映射到用户空间;
C2、接口库函数通过验证句柄开始和结束部分的魔数magic number,确认句柄映射是否成功;
C3、接口库获得句柄后,可以通过句柄操作缓冲区队列。
5.如权利要求1所述的零拷贝缓冲区队列网络数据接收的管理方法,其特征在于,所述操作步骤D具体操作过程如下:
D1、驱动从句柄中的空缓冲区队列取出一个空缓冲区的索引;
D2、驱动根据索引查找缓冲区物理地址表,得到缓冲区的物理地址;
D3、驱动把缓冲区物理地址写入硬件网卡,由网卡填充报文并发中断信号给驱动;
D4、驱动响应网卡中断,把填充了报文的缓冲区索引放入句柄中的满缓冲区队列,供应用取出使用;
D5、应用通过接口库中映射的句柄结构访问缓冲区队列,从漫缓冲区中取出一个填充了报文的缓冲区的索引;
D6、应用根据索引获得缓冲区,分析缓冲区里面的报文;
D7、应用把分析完的缓冲区放入空缓冲区队列,以便驱动取出使用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710177370.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:双极化天线组
- 下一篇:盐酸决奈达隆口服药物组合物及其制备方法