CN101453386A - 网络的封包撷取方法 - Google Patents

网络的封包撷取方法 Download PDF

Info

Publication number
CN101453386A
CN101453386A CNA200710199055XA CN200710199055A CN101453386A CN 101453386 A CN101453386 A CN 101453386A CN A200710199055X A CNA200710199055X A CN A200710199055XA CN 200710199055 A CN200710199055 A CN 200710199055A CN 101453386 A CN101453386 A CN 101453386A
Authority
CN
China
Prior art keywords
package
network
extracting method
buffering area
application
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
Application number
CNA200710199055XA
Other languages
English (en)
Inventor
宋贤广
王兴家
陈玄同
刘文涵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inventec Corp
Original Assignee
Inventec Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inventec Corp filed Critical Inventec Corp
Priority to CNA200710199055XA priority Critical patent/CN101453386A/zh
Publication of CN101453386A publication Critical patent/CN101453386A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种网络的封包撷取方法,由网络服务器通过网络卡从实体层中撷取数个封包至应用层,封包撷取方法包括下列步骤:由新应用程序接口(NewApplication Interface,NAPI)来撷取封包;在内核层(kernel)中设置环状队列;提供钩程序用以撷取封包;将所撷取到的封包存放至环状队列中;利用内存映像手段将储存于环状队列的封包映像到相应的应用程序的内存空间中。以减少系统发出中断的次数与封包解析过程中的复制次数。

Description

