[发明专利]多网卡协同通信方法无效
申请号: | 200710027717.5 | 申请日: | 2007-04-26 |
公开(公告)号: | CN101296157A | 公开(公告)日: | 2008-10-29 |
发明(设计)人: | 马维旻;吴楚均 | 申请(专利权)人: | 北京师范大学珠海分校 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;G06F12/00 |
代理公司: | 广州三环专利代理有限公司 | 代理人: | 温旭 |
地址: | 519085*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 网卡 协同 通信 方法 | ||
技术领域
本发明涉及网络通信和网络测量技术,尤其涉及一种多网卡协同通信方法。
背景技术
目前在网络通信和网络测量技术中,要测量多个网段的流量和性能数据,可每个网段都放置一台监测主机(或称探针),对于监测网段比较分散的情况是可以的。如果是在中心机房,已经将各网段的流量汇聚在一起,就可以通过一台主机安装多块网卡监测不同的网段。而多台主机之间的互联通过交换机、集线器或者路由器这样的网络连接设备。如果需要一台主机同时监测多各不同的局域网,或者多台分立主机通过一台多网卡的主机互联,就需要在一台主机上安装多个网卡,然后通过该主机实现对各不同局域网的监测,或者通过该主机实现其他主机之间的通信。
如果要求一台主机上同时执行多个指定任务,比如要同时对多个网段进行流量采集与统计分析,然后把这些分析结果发送到另外指定的服务器上。要实现同一台主机上不同网卡之间的通信,通常采用的方法有两种:(1)基于TCP/IP协议的SOCKET机制;(2)命名管道技术。
对于第一种方法,基于TCP/IP协议的SOCKET机制下,每一个网卡收到一个数据包即通过TCP/IP协议栈操作产生一次系统调用,系统调用次数多,十分浪费系统的资源。
对于第二种方法,管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是单独构成一种文件系统,并且只存在于内存中。对管道的读写相当于对文件的读写,但是管道是半双工的,数据只能向一个方向流动。如果需要进行双向通信,则需要建立两个管道。命名管道提供了一个路径名与之关联,并以FIFO(First In First Out先进先出)的存储形式保存在当前文件系统中。这样,即使与FIFO创建进程不存在亲缘关系的进程,只要可以访问该路径,就能彼此通过FIFO相互通信(即在能访问该路径的进程和FIFO创建进程之间)。由于FIFO严格遵循先进先出,对管道及FIFO的读总是从开始处返回数据,对它们的写则把数据添加到末尾。
发明内容
针对现有技术的缺点,本发明的目的是提供一种多网卡协同通信方法,解决多网卡通信进程间大数据量数据交换缓慢、资源浪费的问题。
为了实现上述目的,本发明的技术方案为:一种多网卡协同通信方法,各网卡通信进程间通过文件映射对象来分配和访问同一个共享内存块。
所述通信进程包括发送进程和接收进程,由发送进程负责向接收进程发送数据,文件映射对象由发送进程或接收进程创建和关闭,并且指定一个唯一的名字供接收进程使用,接收进程直接通过这个唯一指定的名字打开此文件映射对象,并完成对数据的接收。
所述文件映射对象的创建和关闭包括如下步骤:
(1)通过操作系统内部函数创建一个内存映射文件对象;
(2)创建成功则通过文件映像函数将此文件映射对象的视图映射进地址空间,同时得到此映射视图的首址;
(3)如果创建不成功,则返回错误码;
(4)通知接收进程内存文件映射对象的视图已经打开。
任何通信进程都可以查看内存映射文件对象是否已经创建,然后再对其进行操作。
数据的发送和接收包括如下步骤:
(1)先判断共享内存中数据的新旧,如果数据是新的,说明数据还没有被取走过,这时就休眠返回;如果数据是旧的,将数据从发送进程写到共享内存中,创建一个新的进程,专门负责取走数据,该进程不断检查共享内存中是否有新数据可取,如果有新数据,则及时从共享内存中取走数据;
(2)当数据传输结束,即将退出程序时,需要将映射进来的内存文件映射对象视图卸载和资源的释放等处理。
它还在内存中设定一个信号灯标志,通信进程可以根据该信号灯标志判定是否能够访问某些共享资源,同时可根据要求允许某些进程修改该信号灯标志。
对所述信号灯标志的处理过程包括:
(1)网卡进程在需要进行通信的时候,首先查看信号灯标志是否创建。如果没有创建的话,即创建一个信号灯标志,并对其进行初始化并赋初值,该初值代表可申请资源的数量。
(2)每个信号灯标志都有一个值以用来表示当前该信号灯标志所代表的共享资源可用数量,如果一个网卡通信进程接收另一个网卡的发送数据,就要向其申请共享资源,那么就从其信号灯值中减去要申请的数目,如果当前没有足够的可用资源,进程睡眠等待或立即返回,其他网卡通信进程根据数据传输要求,也可对信号灯值进行增加和减小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京师范大学珠海分校,未经北京师范大学珠海分校许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710027717.5/2.html,转载请声明来源钻瓜专利网。