[发明专利]一种零拷贝网络报文接收方法有效

专利信息
申请号: 200710177373.6 申请日: 2007-11-15
公开(公告)号: CN101150488A 公开(公告)日: 2008-03-26
发明(设计)人: 历军;聂华;曾宇;刘朝辉 申请(专利权)人: 曙光信息产业(北京)有限公司
主分类号: H04L12/54 分类号: H04L12/54;G06F13/28
代理公司: 北京安博达知识产权代理有限公司 代理人: 徐国文
地址: 100084*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 拷贝 网络 报文 接收 方法
【权利要求书】:

1.一种零拷贝网络报文接收方法,其中,所述方法包括如下操作步骤:

A、应用程序调用接口库提供的函数打开设备接口;

B、打开设备接口函数在用户空间内存中申请一片连续的内存作为报文缓冲区,并把缓冲区首地址传给内核驱动;

C、内核驱动根据缓冲区首地址及缓冲区大小,构造缓冲区控制结构,并把控制结构的物理地址传给接口函数,所述结构包括报文缓冲区队列的信息及队列中每个缓冲区的物理地址;

D、接口函数根据缓冲区控制结构的地址,通过内存映射得到缓冲区控制结构中的信息;

E、网卡驱动程序从缓冲区队列中取空闲缓冲区作为接收报文的DMA缓冲区,并把接收到的报文数据不经内核空间直接DMA传送到用户内存中的报文接收缓冲区中;

F、应用程序处理用户内存中报文接收缓冲区中的报文数据。

2.如权利要求1所述的零拷贝网络报文接收方法,其中,所述步骤B中的报文接收缓冲区队列的长度由参数指定,每个缓冲区的大小为2KB,为保证在用户空间申请的缓冲区位于连续的内存页面上,接口库函数申请的内存为共享内存,所述步骤B中的具体操作步骤为:

B1、接口库函数申请共享缓冲区,并连接到共享缓冲区;

B2、接口库函数把共享缓冲区的首地址通过系统调用传给驱动。

3.如权利要求1所述的零拷贝网络报文接收方法,其中,所述步骤C的具体操作步骤为:

C1、内核驱动根据整个缓冲区队列的大小计算需要的缓冲区控制结构的大小;

C2、内核驱动申请连续的页面来构造缓冲区队列控制结构;

C3、内核驱动计算报文队列中每个缓冲区的物理地址,并将所述地址保存在一张物理地址表中以便DMA使用;

C4、内核驱动计算报文缓冲区队列控制结构的物理地址,并将所述地址传给应用接口库函数。

4.如权利要求1所述的零拷贝网络报文接收方法,其中,所述步骤D的具体操作步骤为:

D1、用户接口库函数从系统调用返回的数据结构中获得内核驱动中构造的缓冲区队列控制结构的物理地址;

D2、用户接口库函数打开内存设备文件;

D3、用户接口库函数通过系统调用把内核中的缓冲区控制结构映射到自己的地址空间。

5.如权利要求1所述的零拷贝网络报文接收方法,其中,所述步骤E的具体操作步骤为:

E1、网卡驱动在给网卡分配DMA缓冲区的时候不从系统协议栈中分配缓冲区,而是根据零拷贝缓冲区的控制结构,从用户空间的缓冲队列中取出空闲缓冲区作DMA使用;

E2、网卡把报文通过DMA方式写入缓冲区后发中断给驱动,驱动把缓冲区放入应用的收包队列。

6.如权利要求1所述的零拷贝网络报文接收方法,其中,所述步骤F的具体操作步骤为:

F1、应用程序通过缓冲区控制结构确定已经在哪些缓冲区内有报文:

F2、应用程序不需要把报文从内核空间拷贝到用户空间而直接使用这些报文。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200710177373.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top