CN102098227B - 报文捕获方法及内核模块 - Google Patents

报文捕获方法及内核模块 Download PDF

Info

Publication number
CN102098227B
CN102098227B CN2011100510034A CN201110051003A CN102098227B CN 102098227 B CN102098227 B CN 102098227B CN 2011100510034 A CN2011100510034 A CN 2011100510034A CN 201110051003 A CN201110051003 A CN 201110051003A CN 102098227 B CN102098227 B CN 102098227B
Authority
CN
China
Prior art keywords
message
passage
catching
address
kernel state
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.)
Active
Application number
CN2011100510034A
Other languages
English (en)
Other versions
CN102098227A (zh
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.)
Chengdu Huawei Technology Co Ltd
Original Assignee
Huawei Symantec Technologies Co Ltd
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 Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN2011100510034A priority Critical patent/CN102098227B/zh
Publication of CN102098227A publication Critical patent/CN102098227A/zh
Application granted granted Critical
Publication of CN102098227B publication Critical patent/CN102098227B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明提供一种报文捕获方法及内核模块,其中方法包括:网络硬件接收报文;根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道;将所述报文经相应的捕获通道从内核态发送到用户态,由该用户态中与所述捕获通道对应的报文捕获程序对所述报文进行报文捕获。本发明实现了捕获报文的内核态分流,使得无重复报文拷贝无需要外部分流设备支持,并支持大通道数的并行捕获,多进程及多线程编程模型,完美的兼容了现有各种基于报文捕获的应用。

Description

