一种多推理引擎兼容的实时流量检测系统和方法

文档序号:29263445发布日期:2022-03-16 12:58阅读:174来源:国知局
一种多推理引擎兼容的实时流量检测系统和方法

1.本发明属于通信与信息安全技术领域,更具体地,涉及一种多推理引擎兼容的实时流量检测系统和方法。


背景技术:

2.近年来,利用机器学习方法进行网络流量的检测近年来成为研究重点,其中深度学习强大的特征表达能力对愈发困难的恶意流量特征提取起到了重要作用,端到端的模式省略了手工设计特征的步骤,加快了对新型攻击手段或指令的检测覆盖。然而大多数研究强调检测的正确率,因此它们通常采用复杂的模型和数据预处理方法,导致计算效率低下。但是为了尽可能减少危害,入侵检测系统需要实时检测攻击。
3.当前广泛部署的基于网络流量的入侵检测系统有snort/suricata/zeek,其中snort和suricata都是基于规则的,通过匹配规则数据库进行检测;zeek既支持规则,也支持通过自定义脚本来扩展功能。这些入侵检测系统目前都没有在规则数据库和脚本中提供机器学习的支持。有一些研究构建了基于机器学习的实时入侵检测系统,在低负载网络情况下取得了良好的效果。可随着网络流量处理需求的不断增大,网卡的性能不断增长,常规商用网卡的收发包速率已经达到10gbit/s以上,这些系统在设计时并没有考虑到大流量的场景,处理性能较为低下,无法适应当前的网络环境。
4.面向机器学习的流量检测系统与普通的流量检测系统类似,不同之处在于,面向机器学习的流量检测系统的检测程序更加复杂,它需要用到机器学习模型。但由于机器学习模型需要的计算量相比于传统的检测方法更大,导致计算效率低下,难以实现对流量的实时处理。无法对流量进行实时处理,就无法及时对恶意攻击做出响应,造成信息安全性降低。
5.当前存在的使用机器学习方法进行实时流量检测的系统性能普遍不高,特别是使用深度学习模型进行检测的系统,性能尤其低下。且多种互不兼容的推理引擎的存在,同样加大了模型部署落地的难度以及流量检测系统的通用性。


技术实现要素:

6.针对现有技术的以上缺陷或改进需求,本发明提供了一种多推理引擎兼容的实时流量检测系统和方法,其目的在于通过在系统中引入高性能数据包处理技术及水平扩展等方式提升系统的收发包性能和吞吐量;同时基于推理引擎适配器使得系统可兼容多种不同推理引擎,由此解决实时流量检测速率低和兼容性差的技术问题。
7.为实现上述目的,按照本发明的一个方面,提供了一种多推理引擎兼容的实时流量检测系统,包括:
8.接收模块,用于从网卡上接收数据包,所述网卡支持dpdk及其提供的轮询模式驱动、接收侧水平扩展和无锁队列;
9.分流模块,与所述接收模块连接,用于以数据包的五元组为哈希的键,使用非对称
哈希算法将数据包按流分类或使用对称哈希算法将数据包按会话分类;
10.提交模块,与所述分流模块连接,用于将所述分流模块生成的流或会话转化为张量格式的数据并提交;
11.检测模块,与所述提交模块连接,加载有训练好的离线模型,用于基于推理引擎适配器对应的兼容api接口将所述张量格式的数据输入所述训练好的离线模型进行流量检测,从而获取计算结果;
12.输出模块,与所述检测模块连接,用于解析所述计算结果并输出检测日志。
13.在其中一个实施例中,所述接收模块、所述分流模块、所述提交模块、所述检测模块和所述输出模块都包含一个或多个线程,各个线程之间使用无锁队列进行通信。
14.在其中一个实施例中,所述接收模块包含多个线程,每个线程对应一个网卡队列,所述网卡队列用于存放所述网卡接收的数据包;
15.所述分流模块包含多个线程,每个线程对应一个分流队列;所述分流队列用于存放所述接收模块分配给所述分流模块的数据包;
16.所述提交模块包含多个线程并对应一个提交队列,所述提交队列用于存放所述分流模块处理得到的流或会话;
17.所述检测模块包含多个线程并对应一个检测队列;所述检测队列用于存放所述张量格式的数据;
18.所述输出模块包含多个线程,但只有一个输出队列,所述输出队列用于存放所述计算结果。
19.在其中一个实施例中,所述兼容多推理引擎的实时流量检测系统还包括:
20.中继模块,设置于所述接收模块和所述分流模块的通信链路上、所述分流模块和所述提交模块的通信链路上,以及所述提交模块和所述检测模块的通信链路上;用于当所述接收模块、所述分流模块和所述提交模块发送数据包给下一级处理节点且对应队列已满时,将数据包放入中继队列再通过所述中继队列发送数据包至对应的处理节点,以避免丢包。
21.在其中一个实施例中,所述中继模块的吞吐量与所述接收模块的吞吐量的相同。
22.在其中一个实施例中,所述推理引擎适配器用于统计出在各个训练好的离线模型在检测过程中必须要用到的api,将其共同的特征抽象成接口,进而设计兼容层以屏蔽不同点,从而实现对多种推理引擎的兼容。
23.按照本发明的另一方面,提供了一种多推理引擎兼容的实时流量检测方法,应用于上述多推理引擎兼容的实时流量检测系统,所述多推理引擎兼容的实时流量检测方法包括:
24.s1:从网卡上接收数据包,所述网卡支持dpdk及其提供的轮询模式驱动、接收侧水平扩展和无锁队列;
25.s2:以所述数据包的五元组为哈希的键,使用非对称哈希算法将数据包按流分类或使用对称哈希算法将数据包按会话分类;
26.s3:将所述分流模块生成的流或会话转化为张量格式的数据;
27.s4:基于所述推理引擎适配器对应的兼容api接口将所述张量格式的数据输入所述训练好的离线模型进行流量检测,从而获取计算结果;
28.s5:解析所述计算结果并输出检测日志。
29.按照本发明的另一方面,提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
30.总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
31.本发明提供一种多推理引擎兼容的实时流量检测系统,通过在系统中引入高性能数据包处理技术,提升系统的收发包性能,适应高速流量的场景;通过gpu加速可以提升机器学习模型的执行效率,提升系统的吞吐量;引入水平扩展等方式进一步提升系统的吞吐量,使得系统可以适应10gbit/s的高速网络环境;另外,基于推理引擎适配器对应的兼容api接口将所述张量格式的数据输入所述训练好的离线模型进行流量检测,从而获取计算结果,使得系统可兼容多种不同推理引擎。
附图说明
32.图1是本发明一实施例中提供的多推理引擎兼容的实时流量检测系统的结构示意图;
33.图2是本发明一实施例中提供的多推理引擎兼容的实时流量检测系统的架构图;
34.图3是本发明一实施例中提供的多推理引擎兼容的实时流量检测系统的流水线图;
35.图4是本发明一实施例中提供的多推理引擎兼容的实时流量检测方法的流程图。
具体实施方式
36.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
37.如图1所示,本发明提供了一种多推理引擎兼容的实时流量检测系统,包括:
38.接收模块,用于从网卡上接收数据包,网卡支持dpdk及其提供的轮询模式驱动、接收侧水平扩展和无锁队列;
39.分流模块,与接收模块连接,用于以数据包的五元组为哈希的键,使用非对称哈希算法将数据包按流分类或使用对称哈希算法将数据包按会话分类;
40.提交模块,与分流模块连接,用于将分流模块生成的流或会话转化为张量格式的数据并提交;
41.检测模块,与提交模块连接,加载有训练好的离线模型,用于基于推理引擎适配器对应的兼容api接口将张量格式的数据输入训练好的离线模型进行流量检测,从而获取计算结果;
42.输出模块,与检测模块连接,用于解析计算结果并输出检测日志。
43.具体的,本发明的目的在于实现一种多推理引擎兼容的实时流量检测系统,从功能的角度可以将系统分为数据平面和业务平面两个主要部分,从架构的角度可以将系统分为硬件层、运行库层和应用层三个主要层次。
44.如图2所示,其各层具体实现细节如下:
45.一.数据平面
46.数据平面的应用层包括数据包接收、数据包分流、流量提交、数据包中继等模块;运行库层为dpdk运行库,包括eal、uio、ring、mempool、mbuf、eth_dev等核心运行库,还有dpdk提供的高性能哈希表;硬件层为支持dpdk的网卡。
47.(1)接收模块
48.接收模块的功能是从网卡接收数据包,负责解决流量检测系统的实时性问题。该模块依赖于前文提到的多个dpdk运行库,其中uio与eth_dev使得该模块以零中断的模式运行在用户态;eal使得该模块可以运行多个dpdk线程,每个线程会绑定在一个cpu核心上运行;mempool使得该模块可以避免频繁地向操作系统申请和释放内存。这些因素使得该模块能够解决流量检测系统的实时性问题。
49.使用高性能的数据包处理方法进行数据包的接收,并且通过接收侧水平扩展来将数据包分发到多个处理队列中进行进一步的处理。该组件依赖于dpdk运行库提供的轮询模式驱动、接收侧水平扩展和无锁队列功能。
50.dpdk提供的网卡驱动以轮询模式运行,并且运行在用户态,避免了中断和系统调用带来的开销,从而提升数据包接收的性能。接收侧水平扩展功能为每一个数据包计算了一个哈希值,通过这个哈希值可以将数据包分发到多个队列中做进一步的处理,处理队列的数量可以根据需要进行调整,以实现多线程水平扩展。如果配置了对称哈希密钥,则可以保证同一个会话中的所有数据包的哈希值相同,进而这些数据包会被分发到同一个处理队列中,以避免同一个数据包的会话中的数据包被分发到同一个处理队列中,导致数据包分流失败或重复分流。dpdk提供的无锁队列功能用于高效地将数据包分发到处理队列中做进一步处理。无锁队列可以在不加锁的条件下执行入队和出队,以避免加锁带来的性能损耗,以及加锁导致的线程休眠。另外,dpdk的无锁队列还支持批量入队和出队,减少了原子操作的数量,能降低多核心缓存同步的开销。
51.(2)分流模块
52.分流模块的功能是将接收到的数据包高效地划分为流或会话,以应对流量预处理的性能问题。该模块依赖于dpdk提供的高性能哈希表与哈希算法。以数据包的五元组为哈希的键,使用非对称的哈希算法可以将数据包按流分类,使用对称哈希算法可以将数据包按会话分类。然而dpdk提供的对称哈希算法相比于非对称哈希算法性能低了很多,这就导致以会话为单位分流的场景,性能大幅下降。
53.一种巧妙的方法实现更高效的对称哈希算法是:五元组(源ip地址,源端口,目的ip地址,目的端口和传输层协议)中的ip地址通常在计算机中存储的类型为32位无符号整型,而端口号通常在计算机中存储的类型为16位无符号整型,这两种类型的数据都是可以比较大小的,因此也是可以排序的。如果对五元组的ip地址进行升序排序,那么无论这个五元组是上行流还是下行流,两个ip地址的大小关系是唯一的,可以得到一个相同的排好序的两个ip地址。使用高性能的哈希表将数据包分类并聚合成数据流。以数据包根据五元组为哈希的键,使用普通哈希算法可以将数据包按流分类,使用对称哈希算法可以将数据包按会话分类。该组件依赖于dpdk运行库提供的高性能哈希表功能、无锁队列和开源的基于intel avx512指令集的高性能哈希算法库xxhash。其中哈希表是分流算法的基础,xxhash
哈希算法库用于进一步提升哈希表的性能,无锁队列用于高效地从分流队列中执行批量出队操作和向提交队列中执行批量入队操作,另外还作为一个简单的对象池,以消除动态内存分配,提升分流模块的性能。
54.(3)提交模块
55.提交模块负责将分流模块生产的流或会话提交给检测模块进行进一步处理。该模块会调用检测模块提供的数据输入api以提交流量,这一过程不可避免地伴随着大量数据拷贝工作,因此这一过程会成为性能热点。如果没有提交模块的缓冲,直接在分流模块中提交数据,会导致分流模块的时延不可控,进而导致分流模块的处理能力抖动,发生丢包。因此该模块的功能是防止向检测模块提交数据过程中产生的抖动影响其他模块。
56.(4)中继模块
57.中继模块的功能是将中继队列中的数据包发送至其他处理节点,负责建立系统集群以解决模型的吞吐量问题。该模与接收模块类似,都依赖于dpdk提供的大量运行库,其中mbuf库用于对数据包进行修改。如果当前计算节点无法完成所有流量的检测,需要将部分流量转发到其他节点进行进一步处理。如果需要新增一个节点,那么该模块需要通过一块网卡来连接另一台计算节点,直接将需要中继的数据包转发给另一个节点。如果需要新增多个节点,那么该模块需要通过一块网卡来连接一个交换机,并且修改数据包的目的mac地址,通过交换机的包交换功能,将数据包分发给多个节点。
58.二、业务平面
59.业务平面的应用层包括流量输入、模型检测、结果输出等模块;运行库层为本文提出的推理引擎适配器与推理引擎运行库;依赖的底层硬件为gpu。
60.(1)流量输入模块
61.流量输入模块被提交模块调用,其功能是输入流或会话,并将其转化为张量格式,负责解决推理引擎的阻塞问题。该模块依赖于无锁队列,为检测模块提供非阻塞的外部调用接口,以避免dpdk线程被阻塞导致网卡队列中的数据包无法被及时消费造成的丢包。该接口的参数为一个完整的流或回话,需要将流或会话中的每个数据包中需要的部分都拷贝到缓冲区中,进而构造张量。该模块的执行会伴随着大量的内存拷贝工作,是造成系统性能抖动的重要因素之一。
62.(2)检测模块
63.检测模块的功能是加载训练好的离线模型,从检测队列中取出张量进行计算,获取检测结果。该模块依赖于推理引擎适配器,需要使用推理引擎适配器来加载特定格式的模型、执行计算并获取计算结果。该模块使用多个线程并行执行计算,以充分利用gpu的算力,提升模型吞吐量。
64.(3)推理引擎适配器
65.推理引擎适配器属于业务平面,用于解决推理引擎的兼容性问题。对于不同格式的模型,如果将其转换为中间格式例如onnx格式来执行,会面临无法完全兼容的问题,而且这种不兼容的情况发生的频率非常高。因为各种机器学习框架都支持自定义算子来实现模型算法,而这些自定义算子在onnx runtime中是没有对应的实现的,如果要让onnx runtime支持该算子,就需要使用onnx runtime提供的api编程实现这个算子。对于检测模块来说,就是需要修改系统的源代码,才能支持这种模型。如果每次更换模型,都需要修改
源代码才能运行,这样的系统是难以使用的,不具备扩展性。为了避免更换模型就要修改源代码的问题,可以统计出在模型检测过程中,必须要用到的api,将其共同的特征抽象成接口,进而设计一个兼容层以屏蔽不同点,最终实现对不同推理引擎的兼容。
66.(4)输出模块
67.输出模块的功能解析模型检测结果,并输出检测日志。该模块需要读取系统时间,拼接字符串并写入文件。由于文件是慢速io设备,写文件的开销不可忽略。如果将这一工作放在检测模块中完成,检测模块的线程会陷入更多不必要的阻塞状态中,导致无法充分利用gpu的算力,降低系统的吞吐量。该模块使用独立的线程来完成结果输出工作,以避免这部分开销对检测模块的影响,防止吞吐量降低。
68.在其中一个实施例中,接收模块、分流模块、提交模块、检测模块和输出模块都包含一个或多个线程,各个线程之间使用无锁队列进行通信。
69.在其中一个实施例中,接收模块包含多个线程,每个线程对应一个网卡队列,网卡队列用于存放网卡接收的数据包;
70.分流模块包含多个线程,每个线程对应一个分流队列;分流队列用于存放接收模块分配给分流模块的数据包;
71.提交模块包含多个线程并对应一个提交队列,提交队列用于存放分流模块处理得到的流或会话;
72.检测模块包含多个线程并对应一个检测队列;检测队列用于存放张量格式的数据;
73.输出模块包含多个线程,但只有一个输出队列,输出队列用于存放计算结果。
74.如图3所示,整个系统流水线中每种类型的模块都包含一个或多个线程,线程之间使用无锁队列进行通信,其中各种队列的作用如下。
75.(1)网卡队列
76.网卡队列中存放的是网卡接收到的数据包。接收模块将从网卡队列中接收到的数据包,分流模块通过哈希算法进行分流。如果是基于流的分流,则哈希算法可以使用非对称哈希算法,而如果是基于会话的分流,则必须使用对称哈希算法。接收模块包含多个线程,每个线程分配一个网卡队列,因此网卡队列数量与接收模块线程数量相同。
77.(2)分流队列
78.分流队列中存放的是接收模块分配给分流模块的数据包。分流模块将分流队列中接收到的数据包分割并聚合成流或会话之后,将其分配给提交模块处理。分流模块也包含多个线程,每个线程对应一个分流队列,因此分流队列数量与分流模块相同。一个数据包需要分配给哪个分流模块处理,就将其加入哪个分流队列。
79.(3)提交队列
80.提交队列中存放的是分流模块处理得到的流或会话。提交模块从提交队列中取出流或会话,并通过输入模块的api将其提交到业务平面中处理。提交模块包含多个线程,但是只有一个提交队列。
81.(4)检测队列
82.检测队列中存放的是输入模块将输入的流转化得到的张量。检测模块从检测队列中取出张量进行计算,并将计算的结果发送给输出模块进行处理。检测模块包含多个线程,
但只有一个检测队列。
83.(5)输出队列
84.输出队列中存放的是检测模块计算的到的结果。输出模块从输出队列中取出检测模块的计算结果,解析计算结果,并将其格式化输出到文件中。输出模块包含多个线程,但只有一个检测队列。
85.(6)中继队列
86.中继队列中存放的是待发送给其他计算节点的数据包。接收模块、分流模块和提交模块在将数据包发送给流水线的下一级的时候,都有可能会碰到队列已满的情况,这个时候就需要靠中继模块将数据包转发给其他计算节点,以避免丢包。这些模块通过将数据包放入中继队列来实现中继操作。中继模块的吞吐量被设计为与接收模块相当,在其他队列已满的情况下,中继模块可以消费所有接收模块接收到的数据包,以避免发生丢包。
87.在其中一个实施例中,兼容多推理引擎的实时流量检测系统还包括:
88.中继模块,设置于接收模块和分流模块的通信链路上、分流模块和提交模块的通信链路上,以及提交模块和检测模块的通信链路上;用于当接收模块、分流模块和提交模块发送数据包给下一级处理节点且对应队列已满时,将数据包放入中继队列再通过中继队列发送数据包至对应的处理节点,以避免丢包。
89.在其中一个实施例中,中继模块的吞吐量与接收模块的吞吐量的相同。
90.在其中一个实施例中,推理引擎适配器用于统计出在各个训练好的离线模型在检测过程中必须要用到的api,将其共同的特征抽象成接口,进而设计兼容层以屏蔽不同点,从而实现对多种推理引擎的兼容。
91.如图4所示,本发明提供了一种多推理引擎兼容的实时流量检测方法,应用于上述多推理引擎兼容的实时流量检测系统,多推理引擎兼容的实时流量检测方法包括:
92.s1:从网卡上接收数据包,网卡支持dpdk及其提供的轮询模式驱动、接收侧水平扩展和无锁队列;
93.s2:以数据包的五元组为哈希的键,使用非对称哈希算法将数据包按流分类或使用对称哈希算法将数据包按会话分类;
94.s3:将分流模块生成的流或会话转化为张量格式的数据;
95.s4:基于推理引擎适配器对应的兼容api接口将张量格式的数据输入训练好的离线模型进行流量检测,从而获取计算结果;
96.s5:解析计算结果并输出检测日志。
97.按照本发明的另一方面,提供了一种电子设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述的方法的步骤。
98.本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1