一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

流量异常检测方法、装置、电子设备和存储介质与流程

2022-02-19 14:33:26 来源:中国专利 TAG:


1.本发明涉及流量异常检测处理技术,尤其涉及一种流量异常检测方法、装置、电子设备和计算机存储介质。


背景技术:

2.随着互联网的不断发展,网络规模也日渐增长,其中,网络流量能够直观的反映网络的运行状态,其具有动态性、高速性和海量性的特点。当流量异常上升或下降说明网络中可能存在故障或异常行为。因此,通过对网络流量的异常检测可以及时了解网络的运行状况,以及解决网络中的异常现象,对维护网络安全十分重要。
3.如何对网络流量实施快速、准确的异常检测是网络技术的重要任务。传统的解决方案有如下两种方法:
4.1)全量存储的方式,为每一条流分配一个计数器记录流的大小,最后找出计数器值超过一定阀值的流。
5.2)采样的方式,设置一定的采样率来收集网络流量,为采样到的每条流分配一个计数器记录流的大小,找出计数器值超过一定阀值的流。比如最后找出6个异常数据流则可以根据采样率推测实际应该有10个异常数据流。
6.现有的网络流量异常检测方法,其存在以下问题:
7.1)全量存储的方式,这种方式能够精确的找出网络流量中所有的异常数据流,但是由于其为每一条流都分配一个计数器记录流的大小,则内存消耗极大,所需的内存资源会随着数据流的增加而线性增长。在海量的网络流量下,有限的内存资源无法满足需求。
8.2)采样的方式,这种方式虽然可以通过设置采样率来降低内存的消耗,但是其只能对部分网络流量进行异常检测,不能精确找出所有异常数据流,由于其得到的异常数据流的个数是根据采样率推测得到的,则检测的精度是不可控的,即无法控制采样流量对于全部流量的代表性。
9.综上所述,现有的网络流量异常检测方法在有限的内存资源条件下,无法对海量的网络流量实现实时的异常检测,因为这两种方式在内存开销和检测精度上是不可控的。


技术实现要素:

10.本发明实施例提供了流量异常检测方法、装置、电子设备和计算机存储介质。
11.本发明实施例提供了一种流量异常检测方法,所述方法包括:
12.根据至少一个数据流中每个数据流的标识信息,确定所述至少一个数据流的属性信息在散列的数据结构中存储的目标位置;
13.确定所述至少一个数据流的属性信息,并在所述目标位置存储所述至少一个数据流的属性信息;
14.根据所述至少一个数据流的属性信息,确定待检测数据流的大小的估计值,所述待检测数据流为所述至少一个数据流中的数据流;
15.根据所述待检测数据流的大小的估计值,对所述待检测数据流进行异常检测。
16.上述方案中,所述根据至少一个数据流中每个数据流的标识信息,确定所述至少一个数据流的属性信息在散列的数据结构中存储的目标位置,包括:
17.采用多个哈希函数对所述至少一个数据流中每个数据流的标识信息进行哈希映射,确定在散列的数据结构中存储所述每个数据流的属性信息的多个桶的位置,将所述多个桶的位置作为所述目标位置;
18.所述根据所述至少一个数据流的属性信息,确定待检测数据流的大小的估计值,包括:
19.根据所述至少一个数据流的属性信息,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值;
20.根据所述待检测数据流的大小的多个初步估计值,确定所述待检测数据流的大小的估计值。
21.上述方案中,所述根据所述至少一个数据流的属性信息,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值,包括:
22.根据所述至少一个数据流的属性信息,确定所述多个桶中的候选异常数据流的大小的估计值;
23.根据所述多个桶中的候选异常数据流的大小的估计值,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值。
24.上述方案中,所述根据所述至少一个数据流的属性信息,确定所述多个桶中的候选异常数据流的大小的估计值,包括:
25.根据所述至少一个数据流的属性信息,得到所述多个桶中每个桶的数据流的大小的值的总和;
26.针对所述多个桶中的每个桶,确定所述每个桶对应的候选异常数据流;所述每个桶对应的候选异常数据流的大小大于所述每个桶的数据流的大小的值的总和的一半;
27.确定所述每个桶对应的候选异常数据流的大小的估计值。
28.上述方案中,述根据所述多个桶中的候选异常数据流的大小的估计值,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值,包括:
29.针对所述多个桶中的每个桶,确定所述每个桶中候选异常数据流的大小的偏高估计值和所述每个桶中正常数据流的大小的估计值;所述偏高估计值大于所述候选异常数据流的大小的估计值,所述正常数据流表示所述至少一个数据流中除所述候选异常数据流外的其它数据流;
30.根据所述每个桶中候选异常数据流的大小的偏高估计值和所述每个桶中正常数据流的大小的估计值,确定所述每个桶中所述待检测数据流的大小的初步估计值。
31.上述方案中,所述确定所述每个桶中候选异常数据流的大小的偏高估计值,包括:
32.针对所述多个桶中的每个桶,所述每个桶中候选异常数据流的大小的偏高估计值等于每个桶的数据流的大小的值的总和与每个桶中的候选异常数据流的大小的估计值的和的一半。
33.上述方案中,所述确定所述每个桶中正常数据流的大小的估计值,包括:
34.针对所述多个桶中的每个桶,所述每个桶中正常数据流的大小的估计值等于每个
桶的数据流的大小的值的总和与每个桶中的候选异常数据流的大小的估计值的差的一半。
35.上述方案中,所述根据所述待检测数据流的大小的多个初步估计值,确定所述待检测数据流的大小的估计值,包括:
36.根据所述待检测数据流的大小的多个初步估计值,得到所述待检测数据流的大小的最小初步估计值和多个初步估计值的标准差;
37.将所述待检测数据流的大小的最小初步估计值减去多个初步估计值的标准差,得到所述待检测数据流的大小的估计值。
38.上述方案中,所述根据待检测数据流的大小的估计值,对所述待检测数据流进行异常检测,包括:
39.将所述待检测数据流的大小的估计值与设定的阈值进行比较,当所述待检测数据流的大小的估计值大于设定的阈值时,确定所述待检测数据流存在异常。
40.本发明实施例还提供了一种流量异常检测装置,所述装置包括:第一确定模块、存储模块、第二确定模块和检测模块,其中,
41.第一确定模块,用于根据至少一个数据流中每个数据流的标识信息,确定所述至少一个数据流的属性信息在散列的数据结构中存储的目标位置;
42.存储模块,用于确定所述至少一个数据流的属性信息,并在所述目标位置存储所述至少一个数据流的属性信息;
43.第二确定模块,用于根据所述至少一个数据流的属性信息,确定待检测数据流的大小的估计值,所述待检测数据流为所述至少一个数据流中的数据流;
44.检测模块,用于根据所述待检测数据流的大小的估计值,对所述待检测数据流进行异常检测。
45.在一种实现方式中,所述第一确定模块,用于根据至少一个数据流中每个数据流的标识信息,确定所述至少一个数据流的属性信息在散列的数据结构中存储的目标位置,包括:
46.采用多个哈希函数对所述至少一个数据流中每个数据流的标识信息进行哈希映射,确定在散列的数据结构中存储所述每个数据流的属性信息的多个桶的位置,将所述多个桶的位置作为所述目标位置;
47.在一种实现方式中,所述第二确定模块,用于根据所述至少一个数据流的属性信息,确定待检测数据流的大小的估计值,包括:
48.根据所述至少一个数据流的属性信息,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值;
49.根据所述待检测数据流的大小的多个初步估计值,确定所述待检测数据流的大小的估计值。
50.在一种实现方式中,所述第二确定模块,用于根据所述至少一个数据流的属性信息,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值,包括:
51.根据所述至少一个数据流的属性信息,确定所述多个桶中的候选异常数据流的大小的估计值;
52.根据所述多个桶中的候选异常数据流的大小的估计值,在所述待检测数据流对应
的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值。
53.在一种实现方式中,所述第二确定模块,用于根据所述至少一个数据流的属性信息,确定所述多个桶中的候选异常数据流的大小的估计值,包括:
54.根据所述至少一个数据流的属性信息,得到所述多个桶中每个桶的数据流的大小的值的总和;
55.针对所述多个桶中的每个桶,确定所述每个桶对应的候选异常数据流;所述每个桶对应的候选异常数据流的大小大于所述每个桶的数据流的大小的值的总和的一半;
56.确定所述每个桶对应的候选异常数据流的大小的估计值。
57.在一种实现方式中,所述第二确定模块,用于根据所述多个桶中的候选异常数据流的大小的估计值,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值,包括:
58.针对所述多个桶中的每个桶,确定所述每个桶中候选异常数据流的大小的偏高估计值和所述每个桶中正常数据流的大小的估计值;所述偏高估计值大于所述候选异常数据流的大小的估计值,所述正常数据流表示所述至少一个数据流中除所述候选异常数据流外的其它数据流;
59.根据所述每个桶中候选异常数据流的大小的偏高估计值和所述每个桶中正常数据流的大小的估计值,确定所述每个桶中所述待检测数据流的大小的初步估计值。
60.在一种实现方式中,所述第二确定模块,用于确定所述每个桶中候选异常数据流的大小的偏高估计值,包括:
61.针对所述多个桶中的每个桶,所述每个桶中候选异常数据流的大小的偏高估计值等于每个桶的数据流的大小的值的总和与每个桶中的候选异常数据流的大小的估计值的和的一半。
62.在一种实现方式中,所述第二确定模块,用于确定所述每个桶中正常数据流的大小的估计值,包括:
63.针对所述多个桶中的每个桶,所述每个桶中正常数据流的大小的估计值等于每个桶的数据流的大小的值的总和与每个桶中的候选异常数据流的大小的估计值的差的一半。
64.在一种实现方式中,所述第二确定模块,用于根据所述待检测数据流的大小的多个初步估计值,确定所述待检测数据流的大小的估计值,包括:
65.根据所述待检测数据流的大小的多个初步估计值,得到所述待检测数据流的大小的最小初步估计值和多个初步估计值的标准差;
66.将所述待检测数据流的大小的最小初步估计值减去多个初步估计值的标准差,得到所述待检测数据流的大小的估计值。
67.在一种实现方式中,所述检测模块,用于根据待检测数据流的大小的估计值,对所述待检测数据流进行异常检测,包括:
68.将所述待检测数据流的大小的估计值与设定的阈值进行比较,当所述待检测数据流的大小的估计值大于设定的阈值时,确定所述待检测数据流存在异常。
69.本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意一种流量异常检测方法。
70.本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种流量异常检测方法。
71.基于本发明实施例提供的流量异常检测方法、装置、电子设备和计算机存储介质中,根据至少一个数据流中每个数据流的标识信息,确定至少一个数据流的属性信息在散列的数据结构中存储的目标位置;确定至少一个数据流的属性信息,并在目标位置存储至少一个数据流的属性信息;根据至少一个数据流的属性信息,确定待检测数据流的大小的估计值,待检测数据流为所述至少一个数据流中的数据流;根据待检测数据流的大小的估计值,对待检测数据流进行异常检测。由于采用了散列的数据结构对数据流的属性信息进行存储,且对待检测数据流的大小的值进行估计,即不需要准确地确定待检测数据流的大小的值,可以在内存资源有限的条件下,对网络流量实现非采样的异常流量的检测。
72.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本技术。
附图说明
73.此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本发明的实施例,并与说明书一起用于说明本发明的技术方案。
74.图1为本发明实施例提供的一种流量异常检测方法的应用场景图;
75.图2为本发明实施例提供的一种流量异常检测方法的流程示意图;
76.图3为相关技术中sketch结构的示意图;
77.图4为相关技术中多个哈希函数映射sketch结构的示意图;
78.图5为本发明实施例提供的另一种流量异常检测方法的流程示意图;
79.图6为本发明实施例提供的确定多个桶中候选异常数据流的大小的估计值的一个具体实现的流程示意图;
80.图7为本发明实施例提供的确定待检测数据流的大小的估计值的一个具体实现的流程示意图;
81.图8为本发明实施例提供的一种流量异常检测装置的示意图;
82.图9为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
83.在相关技术中,在网络管理场景,可以对网络流量进行异常检测;示例性地,网络管理场景可以是针对大规模网络流量的数据流异常检测的场景。具体地说,互联网技术和应用的飞速发展,使得网络流量急剧增加,而确保网络流量的正常是网络安全有序运行的基础。通过对网络流量的异常检测可以管理网络中的异常数据流。
84.相关技术中,通常使用全量存储的方式和采样的方式进行流量异常检测。全量存储的方式虽然可以精确地对网络中的每条数据流都进行异常检测,但是由于其为每一条数据流都分配一个计数器用于记录数据流的大小,因此会导致较大的开销,且流量越大所需要的资源消耗也就越大。采样的方式虽然可以通过设置采样率来降低内存的消耗,但是其只能对部分网络流量进行异常检测,根据采样数据流异常检测结果推测全部网络流量中的异常流量,因此其检测的精度不可控。同时,若要提高检测的精度需要提高采样率,当采样
率提高,相对应地,流量异常检测带来的资源消耗也将增加。
85.上述这些缺陷导致现有的流量异常检测技术均不适用于大规模的网络流量异常检测。
86.针对上述技术问题,提出本发明实施例的技术方案。以下结合附图及实施例,对本发明实施例进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。
87.需要说明的是,在本发明实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
88.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
89.例如,本发明实施例提供的流量异常检测方法包含了一系列的步骤,但是本发明实施例提供的流量异常检测方法不限于所记载的步骤,同样地,本发明实施例提供的流量异常检测装置包括了一系列模块,但是本发明实施例提供的流量异常检测装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的模块。
90.本发明实施例可以基于终端和/或服务器实现,这里,终端可以是瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统,等等。服务器可以是小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
91.服务器等电子设备可以包括执行计算机指令的程序模块。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
92.图1示出了本发明实施例提供的一种流量异常检测方法的应用场景图。参见图1,将数据流的属性信息存储在散列的数据结构中,当需要检测是否存储异常数据流时,对散列的数据结构中的数据流的大小进行估计,并根据数据流的大小的估计值进行异常检测,可以确定异常数据流。
93.基于图1所示的应用场景,提出本发明实施例的技术方案。
94.图2本发明实施例提供的一种流量异常检测方法的流程示意图,如图2所示,该流程可以包括:
95.步骤201:根据至少一个数据流中每个数据流的标识信息,确定至少一个数据流的属性信息在散列的数据结构中存储的目标位置。
96.本发明实施例中,可以从网络中预先获取至少一个数据流的属性信息,数据流是指一组有序、有起点和终点的字节的数据系列,用于表示数据传输中信息的数字编码信号系列,至少一个数据流是指网络中的所有待检测数据流,数据流的属性信息包括数据流的标识信息(flow id)和数据流的大小(flow size)。数据流的标识信息可以用多个维度的数据流的特征值来表示,示例性地,数据流的传输需要一个五元组来标识,五元组包括源网际互联协议(internet protocol,ip)地址、源端口、目的ip地址,目的端口和传输层协议;数据流的大小可以用数据包的数目或者数据流的字节数来表示,需要说明的是,数据包指的是通信传输中的基本单位,一般通信传输是将一个数据流分成若干个数据包进行传输,每个数据包中都包括一条源ip地址、目的ip地址和包长度的日志信息,数据包的数目可以用来表示该条数据流的大小。
97.示例性地,一条数据流的属性信息可以表示为(x,value(x)),x为数据流的标识信息,value(x)为数据流的大小的值。
98.本发明实施例中,散列的数据结构表示的是包括关键字的具有固定大小的数组,根据关键字将数据存储在数据结构中。示例性地,散列的数据结构可以是sketch结构,对此本发明实施例不做限定。
99.sketch结构可以通过设置散列函数,将具有相同散列值的键值数据存入相同的桶(buckets)内,以减少空间内存开销;在示例中,可以将数据流以键