报文捕获方法及内核模块
技术领域
本发明涉及一种报文捕获方法及内核模块,属于网络技术领域。
背景技术
报文捕获(Packet Capture),也称数据包捕获(Datagram Capture)是指捕获数据包穿越网络的行为。深度数据包捕获的是完整的网络数据包,包括报文头和有效载荷;而部分数据包捕获可以仅记录数据报头的部分信息。报文捕获技术在网络流量管理和网络安全等方面中起着重要作用。报文捕获是报文分析的基础,作为网络监测的关键技术,被广泛地应用于分布式实时控制系统、网络故障分析、入侵检测系统、网络监控系统、计算机取证系统等领域中。
以太网具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。
现有技术中,采用软件报文分流并行处理技术实现并行报文捕获。
如图1所示,该技术基于单物理网卡,通过应用层分流并使用单独线程(或进程)进行报文捕获,使用多个线程(或进程)执行报文分析处理等工作。这样,捕包线程可以不受报文后续处理的影响,尽可能地全速执行报文捕获工作。然而,在现有技术中,报文捕获在单个线程/进程中执行,不能充分发挥多核CPU的计算能力,采用多进程方式,需要在进程间传递大量数据,进程间通讯开销过大,性能较低。
发明内容
本发明提供一种报文捕获方法及内核模块,用以实现了真正的单网卡/多网卡流量并行报文捕获。
本发明实施例的目的是通过以下技术方案实现的:
一种报文捕获方法,包括:
网络硬件接收报文;
根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道;
将所述报文经相应的捕获通道从内核态发送到用户态,由该用户态中与所述捕获通道对应的报文捕获程序对所述报文进行报文捕获。
一种内核模块,包括:
确定单元,用于根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道;
发送单元,用于将所述报文经确定单元所确定的相应的捕获通道从内核态发送到用户态,由该用户态中与所述捕获通道对应的报文捕获程序对所述报文进行报文捕获。
通过本发明实施例所提供的报文捕获方法及内核模块,通过网络硬件接收报文,根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道,将所述报文经相应的捕获通道从内核态发送到用户态,由该用户态中与所述捕获通道对应的报文捕获程序对所述报文进行报文捕获,实现了捕获报文的内核态分流,使得无重复报文拷贝无需要外部分流设备支持,并支持大通道数的并行捕获,多进程及多线程编程模型,完美的兼容了现有各种基于报文捕获的应用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术的应用程序技术原理图;
图2为本发明所述报文捕获方法实施例的流程图;
图3为图2所示步骤120的具体流程图;
图4为本发明所述报文捕获方法实施例的应用程序技术原理图;
图5为本发明所述内核模块实施例的结构示意图;
图6为图5所示内核模块中的确定单元11的可选结构示意图;
图7为图6所示内核模块中的运算单元1101的可选结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
介绍本发明技术方案之前,先介绍一下各类操作系统的数据链路层报文访问接口和开发库,如下:
各种网络操作系统均提供了报文捕获机制,技术原理基本相同,均为在内核态从网卡上获取数据报文然后传送到用户态应用程序,访问接口根据具体实现技术的不同而略有差别,例如:类Unix系统中主要提供了三种常见的数据链路层报文访问接口,分别是BSD中的BPF(Berkeley Packet Filter),SVR4中的DLPI(Data Link Provider Interface)和Linux中的SOCKET_PACKET。在Windows中数据链路层报文访问接口需要编写VxD程序或网卡设备驱动程序实现。在不同操作系统提供的这些不同接口之上,有一套Libpcap开发库(其windows版本为winpcap),为报文捕获应用程序提供了一套平台无关的统一编程接口。
图2为本发明所述报文捕获方法实施例的流程图,如图所示,该方法包括如下步骤:
步骤110,网络硬件接收报文。
具体地,在所述网络硬件接收报文之前,可以根据用户态中的报文捕获程序的数量,在内核态中设置相应数量的捕获通道。其中,所述报文捕获程序是用户态中用于对接收到的报文执行报文捕获的程序。为了提高报文捕获的效率,在用户态中同时设置有多个可并行执行的报文捕获程序。相应地,在内核态中设置相应数量的捕获通道,每个捕获通道具有唯一的通道编号。其中,网络硬件可以为物理网卡。
步骤120,根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道。
具体地,可以根据所述报文的源IP地址和目的IP地址进行哈希运算得到通道编号,将内核态中具有相应通道编号的捕获通道选定为该报文所属的捕获通道。具体的运算过程将在后续内容进行说明。
步骤130,将所述报文经相应的捕获通道从内核态发送到用户态,由该用户态中与所述捕获通道对应的报文捕获程序对所述报文进行报文捕获。
以下具体说明上述步骤120中所述的哈希运算的具体过程,如图3所示,包括:
步骤121,将所述源IP地址与所述目的IP地址进行异或运算得到异或结果值。
步骤122,将所述异或结果值与所述内核态中设置的捕获通道的数量进行取模运算得到余数值,作为所述通道编号。
通过使用源IP地址和目的IP哈希取模的分流算法,可以确保每条会话的全部报文都能正确分流到同一个捕获通道上,其实,只要是能够保证数据流能够均衡分流到各个捕获通道的算法都是可行的,例如:采用五元组、IP优先级、TOS、DSCP、IP协议类型等信息,实现分流,这里只是以源IP地址和目的IP进行哈希计算实现分流为例。
如图4所示,本实施例所述方法采用内核分流方式实现了与网卡数量无关的并行报文捕获,图中的内核模块根据系统平台的不同而不同,例如:BSD系统中为BPF(Berkeley Packet Filter),SVR4系统中为DLPI(Data LinkProvider Interface),Linux系统中为SOCKET_PACKET,Windows系统中为访问数据链路层信息的VxD程序(虚拟设备驱动程序)或网卡设备驱动程序。另外,对于Windows系统,图中的数据包捕获函数库需要替换为winpcap。
通过本实施例的技术方案,既不需要外部分流设备支持,也不需要在进程间传递大量数据,而且能很好地兼容现有的各种并行捕获模型。具体地,可以达到如下技术效果:
1、根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道,实现了捕获报文的内核态分流,无重复报文拷贝;
只有符合分流策略的报文才会进入指定捕获通道,从内核态到用户态之间无重复报文拷贝;由于每个捕获进程均可获得会话的完整报文,无需做进程间报文拷贝;
2、由于整个分流是在内核态下完成的,所以无需要外部分流设备支持;
物理网卡等网络适配器获得的流量在系统内的内核态进行分流处理,因此无需在前端另行架设分流设备;
3、由于内核模块完成分流,因此捕获通道不受网卡数的限制,可支持大通道数的并行捕获;
对于每个物理网卡上获取的流量,可以分成多份进行并行拷贝,可充分发挥多核处理优势;其中具体的份数可以等于每个物理网卡所允许的最大逻辑网卡数量;
4、支持多进程及多线程编程模型,完美兼容现有各种基于报文捕获的应用;
报文捕获程序可以为多进程也可以为多线程。由于用户态中对应用层数据处理的复杂性,现有技术中与应用相关代码并不支持多线程调用,而本实施例所述方法对多进程并行捕获的支持可以满足这种应用场景的需求,从而可以极大地提高遗留代码的重用率;
图5为本发明所述内核模块实施例的结构示意图,如图所示,该内核模块10至少包括确定单元11和发送单元12,其工作原理如下:
网络硬件接收到报文后,该内核模块10中的确定单元11根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道。具体地,如图5所示,该内核模块10中还可以进一步包括设置单元13,用于根据用户态中的报文捕获程序的数量,在内核态中设置相应数量的捕获通道,然后由确定单元11根据从网络硬件接收到的报文的地址信息确定该报文在设置单元13在内核态中设置的捕获通道中所属的捕获通道。其中,所述报文捕获程序是用户态中用于对接收到的报文执行报文捕获的程序。
此后,由发送单元12将所述报文经确定单元11所确定的相应的捕获通道从内核态发送到用户态,由该用户态中与所述捕获通道对应的报文捕获程序对所述报文进行报文捕获。
具体地,如图6所示,上述确定单元11可以包括运算单元1101和选定单元1102,当确定单元11根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道时,可以先由运算单元1101根据所述报文的源I P地址和目的IP地址进行哈希运算得到通道编号,具体地,如图7所示,可以由异或运算单元1101A将所述报文的源IP地址与所述目的IP地址进行异或运算得到异或结果值,并由取模运算单元1101B将异或运算单元得到的所述异或结果值与所述内核态中设置的捕获通道的数量进行取模运算得到余数值,作为所述通道编号。
然后,由选定单元1102将内核态中具有相应通道编号的捕获通道选定为该报文所属的捕获通道。通过使用源IP地址和目的IP哈希取模的分流算法,可以确保每条会话的全部报文都能正确分流到同一个捕获通道上。
本实施例所述内核模块10采用内核分流方式实现了与网卡数量无关的并行报文捕获,既不需要外部分流设备支持,也不需要在进程间传递大量数据,而且能很好地兼容现有的各种并行捕获模型。具体的技术效果描述可参见上述方法实施例的相关内容。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种报文捕获方法,其特征在于,包括:
根据用户态中的报文捕获程序的数量,在内核态中设置相应数量的捕获通道;
网络硬件接收报文;
根据从网络硬件接收到的报文的地址信息确定该报文在内核态中所属的捕获通道;
将所述报文经相应的捕获通道从内核态发送到用户态,由该用户态中与所述捕获通道对应的报文捕获程序对所述报文进行报文捕获。
2.根据权利要求1所述的方法,其特征在于,所述报文捕获程序为多线程的报文捕获程序或多进程的报文捕获程序。
3.根据权利要求1所述的方法,其特征在于,所述根据从网络硬件接收到的报文的地址信息,确定该报文在内核态中所属的捕获通道包括:根据所述报文的源IP地址和目的I P地址进行哈希运算得到通道编号,将内核态中具有相应通道编号的捕获通道选定为该报文所属的捕获通道。
4.根据权利要求3所述的方法,其特征在于,所述根据所述报文的源IP地址和目的IP地址进行哈希运算得到通道编号包括:
将所述源IP地址与所述目的IP地址进行异或运算得到异或结果值;
将所述异或结果值与所述内核态中设置的捕获通道的数量进行取模运算得到余数值,作为所述通道编号。
5.一种报文捕获装置,其特征在于,包括:
设置单元,用于根据用户态中的报文捕获程序的数量,在内核态中设置相应数量的捕获通道;
确定单元,用于根据从网络硬件接收到的报文的地址信息确定该报文在所述设置单元在内核态中设置的所述捕获通道中所属的捕获通道;
发送单元,用于将所述报文经确定单元所确定的相应的捕获通道从内核态发送到用户态,由该用户态中与所述捕获通道对应的报文捕获程序对所述报文进行报文捕获。
6.根据权利要求5所述的报文捕获装置,其特征在于,所述确定单元包括:
运算单元,用于根据所述报文的源IP地址和目的IP地址进行哈希运算得到通道编号;以及
选定单元,用于将内核态中具有相应通道编号的捕获通道选定为该报文所属的捕获通道。
7.根据权利要求6所述的报文捕获装置,其特征在于,所述运算单元包括:
异或运算单元,用于将所述报文的源IP地址与所述目的IP地址进行异或运算得到异或结果值;
取模运算单元,用于将异或运算单元得到的所述异或结果值与所述内核态中设置的捕获通道的数量进行取模运算得到余数值,作为所述通道编号。
CN2011100510034A 2011-03-03 2011-03-03 报文捕获方法及内核模块 Active CN102098227B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011100510034A CN102098227B (zh) 2011-03-03 2011-03-03 报文捕获方法及内核模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011100510034A CN102098227B (zh) 2011-03-03 2011-03-03 报文捕获方法及内核模块

