CN112817536B - 一种数据包的捕获方法及相关装置 - Google Patents
一种数据包的捕获方法及相关装置 Download PDFInfo
- Publication number
- CN112817536B CN112817536B CN202110150439.2A CN202110150439A CN112817536B CN 112817536 B CN112817536 B CN 112817536B CN 202110150439 A CN202110150439 A CN 202110150439A CN 112817536 B CN112817536 B CN 112817536B
- Authority
- CN
- China
- Prior art keywords
- data packet
- queue
- hash
- target
- size
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种数据包的捕获方法及相关装置,其中,所述数据包的捕获方法首先获取配置参数,并根据配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以目标分块大小为单位申请兆字节对其的N个内存块,并创建多个具有N个结点的队列,以自动获取最佳磁盘分块策略,在捕获数据包时,使用DPDK提供的接口收取数据包,绕过操作系统内核态到用户态拷贝操作,以较高速率收取数据包并按照最佳磁盘分块策略拼装成块,存储到相应队列的内存块中,最后在存储过程中将拼装好的数据块写入存储介质进行存储,实现了提高数据包捕获性能和效率的目的。
Description
技术领域
本申请涉及通信技术领域,更具体地说,涉及一种数据包的捕获方法及相关装置。
背景技术
数据包捕获技术通常用于对网络进行监视,以评估网络的当前状态,在网络安全等领域广泛应用。
目前的数据包捕获方法多依赖于现有的数据包捕获工具,这些数据包捕获工具存在收包性能较低的问题。
发明内容
为解决上述技术问题,本申请提供了一种数据包的捕获方法及相关装置,以实现提高数据包捕获性能和效率的目的。
为实现上述技术目的,本申请实施例提供了如下技术方案:
一种数据包的捕获方法,包括:
获取配置参数,所述配置参数包括参与捕获的CPU核个数、支持存储数+据包的CPU核个数、参与捕获的端口列表、队列中结点数量和每个结点对应的内存块大小中的至少一项;
根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以所述目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,队列的每一个结点分配指针指向所述内存块;N为大于1的整数;
使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中;
从队列中取出内存块信息和内存块,将内存块存储中的数据包存储到存储介质中,并将内存块还回队列中。
可选的,所述根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小包括:
判断所述配置参数中是否包括每个结点对应的内存块大小,如果是,则根据所述配置参数确定目标分块大小,如果否,则以i兆为单位对预设路径进行顺序读写测试,确定目标分块大小,所述目标分块大小为磁盘性能最高时i的取值,i为2的整数次幂。
可选的,所述配置参数还包括:哈希策略以及哈希份数。
可选的,N的取值等于所述哈希份数。
可选的,所述哈希策略包括:IP策略、端口号策略、IP和端口号策略、协议策略、IP和协议策略中的任意一项。
可选的,所述使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中包括:
使用DPDK提供的接口收取数据包;
按照PCAP文件格式对所述数据包进行拼装;
对数据包按照所述哈希策略进行解析,以确定目标队列,并将数据包存储到所述目标队列中。
可选的,所述对数据包按照所述哈希策略进行解析,以确定目标列队包括:
当所述哈希策略包括IP策略时,数据包的源IP和目标IP解析值进行哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括端口号策略时,数据包的源端口和目的端口解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括IP和端口号策略时,上行的数据包的目的IP和目的端口解析值参与哈希运算,下行的数据包的源IP和源端口解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括协议策略时,数据包的协议号解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括IP和协议策略时,上行的数据包的目的IP和协议号解析值参与哈希运算,下行的数据包的源IP和协议号解析值参与哈希运算,根据哈希运算结果确定所述目标队列。
可选的,还包括:
在使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中的过程中,当预设时间内未有新的数据包被收取,且当前的目标内存块仍有数据长度时,将当前的目标内存块送入队列。
一种数据包的捕获系统,包括:
参数获取模块,用于获取配置参数,所述配置参数包括参与捕获的CPU核个数、支持存储数据包的CPU核个数、参与捕获的端口列表、队列中结点数量和每个结点对应的内存块大小中的至少一项;
分块配置模块,用于根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以所述目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,队列的每一个结点分配指针指向所述内存块;N为大于1的整数;
数据接收模块,用于使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中;
数据存储模块,用于从队列中取出内存块信息和内存块,将内存块存储中的数据包存储到存储介质中,并将内存块还回队列中。
一种数据包的捕获系统,包括存储器和处理器;
所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,所述程序代码用于执行上述任一项所述的数据包的捕获方法。
从上述技术方案可以看出,本申请实施例提供了一种数据包的捕获方法及相关装置,其中,所述数据包的捕获方法首先获取配置参数,并根据配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,以自动获取最佳磁盘分块策略,在捕获数据包时,使用DPDK提供的接口收取数据包,绕过操作系统内核态到用户态拷贝操作,以较高速率收取数据包并按照最佳磁盘分块策略拼装成块,存储到相应队列的内存块中,最后在存储过程中将拼装好的数据块写入存储介质进行存储,实现了提高数据包捕获性能和效率的目的。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请的一个实施例提供的一种数据包的捕获方法的流程示意图;
图2为本申请的另一个实施例提供的一种数据包的捕获方法的流程示意图;
图3为本申请的又一个实施例提供的一种数据包的捕获方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种数据包的捕获方法,如图1所示,包括:
S101:获取配置参数,所述配置参数包括参与捕获的CPU核个数、支持存储数据包的CPU核个数、参与捕获的端口列表、队列中结点数量和每个结点对应的内存块大小中的至少一项;
S102:根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以所述目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,队列的每一个结点分配指针指向所述内存块;N为大于1的整数;
S103:使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中;
S104:从队列中取出内存块信息和内存块,将内存块存储中的数据包存储到存储介质中,并将内存块还回队列中。
CPU(Central Processing Unit,中央处理器)核又称CPU核心(Die)或CPU内核,用于完成计算、接受/存储命令和数据处理等操作,是数字处理的核心。
在本实施例中,可通过设置所述配置参数,确定参与捕获的CPU核个数、支持存储数据包的CPU核个数、参与捕获的端口列表、队列中结点数量和每个结点对应的内存块大小等参数,其中,每个结点对应的内存块大小可以由工程技术人员根据经验配置,也可通过磁盘IO(Input/Output,输入/输出)性能分析等方式获取。
在所述配置参数中不包括参与捕获的CPU核个数和支持存储数据包的CPU核个数这两个参数时,将根据参与捕获的端口列表中端口数目P分配CPU核个数以捕获数据包,CPU核的值由1开始,到P为止。
此外,所述配置参数还可以包括将要存储的文件路径和文件名、存储时的哈希(hash)策略以及哈希份数等参数。可选的,在步骤S102中,N的取值等于所述哈希份数,队列个数与存储时的哈希份数相等,可以简化存储单元的处理,一是避免了队列的多消费者,二是存储文件时不用有加锁操作。
DPDK(Data Plane Development Kit,数据平面开发套件)主要用于快速数据包处理的函数库与驱动集合,可极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。在本实施例中,通过使用DPDK提供的接口收取数据包可绕过操作系统内核态到用户态拷贝操作,以较高速率收取数据包并按照最佳磁盘分块策略拼装成块,存储到相应队列的内存块中,有利于提高数据包捕获性能和效率。
另外,在本实施例中,在确定目标分块大小后,以所述目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,以实现自动获取最佳磁盘分块策略的目的,在后续的捕获数据包的过程中,可依据该最佳磁盘分块策略,对收取的数据包进行拼装并存储到相应队列的内存块中,有利于提高数据包捕获性能和效率,实现提高数据包捕获性能和效率的目的。进一步的,考虑到使用数据包的方便性,在分块捕获数据包之后,存储时也可按照目标分块大小,从队列中取出内存块信息和内存块,将内存块存储中的数据包存储到存储介质中,使得在使用数据包时,无需配合分割工具进行,提升了操作的便利性。
下面对本申请实施例提供的数据包的捕获方法的各个步骤的可行执行方式进行描述。
可选的,在本申请的一个实施例中,如图2所示,所述根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小包括:
S1021:判断所述配置参数中是否包括每个结点对应的内存块大小,如果是,则根据所述配置参数确定目标分块大小,如果否,则以i兆为单位对预设路径进行顺序读写测试,确定目标分块大小,所述目标分块大小为磁盘性能最高时i的取值,i为2的整数次幂。
在本实施例中,提供了一种可行的根据所述配置参数或根据对预设路径的顺序读写测试的结果确定目标分块大小的过程,一般来讲,当配置参数中包括每个结点对应的内存块大小时,直接将配置参数中每个结点对应的内存块大小确定为所述目标分块大小。
当配置参数中不包括每个结点对应的内存块大小时,以i兆为单位对预设路径进行顺序读写测试,将磁盘IO性能最优时i的取值,确定目标分块大小,此时所述目标分块大小为磁盘性能最高时i的取值。
将i设定为2的整数次幂的目的是匹配操作系统的分块策略,分块策略的块大小一般也是2的整数次幂。
更具体地,所述根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小包括:
依据多个预设的单位内存块的大小对所述磁盘进行分块处理,得到多种分块策略;所述每种分块策略的单位内存块的内存大小为所述多个预设的单位内存块中的任意一个;
依据每种分块策略对所述磁盘的预设存储位置的数据包进行读取测试,确定出最优的分块策略;
确定所述最优的分块策略对应的预设的单位内存块的内存大小,得到磁盘I/O性能最优时的单位内存块的内存大小。
在该过程中,多个预设的单位内存块的内存大小中每个预设的单位内存块的内存大小可以是工程技术人员根据经验预先设置好的一些内存的大小,也可以是根据一定的以上策略得到的。
举例说明:假设配置文件中内存队列的结点个数为N,单位内存块的内存大小为M,则创建的内存队列的总大小为M×N,可以理解为,具有N个结点的内存队列,内存队列每个结点的内存大小为M。
可选的,当所述配置参数包括哈希策略时,所述哈希策略可包括:IP策略、端口号策略、IP和端口号策略、协议策略、IP和协议策略中的任意一项。
如图3所示,所述使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中包括:
S1031:使用DPDK提供的接口收取数据包;
S1032:按照PCAP(过程特性分析软件包)文件格式对所述数据包进行拼装;
S1033:对数据包按照所述哈希策略进行解析,以确定目标队列,并将数据包存储到所述目标队列中。
当哈希策略不同时,步骤S1033的执行方式不同,具体地,所述对数据包按照所述哈希策略进行解析,以确定目标列队包括:
当所述哈希策略包括IP策略时,数据包的源IP和目标IP解析值进行哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括端口号策略时,数据包的源端口和目的端口解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括IP和端口号策略时,上行的数据包的目的IP和目的端口解析值参与哈希运算,下行的数据包的源IP和源端口解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括协议策略时,数据包的协议号解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括IP和协议策略时,上行的数据包的目的IP和协议号解析值参与哈希运算,下行的数据包的源IP和协议号解析值参与哈希运算,根据哈希运算结果确定所述目标队列。
例如,当哈希策略配置为IP策略时,数据包要解析到IP层的IP地址部分,取出网络层的源ip和目的ip进行哈希运算得到一个哈希值来决定向哪一个队列的内存块来存放数据。
IP层的解析支持ipv4与ipv6的情况,并支持GTP/GRE/VXLAN等封装的形式,在有数据包的情况下,默认通过内层的IP层的信息进行计算。
在对异常情况的处理方面,例如当进入的数据包并不包含有配置的策略信息,则该数据包会送往一个默认队列。
收包单元严格按照分块大小来存储数据以保证存储单元的效率,在进行写入内存块时,还需要将收到的内容组装成为数据包的存储格式后,再进行写入内存块。根据PCAP文件格式的约定,先存储数据包头信息,再存储数据包的内容。
将执行包括以下两种情况:
情况一:当组装好数据包头信息和数据包内容的格式后,如果该内存块的剩余的空间足够存放该段组装内容时,将直接将组装内容拷贝到内存块中。
情况二:当组装好数据包头信息和数据包内容的格式后,如果该内存块的剩余的空间不能足以存放该段组装内容时,这时需要将组装好的内容分为两部分,一部分存放于该内存块中,另一部分存放于该队列的下一个内存块中。
针对于情况二,举例说明:在受到个512字节的数据包后,将数据包头信息16字节组装在一起后为528字节,这时当前内存块的剩余空间大小仅有200字节时,则重新申请一个新内存块。在当前的内存块中填入200字节,剩余的328字节则填入新的内存块中,当前的内存块送入队列以便存储单元可以获取。这样确保每一个内存块的内容都是连续的,并且在写入时以最优的分块存储的方式进行存储。
在上述实施例的基础上,在本申请的一个可选实施例中,所述数据包的捕获方法还包括:
S105:在使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中的过程中,当预设时间内未有新的数据包被收取,且当前的目标内存块仍有数据长度时,将当前的目标内存块送入队列。
在本实施例中,在收取数据包的过程中还启动了定时功能,当预设时间内未有新的数据包到来,且当前的目标内存块仍有数据长度时,也将该内存块送入队列以便可以获取该内存块进行存储操作。
对于步骤S104,在存储过中,从队列中取出内存块和内存块信息。内存块中携带拼装好的数据包内容,可以直接向文件中存储。内存块信息中会带有是否重新生成文件,当前内存块实际内容大小,数据包个数等信息。
在把当前内存块的信息全部写入文件后,应该将当前内存块还回相应队列。
在重新生成新文件时,文件名的命名方式有约定,文件名应该包含管理单元所指定的信息,并带有时间戳,以生成该文件时的时间为准,精确到秒。在达到配置的大小时,自动变化文件名。
统计已经存储到文件的包数与字节数,存储到文件的包数与字节数可以收取的数据包数与字节数进行对比,以确定队列中还有剩余内存块未被存储。
下面对本申请实施例提供的数据包的捕获系统进行描述,下文描述的数据包的捕获系统可与上文描述的数据包的捕获方法相互对应参照。
相应的,本申请实施例提供了一种数据包的捕获系统,包括:
参数获取模块,用于获取配置参数,所述配置参数包括参与捕获的CPU核个数、支持存储数据包的CPU核个数、参与捕获的端口列表、队列中结点数量和每个结点对应的内存块大小中的至少一项;
分块配置模块,用于根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以所述目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,队列的每一个结点分配指针指向所述内存块;N为大于1的整数;
数据接收模块,用于使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中;
数据存储模块,用于从队列中取出内存块信息和内存块,将内存块存储中的数据包存储到存储介质中,并将内存块还回队列中。
相应的,本申请实施例还提供了一种数据包的捕获系统,包括存储器和处理器;
所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,所述程序代码用于执行上述任一实施例所述的数据包的捕获方法。
综上所述,本申请实施例提供了一种数据包的捕获方法及相关装置,其中,所述数据包的捕获方法首先获取配置参数,并根据配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,以自动获取最佳磁盘分块策略,在捕获数据包时,使用DPDK提供的接口收取数据包,绕过操作系统内核态到用户态拷贝操作,以较高速率收取数据包并按照最佳磁盘分块策略拼装成块,存储到相应队列的内存块中,最后在存储过程中将拼装好的数据块写入存储介质进行存储,实现了提高数据包捕获性能和效率的目的。
本说明书中各实施例中记载的特征可以相互替换或者组合,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据包的捕获方法,其特征在于,包括:
获取配置参数,所述配置参数包括参与捕获的CPU核个数、支持存储数据包的CPU核个数、参与捕获的端口列表、队列中结点数量和每个结点对应的内存块大小中的至少一项;
根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以所述目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,队列的每一个结点分配指针指向所述内存块;N为大于1的整数;
使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中;
从队列中取出内存块信息和内存块,将内存块存储中的数据包存储到存储介质中,并将内存块还回队列中。
2.根据权利要求1所述的数据包的捕获方法,其特征在于,所述根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小包括:
判断所述配置参数中是否包括每个结点对应的内存块大小,如果是,则根据所述配置参数确定目标分块大小,如果否,则以i兆为单位对预设路径进行顺序读写测试,确定目标分块大小,所述目标分块大小为磁盘性能最高时i的取值,i为2的整数次幂。
3.根据权利要求1所述的数据包的捕获方法,其特征在于,所述配置参数还包括:哈希策略以及哈希份数。
4.根据权利要求3所述的数据包的捕获方法,其特征在于,N的取值等于所述哈希份数。
5.根据权利要求3所述的数据包的捕获方法,其特征在于,所述哈希策略包括:IP策略、端口号策略、IP和端口号策略、协议策略、IP和协议策略中的任意一项。
6.根据权利要求5所述的数据包的捕获方法,其特征在于,所述使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中包括:
使用DPDK提供的接口收取数据包;
按照PCAP文件格式对所述数据包进行拼装;
对数据包按照所述哈希策略进行解析,以确定目标队列,并将数据包存储到所述目标队列中。
7.根据权利要求6所述的数据包的捕获方法,其特征在于,所述对数据包按照所述哈希策略进行解析,以确定目标列队包括:
当所述哈希策略包括IP策略时,数据包的源IP和目标IP解析值进行哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括端口号策略时,数据包的源端口和目的端口解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括IP和端口号策略时,上行的数据包的目的IP和目的端口解析值参与哈希运算,下行的数据包的源IP和源端口解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括协议策略时,数据包的协议号解析值参与哈希运算,根据哈希运算结果确定所述目标队列;
当所述哈希策略包括IP和协议策略时,上行的数据包的目的IP和协议号解析值参与哈希运算,下行的数据包的源IP和协议号解析值参与哈希运算,根据哈希运算结果确定所述目标队列。
8.根据权利要求6所述的数据包的捕获方法,其特征在于,还包括:
在使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中的过程中,当预设时间内未有新的数据包被收取,且当前的目标内存块仍有数据长度时,将当前的目标内存块送入队列。
9.一种数据包的捕获系统,其特征在于,包括:
参数获取模块,用于获取配置参数,所述配置参数包括参与捕获的CPU核个数、支持存储数据包的CPU核个数、参与捕获的端口列表、队列中结点数量和每个结点对应的内存块大小中的至少一项;
分块配置模块,用于根据所述配置参数或根据对预设路径的顺序读写测试的结果,确定目标分块大小,以所述目标分块大小为单位申请兆字节对齐的N个内存块,并创建多个具有N个结点的队列,队列的每一个结点分配指针指向所述内存块;N为大于1的整数;
数据接收模块,用于使用DPDK提供的接口收取数据包,对收取的数据包进行拼装并存储到相应队列的内存块中;
数据存储模块,用于从队列中取出内存块信息和内存块,将内存块存储中的数据包存储到存储介质中,并将内存块还回队列中。
10.一种数据包的捕获系统,其特征在于,包括存储器和处理器;
所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,所述程序代码用于执行权利要求1-8任一项所述的数据包的捕获方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110150439.2A CN112817536B (zh) | 2021-02-03 | 2021-02-03 | 一种数据包的捕获方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110150439.2A CN112817536B (zh) | 2021-02-03 | 2021-02-03 | 一种数据包的捕获方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817536A CN112817536A (zh) | 2021-05-18 |
CN112817536B true CN112817536B (zh) | 2022-09-16 |
Family
ID=75860917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110150439.2A Active CN112817536B (zh) | 2021-02-03 | 2021-02-03 | 一种数据包的捕获方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817536B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106571978A (zh) * | 2016-10-28 | 2017-04-19 | 东软集团股份有限公司 | 数据包捕获方法及装置 |
CN109639793A (zh) * | 2018-12-10 | 2019-04-16 | 广东浪潮大数据研究有限公司 | 一种集群nas系统监控方法、装置、设备及介质 |
CN111782140A (zh) * | 2020-06-18 | 2020-10-16 | 杭州安恒信息技术股份有限公司 | 网络数据包存储方法、装置、计算机设备和存储介质 |
CN111813547A (zh) * | 2020-06-30 | 2020-10-23 | 武汉虹旭信息技术有限责任公司 | 基于dpdk的数据包处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990326B2 (en) * | 2017-05-31 | 2021-04-27 | Fmad Engineering Kabushiki Gaisha | High-speed replay of captured data packets |
-
2021
- 2021-02-03 CN CN202110150439.2A patent/CN112817536B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106571978A (zh) * | 2016-10-28 | 2017-04-19 | 东软集团股份有限公司 | 数据包捕获方法及装置 |
CN109639793A (zh) * | 2018-12-10 | 2019-04-16 | 广东浪潮大数据研究有限公司 | 一种集群nas系统监控方法、装置、设备及介质 |
CN111782140A (zh) * | 2020-06-18 | 2020-10-16 | 杭州安恒信息技术股份有限公司 | 网络数据包存储方法、装置、计算机设备和存储介质 |
CN111813547A (zh) * | 2020-06-30 | 2020-10-23 | 武汉虹旭信息技术有限责任公司 | 基于dpdk的数据包处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112817536A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8578393B1 (en) | Log message collection employing on-demand loading of message translation libraries | |
CN106936441B (zh) | 一种数据压缩方法和装置 | |
CN102098227B (zh) | 报文捕获方法及内核模块 | |
CN111049762A (zh) | 数据采集方法、装置、存储介质及交换机 | |
CN110830330B (zh) | 一种防火墙测试方法、装置及系统 | |
CN108023829B (zh) | 报文处理方法及装置、存储介质、电子设备 | |
CN108062235B (zh) | 数据处理方法及装置 | |
CN105939284B (zh) | 报文控制策略的匹配方法及装置 | |
CN111786953B (zh) | 一种安全防护方法、装置和安全管理设备 | |
CN111263377B (zh) | 网络配置方法、装置、设备、系统和配网测试方法、系统 | |
CN110096363A (zh) | 一种网络事件与进程的关联方法及装置 | |
CN116056126A (zh) | 仿真测试方法、装置、计算机设备和计算机可读存储介质 | |
CN110708363A (zh) | 一种文件传输方法、系统、电子设备及存储介质 | |
CN114157461A (zh) | 工控协议数据流处理方法、装置、设备及存储介质 | |
CN112817536B (zh) | 一种数据包的捕获方法及相关装置 | |
CN115967616A (zh) | 日志转发方法、系统、电子设备 | |
WO2021128936A1 (zh) | 报文的处理方法及装置 | |
CN115033407A (zh) | 一种适用于云计算的采集识别流量的系统和方法 | |
CN116366503B (zh) | 一种数据处理方法和相关装置 | |
US20200274816A1 (en) | Method of executing qos policy and network device | |
CN117540071B (zh) | 一种针对查找引擎的属性表项的配置方法和装置 | |
CN111177097B (zh) | 一种日志收集方法、装置、设备及计算机可读存储介质 | |
CN111010299B (zh) | 记录报文转发流程的方法及装置 | |
CN112769599B (zh) | 一种资源自动接入方法、系统及可读存储介质 | |
CN116016687A (zh) | 一种基于dpdk的报文分流方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |