CN114189462B - 一种流量采集方法、装置、电子设备及存储介质 - Google Patents

一种流量采集方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114189462B
CN114189462B CN202111490972.XA CN202111490972A CN114189462B CN 114189462 B CN114189462 B CN 114189462B CN 202111490972 A CN202111490972 A CN 202111490972A CN 114189462 B CN114189462 B CN 114189462B
Authority
CN
China
Prior art keywords
data packet
node
queue
buffer
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
CN202111490972.XA
Other languages
English (en)
Other versions
CN114189462A (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.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software 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 Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN202111490972.XA priority Critical patent/CN114189462B/zh
Publication of CN114189462A publication Critical patent/CN114189462A/zh
Application granted granted Critical
Publication of CN114189462B publication Critical patent/CN114189462B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供一种流量采集方法、装置、电子设备及存储介质,涉及数据安全技术领域。该方法包括利用预设的流量捕捉线程获取数据包;解析所述数据包,并提取所述数据包的关键特征,以生成关键字;根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中;利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,以对所述数据包进行流量处理操作,采用单流量捕捉线程和多流量处理线程的结构,将流量捕捉和流量处理两个步骤分离,从而实现对网络数据包的高效捕捉,解决现有方法容易丢包的问题。

Description

一种流量采集方法、装置、电子设备及存储介质
技术领域
本申请涉及数据安全技术领域,具体而言,涉及一种流量采集方法、装置、电子设备及存储介质。
背景技术
传统的网络数据采集技术多数基于libpcap函数库,通过这个函数库与Linux内核进行交互,采集网络数据包。但在这种方式中,数据从内核态到用户态的过程中存在频繁的系统调用和内存拷贝,耗费了CPU大量时间,使得系统处理能力底下,最大只能处理百兆级流量。
现有的方法如利用PF_RING的零拷贝技术,完全依赖于PF_RING的设计结构,通过中断和轮询相结合的方式捕捉数据包和减少数据包拷贝次数来减少CPU损耗。在这一过程中,数据包保存在环形缓存中,但环形缓存的内存空间不是无限的,在千兆级流量涌入网卡,网卡向环形缓存写入数据包速度远高于上层应用程序读取数据包速度时,环形缓存空间耗尽,就会出现丢包问题。
发明内容
本申请实施例的目的在于提供一种流量采集方法、装置、电子设备及存储介质,采用单流量捕捉线程和多流量处理线程的结构,将流量捕捉和流量处理两个步骤分离,从而实现对网络数据包的高效捕捉,解决现有方法容易丢包的问题。
本申请实施例提供了一种量采集方法,该方法包括:
利用预设的流量捕捉线程获取数据包;
解析所述数据包,并提取所述数据包的关键特征,以生成关键字;
根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中;
利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,以对所述数据包进行流量处理操作。
在上述实现过程中,利用PF_RING,在网卡层实现网络数据包的高效捕捉,并将流量采集与流量处理去耦合,实现流量采集阶段与流量处理阶段的分离,并基于多流量处理线程,提高流量处理速度,从而实现整体系统对网络数据包的高性能采集,解决了现有方法容易丢包的问题。
进一步地,在所述根据所述关键字将所述数据包分发至对应的数据包缓存队列的步骤之前,所述方法还包括创建多个数据包缓存队列:
根据预设的流量处理线程的个数N,初始化N个数据包缓存队列,并将所述数据包缓存队列标记为[队列1]到[队列N];
对每个所述数据包缓存队列设置M个缓存节点,并标记为[节点N1]到[节点NM];
设置所述缓存节点的数据包缓存区和缓存状态,所述缓存状态包括“未缓存”、“正在缓存”和“已存满”。
在上述实现过程中,预先设置各个数据包缓存队列的缓存状态,便于后续根据各个数据包缓存区的缓存状态进行数据包的缓存和提取。
进一步地,所述根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中,包括:
根据所述关键字选取对应的数据包缓存队列[队列i];
对所述[队列i]的“正在缓存”节点[节点ij]进行判断;
若所述[节点ij]的缓存区剩余空间不足以放下所述数据包,则将所述[节点ij]的状态设置为“已存满”;
从所述[队列i]的“未缓存”状态节点中选择一个新节点[节点ik],并将所述[节点ik]的状态设置为“正在缓存”并将所述数据包存入所述[节点ik]中;
对所述[节点ik]判断是否缓存成功。
在上述实现过程中,在数据包缓存的过程中,及时更改数据包缓存区的缓存状态,便于后续根据缓存状态提取数据包。
进一步地,所述对所述[节点ik]判断是否缓存成功,包括:
对所述[节点ik]进行超时判断;
若所述[节点ik]置于“正在缓存”状态的时间超过预设阈值,则将所述[节点ik]的状态设置为“已存满”;
从所述[队列i]的“未缓存”状态节点中选择另外一个新节点,直至所述数据包缓存成功。
在上述实现过程中,通过超时判断,来确定是否缓存成功。
进一步地,所述利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,包括:
流量处理线程[处理线程i]遍历查询[队列i]下的[节点i1]到[节点iM]的状态;
当[节点ik]的状态是“已存满”时,从所述[节点ik]的数据包缓存区中取出数据包,对所述数据包进行识别、解析、分析、审计操作;
在处理完[节点ik]的数据包缓存区中的所有数据包后,将[节点ik]的状态置为“未缓存”。
在上述实现过程中,流量处理线程根据数据包缓存区的缓存状态来提取数据包进行处理,在此过程中,可以多线程并行的方式处理数据包,提高处理速度。
本申请实施例还提供一种流量采集装置,所述装置包括:
采集模块,用于利用预设的流量捕捉线程获取数据包;
解析模块,用于解析所述数据包,并提取所述数据包的关键特征,以生成关键字;
缓存模块,用于根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中;
处理模块,用于利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,以对所述数据包进行流量处理操作。
在上述实现过程中,利用PF_RING,在网卡层实现网络数据包的高效捕捉,并将流量采集与流量处理去耦合,实现流量采集阶段与流量处理阶段的分离,并基于多流量处理线程,提高流量处理速度,从而实现整体系统对网络数据包的高性能采集,解决了现有方法容易丢包的问题。
进一步地,所述缓存模块包括:
队列选取模块,用于根据所述关键字选取对应的数据包缓存队列[队列i];
判断模块,用于对所述[队列i]的“正在缓存”节点[节点ij]进行判断;
状态设置模块,用于若所述[节点ij]的缓存区剩余空间不足以放下所述数据包,则将所述[节点ij]的状态设置为“已存满”;
节点选取模块,用于从所述[队列i]的“未缓存”状态节点中选择一个新节点[节点ik],并将所述[节点ik]的状态设置为“正在缓存”并将所述数据包存入所述[节点ik]中;
缓存判断模块,用于对所述[节点ik]判断是否缓存成功。
在上述实现过程中,在数据包缓存的过程中,及时更改数据包缓存区的缓存状态,便于后续根据缓存状态提取数据包。
进一步地,所述缓存判断模块包括:
超时判断模块,用于对所述[节点ik]进行超时判断;
超阈值设置模块,用于若所述[节点ik]置于“正在缓存”状态的时间超过预设阈值,则将所述[节点ik]的状态设置为“已存满”;
节点选择模块,用于从所述[队列i]的“未缓存”状态节点中选择另外一个新节点,直至所述数据包缓存成功。
在上述实现过程中,可通过设定缓存时间来判断是否缓存成功,可提高缓存效率。
本申请实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行上述中任一项所述的流量采集方法。
本申请实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述中任一项所述的流量采集方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种流量采集方法的流程图;
图2为本申请实施例提供的流量采集流程图;
图3为本申请实施例提供的创建多个数据包缓存队列的流程图;
图4为本申请实施例提供的数据包缓存过程流程图;
图5为本申请实施例提供的数据包缓存队列的节点状态切换示意图;
图6为本申请实施例提供的缓存判断流程图;
图7为本申请实施例提供的数据包处理流程图;
图8为本申请实施例提供的一种流量采集装置的结构框图;
图9为本申请实施例提供的另一种流量采集装置的结构框图。
图标:
100-采集模块;200-解析模块;300-缓存模块;310-队列选取模块;320-判断模块;330-状态设置模块;340-节点选取模块;350-缓存判断模块;351-超时判断模块;352-超阈值设置模块;353-节点选择模块;400-处理模块;401-遍历模块;402-提取模块;403-状态修改模块。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参看图1,图1为本申请实施例提供的一种流量采集方法的流程图。该方法基于PF_RING,以流量捕捉线程:流量处理线程=1:N的结构,将流量捕捉和流量处理两个步骤分离,实现多线程进行流量处理,从而实现对网络数据包的高效捕捉,具体包括以下步骤:
步骤S100:利用预设的流量捕捉线程获取数据包;
如图2所示,为流量采集流程图,首先进行系统初始化,即依次创建流量捕捉线程以及多个数据包缓存队列、多个流量处理线程。
如图3所示,为创建多个数据包缓存队列的流程图,具体包括以下步骤:
步骤S111:根据预设的流量处理线程的个数N,初始化N个数据包缓存队列,并将所述数据包缓存队列标记为[队列1]到[队列N];
步骤S112:对每个所述数据包缓存队列设置M个缓存节点,并标记为[节点N1]到[节点NM];
步骤S113:设置所述缓存节点的数据包缓存区和缓存状态,所述缓存状态包括“未缓存”、“正在缓存”和“已存满”。
首先确认流量处理线程个数N、缓存节点个数M、缓存区大小B;然后初始化N个缓存队列,缓存队列标记为[队列1]到[队列N];每个缓存队列创建M个缓存节点,缓存节点的序号标记为[节点N1]到[节点NM];每个缓存节点申请B大小的内存空间,作为数据包缓存区,每个数据包缓存区存在三个状态:“未缓存”、“正在缓存”、“已存满”,每个数据包缓存区初始化状态为“未缓存”;标记每个缓存队列的[节点N1]为“正在缓存”。
创建多个流量处理线程,具体地:
首先确认流量处理线程的个数N、缓存队列信息,然后初始化N个流量处理线程,这N个流量处理线程分别标记为[处理线程1]到[处理线程N],每个流量处理线程在初始化中绑定对应的数据包缓存队列信息,即[处理线程1]绑定[队列1],[处理线程2]绑定[队列2],以此类推,[处理线程N]绑定[队列N]。
创建流量捕捉线程,具体地:
首先配置网卡通道数为1,确认数据包缓存队列信息、流量处理线程信息、过滤条件如TCP协议、阈值T,初始化PF_RING接口,开启PF_RING捕捉网络数据包,等待PF_RING接口送入数据包。
步骤S100的具体实施过程如下:
流量捕捉线程从PF_RING接口接收到数据包后,对数据包的二三层头部进行解析,将解析结果与过滤条件进行比对。如果该数据包不满足过滤条件,则直接丢弃;如果满足,则将该数据包送入数据包缓存队列。
示例地,该方法可以应用于网络数据防泄漏系统,是一种基于PF_RING的高效流量采集方法,从而提升了该系统最大捕捉网络数据包能力,从而提高网络监听的精度。
该系统工作时,首先系统加载PF_RING模块,配置PF_RING参数,使其工作于零拷贝模式,选择网卡,设置网卡通道数为1。
然后,启动进程,初始化创建N个数据包缓存队列,N个流量处理线程和1个流量捕捉线程,并初始化数据包缓存队列的节点状态。
流量处理线程依次初始化协议识别模块、协议分析模块和协议审计模块。
流量捕捉线程开启PF_RING接口,监听网卡,设置过滤条件为TCP协议,开始抓包。
仿照网卡的多通道设计,将数据包依次分发到多个数据包缓存队列中,在流量处理阶段以多线程并行的方式处理数据包,从而提高了处理速度。
步骤S200:解析所述数据包,并提取所述数据包的关键特征,以生成关键字;
具体地,利用数据包的报文特征生成关键字的目的在于对数据包进行分类。作为其中一种实施方式,可提取目的IP地址、源IP地址、目的端口号和源端口号,并计算hash值从而生成关键字;也可以仅根据目的IP地址、源IP地址生成关键字;还可以根据数据包的其他特征生成关键字,在此对于生成关键字的方法不做任何限定,只要能够根据关键字对数据包进行分类均可。从而可根据关键字选择对应的数据包缓存队列[队列i]。
步骤S300:根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中;
示例地,流量捕捉线程通过PF_RING接口接收数据包,将数据包经过过滤后,提取网络包的目的ip地址、源ip地址、目的端口号和源端口号进行hash计算,根据hash值将数据包分发到N个数据包缓存队列中,属于同一条TCP连接的数据包将被分发到同一个数据包缓存队列,每个数据包的完整内容按顺序存入队列节点的缓存区中。
如图4所示,为数据包缓存过程流程图,具体包括以下步骤:
步骤S310:根据所述关键字选取对应的数据包缓存队列[队列i];
步骤S320:对所述[队列i]的“正在缓存”节点[节点ij]进行判断;
步骤S330:若所述[节点ij]的缓存区剩余空间不足以放下所述数据包,则将所述[节点ij]的状态设置为“已存满”;
步骤S340:从所述[队列i]的“未缓存”状态节点中选择一个新节点[节点ik],并将所述[节点ik]的状态设置为“正在缓存”并将所述数据包存入所述[节点ik]中;
步骤S350:对所述[节点ik]判断是否缓存成功。
如图5所示,为数据包缓存队列的节点状态切换示意图。对[队列i]的“正在缓存”[节点ij]进行判断:如果[节点ij]的缓存区剩余空间不足以放下当前数据包,将[节点ij]的状态置为“已存满”,从[队列i]的“未缓存”状态节点中选择一个节点,将其状态置为“正在缓存”,作为新的[节点ij]使用,其中i为从1到N的任意整数,j和k分别为从1到M的任意整数,且j不等于k。
如图6所示,为缓存判断流程图,该步骤S350具体可以包括:
步骤S351:对所述[节点ik]进行超时判断;
步骤S352:若所述[节点ik]置于“正在缓存”状态的时间超过预设阈值,则将所述[节点ik]的状态设置为“已存满”;
步骤S353:从所述[队列i]的“未缓存”状态节点中选择另外一个新节点,直至所述数据包缓存成功。
步骤S400:利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,以对所述数据包进行流量处理操作。
如图7所示,为数据包处理流程图,具体包括以下步骤:
步骤S401:流量处理线程[处理线程i]遍历查询[队列i]下的[节点i1]到[节点iM]的状态;
步骤S402:当[节点ik]的状态是“已存满”时,从所述[节点ik]的数据包缓存区中取出数据包,对所述数据包进行识别、解析、分析、审计操作;
步骤S403:在处理完[节点ik]的数据包缓存区中的所有数据包后,将[节点ik]的状态置为“未缓存”。
[处理线程i]遍历查询[队列i]下的[节点i1]到[节点iM]的状态,当[节点ik]的状态是“已存满”时,从[节点ik]的数据包缓存区中依次取出数据包,对数据包进行识别、解析、分析、审计操作,待处理完[节点ik]的数据包缓存区中的所有数据包后,将[节点ik]的状态置为“未缓存”;然后继续遍历查询[队列i]下的另一[节点i1]到[节点iM]的状态。
示例地,每个流量处理线程按顺序从对应数据包缓存队列节点的缓存区中取出单个完整数据包,依次进行协议识别、协议分析和协议审计,并且各个流量处理线程相互独立,互不干扰,可进行并行处理,因此具有较高的处理效率。
该方法将数据包的捕捉和处理进行分离,以流量捕捉线程:流量处理线程=1:N的实现结构,使得流量捕捉阶段专注于接收数据包,缩短响应时;在流量处理阶段,使用多流量处理线程并行处理的方式,提高处理效率。此外,针对每一个网卡只创建一个流量捕捉线程,因而只创建一个PF_RING句柄,能最大限度地发挥PF_RING零拷贝的技术能力。
在数据包保存之前,流量捕捉线程对数据包进行预分析,支持用户配置过滤条件,对数据包进行过滤,减轻流量处理线程的压力;但流量捕捉线程只会将数据包完整传递给流量处理线程,不干扰流量处理线程对数据包的识别,实现流量捕捉线程和流量处理线程的完全解耦,流量捕捉线程的实现方式和流量处理线程的实现方式可以完全不同。
本申请实施例还提供一种流量采集装置,如图8所示,为一种流量采集装置的结构框图,所述装置包括:
采集模块100,用于利用预设的流量捕捉线程获取数据包;
解析模块200,用于解析所述数据包,并提取所述数据包的关键特征,以生成关键字;
缓存模块300,用于根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中;
处理模块400,用于利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,以对所述数据包进行流量处理操作。
如图9所示,为另一种流量采集装置的结构框图,在图8的基础上,缓存模块300包括:
队列选取模块310,用于根据所述关键字选取对应的数据包缓存队列[队列i];
判断模块320,用于对所述[队列i]的“正在缓存”节点[节点ij]进行判断;
状态设置模块330,用于若所述[节点ij]的缓存区剩余空间不足以放下所述数据包,则将所述[节点ij]的状态设置为“已存满”;
节点选取模块340,用于从所述[队列i]的“未缓存”状态节点中选择一个新节点[节点ik],并将所述[节点ik]的状态设置为“正在缓存”并将所述数据包存入所述[节点ik]中;
缓存判断模块350,用于对所述[节点ik]判断是否缓存成功。
其中,缓存判断模块350包括:
超时判断模块351,对所述[节点ik]进行超时判断;
超阈值设置模块352,用于若所述[节点ik]置于“正在缓存”状态的时间超过预设阈值,则将所述[节点ik]的状态设置为“已存满”;
节点选择模块353,用于从所述[队列i]的“未缓存”状态节点中选择另外一个新节点,直至所述数据包缓存成功。
处理模块400包括:
遍历模块401,用于流量处理线程[处理线程i]遍历查询[队列i]下的[节点i1]到[节点iM]的状态;
提取模块402,用于当[节点ik]的状态是“已存满”时,从所述[节点ik]的数据包缓存区中取出数据包,对所述数据包进行识别、解析、分析、审计操作;
状态修改模块403,在处理完[节点ik]的数据包缓存区中的所有数据包后,将[节点ik]的状态置为“未缓存”。
利用PF_RING,在网卡层实现网络数据包的高效捕捉,并将流量采集与流量处理去耦合,实现流量采集阶段与流量处理阶段的分离,并基于多流量处理线程,提高流量处理速度,从而实现整体系统对网络数据包的高性能采集,解决了现有方法容易丢包的问题。
本申请实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行上述的流量采集方法。
本申请实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述的流量采集方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (9)

1.一种流量采集方法,其特征在于,所述方法包括:
利用预设的流量捕捉线程获取数据包;
解析所述数据包,并提取所述数据包的关键特征,以生成关键字;
根据预设的流量处理线程的个数N,初始化N个数据包缓存队列,并将所述数据包缓存队列标记为[队列1]到[队列N];
对每个所述数据包缓存队列设置M个缓存节点,并标记为[节点N1]到[节点NM];
设置所述缓存节点的数据包缓存区和缓存状态,所述缓存状态包括“未缓存”、“正在缓存”和“已存满”;
根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中,具体地,在所述数据包存储至当前节点时,对当前节点的“正在缓存”状态的时间进行超时判断,若超时,则将当前节点的状态设置为“已存满”,则重新从“未缓存”状态节点中选择另外一个新节点,直至所述数据包缓存成功;
利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,以对所述数据包进行流量处理操作。
2.根据权利要求1所述的流量采集方法,其特征在于,所述根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中,包括:
根据所述关键字选取对应的数据包缓存队列[队列i];
对所述[队列i]的“正在缓存”节点[节点ij]进行判断;
若所述[节点ij]的缓存区剩余空间不足以放下所述数据包,则将所述[节点ij]的状态设置为“已存满”;
从所述[队列i]的“未缓存”状态节点中选择一个新节点[节点ik],并将所述[节点ik]的状态设置为“正在缓存”并将所述数据包存入所述[节点ik]中;
对所述[节点ik]判断是否缓存成功。
3.根据权利要求2所述的流量采集方法,其特征在于,所述对所述[节点ik]判断是否缓存成功,包括:
对所述[节点ik]进行超时判断;
若所述[节点ik]置于“正在缓存”状态的时间超过预设阈值,则将所述[节点ik]的状态设置为“已存满”;
从所述[队列i]的“未缓存”状态节点中选择另外一个新节点,直至所述数据包缓存成功。
4.根据权利要求1所述的流量采集方法,其特征在于,所述利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,包括:
流量处理线程[处理线程i]遍历查询[队列i]下的[节点i1]到[节点iM]的状态;
当[节点ik]的状态是“已存满”时,从所述[节点ik]的数据包缓存区中取出数据包,对所述数据包进行识别、解析、分析、审计操作;
在处理完[节点ik]的数据包缓存区中的所有数据包后,将[节点ik]的状态置为“未缓存”。
5.一种流量采集装置,其特征在于,所述装置包括:
采集模块,用于利用预设的流量捕捉线程获取数据包;
解析模块,用于解析所述数据包,并提取所述数据包的关键特征,以生成关键字;缓存模块,用于根据所述关键字将所述数据包分发至对应的数据包缓存队列,以将所述数据包存储至所述数据包缓存队列中,具体地,在所述数据包存储至当前节点时,对当前节点的“正在缓存”状态的时间进行超时判断,若超时,则将当前节点的状态设置为“已存满”,则重新从“未缓存”状态节点中选择另外一个新节点,直至所述数据包缓存成功;
在将所述数据包存储至所述数据包缓存队列之前,需要对数据包缓存队列进行设置:根据预设的流量处理线程的个数N,初始化N个数据包缓存队列,并将所述数据包缓存队列标记为[队列1]到[队列N];对每个所述数据包缓存队列设置M个缓存节点,并标记为[节点N1]到[节点NM];设置所述缓存节点的数据包缓存区和缓存状态,所述缓存状态包括“未缓存”、“正在缓存”和“已存满”;
处理模块,用于利用预设的流量处理线程获取对应的数据包缓存队列中的数据包,以对所述数据包进行流量处理操作。
6.根据权利要求5所述的流量采集装置,其特征在于,所述缓存模块包括:
队列选取模块,用于根据所述关键字选取对应的数据包缓存队列[队列i];
判断模块,用于对所述[队列i]的“正在缓存”节点[节点ij]进行判断;
状态设置模块,用于若所述[节点ij]的缓存区剩余空间不足以放下所述数据包,则将所述[节点ij]的状态设置为“已存满”;
节点选取模块,用于从所述[队列i]的“未缓存”状态节点中选择一个新节点[节点ik],并将所述[节点ik]的状态设置为“正在缓存”并将所述数据包存入所述[节点ik]中;
缓存判断模块,用于对所述[节点ik]判断是否缓存成功。
7.根据权利要求6所述的流量采集装置,其特征在于,所述缓存判断模块包括:
超时判断模块,用于对所述[节点ik]进行超时判断;
超阈值设置模块,用于若所述[节点ik]置于“正在缓存”状态的时间超过预设阈值,则将所述[节点ik]的状态设置为“已存满”;
节点选择模块,用于从所述[队列i]的“未缓存”状态节点中选择另外一个新节点,直至所述数据包缓存成功。
8.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行根据权利要求1至4中任一项所述的流量采集方法。
9.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至4任一项所述的流量采集方法。
CN202111490972.XA 2021-12-08 2021-12-08 一种流量采集方法、装置、电子设备及存储介质 Active CN114189462B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111490972.XA CN114189462B (zh) 2021-12-08 2021-12-08 一种流量采集方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111490972.XA CN114189462B (zh) 2021-12-08 2021-12-08 一种流量采集方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN114189462A CN114189462A (zh) 2022-03-15
CN114189462B true CN114189462B (zh) 2024-01-23

Family

ID=80542737

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111490972.XA Active CN114189462B (zh) 2021-12-08 2021-12-08 一种流量采集方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114189462B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617142A (zh) * 2013-09-09 2014-03-05 南京邮电大学 一种基于pf_ring的高速网络数据采集方法
CN108090003A (zh) * 2017-11-20 2018-05-29 广东睿江云计算股份有限公司 一种基于零拷贝的提升web服务器性能的方法、系统
CN112491979A (zh) * 2020-11-12 2021-03-12 苏州浪潮智能科技有限公司 一种网卡数据包缓存管理方法、装置、终端及存储介质
CN113014528A (zh) * 2019-12-19 2021-06-22 厦门网宿有限公司 报文处理方法、处理单元及虚拟专用网络服务器
CN113098911A (zh) * 2021-05-18 2021-07-09 神州灵云(北京)科技有限公司 一种多段链接网络的实时分析方法及旁路抓包系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10079740B2 (en) * 2014-11-04 2018-09-18 Fermi Research Alliance, Llc Packet capture engine for commodity network interface cards in high-speed networks

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617142A (zh) * 2013-09-09 2014-03-05 南京邮电大学 一种基于pf_ring的高速网络数据采集方法
CN108090003A (zh) * 2017-11-20 2018-05-29 广东睿江云计算股份有限公司 一种基于零拷贝的提升web服务器性能的方法、系统
CN113014528A (zh) * 2019-12-19 2021-06-22 厦门网宿有限公司 报文处理方法、处理单元及虚拟专用网络服务器
CN112491979A (zh) * 2020-11-12 2021-03-12 苏州浪潮智能科技有限公司 一种网卡数据包缓存管理方法、装置、终端及存储介质
CN113098911A (zh) * 2021-05-18 2021-07-09 神州灵云(北京)科技有限公司 一种多段链接网络的实时分析方法及旁路抓包系统

Also Published As

Publication number Publication date
CN114189462A (zh) 2022-03-15

Similar Documents

Publication Publication Date Title
US9485155B2 (en) Traffic analysis of data flows
US9806974B2 (en) Efficient acquisition of sensor data in an automated manner
US8069210B2 (en) Graph based bot-user detection
EP2434689B1 (en) Method and apparatus for detecting message
CN109450900B (zh) 拟态判决方法、装置及系统
CN105637831B (zh) 用于分析数据流的方法和系统
US8666985B2 (en) Hardware accelerated application-based pattern matching for real time classification and recording of network traffic
JP7135980B2 (ja) 登録システム、登録方法及び登録プログラム
US10567426B2 (en) Methods and apparatus for detecting and/or dealing with denial of service attacks
US20170195234A1 (en) Systems and methods for keyword spotting using adaptive management of multiple pattern matching algorithms
US10719540B2 (en) Systems and methods for keyword spotting using alternating search algorithms
US11888874B2 (en) Label guided unsupervised learning based network-level application signature generation
CN107783881B (zh) 基于内存队列的网站动态性能监控方法及系统
CN105635170A (zh) 基于规则对网络数据包进行识别的方法和装置
KR101688635B1 (ko) 플로우 기반 트래픽 저장 장치 및 방법
US20030004921A1 (en) Parallel lookups that keep order
JP2016167799A (ja) ネットワークモニタリング方法及び装置、並びにパケットフィルタリング方法及び装置
CN114189462B (zh) 一种流量采集方法、装置、电子设备及存储介质
CN102663053A (zh) 一种基于图像内容搜索的分布式服务器系统
CN110022343B (zh) 自适应事件聚合
CN108650229A (zh) 一种网络应用行为解析还原方法及系统
CN108667644A (zh) 配置acl业务的方法及转发设备
CN104579841A (zh) 根据接收的udp报文产生对特定统计数据项的统计结果的系统
CN113268422B (zh) 基于分级量化的卡顿检测方法、装置、设备及存储介质
CN113992364B (zh) 一种网络数据包阻断优化方法以及系统

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