CN114125015A - 一种数据采集方法及系统 - Google Patents
一种数据采集方法及系统 Download PDFInfo
- Publication number
- CN114125015A CN114125015A CN202111439396.6A CN202111439396A CN114125015A CN 114125015 A CN114125015 A CN 114125015A CN 202111439396 A CN202111439396 A CN 202111439396A CN 114125015 A CN114125015 A CN 114125015A
- Authority
- CN
- China
- Prior art keywords
- data packet
- data
- dpdk
- processing
- protocol
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/5061—Partitioning or combining of resources
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5016—Session
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种数据采集方法及系统,应用于数据采集领域,其中,数据采集方法包括:使用数据平面开发套件DPDK在用户态采集数据包;使用DPDK基于数据包的五元组信息建立会话信息,并识别数据包的协议类型;根据数据包的协议类型对数据包进行协议解析,得到解析后的流量;将解析后的流量进行存储。在上述方案中,使用DPDK在用户态采集数据包,数据包可以直接从硬件到业务进程,而不需要经过中间的拷贝过程,提高了处理网络数据的效率;此外,采用DPDK能够快速的对会话表进行更新、删除等处理,同样可以提高处理网络数据的效率。由于提高了处理网络数据的效率,因此本申请实施例提供的数据采集方法可以处理更大流量的网络数据。
Description
技术领域
本申请涉及数据采集领域,具体而言,涉及一种数据采集方法及系统。
背景技术
数据包采集技术,主要用于提取网络里的指定协议信息,例如:基于五元组的网络会话信息、Layer7应用层的超文本传输协议(Hyper Text Transfer Protocol,HTTP)、域名解析(Domain name resolution,DNS)、简单邮件传输协议(Simple Mail TransferProtocol,SMTP)等应用协议信息。此外,数据包采集技术还可以输出相应的协议数据结构,供大数据分析、人工智能检测等。
现有技术中的数据包采集技术,一般包括:Bro、Zeek、Tcpdump、Wireshark、Molock、Arkime等。其中,上述数据包采集技术消耗的资源一般都很多,无法处理大流量的网络数据。例如:在一个8核心的计算机上,Wireshark无法采集大于1Gbps的流量,否则整个软件会卡死;虽然Tcpdump可以采集10Gbps的流量,但是它只能将采集的流量存储到本地,没有办法输出有效的结构化信息给到系统的其他环节;Bro和Zeek能够分析流量,但是性能很差,32核心的机器,一般只能处理1-2Gbps的流量。
也就是说,上述现有技术中的数据包采集方法,仅能处理低流量的网络数据,而不能处理大流量的网络数据。
发明内容
本申请实施例的目的在于提供一种数据采集方法及系统,用以解决现有技术中的数据包采集方法,仅能处理低流量的网络数据,而不能处理大流量的网络数据的技术问题。
第一方面,本申请实施例提供一种数据采集方法,包括:使用数据平面开发套件DPDK在用户态采集数据包;使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型;根据所述数据包的协议类型对所述数据包进行协议解析,得到解析后的流量;将所述解析后的流量进行存储。在上述方案中,使用DPDK在用户态采集数据包,数据包可以直接从硬件到业务进程,而不需要经过中间的拷贝过程,提高了处理网络数据的效率;此外,采用DPDK能够快速的对会话表进行更新、删除等处理,同样可以提高处理网络数据的效率。由于提高了处理网络数据的效率,因此本申请实施例提供的数据采集方法可以处理更大流量的网络数据。
在可选的实施方式中,在所述使用数据平面开发套件DPDK在用户态采集数据包之前,所述方法还包括:根据物理网卡的硬件信息生成与所述物理网卡对应的虚拟网卡;所述使用数据平面开发套件DPDK在用户态采集数据包,包括:利用所述虚拟网卡接收使用所述DPDK采集的所述数据包。在上述方案中,可以根据物理网卡的硬件信息生成对应的虚拟网卡,一个虚拟网卡可以代表一个真实的物理网卡,后续对网络数据进行处理的过程中,可以基于虚拟网卡进行操作,与直接基于物理网卡进行操作相比,更便于管理;此外,本申请实施例提供的数据采集方法还支持多个虚拟网卡同时采集流量,可以提高处理网络数据的效率。
在可选的实施方式中,所述使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型,包括:基于多核处理器建立多个线程;针对每个线程,使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型。在上述方案中,可以利用多核处理器分配多个会话处理线程,多个线程可以同时对网络数据进行处理,因此可以提高处理网络数据的效率。
在可选的实施方式中,所述识别所述数据包的协议类型,包括:利用小锁技术对所述数据包进行处理,以识别所述数据包的协议类型。在上述方案中,在对网络数据进行处理的过程中,可以利用小锁技术,而不是大锁技术,这样各个CPU能够更加快速的处理自己的数据,从而可以提高处理网络数据的效率;此外,针对会话查询是无锁的,这样能够更加快速的找到一个数据包对应的会话信息,同样可以提高处理网络数据的效率。
在可选的实施方式中,所述根据所述数据包的协议类型对所述数据包进行协议解析,得到解析后的流量,包括:初始化所述数据包的协议数据结构;根据所述协议数据结构对所述数据包进行处理,并将处理过程中的数据包信息存储在大页内存的内存池中,得到所述解析后的流量。在上述方案中,在执行本申请实施例提供的数据采集方法之前,可以分配大页内存的内存池,这样在对网络数据进行处理的过程,可以直接启用上述内存池,从而减少与内核的交互,以提高处理网络数据的效率。
在可选的实施方式中,所述将处理过程中的数据包信息存储在大页内存的内存池中,包括:利用高速拷贝函数将所述处理过程中的数据包信息存储在所述大页内存的内存池中。在上述方案中,可以利用高速拷贝函数实现内存的拷贝,与利用系统自带的拷贝函数相比,可以实现更快的数据拷贝,从而可以提高处理网络数据的效率。
第二方面,本申请实施例提供一种数据采集系统,包括:采集模块,用于使用数据平面开发套件DPDK在用户态采集数据包;会话模块,用于使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型;协议解析模块,用于根据所述数据包的协议类型对所述数据包进行协议解析,得到解析后的流量;存储模块,用于将所述解析后的流量进行存储。在上述方案中,使用DPDK在用户态采集数据包,数据包可以直接从硬件到业务进程,而不需要经过中间的拷贝过程,提高了处理网络数据的效率;此外,采用DPDK能够快速的对会话表进行更新、删除等处理,同样可以提高处理网络数据的效率。由于提高了处理网络数据的效率,因此本申请实施例提供的数据采集系统可以处理更大流量的网络数据。
在可选的实施方式中,所述数据采集系统还包括:生成模块,用于根据物理网卡的硬件信息生成与所述物理网卡对应的虚拟网卡;所述采集模块具体用于:利用所述虚拟网卡接收使用所述DPDK采集的所述数据包。在上述方案中,可以根据物理网卡的硬件信息生成对应的虚拟网卡,一个虚拟网卡可以代表一个真实的物理网卡,后续对网络数据进行处理的过程中,可以基于虚拟网卡进行操作,与直接基于物理网卡进行操作相比,更便于管理;此外,本申请实施例提供的数据采集系统还支持多个虚拟网卡同时采集流量,可以提高处理网络数据的效率。
在可选的实施方式中,所述会话模块具体用于:基于多核处理器建立多个线程;针对每个线程,使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型。在上述方案中,可以利用多核处理器分配多个会话处理线程,多个线程可以同时对网络数据进行处理,因此可以提高处理网络数据的效率。
在可选的实施方式中,所述会话模块还用于:利用小锁技术对所述数据包进行处理,以识别所述数据包的协议类型。在上述方案中,在对网络数据进行处理的过程中,可以利用小锁技术,而不是大锁技术,这样各个CPU能够更加快速的处理自己的数据,从而可以提高处理网络数据的效率;此外,针对会话查询是无锁的,这样能够更加快速的找到一个数据包对应的会话信息,同样可以提高处理网络数据的效率。
在可选的实施方式中,所述协议解析模块具体用于:初始化所述数据包的协议数据结构;根据所述协议数据结构对所述数据包进行处理,并将处理过程中的数据包信息存储在大页内存的内存池中,得到所述解析后的流量。在上述方案中,可以分配大页内存的内存池,这样在对网络数据进行处理的过程,可以直接启用上述内存池,从而减少与内核的交互,以提高处理网络数据的效率。
在可选的实施方式中,所述存储模块具体用于:利用高速拷贝函数将所述处理过程中的数据包信息存储在所述大页内存的内存池中。在上述方案中,可以利用高速拷贝函数实现内存的拷贝,与利用系统自带的拷贝函数相比,可以实现更快的数据拷贝,从而可以提高处理网络数据的效率。
第三方面,本申请实施例提供一种计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如第一方面所述的方法。
第四方面,本申请实施例提供一种电子设备,包括:处理器、存储器和总线;所述处理器和所述存储器通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的计算机程序指令,所述处理器调用所述计算机程序指令能够执行如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序指令,所述计算机程序指令被计算机运行时,使所述计算机执行如第一方面所述的方法。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举本申请实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种数据采集方法的流程图;
图2为本申请实施例提供的一种数据采集系统的结构框图;
图3为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参照图1,图1为本申请实施例提供的一种数据采集方法的流程图,该数据采集方法可以包括如下内容:
步骤S101:使用数据平面开发套件DPDK在用户态采集数据包。
步骤S102:使用DPDK基于数据包的五元组信息建立会话信息,并识别数据包的协议类型。
步骤S103:根据数据包的协议类型对数据包进行协议解析,得到解析后的流量。
步骤S104:将解析后的流量进行存储。
具体的,数据平面开发套件(Data Plane Development Kit,DPDK),又被称为数据平面开发包,是指运行在一个多CPU架构上的一系列加速数据报文负载处理的库。在本申请实施例中,可以使用DPDK直接在用户态采集对应的数据包;与现有技术中,数据包从硬件经过内核态到达业务进程相比,使用DPDK数据包可以不经过拷贝,实现零拷贝,从而可以节省中央处理器(Central Processing Unit,CPU),提高处理网络数据的效率。
在采集到数据包之后,可以基于上述数据包的五元组信息建立对应的会话信息。其中,为了支持大流量的网络数据,需要1000-2000万多会话表容量,因此,本申请实施例可以采用DPDK对数据包的五元组信息进行哈希计算,以建立对应的会话信息。其中,采用DPDK进行哈希计算可以快速的对会话表进行更新、删除等。
在步骤S102中,可以对数据包进行识别,根据数据包特征识别数据包对应的协议。当确定了数据包对应的协议之后,便可以对数据包进行协议解析。其中,对数据包进行协议解析的具体实施方式将在后续实施例进行详细的说明,此处暂不介绍。
其中,在本申请实施例中,协议类型可以包括:HTTP、DNS、FTP、TELNET、POP3、SMTP、IMAP、SNMP等,本申请实施例对此同样不作具体的限定。
最后,可以对处理后的网络数据进行存储。作为一种实施方式,可以将网络数据全部存储在磁盘上;作为另一种实施方式,也可以按照网段、端口、应用程序等来对网络数据进行过滤,从而可以精准的将部分网络数据存储在磁盘上。
当然,为了节省存储空间,作为一种实施方式,可以将网络数据进行压缩后再进行存储。其中,压缩网络数据的方式有多种,本申请实施例对此不作具体的限定,本领域技术人员可以结合现有技术采用合适的压缩方式。
除此之外,在会话过程中还可以产生对应的会话日志,以及在协议解析过程还可以产生对应的协议解析日志,可以根据需求存储上述会话日志或者解析日志。例如:将协议解析日志发送到Kafka进行存储。
在上述方案中,使用DPDK在用户态采集数据包,数据包可以直接从硬件到业务进程,而不需要经过中间的拷贝过程,提高了处理网络数据的效率;此外,采用DPDK能够快速的对会话表进行更新、删除等处理,同样可以提高处理网络数据的效率。由于提高了处理网络数据的效率,因此本申请实施例提供的数据采集方法可以处理更大流量的网络数据。
进一步的,在上述步骤S101之前,本申请实施例提供的数据采集方法还可以包括如下内容:
根据物理网卡的硬件信息生成与物理网卡对应的虚拟网卡。
相应的,上述步骤S101具体可以包括如下内容:
利用虚拟网卡接收使用DPDK采集的数据包。
具体的,由于用户现场的物理网卡可能不相同,其对应的硬件情况也不相同,如果直接对物理网卡进行管理,复杂且需要耗费更多的CPU。因此,本申请实施例根据每个物理网卡的硬件信息,可以生成与该物理网卡对应的虚拟网卡。
其中,虚拟网卡的虚拟网卡名可以与物理网卡的实际网卡名一一对应,这样,一个虚拟网卡可以与一个物理网卡对应。后续在对网卡进行管理的过程中,可以直接对虚拟网卡进行管理。
作为一种实施方式,可以基于虚拟网卡实现模块化的网卡管理。举例来说,可以基于企业的组织架构对虚拟网卡进行划分,将财务部门的三个虚拟网卡划分为一个模块,将技术部门的十个虚拟网卡划分为一个模块;这样,当需要对财务部门的三个虚拟网卡进行管理时,可以直接对第一个模块进行管理。因此,基于虚拟网卡更有利用对网卡的管理。
为了能够处理大流量的网络数据,由于虚拟网卡在接收到数据包之后,可以按照队列对数据包进行处理(例如:对数据包的五元组进行哈希计算等),因此,可以增加队列的数量。例如:针对可以接收10Gbps的虚拟网卡,可以配置8-16个队列;针对可以接收40Gbps的虚拟网卡,可以配置24-64个队列。
除此之外,本申请实施例提供的数据采集方法中,可以由多个虚拟网卡同时采集网络数据。
在上述方案中,可以根据物理网卡的硬件信息生成对应的虚拟网卡,一个虚拟网卡可以代表一个真实的物理网卡,后续对网络数据进行处理的过程中,可以基于虚拟网卡进行操作,与直接基于物理网卡进行操作相比,更便于管理;此外,本申请实施例提供的数据采集方法还支持多个虚拟网卡同时采集流量,可以提高处理网络数据的效率。
进一步的,上述步骤S102具体可以包括如下内容:
步骤1),基于多核处理器建立多个线程。
步骤2),针对每个线程,使用DPDK基于数据包的五元组信息建立会话信息,并识别数据包的协议类型。
具体的,针对大流量的网络数据,当其进入本申请实施例提供的数据采集方法时,会对设备造成很大的压力,因此,本申请实施例可以利用多核处理器,建立多个线程同时对网络数据进行处理。
作为一种实施方式,越大的网络数据需要绑定越多的核心。例如:10Gbps的网络数据可以绑定10个核心;40Gbps的网络数据可以绑定40-60个核心。
在上述方案中,可以利用多核处理器分配多个会话处理线程,多个线程可以同时对网络数据进行处理,因此可以提高处理网络数据的效率。
进一步的,上述步骤2)中识别数据包的协议类型的步骤具体可以包括如下内容:
利用小锁技术对数据包进行处理,以识别数据包的协议类型。
具体的,在采用了多核处理器的基础上,由于CPU较多时可能会产生竞争,因此可以使用小锁技术对数据包进行处理。与使用大锁技术相比,使用小锁技术可以使各个CPU更加快速的处理自己的数据。作为一种实施方式,除了使用小锁技术,还可以采用原子操作、PerCpu变量等对数据包进行处理。
除此之外,在对会话进行查询时,是采用的无锁的方式,这样能够快速的找到数据包对应的会话信息。
在上述方案中,在对网络数据进行处理的过程中,可以利用小锁技术,而不是大锁技术,这样各个CPU能够更加快速的处理自己的数据,从而可以提高处理网络数据的效率;此外,针对会话查询是无锁的,这样能够更加快速的找到一个数据包对应的会话信息,同样可以提高处理网络数据的效率。
进一步的,上述步骤S103具体可以包括如下内容:
步骤1),初始化数据包的协议数据结构。
步骤2),根据协议数据结构对数据包进行处理,并将处理过程中的数据包信息存储在大页内存的内存池中,得到解析后的流量。
具体的,在本申请实施例中,可以采用Callback用于处理协议数据,不同的协议会有不同的Callback。举例来说,一般协议的Callback主要分成三类:初始化Callback、处理Callbck以及销毁Callback。其中,初始化Callback主要用来初始化一些协议数据结构;处理Callback主要是在数据包被识别为这个协议的时候,对数据包进行处理;销毁Callback主要是在会话结束时,用于销毁协议信息、释放内存。这样,一个会话上的协议数据,从初始化、到处理、到销毁,全程都靠数据来驱动流转。
其中,在对数据包进行处理的过程中,为了提高处理性能,可以使用基于大页内存的内存池技术。举例来说,假设在处理数据包的过程中需要保存状态,可以建立哈希表等数据结构,并且把部分数据包的信息存储到哈希表上或者将数据包的信息存储到状态里。
同时,由于可以事先分配好对应的大页内存,因此在存储时可以直接启动分配好的大页内存,减少和内核的互动,进一步的提高网络数据处理的效率。
在上述方案中,在执行本申请实施例提供的数据采集方法之前,可以分配大页内存的内存池,这样在对网络数据进行处理的过程,可以直接启用上述内存池,从而减少与内核的交互,以提高处理网络数据的效率。
进一步的,上述步骤2)中将处理过程中的数据包信息存储在大页内存的内存池中的步骤具体可以包括如下内容:
利用高速拷贝函数将处理过程中的数据包信息存储在大页内存的内存池中。
具体的,在上述实施例中采用基于大页内存的内存池的基础上,由于内存拷贝的消耗也会对性能的消耗造成较大的影响,因此,可以使用高速拷贝函数将数据拷贝到内存池中。其中,采用高速拷贝函数的方式与采用系统自带函数(例如:memcpy函数等)的方式相比,可以有更高的效率。
在上述方案中,可以利用高速拷贝函数实现内存的拷贝,与利用系统自带的拷贝函数相比,可以实现更快的数据拷贝,从而可以提高处理网络数据的效率。
请参照图2,图2为本申请实施例提供的一种数据采集系统的结构框图,该数据采集系统200可以包括:采集模块201,用于使用数据平面开发套件DPDK在用户态采集数据包;会话模块202,用于使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型;协议解析模块203,用于根据所述数据包的协议类型对所述数据包进行协议解析,得到解析后的流量;存储模块204,用于将所述解析后的流量进行存储。
在本申请实施例中,使用DPDK在用户态采集数据包,数据包可以直接从硬件到业务进程,而不需要经过中间的拷贝过程,提高了处理网络数据的效率;此外,采用DPDK能够快速的对会话表进行更新、删除等处理,同样可以提高处理网络数据的效率。由于提高了处理网络数据的效率,因此本申请实施例提供的数据采集系统200可以处理更大流量的网络数据。
进一步的,所述数据采集系统200还包括:生成模块,用于根据物理网卡的硬件信息生成与所述物理网卡对应的虚拟网卡;所述采集模块201具体用于:利用所述虚拟网卡接收使用所述DPDK采集的所述数据包。
在本申请实施例中,可以根据物理网卡的硬件信息生成对应的虚拟网卡,一个虚拟网卡可以代表一个真实的物理网卡,后续对网络数据进行处理的过程中,可以基于虚拟网卡进行操作,与直接基于物理网卡进行操作相比,更便于管理;此外,本申请实施例提供的数据采集系统200还支持多个虚拟网卡同时采集流量,可以提高处理网络数据的效率。
进一步的,所述会话模块202具体用于:基于多核处理器建立多个线程;针对每个线程,使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型。
在本申请实施例中,可以利用多核处理器分配多个会话处理线程,多个线程可以同时对网络数据进行处理,因此可以提高处理网络数据的效率。
进一步的,所述会话模块202还用于:利用小锁技术对所述数据包进行处理,以识别所述数据包的协议类型。
在本申请实施例中,在对网络数据进行处理的过程中,可以利用小锁技术,而不是大锁技术,这样各个CPU能够更加快速的处理自己的数据,从而可以提高处理网络数据的效率;此外,针对会话查询是无锁的,这样能够更加快速的找到一个数据包对应的会话信息,同样可以提高处理网络数据的效率。
进一步的,所述协议解析模块203具体用于:初始化所述数据包的协议数据结构;根据所述协议数据结构对所述数据包进行处理,并将处理过程中的数据包信息存储在大页内存的内存池中,得到所述解析后的流量。
在本申请实施例中,可以分配大页内存的内存池,这样在对网络数据进行处理的过程,可以直接启用上述内存池,从而减少与内核的交互,以提高处理网络数据的效率。
进一步的,所述存储模块204具体用于:利用高速拷贝函数将所述处理过程中的数据包信息存储在所述大页内存的内存池中。
在本申请实施例中,可以利用高速拷贝函数实现内存的拷贝,与利用系统自带的拷贝函数相比,可以实现更快的数据拷贝,从而可以提高处理网络数据的效率。
请参照图3,图3为本申请实施例提供的一种电子设备的结构框图,该电子设备300包括:至少一个处理器301,至少一个通信接口302,至少一个存储器303和至少一个通信总线304。其中,通信总线304用于实现这些组件直接的连接通信,通信接口302用于与其他节点设备进行信令或数据的通信,存储器303存储有处理器301可执行的机器可读指令。当电子设备300运行时,处理器301与存储器303之间通过通信总线304通信,机器可读指令被处理器301调用时执行上述数据采集方法。
例如,本申请实施例的处理器301通过通信总线304从存储器303读取计算机程序并执行该计算机程序可以实现如下方法:步骤S101:使用数据平面开发套件DPDK在用户态采集数据包。步骤S102:使用DPDK基于数据包的五元组信息建立会话信息,并识别数据包的协议类型。步骤S103:根据数据包的协议类型对数据包进行协议解析,得到解析后的流量。步骤S104:将解析后的流量进行存储。
处理器301可以是一种集成电路芯片,具有信号处理能力。上述处理器301可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本申请实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器303可以包括但不限于随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
可以理解,图3所示的结构仅为示意,电子设备300还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。于本申请实施例中,电子设备300可以是,但不限于台式机、笔记本电脑、智能手机、智能穿戴设备、车载设备等实体设备,还可以是虚拟机等虚拟设备。另外,电子设备300也不一定是单台设备,还可以是多台设备的组合,例如服务器集群,等等。
本申请实施例还提供一种计算机程序产品,包括存储在计算机可读存储介质上的计算机程序,计算机程序包括计算机程序指令,当计算机程序指令被计算机执行时,计算机能够执行上述实施例中数据采集方法的步骤,例如包括:使用数据平面开发套件DPDK在用户态采集数据包;使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型;根据所述数据包的协议类型对所述数据包进行协议解析,得到解析后的流量;将所述解析后的流量进行存储。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据采集方法,其特征在于,包括:
使用数据平面开发套件DPDK在用户态采集数据包;
使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型;
根据所述数据包的协议类型对所述数据包进行协议解析,得到解析后的流量;
将所述解析后的流量进行存储。
2.根据权利要求1所述的数据采集方法,其特征在于,在所述使用数据平面开发套件DPDK在用户态采集数据包之前,所述方法还包括:
根据物理网卡的硬件信息生成与所述物理网卡对应的虚拟网卡;
所述使用数据平面开发套件DPDK在用户态采集数据包,包括:
利用所述虚拟网卡接收使用所述DPDK采集的所述数据包。
3.根据权利要求1所述的数据采集方法,其特征在于,所述使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型,包括:
基于多核处理器建立多个线程;
针对每个线程,使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型。
4.根据权利要求3所述的数据采集方法,其特征在于,所述识别所述数据包的协议类型,包括:
利用小锁技术对所述数据包进行处理,以识别所述数据包的协议类型。
5.根据权利要求1所述的数据采集方法,其特征在于,所述根据所述数据包的协议类型对所述数据包进行协议解析,得到解析后的流量,包括:
初始化所述数据包的协议数据结构;
根据所述协议数据结构对所述数据包进行处理,并将处理过程中的数据包信息存储在大页内存的内存池中,得到所述解析后的流量。
6.根据权利要求5所述的数据采集方法,其特征在于,所述将处理过程中的数据包信息存储在大页内存的内存池中,包括:
利用高速拷贝函数将所述处理过程中的数据包信息存储在所述大页内存的内存池中。
7.一种数据采集系统,其特征在于,包括:
采集模块,用于使用数据平面开发套件DPDK在用户态采集数据包;
会话模块,用于使用所述DPDK基于所述数据包的五元组信息建立会话信息,并识别所述数据包的协议类型;
协议解析模块,用于根据所述数据包的协议类型对所述数据包进行协议解析,得到解析后的流量;
存储模块,用于将所述解析后的流量进行存储。
8.一种计算机程序产品,其特征在于,包括计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如权利要求1-6中任一项所述的方法。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线;
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的计算机程序指令,所述处理器调用所述计算机程序指令能够执行如权利要求1-6任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序指令,所述计算机程序指令被计算机运行时,使所述计算机执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111439396.6A CN114125015A (zh) | 2021-11-30 | 2021-11-30 | 一种数据采集方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111439396.6A CN114125015A (zh) | 2021-11-30 | 2021-11-30 | 一种数据采集方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114125015A true CN114125015A (zh) | 2022-03-01 |
Family
ID=80368235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111439396.6A Pending CN114125015A (zh) | 2021-11-30 | 2021-11-30 | 一种数据采集方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114125015A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114944996A (zh) * | 2022-07-27 | 2022-08-26 | 北京立华莱康平台科技有限公司 | 一种数据采集方法、装置及计算机可读介质 |
CN116257276A (zh) * | 2023-05-09 | 2023-06-13 | 珠海星云智联科技有限公司 | 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110971487A (zh) * | 2019-11-26 | 2020-04-07 | 武汉虹信通信技术有限责任公司 | 网络协议识别方法及装置 |
CN111049762A (zh) * | 2019-12-23 | 2020-04-21 | 上海金仕达软件科技有限公司 | 数据采集方法、装置、存储介质及交换机 |
WO2020176890A1 (en) * | 2019-02-28 | 2020-09-03 | Apple Inc. | Methods and systems for compression and decompression of information centric networking names at the packet data convergence protocol (pdcp) |
CN111782140A (zh) * | 2020-06-18 | 2020-10-16 | 杭州安恒信息技术股份有限公司 | 网络数据包存储方法、装置、计算机设备和存储介质 |
CN111953706A (zh) * | 2020-08-21 | 2020-11-17 | 公安部第三研究所 | 基于https流量信息识别移动应用的方法 |
CN112558948A (zh) * | 2020-12-16 | 2021-03-26 | 武汉绿色网络信息服务有限责任公司 | 一种海量流量下报文识别的方法和装置 |
-
2021
- 2021-11-30 CN CN202111439396.6A patent/CN114125015A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020176890A1 (en) * | 2019-02-28 | 2020-09-03 | Apple Inc. | Methods and systems for compression and decompression of information centric networking names at the packet data convergence protocol (pdcp) |
CN110971487A (zh) * | 2019-11-26 | 2020-04-07 | 武汉虹信通信技术有限责任公司 | 网络协议识别方法及装置 |
CN111049762A (zh) * | 2019-12-23 | 2020-04-21 | 上海金仕达软件科技有限公司 | 数据采集方法、装置、存储介质及交换机 |
CN111782140A (zh) * | 2020-06-18 | 2020-10-16 | 杭州安恒信息技术股份有限公司 | 网络数据包存储方法、装置、计算机设备和存储介质 |
CN111953706A (zh) * | 2020-08-21 | 2020-11-17 | 公安部第三研究所 | 基于https流量信息识别移动应用的方法 |
CN112558948A (zh) * | 2020-12-16 | 2021-03-26 | 武汉绿色网络信息服务有限责任公司 | 一种海量流量下报文识别的方法和装置 |
Non-Patent Citations (1)
Title |
---|
肖中奇: ""基于DPDK的流量识别系统的设计与实现"", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114944996A (zh) * | 2022-07-27 | 2022-08-26 | 北京立华莱康平台科技有限公司 | 一种数据采集方法、装置及计算机可读介质 |
CN114944996B (zh) * | 2022-07-27 | 2022-09-30 | 北京立华莱康平台科技有限公司 | 一种数据采集方法、装置及计算机可读介质 |
CN116257276A (zh) * | 2023-05-09 | 2023-06-13 | 珠海星云智联科技有限公司 | 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110909063B (zh) | 一种用户行为的分析方法、装置、应用服务器及存储介质 | |
US20180357111A1 (en) | Data center operation | |
CN108847977B (zh) | 一种业务数据的监控方法、存储介质和服务器 | |
US20210385251A1 (en) | System and methods for integrating datasets and automating transformation workflows using a distributed computational graph | |
US20150347305A1 (en) | Method and apparatus for outputting log information | |
CN114125015A (zh) | 一种数据采集方法及系统 | |
US11546380B2 (en) | System and method for creation and implementation of data processing workflows using a distributed computational graph | |
CN109271359A (zh) | 日志信息处理方法、装置、电子设备及可读存储介质 | |
US20170102919A1 (en) | Systems and methods for low interference logging and diagnostics | |
CN110750592A (zh) | 数据同步的方法、装置和终端设备 | |
WO2021051589A1 (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN113420032A (zh) | 一种日志的分类存储方法及装置 | |
US9367418B2 (en) | Application monitoring | |
CN113934733A (zh) | 问题定位方法、装置、系统、存储介质及电子设备 | |
CN112612832B (zh) | 节点分析方法、装置、设备及存储介质 | |
CN112883088B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN107291743B (zh) | 数据的调用方法和装置 | |
CN112187509A (zh) | 多架构云平台执行日志管理方法、系统、终端及存储介质 | |
CN110019045B (zh) | 日志落地方法及装置 | |
CN111698109A (zh) | 监控日志的方法和装置 | |
CN113282347B (zh) | 插件运行方法、装置、设备及存储介质 | |
CN111639936B (zh) | 交易信息的获取方法、装置、电子设备及可读存储介质 | |
CN115016890A (zh) | 虚拟机资源分配方法、装置、电子设备及存储介质 | |
CN111061719B (zh) | 数据收集方法、装置、设备和存储介质 | |
CN114168557A (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 |