[发明专利]一种零拷贝网络报文接收方法有效
申请号: | 200710177373.6 | 申请日: | 2007-11-15 |
公开(公告)号: | CN101150488A | 公开(公告)日: | 2008-03-26 |
发明(设计)人: | 历军;聂华;曾宇;刘朝辉 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | H04L12/54 | 分类号: | H04L12/54;G06F13/28 |
代理公司: | 北京安博达知识产权代理有限公司 | 代理人: | 徐国文 |
地址: | 100084*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 拷贝 网络 报文 接收 方法 | ||
技术领域
本发明涉及一种计算机网络数据接收方法,特别是涉及一种把内存直接映射为网卡DMA缓冲区的零拷贝网络报文接收方法。
背景技术
现有技术的计算机操作系统使用的是分层思想,网卡驱动在内核层运行,给网卡分配报文缓冲区,接收报文时通过软中断处理报文缓冲区与应用数据区中的数据,而在软中断处理中,是通过协议栈来实现数据接收的,所以这种网络数据接收方式,虽然保证了一般操作系统上的通用性,但由于现有技术的数据接收过程需通过内核传递,而不是用户内存与网络直接接收,所以对要求高速传送的高速网上的应用来说,现有技术已不能满足应用的需要。
发明内容
本发明针对现有技术中,网卡接收报文要经过内核协议栈拷贝到用户空间,致使收包速度低、浪费系统资源,无法满足高速网应用对数据拷贝的速度要求的问题,提供了一种使应用能够直接访问网卡DMA缓冲区,从而极大提高网络数据接收速度,满足高速网应用的零拷贝方法。
为了实现上述发明目的,本发明采用下述技术方案:
一种零拷贝网络报文接收方法,其中,所述方法包括如下操作步骤:A、应用程序调用接口库提供的函数打开设备接口;B、打开设备接口函数在用户空间内存中申请一片连续的内存作为报文缓冲区,并把缓冲区首地址传给内核驱动;C、内核驱动根据缓冲区首地址及缓冲区大小,构造缓冲区控制结构,并把控制结构的物理地址传给接口函数,所述结构包括报文缓冲区队列的信息及队列中每个缓冲区的物理地址;D、接口函数根据缓冲区控制结构的地址,通过内存映射得到缓冲区控制结构中的信息;E、网卡驱动程序从缓冲区队列中取空闲缓冲区作为接收报文的DMA缓冲区,并把接收到的报文数据不经内核空间直接DMA传送到用户内存中的报文接收缓冲区中;F、应用程序处理用户内存中报文接收缓冲区中的报文数据。
一种优选的零拷贝网络报文接收方法,其中,所述步骤B中的报文接收缓冲区队列的长度由参数指定,每个缓冲区的大小为2KB,为保证在用户空间申请的缓冲区位于连续的内存页面上,接口库函数申请的内存为共享内存,所述步骤B中的具体操作步骤为:B1、接口库函数申请共享缓冲区,并连接到共享缓冲区;B2、接口库函数把共享缓冲区的首地址通过系统调用传给驱动。
进一步优选的零拷贝网络报文接收方法,其中,所述步骤C的具体操作步骤为:C1、内核驱动根据整个缓冲区队列的大小计算需要的缓冲区控制结构的大小;C2、内核驱动申请连续的页面来构造缓冲区队列控制结构;C3、内核驱动计算报文队列中每个缓冲区的物理地址,并将所述地址保存在一张物理地址表中以便DMA使用;C4、内核驱动计算报文缓冲区队列控制结构的物理地址,并将所述地址传给应用接口库函数。
进一步优选的零拷贝网络报文接收方法,其中,所述步骤D的具体操作步骤为:D1、用户接口库函数从系统调用返回的数据结构中获得内核驱动中构造的缓冲区队列控制结构的物理地址;D2、用户接口库函数打开内存设备文件;D3、用户接口库函数通过系统调用把内核中的缓冲区控制结构映射到自己的地址空间。
进一步优选的零拷贝网络报文接收方法,其中,所述步骤E的具体操作步骤为:E1、网卡驱动在给网卡分配DMA缓冲区的时候不从系统协议栈中分配缓冲区,而是根据零拷贝缓冲区的控制结构,从用户空间的缓冲队列中取出空闲缓冲区作DMA使用;E2、网卡把报文通过DMA方式写入缓冲区后发中断给驱动,驱动把缓冲区放入应用的收包队列。
进一步优选的零拷贝网络报文接收方法,其中,所述步骤F的具体操作步骤为:F1、应用程序通过缓冲区控制结构确定已经在哪些缓冲区内有报文;F2、应用程序不需要把报文从内核空间拷贝到用户空间而直接使用这些报文。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710177373.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:连续旋转式全自动灯检机
- 下一篇:液晶显示器