网络的封包撷取方法
技术领域
本发明涉及一种网络的封包撷取方法,特别涉及一种对高速传输网络(Gigabytes Network)的封包撷取方法,用以减少系统发出中断的次数与封包解析过程中的复制次数。
背景技术
一个网络分析工具通常由网络捕包(capture packet)模块,协议分析(protocol analysis)模块,规则匹配(rule match)模块,响应处理(response)模块所组成。请参考图1所示,其为现有网络封包撷取工具的架构示意图。网络捕包模块是网络分析工具中重要的组成部分,对封包的捕获率将直接影响着网络分析工具的性能。
请参考图2所示,其为现有的封包撷取的运作流程图。当网络卡侦测有封包被接收时,网络卡会触发硬件中断,使得中央处理单元进入中断服务程序(步骤S210)。中央处理单元在网络卡的中断处理程序中会将数据插入到一个缓冲区中(步骤S220),然后再等待操作系统的软件中断调用。软件中断处理程序会将中央处理单元欲处理的封包复制给客户端应用程序(步骤S230)。以往的应用程序多半通过操作系统调用recvfrom()或recvmsg()等函式(function)来获取封包。依据这种方法来获取一个封包的话,需要将封包逐步的从实体层(physicallayer)复制到应用层(application layer)中储存。
最后,操作系统在处理完软件中断后,中央处理单元会将数据传送到应用层中(步骤S240)。若在软件中断的过程中,又有新的封包被接收的话,会因为硬件中断优先级比软件中断高。所以操作系统会优先的执行硬件中断处理,并停止软件中断的运行。
若中断频率高到一定程度的话,中央处理单元忙于处理硬件中断。此时处理封包的上层协议(例如,网络层(network layer)或传输层(transport layer))会无法顺利进行解析封包内容,但中央处理单元还不断往缓冲区中放数据。当缓冲区被塞满后,所接收的封包就只能被丢弃,这种现象称为中断活锁。
关于中断活锁所引起的问题,我们可以从两个方面来解决:一个是处理中断的时间,另一个是缓冲区的大小。如果中断时间过短,那么操作系统频繁的硬件中断就容易造成中断活锁。如果中断时间过长,那样就造成中央处理单元无事可做,平白浪费了中央处理器的运算资源。另一个就是缓冲区大小,理论上缓冲区的容量越大越好。这对于大流量的网络传输而言,因为中央处理单元需要做频繁的切换,所以这种方法的负载较大,使得不利于应用程序接收封包。
发明内容
鉴于以上的问题,本发明的主要目的在于提供一种网络的封包撷取方法,使得网络服务器从实体层去撷取数个封包至应用层,可以减少封包从实体层复制到应用层的复制次数。
为实现上述目的,本发明所揭露的网络的封包撷取方法,包括下列步骤:由新应用程序接口(New API,NAPI)机制来撷取封包;于内存中设置缓冲区;提供一个钩子程序(hook processe),用以撷取封包;将文件头信息存放至缓冲区中;利用内存映像(memory map)手段来存取缓冲区中所储存的文件头信息。
本发明在利用内核空间中的环状队列,并将所撷取到的封包存放在环状队列中。再采用内存映像的方式来存取环状队列中所储存的封包数据,以减少将封包从实体层复制到应用层储存的次数。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为现有网络封包撷取工具的架构示意图;
图2为现有的封包撷取的运作流程图;
图3为本发明的运作流程示意图;
图4为本发明的组件运作示意图。
其中,附图标记
110    响应处理模块
120    规则匹配模块
130    协议分析模块
140    网络捕包模块
150    封包
410    网络卡
411    环状队列
420    系统内存
430    封包
具体实施方式
本发明提供了一种网络的封包撷取方法。通过网络卡从网络实体层去读取数个封包至应用层。请参考图3所示,其为本发明的运作流程示意图。本发明的封包读取方法包括下列步骤:由新应用程序接口(New ApplicationInterface,简称NAPI)机制来撷取网络封包(步骤S310)。在内核层(kernel)中设置缓冲区(步骤S320)。提供一个钩子程序(hook processes)用以撷取封包(步骤S330)。将所撷取到的封包存放至缓冲区中(步骤S340)。利用内存映像(memory map)手段将储存于缓冲区的封包映像到用户系统的地址空间中(步骤S350)。
请参考图4所示,其为本发明的组件运作示意图。同时也请配合图3的运作流程。在本发明中采取新应用程序接口来撷取网络封包。原因在于为了解决系统中断活锁的问题,必须降低网络卡410中断的频率。新应用程序接口的核心概念是利用中断唤醒数据接收的服务程序,然后轮询的方法来轮询是否数据需要被读取。新应用程序接口用以减少产生中断的数目,特别在于大量的短数据封包。以达到不要让操作系统花费太多的时间在中断现场的保护和恢复上,以便更多的时间用来在实体层上处理数据传输。
当网络卡410开始撷取封包时,网络卡410会将所撷取到的封包储存至一环状队列411(ring queue)的缓冲区中。环状队列411系以内存页面(Memorypage)为单位,由连续的多个内存页面所组成。而一个内存页面为多个内存框架(Frame)所组成。网络卡410将所撷取到的封包分别的储存在内存框架中
虽然内存框架的大小不一定与被撷取的封包大小相同。如果封包的大小比内存框架的大,则将封包尾部超出的部分数据截去,将剩下的部分数据复制到内存框架中。除此之外,也可以仅储存封包的文件头信息。
接着通过内存映像的方式来存取环状队列411中所储存的封包430。将储存于环状队列411中的封包430映像到应用程序所使用的内存空间中。特别需要注意的是,此一步骤所指的应用程序为利用本发明的撷取封包方法的应用程序,其所配置给应用层应用程序的地址空间。内存映像的主要目的在于:减少读写文件的开销、分配一个较大的内存空间与在应用程序进行中共享内存数据。这样一来,操作系统不需频繁的从实体层复制封包430到应用层中。
应用程序根据内存映像后得到的环状队列411起始地址提供相应的两组向量指标。这两个向量指针分别设置于系统内核与应用层中。在系统内核的向量指针提供软中断处理函数使用,它会依次将待处理队列中的封包复制到环状队列411中。直至将环状队列411塞满。另一个是在应用层的向量指标,其为提供应用程序所使用。在应用层的向量指针用以处理环状队列411中的封包,直至环状队列411中无新的封包430。
本发明在利用网络卡410中的环状队列411,并将所撷取到的封包存放在环状队列411中。再采用内存映像的方式来存取环状队列411中所储存的封包430,以减少将封包430从实体层复制到应用层储存的次数。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (4)

