1.本发明属于计算机技术领域,尤其涉及一种数据采集方法、装置及计算机可读介质。
背景技术:2.实时处理网络报文流是入侵检测系统、网络协议分析、网络防火墙、高性能通信系统、高性能路由器、主机路由器,以及其他网络监视系统必须满足的首要条件。目前大部分的入侵检测系统、防御系统,以及防火墙等网络监视系统均是运行在linux用户空间的网络报文处理程序。百兆的网络环境下,普通网卡和网络数据包捕获函数库(packet capture libray,缩写libpcap)接口能够使运行在linux用户空间的网络报文处理程序实时捕获网络报文;然而千兆网络时代到来后,现有的网络报文处理程序在通用操作系统下远达不到实时捕获网络数据包的要求。影响数据包捕获性能的主要原因包括系统开销、内存访问和tcp/ip协议栈的处理三个方面,而系统开销是其中影响最大的因素。
3.传统的数据包捕获机制包括伯克利包过滤器(berkeley packet filter,缩写bpf)数据包捕获机制、libpcap数据包捕获机制,以及pf_ring数据包捕获机制。bpf数据包捕获机制的两个组成部分包括转发部分和过滤部分;转发部分负责从链路层提取数据包并转发给过滤部分;过滤部分根据过滤规则,决定数据包的转发或者丢弃,然后交给应用层。然而,bpf数据包捕获机制的缺点是所有动作都在内核中完成,可移植性差。libpcap数据包捕获机制是将网卡设置为混杂模式,拷贝所有流经网卡的数据包;之后将数据包用bpf过滤后交付内核中的数据包缓冲区存储;最后应用程序通过系统调用的方式,从数据包缓冲区来获取数据包。然而,libpcap数据包的缺点是浪费cpu周期。pf_ring数据包捕获机制是在应用程序直接访问内核,首先在内核中添加用socket区分的环形缓冲区,然后将网卡中的数据包直接拷贝到对应socket的缓冲区中,之后应用程序通过接口函数直接获得相应缓冲区的数据包。然而pf_ring数据包捕获机制是缺点是上述预处理仍然在内核中。由此可知,数据包在内核和用户空间传递过程中的拷贝,缓存,以及系统调用过程需要很大的系统开销,从而降低了系统对网络报文流的处理速度。
技术实现要素:4.本发明提供一种数据采集方法、装置及计算机可读介质。该方法能够省去数据包在内核和用户空间传递过程中的拷贝、缓存,以及系统调用过程,从而使得网络报文的处理性能得到很大的提升。
5.为实现上述目的,根据本技术实施例第一方面一种数据采集方法,所述方法应用于第一设备,包括:获取目标网卡的数据采集请求;基于所述数据采集请求,控制数据平面开发套件dpdk按照相应的dpdk工作模式对目标网卡进行数据采集;将采集的所述数据发送至第三方。
6.可选的,所述基于所述数据采集请求,控制dpdk按照相应的dpdk工作模式对目标
网卡进行数据采集,包括:基于所述数据采集请求,对第一设备的系统资源剩余情况进行监控;基于所述监控结果,确定dpdk当前工作模式;基于所述dpdk当前工作模式,控制所述dpdk对目标网卡进行数据采集。
7.可选的,所述基于所述监控结果,确定dpdk当前工作模式,包括:若所述监控结果满足预设条件,则将预设dpdk工作模式确定为dpdk当前工作模式;若所述监控结果不满足预设条件,则基于所述监控结果更新dpdk工作模式;将更新后dpdk工作模式确定为dpdk当前工作模式。
8.可选的,所述预设dpdk工作模式通过如下方式获得:获取dpdk配置请求;基于所述配置请求,对dpdk的参数进行配置,得到预设dpdk工作模式。
9.可选的,所述基于所述监控结果更新dpdk工作模式,包括:获取所述dpdk在采集目标网卡数据时所需要的系统资源;基于所述监控结果以及所述dpdk所需要的系统资源,通过重新配置dpdk参数更新dpdk工作模式。
10.可选的,所述方法还包括:针对dpdk采集网卡数据的过程进行监控;若监控结果满足预设条件,则通过重新配置dpdk的参数更新当前dpdk工作模式。
11.为实现上述目的,根据本技术实施例第二方面提一种数据采集装置,该装置应用于第一设备,包括:获取模块,用于获取目标网卡的数据采集请求;控制模块,用于基于所述数据采集请求,控制数据平面开发套件dpdk按照相应的dpdk工作模式对目标网卡进行数据采集;发送模块,用于将采集的所述数据发送至第三方。
12.可选的,所述控制模块包括:监控单元,用于基于所述数据采集请求,对第一设备的系统资源剩余情况进行监控;确定单元,用于基于所述监控结果,确定dpdk当前工作模式;控制单元,用于基于所述dpdk当前工作模式,控制dpdk对目标网卡进行数据采集。
13.可选的,所述确定单元包括:第一确定子单元,用于若所述监控结果满足预设条件,则将预设dpdk工作模式确定为dpdk当前工作模式;第二确定子单元,用于若所述监控结果不满足预设条件,则基于所述监控结果更新dpdk工作模式;将更新后dpdk工作模式确定为dpdk当前工作模式。
14.为实现上述目的,根据本技术实施例第三方面提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面所述的方法。
15.与现有技术相比,本发明实施例提供一种数据采集方法、装置及计算机可读介质;所述方法应用于第一设备,具体包括:首先获取目标网卡的数据采集请求;然后基于所述数据采集请求,控制数据平面开发套件dpdk按照相应的dpdk工作模式对目标网卡进行数据采集;之后将采集的所述数据发送至第三方。由此,能够实时监测第一设备的软件资源,并根据监测结果动态配置dpdk参数以更新dpdk工作模式,从而使得第一设备在千兆网络下对网卡数据实现快速采集,提高了第一设备对网络报文流的处理性能。
附图说明
16.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:图1为本发明一实施例提供的数据采集方法的流程示意图;
图2为本发明另一实施例提供的数据采集方法的流程示意图;图3为本发明一实施例提供的数据采集装置的结构示意图。
具体实施方式
17.为使本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.如图1所示,为本发明一实施例提供的数据采集方法的流程示意图。
19.一种数据采集方法,所述方法至少包括如下步骤:s101,获取目标网卡的数据采集请求;s102,基于数据采集请求,控制数据平面开发套件dpdk按照相应的dpdk工作模式对目标网卡进行数据采集;s103,将采集的数据发送至第三方。
20.在s101中,基于用户对第一设备显示界面的触发获取目标网卡的数据采集请求。
21.在s102中,inter dpdk包括pmd驱动、流分类处理、无所环队列、mbuf管理,以及环境抽象层。
22.第一设备根据数据采集请求控制dpdk按照预设dpdk工作模式对目标网卡进行数据采集,或者第一设备根据数据采集请求控制dpdk按照更新dpdk工作模式对目标网卡进行数据采集。
23.在s103中,将采集的数据发送至第三方的应用程序,第三方应用程序对采集数据进行分析处理,最后第三方将处理后的数据发送至用户。
24.本实施例利用dpdk直接从目标网卡采集数据,并将采集数据发送至第三方,由此省去了数据包在第一设备内核和用户空间传递过程中所需要的拷贝、缓冲以及系统调用,从而使得网络报文的处理性能得到了很大提升,进而利用dpdk实现了一套基于linux的数据包捕获系统,并成功地将其应用于千兆网络安全防护系统中。
25.应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在的逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
26.如图2所示,为本发明另一实施例提供的数据采集方法的流程示意图。一种数据采集方法,至少包括如下步骤:s201,获取目标网卡的数据采集请求;s202,基于数据采集请求,对第一设备的系统资源剩余情况进行监控;s203,基于监控结果,确定dpdk当前工作模式;s204,基于dpdk当前工作模式,控制dpdk对目标网卡进行数据采集;s205,将采集的数据发送至第三方。
27.其中,步骤s201和步骤s205的实现过程分别与图1中步骤s101和步骤s103的实现过程相类似,在这里,不作太多限定。
28.在s202和s204中,在这里,系统资源用于指示cpu资源以及大页内存。对系统资源
的剩余情况进行监控的目的是为了确定dpdk所能用系统资源有多少。
29.若所述监控结果满足预设条件,则将预设dpdk工作模式确定为dpdk当前工作模式;若所述监控结果不满足预设条件,则基于所述监控结果更新dpdk工作模式;将更新后dpdk工作模式确定为dpdk当前工作模式。具体地,若监控结果表征cpu资源小于第一预设阈值且大页内存小于第二预设阈值,则确定系统资源剩余量不满足预设条件,自动更新dpdk工作模式。若监控结果表征cpu资源小于第一预设阈值,则确定系统资源剩余量不满足预设条件,自动更新dpdk工作模式,将更新后的dpdk工作模式确定为dpdk当前工作模式。若监控结果表征大页内存小于第二预设阈值,则确定系统资源剩余量不满足预设条件,自动更新dpdk工作模式。将更新后的dpdk工作模式确定为dpdk当前工作模式。
30.若监控结果表征cpu资源大于第一预设阈值且大页内存大于第二预设阈值,则确定系统资源剩余量满足预设条件,则将获取数据采集请求之前的预设dpdk工作模式确定为dpdk当前工作模式。在这里,在获取数据采集请求之前,可以基于关键参数,对dpdk的参数进行配置,得到若干预设dpdk工作模式;之后基于dpdk工作模式的更新请求在若干预设dpdk工作模式之间对预设dpdk工作模式进行切换,得到更新后dpdk工作模式。还可以通过重新配置dpdk参数更新dpdk工作模式。
31.本实施例基于数据采集请求对系统资源的剩余情况进行监控,并基于监控结果自动更新dpdk工作模式,之后基于更新的dpdk工作模式对目标网卡进行数据采集;由此能够实时监测系统的软硬件资源,动态的去配置inter dpdk,并利用inter dpdk实现了一种高性能的网络数据包的捕获系统,成功地将其应用于千兆网络安全防护系统中。
32.在优选一实施方式中,所述基于所述监控结果更新dpdk工作模式,包括:获取所述dpdk在采集目标网卡数据时所需要的系统资源;基于所述监控结果以及所述dpdk所需要的系统资源,通过重新配置dpdk参数更新dpdk工作模式。
33.由此通过重新配置dpdk参数能够对第一设备中dpdk的工作模式进行有效更新,从而有利于第一设备对目标网卡进行数据采集。
34.在优选的另一实施方式中,所述预设dpdk工作模式通过如下方式获得:获取dpdk配置请求;基于配置请求,对dpdk的参数进行配置,得到预设dpdk工作模式。由此,在获取数据采集请求之前,基于配置请求对dpdk工作参数进行自动配置,从而获取第一设备的dpdk工作模式。
35.在优选的再一实施方式中,数据采集方法还包括:对dpdk采集网卡数据的过程进行监控;若监控结果满足预设条件,则通过重新配置dpdk的参数更新当前dpdk工作模式。
36.例如,dpdk运行时,若监控结果表征采集的网卡数据小于第三预设阈值,则确定网卡宕掉了,通过重新配置dpdk的参数自动初始化dpdk,并将该网卡从监控列表中移除。
37.由此,能够对网卡数据的采集过程进行实时监控,并根据监控结果实时调整dpdk工作模式,从而有利于系统资源的有效配置,提高了网卡数据采集的效率,进而满足了在千兆网络时代下基于通用系统实时捕获网络数据包的要求。
38.数据采集方法的交互过程,具体实现过程如下:s301,第一设备管理平台向dpdk发送数据采集请求;s302,dpdk根据数据采集请求,对目标网卡进行数据采集;s303,dpdk将采集数据发送至应用层。
39.第一设备的管理平台具有如下功能:dpdk配置、dpdk控制、网卡监控,以及系统监视。dpdk配置主要是指通过管理平台进行dpdk配置,大大简化了传统手工dpdk的配置流程。dpdk控制主要是管理平台通过从系统或网络得到的信息可以灵活的选择dpdk的工作模式。网卡监控主要是实时监控来自网络的数据信息,并调用系统及dpdk资源。系统监视主要是通过分析系统资源情况实时控制dpdk工作。
40.inter dpdk包括pmd驱动、流分类处理、无所环队列、mbuf管理,以及环境抽象层。inter dpdk的轮训模式驱动(pool mode driver,缩写pmd),通过非中断以及数据帧进出应用缓冲区内存的零拷贝机制,提高发送或者接受数据帧的效率。inter dpdk的流分类(flow classification)为n元组匹配和lpm(最长前缀匹配)提供优化的查找算法。inter dpdk的环对列(ring queue)针对单个或多个数据包生产者、单个数据包消费者的出入队列提供无锁机制,有效减少系统开销。inter dpdk的mbuf缓冲区管理用于分配内存缓冲区,并通过建立mbuf对象,封装实际数据帧,供应用程序使用。inter dpdk的环境抽象层(environment abstract layer,缩写eal)用于pmd初始化、cpu内核以及dpdk线程配置或绑定,以及设置大页huge page内存等系统初始化。
41.由此,本实施例利用dpdk实现了一套基于linux的数据包捕获系统,该系统能够实时监测系统的软硬件资源,并动态的配置inter dpdk,从而提高了网络报文的处理性能,利用inter dpdk实现了网卡的高速流量采集应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在的逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
42.如图3所示,为本发明一实施例提供的数据采集装置的结构示意图。数据采集装置,该装置300应用于第一设备,具体包括:获取模块301,用于获取目标网卡的数据采集请求;控制模块302,用于基于所述数据采集请求,控制数据平面开发套件dpdk按照相应的dpdk工作模式对目标网卡进行数据采集;发送模块303,用于将采集的所述数据发送至第三方。
43.在可选的实施方式中,所述控制模块302包括:监控单元,用于基于所述数据采集请求,对第一设备的系统资源剩余情况进行监控;确定单元,用于基于所述监控结果,确定dpdk当前工作模式;控制单元,用于基于所述dpdk当前工作模式,控制dpdk对目标网卡进行数据采集。
44.在可选的实施方式中,所述确定单元包括:第一确定子单元,用于若所述监控结果满足预设条件,则将预设dpdk工作模式确定为dpdk当前工作模式;第二确定子单元,用于若所述监控结果不满足预设条件,则基于所述监控结果更新dpdk工作模式;第三确定子单元,用于将更新后dpdk工作模式确定为dpdk当前工作模式。
45.在可选的实施方式中,所述预设dpdk工作模式通过如下方式获得:获取dpdk配置请求;基于所述配置请求,对dpdk的参数进行配置,得到预设dpdk工作模式。
46.在可选的实施方式中,所述第二确定子单元包括:获取单元,用于获取所述dpdk在采集目标网卡数据时所需要的系统资源;更新单元,用于基于所述监控结果以及所述dpdk所需要的系统资源,通过重新配置dpdk参数更新dpdk工作模式。
47.在可选的实施方式中,数据采集装置还包括:监控模块,用于针对dpdk采集网卡数
据的过程进行监控;更新模块,用于若监控结果满足预设条件,则通过重新配置dpdk的参数更新当前dpdk工作模式。
48.上述装置可执行本发明一实施例所提供的数据采集方法,具备执行数据采集方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的数据采集方法。
49.本发明还提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本发明所述的数据采集方法。
50.除了上述方法和设备以外,本技术的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本技术各种实施例的方法中的步骤。
51.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本技术实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
52.此外,本技术的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本技术如下各实施例的方法中的步骤。
53.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
54.以上结合具体实施例描述了本技术的基本原理,但是,需要指出的是,在本技术中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本技术的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本技术为必须采用上述具体的细节来实现。
55.本技术中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“如但不限于”,且可与其互换使用。
56.还需要指出的是,在本技术的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本技术的等效方案。
57.提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本
申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本技术的范围。因此,本技术不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
58.为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本技术的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
59.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
60.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
61.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。