值的形式进行存储,键为数据包中的字段,如源ip地址或源ip地址和目的ip地址的组合;值为存储的特征,如数据包的数量。sketch结构由r行组成,每行有w个桶,其数据结构如图3所示。每个桶中设有三个对应的计数器可以用于存储数据流的属性信息,分别是v
i,j
、k
i,j
、c
i,j
。v
i,j
是用于记录每个桶中所有数据流的大小的总值;k
i,j
是用于记录每个桶中的候选异常数据流的标识信息;c
i,j
是记录每个桶中的候选异常数据流的大小的值。
100.示例性地,sketch结构中的一个桶(buckets,b(i,j))表示为(v
i,j
,k
i,j
,c
i,j
),i为sketch结构中的第i行,j为sketch结构中的第j个桶。
101.本发明实施例中,根据至少一个数据流中每个数据流的标识信息,采用多个哈希函数对每个数据流的标识信息进行映射,哈希函数的个数与sketch结构的行数相同,每个哈希函数分别对应sketch结构中的每一行,从而确定每个数据流的属性信息在sketch结构中存储的目标位置。
102.示例性地,一条数据流的属性信息为(x,value(x)),sketch结构由r行组成,每行有w个桶。根据该条数据流的标识信息x,采用r个不同的哈希函数映射到r个桶,即j=h
i
(x),i=1,2,...r;j=1,2,...w,从而确定该条数据流的属性信息在sketch结构中存储的目标位置。
103.步骤202:确定至少一个数据流的属性信息,并在目标位置存储所述至少一个数据流的属性信息。
104.本发明实施例中,根据至少一个数据流的属性信息在sketch结构中存储的目标位置,确定对应的多个桶的位置,在多个桶中的每个桶的计数器中存储数据流的属性信息。
105.步骤203:根据至少一个数据流的属性信息,确定待检测数据流的大小的估计值,
待检测数据流为至少一个数据流中的数据流。
106.本发明实施例中,根据至少一个数据流的属性信息,得到待检测数据流的属性信息,从而可以确定待检测数据流的属性信息在sketch结构中存储的多个桶的目标位置;根据待检测数据流对应的多个桶的位置,分别确定每个桶中待检测数据流大小的初步估计值,得到待检测数据流的大小的多个初步估计值;根据待检测数据流的大小的多个初步估计值,确定待检测数据流的大小的估计值。
107.需要说明的是,待检测数据流的大小的多个初步估计值是指多个桶中对应的待检测数据流的大小的初步估计值,待检测数据流的属性信息存储在sketch结构的多个桶中,且多个桶的每个桶中还存储着其它数据流的属性信息。
108.本发明实施例中,通过哈希映射,多条哈希值相同的数据流的属性信息会被存储到同一个桶内,因此,若采用一个桶的计数器的值来表示该桶内一条数据流的大小的估计值会偏大,为了减小估计的误差,采用多个哈希函数对一条数据流进行哈希映射,从而一条数据流的属性信息存储在sketch结构的多个桶中,在每个桶中都对该条数据流的大小的值进行估计,则一条数据流的大小具有多个估计值。通过对数据流的大小的多个估计值再次估计,得到数据流大小的最终估计值,可以有效提高数据流大小的估计值的准确率,提高流量异常检测的精确度。
109.示例性地,对一条数据流k,采用4个不同的哈希函数进行哈希映射,会确定数据流k的属性信息存储在sketch结构中4个不同的桶的位置,如图4所示,在查询数据流k的大小时,选取4桶中的最小值作为数据流k的大小的估计值,图中的v表示每个桶中数据流k的大小的估计值;h1、h2、h3、h4表示4个不同的哈希函数;k1、k2、k3、k4表示在4个桶中数据流k的大小的估计值。
110.步骤204:根据待检测数据流的大小的估计值,对待检测数据流进行异常检测。
111.在一些实施例中,可以根据已有经验或当前网络流量设定阈值,当待检测数据流的大小的估计值超过设定的阈值时,则判断该待检测数据流为异常数据流。
112.示例性地,一条数据流的大小的估计值为s(x),系统设定的阈值为δ,当s(x)>δ时,该条数据流为异常数据流。
113.本发明实施例中,通过将待检测数据流的大小的估计值与设定的阈值进行比较,判断待检测数据流是否为异常数据流,可以有效地对数据流进行异常检测,且该方案易于实现,适用于大规模的数据流异常检测。
114.在实际应用中,步骤201至步骤204以基于电子设备的处理器实现,上述处理器可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。
115.可以看出,本发明实施例中,由于sketch结构是基于散列的数据结构,通过设置哈希函数,将具有相同哈希值的数据流的属性信息存储在同一个桶内,所以,在确定sketch结构的行数以及每行中桶的个数后,则sketch结构中桶的个数也就是固定的,这说明本发明实施例的技术方案消耗的内存是固定的,因此,针对大规模的网络流量异常检测不会导致
系统出现内存不存的问题。同时,本发明实施例的技术方案可以精确地对网络中的每条流都进行异常检测,保证了检测的精度。
116.基于前述实施例,本技术实施例提供了另一种流量异常检测方法,图5位本技术实施例提供的另一种流量异常检测方法的流程示意图。如图5所示,该流程可以包括步骤501至步骤505:
117.步骤501:根据至少一个数据流中每个数据流的标识信息,确定至少一个数据流的属性信息在sketch结构中存储的目标位置。
118.步骤502:确定至少一个数据流的属性信息,并在目标位置存储所述至少一个数据流的属性信息。
119.步骤503:根据至少一个数据流的属性信息,在待检测数据流对应的多个桶中,分别确定待检测数据流的大小的多个初步估计值。
120.本发明实施例中,根据至少一个数据流的属性信息,确定在散列的数据结构中多个桶中的每个桶的候选异常数据流,并在对应的桶中更新候选异常数据流的属性信息,根据至少一个数据流的属性信息,确定所述多个桶中的候选异常数据流的大小的估计值。
121.本发明实施例中,候选异常数据流是指一个桶中的多数元素。需要说明的是,多数元素是指对于一个元素集合{a1,a2,...,a
n
},若一个元素大小的值大于总值的一半,则称该元素为多数元素,即可以通过公式(1)得出
122.value(a
m
)≥(value(a1) value(a2) ... value(a
n
))/2,
ꢀꢀ
(1)
123.其中,a
m
表示集合中的多数元素,value(a
m
)表示元素a
m
大小的值。
124.本发明实施例中,待检测数据流的大小的初步估计值是指待检测数据流在对应的多个桶中每个桶的估计值。待检测数据流的大小的多个初步估计值是指待检测数据流在多个桶中对应的多个估计值。
125.本发明实施例中,根据待检测数据流的标识信息可以得到待检测数据流的属性信息存储的多个桶的目标位置,从而确定待检测数据流对应的多个桶中候选异常数据流的属性信息,通过估计多个桶中候选异常数据流的大小的值,进而确定待检测数据流的大小的多个初步估计值。
126.示例性地,一条数据流(x,value(x)),s
i,j
表示该条数据流在桶(buckets,b(i,j))中的初步估计值。
127.步骤504:根据待检测数据流的大小的多个初步估计值,确定待检测数据流的大小的估计值。
128.在一实施方式中,根据待检测数据流的大小的多个初步估计值,得到待检测数据流的大小的最小初步估计值和多个初步估计值的标准差;
129.将待检测数据流的大小的最小初步估计值多个初步估计值的标准差,得到待检测数据流的大小的估计值。
130.本发明实施例中,待检测数据流的大小的估计值是指基于待检测数据流的大小的多个初步估计值确定的最终估计值。
131.本发明实施例中,根据待检测数据流的大小的多个初步估计值,选取值最小的为待检测数据流的大小的最小初步估计值,并确定多个初步估计值的标准差,将待检测数据流的大小的最小初步估计值减去多个初步估计值的标准差,从而可以得到所述待检测数据
流的大小的估计值。
132.示例性地,一条数据流(x,value(x)),估计该条数据流在每个桶(buckets,b(i,j))中的初步估计值s
i,j
,选取值最小的为该条数据流的最小初步估计值(min{s
i,j
}),s
dev
为多个初步估计值的标准差,则待检测数据流的大小的估计值s(x)=min{s
i,j
}