1、一种网络的封包撷取方法,由一网络服务器执行下列步骤,使得该网络服务器所执行的应用程序通过一网络卡从一网络实体层中撷取数个封包至一应用层,其特征在于,该封包撷取方法包括下列步骤:
由一新应用程序接口来撷取该些封包;
在该网络卡中设置一缓冲区;
提供一钩程序用以撷取该些封包;
将所撷取到的该些封包存放至该缓冲区中;以及
利用一内存映像手段将储存于该缓冲区的该些封包映像到相应的应用程序的内存空间中。
2、根据权利要求1所述的网络的封包撷取方法,其特征在于,撷取该些封包更包括以下步骤:
撷取该些封包的一文件头信息;及
将该缓冲区中所储存的该些文件头信息映像到相应的应用程序的内存空间中。
3、根据权利要求2所述的网络的封包撷取方法,其特征在于,该应用层存取该系统内存中所储存的该些文件头信息。
4、根据权利要求1所述的网络的封包撷取方法,其特征在于,该缓冲区由一环状队列所构成。
CNA200710199055XA 2007-12-07 2007-12-07 网络的封包撷取方法 Pending CN101453386A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA200710199055XA CN101453386A (zh) 2007-12-07 2007-12-07 网络的封包撷取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA200710199055XA CN101453386A (zh) 2007-12-07 2007-12-07 网络的封包撷取方法

Publications (1)

Publication Number Publication Date
CN101453386A true CN101453386A (zh) 2009-06-10

Family

ID=40735415

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA200710199055XA Pending CN101453386A (zh) 2007-12-07 2007-12-07 网络的封包撷取方法

Country Status (1)

Country Link
CN (1) CN101453386A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102833144A (zh) * 2011-06-15 2012-12-19 鸿富锦精密工业(深圳)有限公司 网卡数据传输方法及系统
CN112532690A (zh) * 2020-11-04 2021-03-19 杭州迪普科技股份有限公司 一种报文解析方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102833144A (zh) * 2011-06-15 2012-12-19 鸿富锦精密工业(深圳)有限公司 网卡数据传输方法及系统
CN112532690A (zh) * 2020-11-04 2021-03-19 杭州迪普科技股份有限公司 一种报文解析方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN108234348B (zh) 一种队列操作中的处理方法及装置
US8145859B2 (en) Method and system for spilling from a queue to a persistent store
US9154453B2 (en) Methods and systems for providing direct DMA
CN107527317B (zh) 基于图像处理的数据传输系统
CN101267361B (zh) 一种基于零拷贝技术的高速网络数据包捕获方法
Barrera III A Fast Mach Network IPC Implementation.
WO2018121404A1 (zh) 一种超时监控方法及装置
CN101540720B (zh) 一种支持多类型网卡链路聚合的零拷贝方法
CN108600053B (zh) 一种基于零拷贝技术的无线网络数据包捕获方法
CN101178694A (zh) Intel e1000零拷贝的方法
CN109564502B (zh) 应用于存储设备中的访问请求的处理方法和装置
WO2020157594A1 (en) Handling an input/output store instruction
US7457845B2 (en) Method and system for TCP/IP using generic buffers for non-posting TCP applications
CN109561105A (zh) 一种基于报文零拷贝方式的高性能报文捕获发送平台
CN104158757A (zh) 一种gps数据入库处理方法和系统
CN108090003A (zh) 一种基于零拷贝的提升web服务器性能的方法、系统
CN113590512B (zh) 可直连外设设备的自启动dma装置及应用
CN111078651A (zh) 统计对象存储的使用量的方法及装置
CN103986585A (zh) 报文预处理方法及其装置
US20090225767A1 (en) Network packet capturing method
CN103731364B (zh) 基于x86平台实现万兆大流量快速收包的方法
CN115348222A (zh) 一种消息分发方法、装置、服务端及存储介质
US20090031306A1 (en) Method and apparatus for data processing using queuing
CN114296659A (zh) 数据单向传输方法、内网端单元和单向隔离光闸系统
US11228668B2 (en) Efficient packet processing for express data paths

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090610