[发明专利]一种多个应用共享一个缓冲区的报文接收方法有效

专利信息
申请号: 201010597759.4 申请日: 2010-12-17
公开(公告)号: CN102006241A 公开(公告)日: 2011-04-06
发明(设计)人: 刘朝辉;刘兴奎;窦晓光;李锋伟;刘灿 申请(专利权)人: 天津曙光计算机产业有限公司
主分类号: H04L12/56 分类号: H04L12/56
代理公司: 北京安博达知识产权代理有限公司 11271 代理人: 徐国文
地址: 300384 天津市西青区华*** 国省代码: 天津;12
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 应用 共享 一个 缓冲区 报文 接收 方法
【说明书】:

技术领域

发明涉及网络数据处理领域,具体涉及一种多个应用共享一个缓冲区的报文接收方法。

背景技术

在网络数据分析系统中,往往在一个硬件平台上运行多个应用,也就是说对设备接收到的同一个网络报文中的数据,需要多个应用软件进行接收和处理。

目前常用的一种方案是采取数据拷贝的方法,把每一个网络报文数据复制两份,分别交给两个应用,每个应用处理自己的数据拷贝;另一种方案是采用二次分发的方法,每个应用建立自己的报文指针队列,设备每收到一个报文,就把报文的指针分发到每个应用的接收队列中。

但是在高速网络上,采取数据拷贝的方法会带来大量的cpu数据拷贝和内存访问开销,采用二次分发的方法,需要每个应用建立自己的报文指针队列,需要使用同步机制进行复杂的队列管理。两种方案都会使系统的整体性能降低。

发明内容

本发明的目的是提供一种多个应用共享一个缓冲区的报文接收方法,避免多应用接收报文的内存拷贝和二次分发。

一种多个应用共享一个缓冲区的报文接收方法,包括硬件网卡、驱动软件、接口库软件,方法如下:

A、硬件网卡的PCI控制器向主机注册PCI空间,定义接收报文相关的寄存器地址;PCI空间寄存器有:报文缓冲区地址、长度、软件从缓冲区读报文的读指针、硬件向缓冲区写报文的写指针,其中读指针有多个,每个应用有自己的读指针;

B、驱动软件申请连续的物理内存,作为接收报文的缓冲区,并把缓冲区的物理地址和长度写入PCI空间的对应寄存器,并设置硬件的写指针和所有应用软件的读指针为初始值0;

C、硬件网卡每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据报文长度,修改PCI空间的写指针;

D、接口库中的API接口被一个应用调用时,首先把内核空间的缓冲区和硬件的PCI空间映射到该应用的用户空间,然后根据该应用是第几个应用,把PCI空间的第几个软件读指针寄存器作为该应用的读指针寄存器使用;

E、应用软件循环收包,每次收包都要查看接口库中映射出的PCI空间寄存器,判断硬件写指针是否等于软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指针;如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后,进行下一次轮询。

本发明使多个应用可以利用一个共享缓冲区从网络接收报文,从而避免多应用收包时的报文拷贝或二次分发开销。

附图说明

图1是本发明工作原理图

具体实施方式

本发明是一个软硬件结合的系统,包括硬件网卡、驱动软件、接口库软件。

驱动软件负责分配接收报文使用的缓冲区,需要在内核中申请一整片物理地址连续的内存,作为接收报文的缓冲区。

硬件网卡负责从网络接收报文,并把报文传输到主机内存的报文缓冲区中,通过写PCI空间的寄存器,通知软件有新报文到达。PCI空间寄存器主要有:报文缓冲区地址、长度、软件从缓冲区读报文的读指针、硬件向缓冲区写报文的写指针,其中读指针有多个,每个应用有自己的读指针。

接口库软件在每个应用调用API接口时,把报文缓冲区和PCI空间映射到该应用的用户空间,每个应用去轮询PCI空间中该应用的缓冲区读写指针信息,查看是否有新的报文到达。

该发明接收报文的方法如下:

(1)硬件网卡的PCI控制器向主机注册PCI空间,其中定义接收报文相关的寄存器地址,包括报文缓冲区地址、长度、软件从缓冲区读报文的读指针、硬件向缓冲区写报文的写指针,根据预设的最大应用软件个数,配置多个读指针寄存器。

(2)驱动软件申请报文缓冲区。

驱动软件申请一片物理地址连续的内存,作为接收报文的缓冲区,把缓冲区的物理地址和长度写入PCI空间的对应寄存器,并设置硬件的写指针和所有应用软件的读指针为初始值0。

(3)硬件接收报文。

硬件每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据报文长度,修改PCI空间的写指针。

(4)接口库映射报文缓冲区和PCI空间寄存器。

接口库中的API接口被一个应用调用时,首先把内核空间的缓冲区和硬件的PCI空间映射到该应用的用户空间,然后根据该应用是第几个应用,把PCI空间的第几个软件读指针寄存器作为该应用的读指针寄存器使用。

(5)应用软件接收报文。

应用软件循环收包,每次收包都要查看接口库中映射出的PCI空间寄存器,判断硬件写指针是否等于软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指针;如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后,进行下一次轮询。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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