s
dev

133.步骤505:根据待检测数据流的大小的估计值,对待检测数据流进行异常检测。
134.本发明实施例中,确定待检测数据流的大小的多个初步估计值,可以是通过步骤a1至步骤a2获得:
135.步骤a1、根据至少一个数据流的属性信息,确定多个桶中的候选异常数据流的大小的估计值。
136.在一实施方式中,根据至少一个数据流的属性信息,得到多个桶中每个桶的数据流的大小的值的总和;
137.针对多个桶中的每个桶,确定每个桶对应的候选异常数据流;每个桶对应的候选异常数据流的大小大于每个桶的数据流的大小的值的总和的一半;
138.确定每个桶对应的候选异常数据流的大小的估计值。
139.本发明实施例中,根据至少一个数据流的属性信息,可以得到至少一个数据流的大小的值,从而可以得到多个桶中每个桶的数据流的大小的值的总和。
140.本发明实施例中,多个桶中每个桶的计数器v
i,j
用于存储对应桶中数据流的大小的值的总和,需要说明的是,每个桶中存储多条数据流的属性信息。
141.本发明实施例中,找出多个桶中的多数元素作为对应桶的候选异常数据流,得到候选异常数据流的属性信息,即候选异常数据流的标识信息和数据流的大小的估计值,并将候选异常数据流的属性信息存储在对应的桶的计数器中。
142.示例性地,sketch结构中的一个桶(buckets,b(i,j)),将桶中数据流的大小的值的总和存储在计数器v
i,j
中,找出桶中的候选异常数据流,即找出数据流的大小的值超过v
i,j
/2的数据流作为候选异常数据流,并将候选异常数据流的标识信息存储在计数器k
i,j
中,将候选异常数据流的大小的估计值存储在计数器c
i,j
中。
143.步骤a2、根据多个桶中的候选异常数据流的大小的估计值,在待检测数据流对应的多个桶中,分别确定待检测数据流的大小的多个初步估计值。
144.在一实施方式中,针对多个桶中的每个桶,确定每个桶中候选异常数据流的大小的偏高估计值和每个桶中正常数据流的大小的估计值;偏高估计值大于候选异常数据流的大小的估计值,正常数据流表示至少一个数据流中除候选异常数据流外的其它数据流;
145.根据每个桶中候选异常数据流的大小的偏高估计值和每个桶中正常数据流的大小的估计值,确定每个桶中所述待检测数据流的大小的初步估计值。
146.本发明实施例中,候选异常数据流的大小的偏高估计值大于候选异常数据流的大小的估计值,正常数据流表示桶中除候选异常数据流外的其它数据流。
147.示例性地,sketch结构中的一个桶(buckets,b(i,j)),桶中设有三个计数器用于存储多条数据流的属性信息,将桶中多条数据流的大小的值的总和存储在计数器v
i,j
中。确定桶中的候选异常数据流,将候选异常数据流的标识信息存储在计数器k
i,j
中,将候选异常数据流的大小的值存储在计数器c
i,j
中,则桶中的正常数据流为数据流的标识信息与k
i,j
不同的数据流,桶中的正常数据流的大小值的总和为v
i,j