Publications (2)

Publication Number Publication Date
CN102098227A CN102098227A (zh) 2011-06-15
CN102098227B true CN102098227B (zh) 2012-11-21

Family

ID=44131098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011100510034A Active CN102098227B (zh) 2011-03-03 2011-03-03 报文捕获方法及内核模块

Country Status (1)

Country Link
CN (1) CN102098227B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571560A (zh) * 2011-12-13 2012-07-11 曙光信息产业(北京)有限公司 一种根据hash按比例精确的分流方法
CN102412999B (zh) * 2011-12-23 2014-12-03 华为技术有限公司 一种基于抓包的远程故障定位方法、系统及设备
CN103269284B (zh) * 2013-05-17 2016-09-14 汉柏科技有限公司 实时网络数据的捕获方法
CN105187235A (zh) * 2015-08-12 2015-12-23 广东睿江科技有限公司 一种报文处理方法和装置
CN106571978B (zh) * 2016-10-28 2020-11-27 东软集团股份有限公司 数据包捕获方法及装置
CN108123877A (zh) * 2016-11-28 2018-06-05 网宿科技股份有限公司 实现非本地网络流量获取的方法、系统及装置
CN106452979A (zh) * 2016-12-06 2017-02-22 郑州云海信息技术有限公司 一种在线捕包方法及工具
CN106789617B (zh) * 2016-12-22 2020-03-06 东软集团股份有限公司 一种报文转发方法及装置
CN106850853B (zh) * 2017-03-24 2019-06-11 国网江苏省电力公司电力科学研究院 一种基于负载均衡的信息通道智能选择方法
CN111835613B (zh) * 2019-04-23 2022-07-08 厦门网宿有限公司 一种vpn服务器的数据传输方法及vpn服务器
CN112153013B (zh) * 2020-09-02 2023-04-18 杭州安恒信息技术股份有限公司 一种Socket数据转发方法、装置、电子设备和存储介质
CN113608781A (zh) * 2021-08-02 2021-11-05 上海同星智能科技有限公司 多适配器兼容库文件模块、调用方法、调用系统及设备
CN114979303B (zh) * 2022-04-29 2024-04-05 京东科技信息技术有限公司 网络数据包的服务质量处理方法、装置、设备和可读介质
CN115202990B (zh) * 2022-09-09 2022-12-06 天津市天河计算机技术有限公司 Io性能数据的采集方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1953453A (zh) * 2006-10-25 2007-04-25 北京交通大学 一种IPv6数据高速捕获和快速存储系统及实现方法
US20070115988A1 (en) * 2005-11-21 2007-05-24 Miller Karl E Method and system for processing incoming packets in a communication network
CN101917350A (zh) * 2010-09-13 2010-12-15 南京中兴特种软件有限责任公司 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070115988A1 (en) * 2005-11-21 2007-05-24 Miller Karl E Method and system for processing incoming packets in a communication network
CN1953453A (zh) * 2006-10-25 2007-04-25 北京交通大学 一种IPv6数据高速捕获和快速存储系统及实现方法
CN101917350A (zh) * 2010-09-13 2010-12-15 南京中兴特种软件有限责任公司 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨云 等.嵌入式入侵检测系统的设计与实现.《计算机工程与设计》.2011,第32卷(第1期),21-23,27. *

