CN101296157A - 多网卡协同通信方法 - Google Patents
多网卡协同通信方法 Download PDFInfo
- Publication number
- CN101296157A CN101296157A CNA2007100277175A CN200710027717A CN101296157A CN 101296157 A CN101296157 A CN 101296157A CN A2007100277175 A CNA2007100277175 A CN A2007100277175A CN 200710027717 A CN200710027717 A CN 200710027717A CN 101296157 A CN101296157 A CN 101296157A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- signal lamp
- resource
- communication method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 230000006854 communication Effects 0.000 title claims abstract description 44
- 238000004891 communication Methods 0.000 title claims abstract description 25
- 230000008569 process Effects 0.000 claims abstract description 66
- 238000013507 mapping Methods 0.000 claims abstract description 39
- 230000005540 biological transmission Effects 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 230000007958 sleep Effects 0.000 claims description 5
- 239000000463 material Substances 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 3
- 230000005059 dormancy Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 11
- 238000005516 engineering process Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种多网卡协同通信方法,各网卡通信进程间通过文件映射对象来分配和访问同一个共享内存块。本发明的方法采用共享内存允许两个或多个进程共享一个给定的存储区,数据不需要来回复制,可看作是最快的一种进程间通信机制。共享内存是通过直接操作内存映射文件来进行的,而内存映射文件又是进行单机数据共享的最低层机制,而命名管道、基于消息的通信机制等几种数据交换方式在低层都是通过内存映射文件来进行的。因此使用共享内存可以以较小的开销获取较高的性能,是进行大数据量数据快速交换的最佳方案。这个方法可以实现所谓的“零拷贝”。
Description
技术领域
本发明涉及网络通信和网络测量技术,尤其涉及一种多网卡协同通信方法。
背景技术
目前在网络通信和网络测量技术中,要测量多个网段的流量和性能数据,可每个网段都放置一台监测主机(或称探针),对于监测网段比较分散的情况是可以的。如果是在中心机房,已经将各网段的流量汇聚在一起,就可以通过一台主机安装多块网卡监测不同的网段。而多台主机之间的互联通过交换机、集线器或者路由器这样的网络连接设备。如果需要一台主机同时监测多各不同的局域网,或者多台分立主机通过一台多网卡的主机互联,就需要在一台主机上安装多个网卡,然后通过该主机实现对各不同局域网的监测,或者通过该主机实现其他主机之间的通信。
如果要求一台主机上同时执行多个指定任务,比如要同时对多个网段进行流量采集与统计分析,然后把这些分析结果发送到另外指定的服务器上。要实现同一台主机上不同网卡之间的通信,通常采用的方法有两种:(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)每个信号灯标志都有一个值以用来表示当前该信号灯标志所代表的共享资源可用数量,如果一个网卡通信进程接收另一个网卡的发送数据,就要向其申请共享资源,那么就从其信号灯值中减去要申请的数目,如果当前没有足够的可用资源,进程睡眠等待或立即返回,其他网卡通信进程根据数据传输要求,也可对信号灯值进行增加和减小。
对信号灯值进行增加和减小的过程为:首先查看可申请资源的数量,如果资源的数量大于零,即1时,程序先把资源值减1,再对共享内存进行操作,操作完了就要释放资源,也就是把资源值加1,如果查看可申请资料的数量小于或等于零的话,说明共享内存在被其他进程所操作,这时候进程睡眠等待。
与现有技术相比,本发明的方法采用共享内存允许两个或多个进程共享一个给定的存储区,数据不需要来回复制,可看作是最快的一种进程间通信机制。共享内存是通过直接操作内存映射文件来进行的,而内存映射文件又是进行单机数据共享的最低层机制,而命名管道、基于消息的通信机制等几种数据交换方式在低层都是通过内存映射文件来进行的。因此使用共享内存可以以较小的开销获取较高的性能,是进行大数据量数据快速交换的最佳方案。这个方法可以实现所谓的“零拷贝”。
附图说明
图1是本发明的多网卡协同通信方法应用环境示意图。
图2是网卡进程的工作流程示意图。
具体实施方式
请参阅图1,本发明的多网卡协同通信方法应用于于一台通用计算机或嵌入式系统。在计算机主板上或嵌入式系统专用板卡上安装多块网卡(数量的限制受制于主板或嵌入式系统可扩展口的数量)。多块网卡根据实际需求可同时接入到不同的被监测网段或需要连通的计算机系统。
根据本发明的多网卡协同通信方法,在Windows或Linux操作系统下,任何一个进程不允许读取、写入或是修改另一个进程的数据(包括变量、对象和内存分配等),但是在某个进程内创建的文件映射对象的视图却能够为多个其他进程所映射,这些进程共享的是物理存储器的同一个页面。任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面。因此,当一个进程将数据写入此共享文件映射对象的视图时,其他进程可以立即获取数据变更情况。为了进一步提高数据交换的速度,采用了由系统页文件支持的内存映射文件而直接在内存区域使用,显然这种共享内存的方式是完全可以满足在多网卡通信进程间进行大数据量数据快速传输任务要求。
下面给出在两个相互独立的网卡通信进程间通过文件映射对象来分配和访问同一个共享内存块的设计方法。多个网卡通信的实现机制类同。
由发送进程负责向接收进程发送数据,文件映射对象由发送进程创建和关闭,并且指定一个唯一的名字供接收进程使用。接收进程直接通过这个唯一指定的名字打开此文件映射对象,并完成对数据的接收。另外,接收进程也可以创建文件映射对象。
流程如下:
1.通过操作系统内部函数创建一个内存映射文件对象。
2.创建成功则通过文件映像函数将此文件映射对象的视图映射进地址空间,同时得到此映射视图的首址。
3.如果创建不成功,则返回错误码。
4.通知接收进程内存文件映射对象的视图已经打开。(注:任何进程都可以查看内存映射文件对象是否已经创建,然后再对其进行操作)
5.数据传送。即将数据从发送进程写到共享内存中。创建一个新的进程,专门负责取走数据。该进程不断检查共享内存中是否有数据可取,如果有数据,则及时从共享内存中取走数据。
6.共享内存释放。当数据传输结束,即将退出程序时,需要将映射进来的内存文件映射对象视图卸载和资源的释放等处理。
在多个网卡同时通过内存共享方式通信时,涉及到共享资源访问机制的问题,所以还需要控制进程间的竞争问题。
请参阅图2,本发明的方法还进一步提供了对进程间共享资源访问控制机制,其在内存中设定一个信号灯标志,进程可以根据该标志判定是否能够访问某些共享资源,同时,可根据要求,允许某些进程可以修改该标志。信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值。对信号灯的操作流程是:
1、创建信号灯。网卡进程在需要进行通信的时候,首先查看信号灯是否创建。如果没有创建的话,即创建一个信号灯,并对其进行初始化。初始化的重要工作即赋初值,这个初值其实就是可申请资源的数量,程序中这个值就是1。
2、信号灯值操作。每个信号灯都有一个值,可以用来表示当前该信号灯代表的共享资源可用数量。如果一个网卡通信进程接收另一个网卡的发送数据,就要向其申请共享资源,那么就从其信号灯值中减去要申请的数目,如果当前没有足够的可用资源,进程可以睡眠等待,也可以立即返回。其他网卡通信进程根据数据传输要求,也可对信号灯值进行增加和减小。在本技术实现中,首先查看可申请资源的数量,如果资源的数量大于零,即1时,程序先把资源值减1,再对共享内存进行操作,操作完了就要释放资源,也就是把资源值加1。如果查看可申请资料的数量小于或等于零的话,说明共享内存在被其他进程所操作,这时候进程睡眠等待。
经实际测试,使用共享内存在处理多网卡通信进程间大数据量数据的快速交换时表现出了良好的性能,在数据可靠性等方面要远远高于基于消息和命名管道的实现方式,达到了很好的效果。
Claims (8)
1、一种多网卡协同通信方法,其特征在于,各网卡通信进程间通过文件映射对象来分配和访问同一个共享内存块。
2、如权利要求1所述的多网卡协同通信方法,其特征在于,所述通信进程包括发送进程和接收进程,由发送进程负责向接收进程发送数据,文件映射对象由发送进程或接收进程创建和关闭,并且指定一个唯一的名字供接收进程使用,接收进程直接通过这个唯一指定的名字打开此文件映射对象,并完成对数据的接收。
3、如权利要求2所述的多网卡协同通信方法,其特征在于,所述文件映射对象的创建和关闭包括如下步骤:
(1)通过操作系统内部函数创建一个内存映射文件对象;
(2)创建成功则通过文件映像函数将此文件映射对象的视图映射进地址空间,同时得到此映射视图的首址;
(3)如果创建不成功,则返回错误码;
(4)通知接收进程内存文件映射对象的视图已经打开。
4、如权利要求3所述的多网卡协同通信方法,其特征在于,任何通信进程都可以查看内存映射文件对象是否已经创建,然后再对其进行操作。
5、如权利要求2所述的多网卡协同通信方法,其特征在于,数据的发送和接收包括如下步骤:
(1)先判断共享内存中数据的新旧,如果数据是新的,说明数据还没有被取走过,这时就休眠返回;如果数据是旧的,将数据从发送进程写到共享内存中,创建一个新的进程,专门负责取走数据,该进程不断检查共享内存中是否有新数据可取,如果有新数据,则及时从共享内存中取走数据;
(2)当数据传输结束,即将退出程序时,需要将映射进来的内存文件映射对象视图卸载和资源的释放等处理。
6、如权利要求1所述的多网卡协同通信方法,其特征在于,它还在内存中设定一个信号灯标志,通信进程可以根据该信号灯标志判定是否能够访问某些共享资源,同时可根据要求允许某些进程修改该信号灯标志。
7、如权利要求6所述的多网卡协同通信方法,其特征在于,对所述信号灯标志的处理过程包括:
(1)网卡进程在需要进行通信的时候,首先查看信号灯标志是否创建。如果没有创建的话,即创建一个信号灯标志,并对其进行初始化并赋初值,该初值代表可申请资源的数量。
(2)每个信号灯标志都有一个值以用来表示当前该信号灯标志所代表的共享资源可用数量,如果一个网卡通信进程接收另一个网卡的发送数据,就要向其申请共享资源,那么就从其信号灯值中减去要申请的数目,如果当前没有足够的可用资源,进程睡眠等待或立即返回,其他网卡通信进程根据数据传输要求,也可对信号灯值进行增加和减小。
8、如权利要求7所述的多网卡协同通信方法,其特征在于,对信号灯值进行增加和减小的过程为:首先查看可申请资源的数量,如果资源的数量大于零,即1时,程序先把资源值减1,再对共享内存进行操作,操作完了就要释放资源,也就是把资源值加1,如果查看可申请资料的数量小于或等于零的话,说明共享内存在被其他进程所操作,这时候进程睡眠等待。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100277175A CN101296157A (zh) | 2007-04-26 | 2007-04-26 | 多网卡协同通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100277175A CN101296157A (zh) | 2007-04-26 | 2007-04-26 | 多网卡协同通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101296157A true CN101296157A (zh) | 2008-10-29 |
Family
ID=40066182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100277175A Pending CN101296157A (zh) | 2007-04-26 | 2007-04-26 | 多网卡协同通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101296157A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693397A (zh) * | 2011-03-23 | 2012-09-26 | 腾讯科技(深圳)有限公司 | 一种扫描文件的方法和装置 |
CN104063375A (zh) * | 2013-03-18 | 2014-09-24 | 深圳市腾讯计算机系统有限公司 | 管道通讯的方法和装置 |
WO2014183556A1 (zh) * | 2013-05-17 | 2014-11-20 | 华为终端有限公司 | 应用程序的处理方法和装置 |
CN105450709A (zh) * | 2014-09-01 | 2016-03-30 | 杭州海康威视系统技术有限公司 | 一种视频云存储系统中的数据热替换方法和系统 |
CN106708825A (zh) * | 2015-07-29 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种数据文件处理方法及系统 |
US10084647B2 (en) | 2013-10-23 | 2018-09-25 | Hewlett Packard Enterprise Development Lp | Data forwarding to server via virtual network card or to external network via network interface, based on fusion descriptor |
US10313962B2 (en) | 2013-09-26 | 2019-06-04 | Huawei Technologies Co., Ltd. | Data packet processing method, network traffic management method, apparatus, and system |
CN110086571A (zh) * | 2019-04-10 | 2019-08-02 | 广州华多网络科技有限公司 | 一种数据发送及接收的方法、装置及数据处理系统 |
CN112241329A (zh) * | 2020-09-28 | 2021-01-19 | 深圳市商汤科技有限公司 | 识别引擎的监控方法、装置、设备及存储介质 |
CN112269655A (zh) * | 2020-10-15 | 2021-01-26 | 北京百度网讯科技有限公司 | 内存映射文件清理方法、装置、电子设备及存储介质 |
US11119931B1 (en) * | 2019-09-18 | 2021-09-14 | Facebook Technologies, Llc | Data pipeline for microkernel operating system |
-
2007
- 2007-04-26 CN CNA2007100277175A patent/CN101296157A/zh active Pending
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693397A (zh) * | 2011-03-23 | 2012-09-26 | 腾讯科技(深圳)有限公司 | 一种扫描文件的方法和装置 |
CN104063375A (zh) * | 2013-03-18 | 2014-09-24 | 深圳市腾讯计算机系统有限公司 | 管道通讯的方法和装置 |
WO2014183556A1 (zh) * | 2013-05-17 | 2014-11-20 | 华为终端有限公司 | 应用程序的处理方法和装置 |
US11576114B2 (en) | 2013-09-26 | 2023-02-07 | Huawei Technologies Co., Ltd. | Data packet processing method, network traffic management method, apparatus, and system |
US10313962B2 (en) | 2013-09-26 | 2019-06-04 | Huawei Technologies Co., Ltd. | Data packet processing method, network traffic management method, apparatus, and system |
US10084647B2 (en) | 2013-10-23 | 2018-09-25 | Hewlett Packard Enterprise Development Lp | Data forwarding to server via virtual network card or to external network via network interface, based on fusion descriptor |
CN105450709A (zh) * | 2014-09-01 | 2016-03-30 | 杭州海康威视系统技术有限公司 | 一种视频云存储系统中的数据热替换方法和系统 |
CN105450709B (zh) * | 2014-09-01 | 2019-07-19 | 杭州海康威视系统技术有限公司 | 一种视频云存储系统中的数据热替换方法和系统 |
CN106708825A (zh) * | 2015-07-29 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种数据文件处理方法及系统 |
CN106708825B (zh) * | 2015-07-29 | 2019-09-27 | 腾讯科技(深圳)有限公司 | 一种数据文件处理方法及系统 |
CN110086571A (zh) * | 2019-04-10 | 2019-08-02 | 广州华多网络科技有限公司 | 一种数据发送及接收的方法、装置及数据处理系统 |
US11119931B1 (en) * | 2019-09-18 | 2021-09-14 | Facebook Technologies, Llc | Data pipeline for microkernel operating system |
CN112241329B (zh) * | 2020-09-28 | 2021-08-24 | 深圳市商汤科技有限公司 | 识别引擎的监控方法、装置、设备及存储介质 |
CN112241329A (zh) * | 2020-09-28 | 2021-01-19 | 深圳市商汤科技有限公司 | 识别引擎的监控方法、装置、设备及存储介质 |
CN112269655A (zh) * | 2020-10-15 | 2021-01-26 | 北京百度网讯科技有限公司 | 内存映射文件清理方法、装置、电子设备及存储介质 |
CN112269655B (zh) * | 2020-10-15 | 2023-01-13 | 北京百度网讯科技有限公司 | 内存映射文件清理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101296157A (zh) | 多网卡协同通信方法 | |
TWI770358B (zh) | 主機系統及其方法和加速模組 | |
EP3920034B1 (en) | Systems and methods for scalable and coherent memory devices | |
US8706837B2 (en) | System and method for managing switch and information handling system SAS protocol communication | |
US9092426B1 (en) | Zero-copy direct memory access (DMA) network-attached storage (NAS) file system block writing | |
US7664909B2 (en) | Method and apparatus for a shared I/O serial ATA controller | |
EP3382557B1 (en) | Method and apparatus for persistently caching storage data in a page cache | |
CN100462947C (zh) | 用于实现卸载发起方功能的方法和系统 | |
CN106598480B (zh) | 具有接口控制机制的电子系统及其操作方法 | |
CN103051687B (zh) | 一种将应用业务部署到云存储虚拟机的系统及方法 | |
US20130097339A1 (en) | Communication with input/output system devices | |
JP2005258918A (ja) | ストレージシステムおよびストレージシステムのキャッシュメモリ制御方法 | |
US20060206666A1 (en) | System and method for remotely accessible local virtual storage | |
CN105653396B (zh) | 备份系统及其备份方法 | |
CN101876883A (zh) | 保持虚拟机器的远程操作不中断的方法 | |
US20180107388A1 (en) | Transfer of object memory references in a data storage device | |
TW202211035A (zh) | 用於資源分配的系統、元件以及方法 | |
TW202101951A (zh) | 輕量橋接器電路以及用於多實體功能模擬的方法及物品 | |
CN100405295C (zh) | 用于提供原地执行功能的系统和方法 | |
CN102375789B (zh) | 一种通用网卡非缓存的零拷贝方法及零拷贝系统 | |
US7793051B1 (en) | Global shared memory subsystem | |
CN113515236A (zh) | 协同存储架构 | |
US8171178B2 (en) | Scaling of small computer system interface input output (SCSI I/O) referrals | |
CN110209343B (zh) | 数据存储方法、装置、服务器及存储介质 | |
CN113704165B (zh) | 一种超融合服务器、数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20081029 |