c
i,j

148.本发明实施例中,针对多个桶中的每个桶,每个桶中确定了一条候选异常数据流,并将候选异常数据流的属性信息存储在桶的计数器中。根据候选异常数据流的属性信息,确定每个桶中候选异常数据流的大小的偏高估计值和每个桶中正常数据流的大小的估计值。
149.本发明实施例中,根据待检测数据流的标识信息可以得到待检测数据流的属性信息存储的多个桶的目标位置,进一步地,可以得到待检测数据流对应的多个桶中候选异常数据流的大小的偏高估计值和正常数据流的大小的估计值,从而确定待检测数据流的大小的多个初步估计值。
150.在一实施方式中,每个桶中候选异常数据流的大小的偏高估计值等于每个桶的数据流的大小的值的总和与候选异常数据流的大小的估计值的和的一半。
151.本发明实施例中,对于每个桶中选出的候选异常数据流有两种情况,一种情况是,选出的候选异常数据流从最开始就选出了一个多数元素,则其它正常数据流的大小的值都用来抵消候选异常数据流的大小的值,此时候选异常数据流的偏高估计值等于每个桶的数据流的大小的值的总和与候选异常数据流的大小的估计值的和的一半;另一种情况是,选出的候选异常数据流从最开始就选出了一个非多数元素,这表明有一些正常数据流的大小的值互相抵消了,则候选异常数据流的大小的值会偏高,则候选异常数据流的大小的偏高估计值小于每个桶的数据流的大小的值的总和与候选异常数据流的大小的估计值的和的一半。因此,将每个桶的数据流的大小的值的总和与候选异常数据流的大小的估计值的和的一半作为候选异常数据流的大小的偏高估计值,即(v
i,j
c
i,j
)/2。
152.在一实施方式中,每个桶中正常数据流的大小的估计值等于每个桶的数据流的大小的值的总和与每个桶中的候选异常数据流的大小的估计值的差的一半。
153.本发明实施例中,每个桶中的正常数据流为除候选异常数据流外的其它数据流,则正常数据流的大小的估计值等于桶中所有数据流的大小的总值减去候选异常数据流的大小的值,即v
i,j