Also Published As

Publication number Publication date
CN102098227A (zh) 2011-06-15

Similar Documents

Publication Publication Date Title
CN102098227B (zh) 报文捕获方法及内核模块
US11902120B2 (en) Synthetic data for determining health of a network security system
US10230616B2 (en) Monitoring virtualized network
US11570090B2 (en) Flow tracing operation in container cluster
CN109309605B (zh) 带内网络遥测系统及方法
US10284390B2 (en) Techniques for efficient service chain analytics
US8059532B2 (en) Data and control plane architecture including server-side triggered flow policy mechanism
US11075980B2 (en) Method for operating a node cluster system in a network and node cluster system
Moreno et al. Commodity packet capture engines: Tutorial, cookbook and applicability
CN113326228B (zh) 基于远程直接数据存储的报文转发方法、装置及设备
WO2015101119A1 (zh) 一种流表匹配的方法、装置和OpenFlow交换系统
CN105939284B (zh) 报文控制策略的匹配方法及装置
CN109547288B (zh) 一种协议无关转发网络可编程流测量方法
US10868728B2 (en) Graph-based network management
CN106571978B (zh) 数据包捕获方法及装置
CN111865996A (zh) 数据检测方法、装置和电子设备
US8050266B2 (en) Low impact network debugging
CN106209456B (zh) 一种内核态下网络故障检测方法及装置
CN110198246B (zh) 一种流量监控的方法及系统
CN115033407A (zh) 一种适用于云计算的采集识别流量的系统和方法
CN106612266B (zh) 网络转发方法及设备
CN115190077B (zh) 控制方法、装置及计算设备
US9917742B1 (en) Hardware connection management
CN102355598B (zh) 一种基于操作系统驱动层的加扰方法和装置
CN115914417B (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
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

Free format text: FORMER NAME: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee after: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.

Address before: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee before: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220901

Address after: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041

Patentee after: Chengdu Huawei Technologies Co.,Ltd.

Address before: 611731 Qingshui River District, Chengdu hi tech Zone, Sichuan, China

Patentee before: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.