(v
i,j
c
i,j
)/2=(v
i,j

c
i,j
)/2,因此,可以确定每个桶中正常数据流的大小的估计值等于每个桶的数据流的大小的值的总和与每个桶中的候选异常数据流的大小的估计值的差的一半。
154.在一个具体的示例中,确定多个桶中候选异常数据流的大小的估计值可以通过以下过程计算得出。
155.图6为本发明实施例确定多个桶中候选异常数据流的大小的估计值的一个具体实现的流程示意图,如图6所示,该流程可以包括:
156.步骤61:获取sketch结构的行数r和数据流的属性信息(x,value(x))。
157.这里,数据流表示网络中n条数据流中的一个数据流,x为数据流的标识信息,value(x)为数据流的大小的值,根据数据流的标识信息x,通过r个函数哈希映射可以得到数据流的属性信息在sketch结构中存储的桶的位置(buckets,b(i,j)),i和j表示桶在sketch结构中的行数和列数。
158.步骤62:判断i是否大于r,如果是,则结束流程,如果否,执行步骤63。
159.这里,判断数据流的属性信息存储的桶的位置是否在sketch结构中。
160.步骤63:在v
i,j
中记录数据流的大小的值。
161.这里,计数器v
i,j
表示桶(buckets,b(i,j))中所有数据流的大小的总值,将桶中计
数器v
i,j
的值增加value(x)。
162.步骤64:判断k
i,j
是否与x相同,如果是,则执行步骤65,如果否,则执行步骤66。
163.这里,计数器k
i,j
表示桶(buckets,b(i,j))中当前候选异常数据流的标识信息,k
i,j
的初始值为0。
164.步骤65:在c
i,j
中记录数据流大小的值。
165.这里,计数器c
i,j
表示桶(buckets,b(i,j))中当前候选异常数据流的大小的值,c
i,j
的初始值为0。
166.本发明实施例中,当数据流的标识信息与桶中当前候选异常数据流的标识信息相同时,则桶中的计数器k
i,j
继续被记录为当前候选异常数据流,当前候选异常数据流的大小的值增加value(x)。
167.步骤66:令c
i,j
减去value(x),得到更新后的c
i,j

168.本发明实施例中,当数据流的标识信息与桶中当前候选异常数据流的标识信息不相同时,则该数据流的大小的值抵消了当前候选异常数据流的大小的值,即当前候选异常数据流的大小的值减去value(x)。
169.步骤67:判断c
i,j
的值是否小于0,如果是则执行步骤68,如果否,则执行步骤69。
170.本发明实施例中,当数据流的标识信息与桶中当前候选异常数据流的标识信息不相同时,需要判断数据流的大小的值是否大于当前候选异常数据流的大小的值,如果大于,则更新桶(buckets,b(i,j))中的当前候选异常数据流,如果小于,则桶(buckets,b(i,j))中继续记录当前候选异常数据流。
171.步骤68:令c
i,j
取相反数,得到更新后的c
i,j
,k
i,j
更新为数据流的标识信息,执行步骤69。
172.本发明实施例中,如果数据流的大小的值大于当前候选异常数据流的大小的值,则桶中的计数器k
i,j
被更新为数据流的标识信息x,桶中的计数器c
i,j
被更新为数据流的大小与当前候选异常数据流的大小的差的绝对值。
173.步骤69:令i的值自增1。
174.这里,完成一次桶(buckets,b(i,j))中候选异常数据流的记录或更新过程后,更新桶的位置,跳转至步骤62,继续执行估计桶中候选异常数据流的大小的估计值的步骤。
175.可以看出,本发明实施例中,在每个桶中找出多数元素作为候选异常数据流,并在k
i,j
中更新候选异常数据流的标识信息,在c
i,j
中更新候选异常数据流的大小的值,整个过程只需要遍历一遍桶中所有的数据流,时间复杂度为o(n);采用了两个固定大小的计数器,空间复杂度为o(1),说明本技术方案的时间复杂度和空间复杂度低,技术方案的运行效率高且内存消耗小。
176.在一个具体的示例中,确定待检测数据流的大小的估计值可以通过以下过程计算得出。
177.图7为本发明实施例确定待检测数据流的大小的估计值的一个具体实现的流程示意图,如图7所示,该流程可以包括:
178.步骤71:获取sketch结构的行数r和待检测数据流的属性信息(x,value(x))。
179.本发明实施例中,基于待检测数据流的标识信息x,采样多个哈希函数确定待检测数据流的属性信息存储的多个桶的目标位置。
180.步骤72:判断i是否大于r,如果是,则执行步骤77,如果否,则执行步骤73。
181.步骤73:判断k
i,j
是否与x相同,如果是,则执行步骤74,如果否,则执行步骤76。
182.这里,判断待检测数据流的标识信息是否与桶中的候选异常数据流的标识信息相同。
183.步骤74:待检测数据流为候选异常数据流,计算待检测数据流的大小的初步估计值。
184.这里,当待检测数据流的标识信息与桶中的候选异常数据流的标识信息相同时,说明待检测数据流为该桶中的候选异常数据流,桶中候选异常数据流的大小的偏高估计值等于桶中所有数据流的大小的值的总和与候选异常数据流的大小的估计值的和的一半,即可以通过公式(2)得出,
185.s
i,j
=(v
i,j
c
i,j
)/2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
186.其中,v
i,j
表示桶中所有数据流的大小的总值,c
i,j
表示桶中的候选异常数据流的大小的值,从而可以得到待检测数据流的初步估计值。
187.步骤75:待检测数据流为正常数据流,计算待检测数据流的大小的初步估计值。
188.这里,当待检测数据流的标识信息与桶中的候选异常数据流的标识信息不相同时,说明待检测数据流为该桶中的正常数据流,桶中正常数据流的大小的估计值等于桶中所有数据流的大小的值的总和与桶中候选异常数据流的大小的估计值的差值的一半,即可以通过公式(3)得出,
189.s
i,j
=(v
i,j

c
i,j
)/2
ꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
190.从而可以得到待检测数据流的初步估计值。
191.步骤76:令i的值自增1。
192.这里,完成待检测数据流在多个桶中的一个桶的初步估计值的估计,更新桶的位置,跳转至步骤62,继续执行估计待检测数据流的大小的估计值的步骤。
193.步骤77:计算待检测数据流的估计值。
194.本发明实施例中,遍历了待检测数据流对应的多个桶,得到了待检测数据流的多个初步估计值,将待检测数据流的大小的最小初步估计值减去多个初步估计值的标准差,即可以通过公式(4)、(5)得出,
195.s
dev
=dev{s
i,j
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
196.s(x)=min{s
i,j
}

s
dev
ꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
197.从而可以得到所述待检测数据流的大小的估计值。
198.基于前述实施例相同的技术构思,参见图7,本发明实施例提供的流量异常检测装置,可以包括:
199.第一确定模块801,用于根据至少一个数据流中每个数据流的标识信息,确定所述至少一个数据流的属性信息在散列的数据结构中存储的目标位置;
200.存储模块802,用于确定所述至少一个数据流的属性信息,并在所述目标位置存储所述至少一个数据流的属性信息;
201.第二确定模块803,用于根据所述至少一个数据流的属性信息,确定待检测数据流的大小的估计值,所述待检测数据流为所述至少一个数据流中的数据流;
202.检测模块804,用于根据所述待检测数据流的大小的估计值,对所述待检测数据流
进行异常检测。
203.在一种实现方式中,所述第一确定模块801,用于根据至少一个数据流中每个数据流的标识信息,确定所述至少一个数据流的属性信息在散列的数据结构中存储的目标位置,包括:
204.采用多个哈希函数对所述至少一个数据流中每个数据流的标识信息进行哈希映射,确定在散列的数据结构中存储所述每个数据流的属性信息的多个桶的位置,将所述多个桶的位置作为所述目标位置;
205.所述根据所述至少一个数据流的属性信息,确定待检测数据流的大小的估计值,包括:
206.根据所述至少一个数据流的属性信息,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值;
207.根据所述待检测数据流的大小的多个初步估计值,确定所述待检测数据流的大小的估计值。
208.在一种实现方式中,所述第二确定模块803,用于根据所述至少一个数据流的属性信息,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值,包括:
209.根据所述至少一个数据流的属性信息,确定所述多个桶中的候选异常数据流的大小的估计值;
210.根据所述多个桶中的候选异常数据流的大小的估计值,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值。
211.在一种实现方式中,所述第二确定模块803,用于根据所述至少一个数据流的属性信息,确定所述多个桶中的候选异常数据流的大小的估计值,包括:
212.根据所述至少一个数据流的属性信息,得到所述多个桶中每个桶的数据流的大小的值的总和;
213.针对所述多个桶中的每个桶,确定所述每个桶对应的候选异常数据流;所述每个桶对应的候选异常数据流的大小大于所述每个桶的数据流的大小的值的总和的一半;
214.确定所述每个桶对应的候选异常数据流的大小的估计值。
215.在一种实现方式中,所述第二确定模块803,用于根据所述多个桶中的候选异常数据流的大小的估计值,在所述待检测数据流对应的多个桶中,分别确定所述待检测数据流的大小的多个初步估计值,包括:
216.针对所述多个桶中的每个桶,确定所述每个桶中候选异常数据流的大小的偏高估计值和所述每个桶中正常数据流的大小的估计值;所述偏高估计值大于所述候选异常数据流的大小的估计值,所述正常数据流表示所述至少一个数据流中除所述候选异常数据流外的其它数据流;
217.根据所述每个桶中候选异常数据流的大小的偏高估计值和所述每个桶中正常数据流的大小的估计值,确定所述每个桶中所述待检测数据流的大小的初步估计值。
218.在一种实现方式中,所述第二确定模块803,用于确定所述每个桶中候选异常数据流的大小的偏高估计值,包括:
219.针对所述多个桶中的每个桶,所述每个桶中候选异常数据流的大小的偏高估计值
等于每个桶的数据流的大小的值的总和与每个桶中的候选异常数据流的大小的估计值的和的一半。
220.在一种实现方式中,所述第二确定模块803,用于确定所述每个桶中正常数据流的大小的估计值,包括:
221.针对所述多个桶中的每个桶,所述每个桶中正常数据流的大小的估计值等于每个桶的数据流的大小的值的总和与每个桶中的候选异常数据流的大小的估计值的差的一半。
222.在一种实现方式中,所述第二确定模块803,用于根据所述待检测数据流的大小的多个初步估计值,确定所述待检测数据流的大小的估计值,包括:
223.根据所述待检测数据流的大小的多个初步估计值,得到所述待检测数据流的大小的最小初步估计值和多个初步估计值的标准差;
224.将所述待检测数据流的大小的最小初步估计值减去多个初步估计值的标准差,得到所述待检测数据流的大小的估计值。
225.在一种实现方式中,所述检测模块804,用于根据待检测数据流的大小的估计值,对所述待检测数据流进行异常检测,包括:
226.将所述待检测数据流的大小的估计值与设定的阈值进行比较,当所述待检测数据流的大小的估计值大于设定的阈值时,确定所述待检测数据流存在异常。
227.在实际应用中,第一确定模块801、存储模块802、第二确定模块803、检测模块804均可以采用电子设备的处理器实现,上述处理器可以是asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种,本发明实施例对此不作限制。
228.需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
229.需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是终端、服务器等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
230.对应地,本发明实施例再提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,该计算机可执行指令用于实现本发明实施例提供的任意一种流量异常检测方法。
231.相应的,本发明实施例再提供一种计算机存储介质,所述计算机存储介质上存储有计算机可执行指令,该计算机可执行指令用于实现上述实施例提供的任意一种流量异常检测方法。
232.在一些实施例中,本发明实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
233.基于前述实施例相同的技术构思,参见图9,本发明实施例提供的电子设备900,可
以包括:存储器910和处理器920;其中,
234.存储器910,用于存储计算机程序和数据;
235.处理器920,用于执行存储器中存储的计算机程序,以实现前述实施例中的任意一种流量异常检测方法。
236.在实际应用中,上述存储器910可以是易失性存储器(volatile memory),示例性地ram;或者非易失性存储器(non

volatile memory),示例性地rom,快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid

state drive,ssd);或者上述种类的存储器的组合。上述存储器910可以向处理器920提供指令和数据。
237.上文对各个实施例的描述倾向于强调各个实施例间的不同处,其相同或相似处可以互相参考,为了简洁,本文不再赘述。
238.本技术所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
239.本技术所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
240.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,示例性地,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
241.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网格单元上;可以根据实际的可以选择其中的部分或全部单元来实现本实施例方案的目的。
242.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
243.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤。
244.以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献