CN113765848A - 异常数据流的检测方法和装置 - Google Patents

异常数据流的检测方法和装置 Download PDF

Info

Publication number
CN113765848A
CN113765848A CN202010490984.1A CN202010490984A CN113765848A CN 113765848 A CN113765848 A CN 113765848A CN 202010490984 A CN202010490984 A CN 202010490984A CN 113765848 A CN113765848 A CN 113765848A
Authority
CN
China
Prior art keywords
data
data stream
key value
bucket
data packet
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
Application number
CN202010490984.1A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010490984.1A priority Critical patent/CN113765848A/zh
Publication of CN113765848A publication Critical patent/CN113765848A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection

Landscapes

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

Abstract

本申请提供了一种异常数据流的检测方法和装置,涉及计算机网络技术领域。该方法能够应用在部署有二维表数据结构且包括多个阶段的协议无关交换机架构PISA上,该方法包括:从第一数据流中提取数据包的键值;将该数据包的全部键值映射到二维表数据结构中每行的第一桶中;将数据包的全部键值与第一桶中当前记录的第二数据流的键值进行匹配;根据匹配结果,在PISA的多个阶段上对第一桶中当前的统计信息进行更新,当前的统计信息包括第二数据流的信息,更新后的统计信息包括第一数据流和第二数据流中频次或流量更多的数据流的信息;根据更新后的统计信息进行异常数据流的检测。从而能够实现异常数据流的检测。

Description

异常数据流的检测方法和装置
技术领域
本申请涉及计算机网络技术领域,并且更具体地,涉及一种异常数据流的检测方法和装置。
背景技术
随着互联网技术的快速发展,网络规模和复杂性不断增加,网络监测的难度也进一步提升。在网络监测中,实现对网络数据流的实时监测、及时发现异常的网络数据流(高流量或高频次的数据流)对提高网络的可靠性具有重要意义。
现有的网络数据流的监测一般是通过在网络上部署异常数据流检测算法以实现网络异常数据流的监测。然而,受高吞吐量的分阶段处理架构的限制,现有的异常数据流检测算法多数由于内存消耗大、计算速率慢等原因,并不能被部署到可编程协议无关交换机(protocol independent switch architecture,PISA)上,这便给PISA架构上异常数据流的检测带来了巨大困难。
因此,针对PISA架构,如何实现异常数据流的检测是一项亟待解决的问题。
发明内容
本申请提供一种异常数据流的检测方法和装置,能够实现PISA架构上异常数据流的检测。
第一方面,提供了一种异常数据流的检测方法,该方法应用在部署有二维表数据结构且包括多个阶段的协议无关交换机架构PISA上,该方法包括:从第一数据流中提取数据包的键值;将该数据包的全部键值映射到二维表数据结构中每行的第一桶中;将所述数据包的全部键值与所述第一桶中记录的第二数据流的键值进行匹配;根据匹配结果,在PISA的多个阶段上对第一桶中当前的统计信息进行更新,该当前的统计信息包括第二数据流的信息,第二数据流的信息包括第二数据流的键值,更新后的统计信息包括第一数据流和第二数据流中频次或流量更多的数据流的信息;根据更新后的统计信息进行异常数据流的检测。
应理解,第一数据流包括多个数据包,但在实际映射时,这些数据包的键值是被依次提取并映射到二维表数据结构中的。因此,从第一数据流中提取数据包的键值是指提取第一数据流中当前被映射到二维表数据结构中的数据包的键值。
应理解,数据流的频次是指数据流所包括的数据包的数量。
在本申请实施例中,首先在PISA上部署一个二维表数据结构,将数据包的键值映射到二维表数据结构中每行的某个对应的桶中并与桶中记录的数据流的键值进行匹配,根据匹配结果对桶中当前的统计信息在PISA的多个阶段上进行更新,且更新后的统计信息仅统计在当前桶中频次或流量占多数的(更多)数据流的信息,相当于在更新的过程中已经做了一轮数据流的筛选,也就是说,二维表中统计的数据流为异常数据流的候选,然后便可以根据二维表数据结构中的统计信息进行异常数据流的检测,从而能够成功实现PISA架构上异常数据流的检测。
结合第一方面,在第一方面的某些实现方式中,在将数据包的全部键值映射到二维表数据结构中每行的第一桶中之前,方法还包括:将数据包的键值分解成K个变量对,该K个变量对中的每个变量对的键值长度不超过第一阈值,K为正整数且K>1;将数据包的全部键值映射到二维表数据结构中每行的第一桶中,包括:将K个变量对依次映射到第一桶中;将数据包的全部键值与第一桶中当前记录的第二数据流的键值进行匹配,包括:将K个变量对分别与第二数据流的键值的相对应的部分在PISA的K个阶段中依次进行匹配。
结合第一方面,在第一方面的某些实现方式中,将K个变量对分别与第二数据流的键值的相对应的部分在PISA的K个阶段中依次进行匹配,包括:将第二数据流的键值分解成K个变量对,且第二数据流的键值所分解的K个变量对中的每个变量对的键值长度与数据包的键值所分解的K个变量对中相对应的变量对的键值长度相等;将数据包的键值所分解的K个变量对分别与第二数据流的键值所分解的相对应的K个变量对在PISA的K个阶段中依次进行匹配;若数据包的键值所分解的K个变量对与第二数据流的键值所分解的K个变量对都匹配,则数据包的键值与第二数据流的键值匹配;若数据包的键值所分解的K个变量对与第二数据流的键值所分解的K个变量对不完全匹配,则数据包的键值与第二数据流的键值不匹配。
在本申请实施例中,将数据包的键值分解成多个变量对,每个变量对的长度都不超过第一阙值,使得在PISA架构上,可以对任意键值长度的数据流进行检测,从而提高了异常数据流的检测精度。
结合第一方面,在第一方面的某些实现方式中,第一桶中当前的统计信息包括三个元素Vi,j、Ki,j和Ci,j;其中,i,j用于指示第一桶位于所述二维表数据结构中的第i行的第j列,Vi,j表示截至当前映射到第一桶中所有数据包的总频次,Ki,j表示第二数据流的键值,Ci,j表示第二数据流的频次的投票数。
可选地,本申请实施例可以对具有较高频次的数据流进行统计。应理解,较高频次的数据流指包括的数据包的数目大于一定值的数据流。
结合第一方面,在第一方面的某些实现方式中,根据匹配结果,在PISA的多个阶段上对第一桶中当前的统计信息进行更新占用PISA上的两个阶段,包括:阶段一和阶段二;阶段一和阶段二为PISA上的多个阶段中相邻的两个阶段。
结合第一方面,在第一方面的某些实现方式中,在阶段一的更新包括:更新Vi,j=Vi,j+1。
结合第一方面,在第一方面的某些实现方式中,在阶段二的更新包括:若数据包的键值与第二数据流的键值匹配或者Ci,j=0,更新Ci,j=Ci,j+1;否则,若数据包的键值与第二数据流的键值不匹配且Ci,j≠0,更新Ci,j=Ci,j-1;若数据包的键值与第二数据流的键值不匹配且Ci,j=0,更新Ki,j=x,其中,x为数据包的键值。
在本申请实施例中,可以通过频次更新算法对较大频次的数据流进行统计,该算法为简单的多步骤判断语句。使用该算法对第一桶中当前的统计信息进行更新共占用PISA的两个阶段,而且在每个阶段上部署的算法不超过2层的若-否则(if-else)分支,保证了每个阶段上ALU的延时在可接受范围,从而能够保证PISA的线速。
结合第一方面,在第一方面的某些实现方式中,第一桶中当前的统计信息包括三个元素Vi,j、Ki,j和Ci,j;其中,i,j用于指示第一桶位于所述二维表数据结构中的第i行的第j列,Vi,j表示截至当前映射到所述第一桶中的数据包的总流量,Ki,j表示第二数据流的键值,Ci,j表示第二数据流的流量的投票数。
可选地,本申请实施例可以对具有较高流量的数据流进行统计。
结合第一方面,在第一方面的某些实现方式中,数据包不是重发数据包,根据匹配结果,在PISA的多个阶段上对第一桶中当前的统计信息进行更新占用PISA的三个阶段,包括:阶段一、阶段二和阶段三;阶段一、阶段二和阶段三为PISA上的多个阶段中相邻的三个阶段。
结合第一方面,在第一方面的某些实现方式中,在阶段一的更新包括:更新Vi,j=Vi,j+vx,其中,vx表示数据包的流量值。
结合第一方面,在第一方面的某些实现方式中,在阶段二的更新包括:若数据包的键值与第二数据流的键值匹配,更新Ci,j=Ci,j+vx;否则,若数据包的键值与第二数据流的键值不匹配,且Ci,j≥vx,更新Ci,j=Ci,j-vx;若数据包的键值与第二数据流的键值不匹配,且Ci,j<vx,生成指示信息,指示信息用于指示对数据包执行重发操作。
结合第一方面,在第一方面的某些实现方式中,在阶段三的更新包括:若指示信息指示对数据包执行重发操作,对数据包执行重发操作。
结合第一方面,在第一方面的某些实现方式中,数据包是重发数据包,根据匹配结果,在PISA的多个阶段上对第一桶中当前的统计信息进行更新占用PISA的两个阶段,包括:阶段一和阶段二;阶段一和阶段二为PISA上的多个阶段中相邻的两个阶段。
结合第一方面,在第一方面的某些实现方式中,在阶段一的更新包括:更新Ci,j=vx-Ci,j
结合第一方面,在第一方面的某些实现方式中,在所述阶段二的更新包括:更新Ki,j=x,其中,x为数据包的键值。
在本申请实施例中,对数据包的重发既不是随机重发,也不是全部重发,而是根据算法的判断进行选择性重发。因此采用本申请实施例的方案对于异常数据流的检测不会产生漏报,检测精度较高,而且又能避免在全部重发时PISA的线速降低。
在本申请实施例中,可以通过流量更新算法对较大流量的数据流进行统计,该算法为简单的多步骤判断语句。使用该算法对第一桶中当前的统计信息进行更新共占用PISA的两个阶段(重发包情况)或三个阶段(非重发包情况),而且在每个阶段上部署的算法不超过2层的若-否则(if-else)分支,保证了每个阶段上ALU的延时在可接受范围,从而能够保证PISA的线速。
结合第一方面,在第一方面的某些实现方式中,根据更新后的统计信息进行异常数据流的检测包括:根据更新后的统计信息,计算第一数据流的流量或频次的估计值;根据估计值判断第一数据流是否为异常数据流。
结合第一方面,在第一方面的某些实现方式中,根据更新后的统计信息,计算第一数据流的流量或频次的估计值,包括:若数据包的键值与更新后的统计信息中的数据流的键值匹配,位于二维表数据结构中的第i行的第j列的第一桶中的第一数据流的频次或流量的估计值为Si(x)=wVi,j+(1-w)Ci,j;否则,若数据包的键值与更新后的统计信息中的数据流的键值不匹配,位于所述二维表数据结构中的第i行的第j列的第一桶中的第一数据流的频次或流量的估计值为Si(x)=wVi,j-(1-w)Ci,j;第一数据流的频次或流量的估计值为S(x)=min1≤i≤d{Si(x)},其中,w为Vi,j的权重参数,1-w为Ci,j的权重参数,且0≤w≤1,d为二维表数据结构的行数。
结合第一方面,在第一方面的某些实现方式中,根据所述估计值判断第一数据流是否为异常数据流包括:在一个时间周期末时,若S(x)大于第二阈值或者在两个时间周期末所述S(x)的变化值大于第三阈值时,第一数据流为所述异常数据流。
结合第一方面,在第一方面的某些实现方式中,第二阈值为
Figure BDA0002521078210000041
第三阈值为
Figure BDA0002521078210000042
其中,
Figure BDA0002521078210000043
为第四阈值,S为一个时期周期末二维表数据结构中记录的所有数据流的频次或流量的估计值的总和,D为两个时间周期末二维表数据结构中记录的所有数据流的频次或流量的总和的变化值。
第二方面,提供了一种异常数据流的检测装置,该装置应用在部署有二维表数据结构且包括多个阶段的协议无关交换机架构PISA上,该装置包括:处理单元,用于执行上述第一方面所述的方法。
第三方面,提供了一种计算设备,其特征在于,包括:至少一个处理器和存储器,所述至少一个处理器与所述存储器耦合,用于读取并执行所述存储器中的指令,以执行上述第一方面所述的方法。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第六方面,提供了一种芯片系统,该芯片系统包括处理器,用于计算设备实现上述方面中所涉及的功能,例如,生成,接收,发送,或处理上述方法中所涉及的数据和/或信息。
在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存终端设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
上述芯片具体可以是现场可编程门阵列FPGA或者专用集成电路ASIC。
应理解,本申请中,第一方面的方法具体可以是指第一方面以及第一方面中各种实现方式中的任意一种实现方式中的方法。
附图说明
图1是本申请实施例提供的PISA的架构示例图;
图2是本申请实施例提供的一种系统架构示例图;
图3是本申请实施例提供的一种异常数据流的检测方法的示例性流程图;
图4是本申请实施例提供的一种映射过程的示例图;
图5是本申请实施例提供的一种二维表数据结构示例图;
图6是本申请实施例提供的一种数据流的频次更新算法的示例性流程图;
图7是本申请实施例提供的一种数据流的流量更新算法的示例性流程图;
图8是本申请实施例提供的一种异常检测算法的示例性流程图;
图9是本申请实施例提供的一种异常数据流检测装置图;
图10是本申请实施例提供的一种异常数据流检测装置的硬件结构示例性框图。
具体实施方式
为了便于理解,首先对本申请各实施例中所涉及的一些技术术语进行介绍。
协议无关交换机架构(protocol independent switch architecture,PISA):是一种在用户完全程序控制下以最高速度处理数据包的新范例,PISA用户可以使用开源编程语言自行编程网络,而不会降低其性能。PISA体系结构把数据平面全部控制权都交给网络所有者。
算术逻辑单元(arithmetic and logic unit,ALU):是能实现多组算术运算和逻辑运算的组合逻辑电路。
数据包:是传输控制协议/互联协议(transmission control protocol/internetprotocol,TCP/IP)通信传输中的数据单位。在网络中,单个消息会被划分成多个数据包,它包含发送者和接受者的地址等信息。
数据流:是完整的一次TCP/IP链接,是一组有序,有起点和终点的字节的数据序列。可以分成多个有序的数据包。在实际的网络中,传输数据流是指有序的传输多个数据包,数据包在网络中传输后,在目的地会重新组合。
键值对:每个数据流都可以用一个键值对(key,value)表示,其中key用来唯一标识数据流,也称为键值;value表示数据流出现的频次或流量。
大流量对象:在某一个时间周期末,网络数据流在以包数量、字节数或者连接数等为单位的统计数值超过预期,即超过一定的阈值的数据流。
大变化对象:在相邻两个时间周期末,网络数据流在以包数量、字节数或者连接数等为单位的统计数值大小产生了非常剧烈的变化的数据流。
大流量数据流:指出现大流量对象或者大变化对象的数据流,也称大流量数据流,在本申请实施例中,将其记为异常数据流。
Sketch:是一种紧凑的用于流量数据统计亚线性数据结构,该结构是一个二维表,由若干行组成,每行由若干个桶构成。
多数投票:在一个数组中,元素的频次或流量超过数组中至少一半的元素。
多数数据流(majority flow):是指数据流的流量或频次超过映射到当前桶中的总流量或总频次50%以上的数据流。
线速:网络设备交换转发能力的一个标准,是PISA接口处理器和数据总线间所能吞吐的最大数据量。
阶段:每一个PISA芯片都有很多阶段,每个阶段采用匹配-动作表来对数据流进行处理。具体来说,每个阶段对每一个数据包均采用以下操作:从包头中提取特定字段,形成匹配的键值;根据匹配的键值信息,进行流表匹配;根据匹配结果,执行相应的动作。该动作表示在PISA每个阶段的运算数量。
为了便于理解,再对本申请实施例涉及的背景技术进行详细介绍。
在网络监测中,实现对网络数据流的实时监测、及时发现异常的网络数据流(高流量或高频次的数据流)对提高网络的可靠性具有重要意义。现有的网络数据流的监测一般是通过在网络上部署异常数据流检测算法以实现网络异常数据流的监测。然而,受高吞吐量的分阶段处理架构的限制,现有的异常数据流检测算法多数由于内存消耗大、计算速率慢等原因,并不能被部署到可编程的PISA上。
图1是本申请实施例提供的PISA的架构示例图。如图1所示,PISA架构包括多个阶段(例如,1-32个阶段)。其中,每个阶段上的ALU运算数量是有限的,且这些ALU运算是并行进行的,运算的能力也是有限的。而通常进行异常数据流检测时需要经过很多运算才能完成。因此受PISA的上述条件限制,在PISA上进行异常数据流检测时,需要在多个阶段上完成。还应理解,在进行异常数据流检测的过程中,每接收一个数据包,多个阶段的使用呈流水线的形式。具体地,从阶段一开始对其进行处理,然后顺序通过PISA的多个阶段进行。在重新发送数据包时,需要从阶段一开始重新进行处理。
在现有技术的方案中,将多个层级的二维表(Sketch)数据结构部署在PISA上,并采用(key,value)键值对记录数据流的信息,成功的实现了PISA上异常数据流的检测。具体地,在多个层级的二维表数据结构中的一个层级采用(key,value)键值对记录数据流的信息,采用一系列相互独立的哈希函数将数据包键值的每位字符分别映射到其他对应多个层级的二维表中进行键值的每位字符的比对,当所有层级的字符都匹配时,则更新键值对所储存的信息。然后采用高斯分布对记录的频次进行拟合,并采用统计推断模型将较大流量的数据流全部分离出来。在这些分离出来的较大流量数据流中,如果其频次超过一定的阈值,就认为该数据流是大流量对象;若大流量对象在持续的一段时间内频次的变化超过一定的阈值,则认为该数据流是大变化对象。
上述现有方案的检测精度高,易于部署到PISA上。但是获取较大的数据流需要通过高斯分布的拟合、数据流分离运算进行,因此该方案的ALU消耗很大,造成PISA的线速降低。而且多个层级二维表数据结构的部署也意味着对内存空间的消耗巨大。
本申请实施例将一个层级的Sketch二维表数据结构部署到PISA的多个阶段中,利用多数投票算法和简单的判断语句对二维表数据结构的每个桶中的统计信息进行更新,也就意味着该统计信息仅统计当前桶中占多数的数据流的信息。然后根据统计信息进行异常数据流的检测,从而能够实现在PISA架构上对异常数据流进行高速、低内存地实时检测。
下面将结合附图,对本申请中的技术方案进行描述。
图2是本申请实施例提供的一种系统架构示例图。应理解,该系统架构200可以应用在部署有一个层级的二维表数据结构的PISA上,可以对PISA上的异常数据流进行检测。如图2所示,该系统架构200包括以下三个模块:采集模块210、处理模块220以及异常检测模块230。
其中,采集模块210用于采集数据流或数据包。
可选地,采集模块210可以基于流的采集方法对数据流进行实时采集,应理解,一个流由多个包组成。在本申请实施例中,该采集模块210还可以用来提取数据流的键值,应理解,数据流的键值用来唯一标识数据流,例如,104位的五元组(32位源IP地址、16位源端口、32位目的IP地址、16位目的端口、8位协议域)。
可选地,采集模块210也可以基于包的采集方法,即将多个数据流中每个数据流的多个数据包按个进行实时采集。该采集模块210还可以用来提取数据包的键值,应理解,一个数据流中的多个数据包都包含所属数据流的键值信息,该键值信息用来唯一标识数据流,因此在本申请实施例中数据包的键值即就是其所属数据流的键值。
为便于描述,在本申请的实施例中,均采用包采集的方式。但应理解,在实际的网络中,也可以先进行流采集,再将数据流的多个数据包依次进行处理。
可选地,该采集模块210可以从网关采集数据流或数据包,也可以从其他采集数据流或数据包的设备处采集数据流或数据包。
处理模块220用于对二维表数据结构中的统计信息进行更新。
应理解,在本申请实施例中,需要先在PISA上部署一个层级的二维表数据结构,该二维表数据结构包括若干行,每行包括若干个桶和一个哈希函数。每个桶内统计信息用于统计当前桶内频次或流量占多数的数据流的信息;也就是说,该统计信息用于对当前较大频次或流量的数据流进行统计。关于该二维表数据结构和统计信息将在下文详细描述,此处不再赘述。
在本申请实施例中,仅在PISA上部署一个层级二维表数据结构,相比于现有技术部署多个层级的二维表数据结构,能够很大程度降低内存的消耗;而且,本申请实施例的二维表数据结构仅对较大频次或流量的数据流的信息进行统计,而不是对所有的数据流都进行统计,因此不需要再对统计的数据流进行拟合和对较大数据流进行分离,从而降低了ALU的消耗,避免PISA的线速降低。
在实际网络中,无论按流还是按包采集数据,每次进入二维表数据结构都是以一个数据包为单位的,也就是说,一个数据流中的多个数据包的键值是依次被映射到二维表数据结构中的。且在映射的时候是将一个数据包的键值分别映射到二维表数据结构中每行对应的某个桶中。应理解,一个数据包的频次为1且具有一定的流量。在统计过程中,可以对当前映射到某个桶中的数据包的键值与桶内记录数据流的键值进行匹配,并根据匹配结果对桶内的统计信息进行更新。换句话说,桶中的数据流的统计信息实质上是根据当前和历史的多个数据包来进行统计的,并且随着新的数据包进来,还会对当前的统计信息进行更新和修正。应理解,上述过程可以在PISA的多个阶段完成,具体实现过程将在下文的具体实施例中进行描述,这里不再赘述。
该处理模块220还用于根据二维表数据结构的统计信息对某个数据流的频次或流量进行估计。
异常检测模块230用于对处理模块220中所估计的数据流的流量或频次进行检测。
具体地,在某个时间周期末,基于某个数据流流量或频次的估计值判断某个数据流是否是大流量对象;根据某个数据流在邻近的两个时间周期末的流量或频次的变化值,判断某个数据流是否是大变化对象。应理解,关于该模块对数据流的处理方法将在下文进行详细描述,这里不再赘述。
图3是本申请实施例提供的一种异常数据流的检测方法的示例性流程图。应理解,该方法300可以应用在上述系统架构200中,还应理解,在执行该方法300之前,首先要将一个层级的二维表数据结构部署到PISA的多个阶段上。如图3所示,该方法300包括步骤S310-S350。下面对这些步骤进行详细描述。
S310,从第一数据流中提取数据包的键值。
应理解,第一数据流包括多个数据包,但在实际映射时,这些数据包的键值是被依次提取并映射到二维表数据结构中的。因此,从第一数据流中提取数据包的键值是指提取第一数据流中当前被映射到二维表数据结构中的数据包的键值。
可选地,在提取该数据包的键值之前还包括获取该数据包。
可选地,步骤S310可以通过上述系统构架200中的采集模块210来实现,即从实际网络中通过实时采集获得该数据包并提取该数据包的键值。
S320,将数据包的全部键值映射到二维表数据结构中每行的第一桶中。
应理解,数据在实际网络中每次进入二维表数据结构都是以一个数据包为单位的,也就是说,在实际映射时是将该数据包的全部键值映射到二维表数据结构中以进行键值的匹配。
图4是本申请实施例提供的一种映射过程的示例图。如图4所示,二维表数据结构是一个d×w的二维表。应理解,该二维表有d行,每行包含w个桶以及一个独立的哈希函数。具体地,在接收到新的数据包时,二维表数据结构中每行的哈希函数将该数据包的全部键值映射到该行对应的第一桶中。为便于描述,在本申请实施例中将该数据包的键值记为x,将该数据包的频次或流量记为vx。应理解,在需要进行频次统计时,该数据包对应的vx为1;在需要进行流量统计时,该数据包对应的流量为vx
S330,将数据包的全部键值与第一桶中当前记录的第二数据流的键值进行匹配。
待数据包的键值x映射完成之后,将数据包的键值x与第一桶中记录的第二数据流的键值进行匹配。应理解,该第二数据流的键值可能与该数据包的键值x匹配,也可能不匹配。当匹配时,可以认为该数据包所属的第一数据流与第二数据流为同种数据流;当不匹配时,可以认为该数据包所属的第一数据流与第二数据流为两种不同的数据流。
还应理解,在实际进行异常数据流检测时,受PISA架构的影响,PISA的一个阶段上的运算最多只能处理一对有状态变量即一个变量对,且该变量对的位数不能超过第一阈值。也就是说,PISA在每个阶段中最多支持一定位数的有状态读写,例如64位。而对于更长键值的数据流,例如104位的五元组,PISA则无法读写。这样就会使得更长键值的数据流,无法得到统计,造成异常数据流检测的精确度降低。
为解决上述问题,本申请实施例还提供了一种键值分解与匹配的方法。
可选地,在将该数据包的全部键值映射到二维表数据结构中每行的第一桶中之前,方法300还包括:将数据包的键值分解成K个变量对,K个变量对中的每个变量对的键值长度不超过第一阈值,K为正整数且K>1。
具体地,提取数据包的键值之后,在进行映射之前,可以对该数据包的键值执行分解操作,即将该键值分解成多个变量对,且每个变量对的键值长度不超过第一阈值。可选地,在实际操作中,可以仅对数据包键值长度超过第一阈值的键值进行分解,对数据包键值长度不超过第一阈值的键值不进行分解而直接映射。可选地,无论数据包的键值长度是否超过第一阈值,都可以对其执行分解操作。
示例性地,根据目前PISA的读写能力来看,当数据包的键值长度超过64位时就无法进行读写,因此第一阈值可以为64位。
可选地,将K个变量对依次映射到第一桶中;将K个变量对分别与第一桶中记录的第二数据流的键值的相对应的部分在PISA的K个阶段中依次进行匹配。
其中,将K个变量对分别与第一桶中记录的第二数据流的键值的相对应的部分在PISA的K个阶段中依次进行匹配。可以采用如下方法来实现:将第二数据流的键值分解成K个变量对,且第二数据流的键值所分解的K个变量对中的每个变量对的键值长度与数据包的键值所分解的K个变量对中相对应的变量对的键值长度相等;将数据包的键值所分解的K个变量对分别与第二数据流的键值所分解的相对应的K个变量对在PISA的K个阶段中依次进行匹配;若数据包的键值所分解的K个变量对与第二数据流的键值所分解的K个变量对都匹配,则数据包的键值与第二数据流的键值匹配;若数据包的键值所分解的K个变量对与第二数据流的键值所分解的K个变量对不完全匹配,则数据包的键值与第二数据流的键值不匹配。
下面结合示例对键值分解与匹配过程进行详细的描述。
示例性地,当该数据包为104位的五元组时,根据本申请实施例的方案,可以将该数据包的键值分解成一个长度为64位的变量对(x1,x2)和一个长度为40位的变量对(x3,x4),二维表数据结构中每行的哈希函数将该数据包的键值x对应的两个变量对作为输入依次映射到每行的第一桶中。应理解,键值分解并不限于上述的分解方式以及分解比例。示例性地,还可以将104位的五元组分解成两个长度为52位的变量对,或者分解成一个长度为60位的变量对和一个长度为44位的变量对。示例性地,还可以将其分解成一个长度为40位的变量对、一个长度为50位的变量对和一个长度为14位的变量对。
除此之外,还应理解,由于在目前通信会话中,数据流键值长度最长为104位的五元组,因此本申请实施例中以104位的五元组作为示例,但这并不能构成对本申请实施例的限定。当通信会话中可以允许更长键值的数据流时,同样可以采用本申请实施例所述的分解方式。同时,应理解,第一阈值也应结合PISA的读写能力及发展来决定。
在完成上述多个变量对的映射之后,将该多个变量对分别与第一桶中所记录的第二数据流的键值相对应的部分按照字符顺序进行匹配。可选地,当前第一桶内记录的第二数据流的键值为多个变量对,且其分解方式与上述数据包相同,即所分解的变量对的数目和与数据包键值所分解的对应变量对的键值长度相同。可选地,若当前第一桶内记录的第二数据流的键值还没有经过分解,则应先按照上述数据包键值的分解方式对该第二数据流的键值进行分解。应理解,只有将第二数据流和数据包的键值按照同样的分解方式和分解比例进行分解,才能够进行匹配操作。然后分别在PISA的多个阶段中对多个变量对分别进行匹配,当数据包的变量对与第一桶中记录的变量对完全相同时,则认为匹配。例如,当该数据包的键值x为104位的五元组时,将104位的键值可以分解成一个64位的变量对(x1,x2)和一个40位的变量对(x3,x4),每一行对应的哈希函数将这两个变量对作为输入依次映射到每行的第一桶中。在匹配前,要将第一桶内的第二数据流的键值也分解成一个64位的变量对(k1,k2)和一个40位的变量对(k3,k4),并在PISA的一个阶段上对变量对(x1,x2)和(k1,k2)中对应字符进行匹配,在另一个阶段上对变量对(x3,x4)和(k3,k4)中对应字符进行匹配。当两个变量对都完全匹配时,就认为该五元组的键值与第一桶中记录的第二数据流的键值相同,当不完全匹配或者是第一桶内分解的变量对的大小或数量与数据包分解的无法相同时,则认为不匹配。
在本申请实施例中,当键值长度超过第一阈值时可以执行键值分解操作,使得在PISA架构上,可以对任意键值长度的数据流进行检测,从而提高了异常数据流的检测精度。
S340,根据匹配结果,在PISA的多个阶段上对第一桶中当前的统计信息进行更新。
其中,当前的统计信息包括第二数据流的信息,第二数据流的信息包括第二数据流的键值,更新后的统计信息包括第一数据流和所述第二数据流中频次或流量更多的数据流的信息。
可选地,在本申请实施例中,对第一桶中当前的统计信息进行更新是使用多步骤判断语句进行的,即通过简单的多步骤判断决定在新的数据包进入当前桶时应该统计哪个的数据流的信息以及如何进行统计。
也就是说,在本申请实施例中,采用多步骤的判断语句在二维表数据结构中能够直接统计较大流量或频次的数据流的信息,而不需要对所有数据流的信息进行统计,再采用复杂的计算方式分离出较大流量或频次的数据流。
S350,根据更新后的统计信息进行异常数据流的检测。
可选地,若要检测上述数据包所属的第一数据流是否为异常数据流,可以根据第一桶中更新后的统计信息对该第一数据流的流量或频次进行估计;然后根据估计值判断第一数据流是否为异常数据流。
可选地,在一段时间周期末,若要检测二维表数据结构中某个第二桶内的记录的数据流是否为异常数据流,则应该与该第二桶内记录的数据流具有相同键值的数据包的键值映射到二维表数据结构中每行对应的某个第三桶中,并根据映射后的第三桶中的统计信息对流量和频次进行估计,再根据估计值判断数据流是否为异常数据流。应理解,第二桶与第三桶可能相同也可能不相同,也就是说,映射后的第三桶中所记录的数据流可能并不是之前第二桶中记录的数据流,即第三桶中记录的数据流可能不是要检测的数据流。但可以根据映射后第三桶内的统计信息对要检测的数据流的频次或流量进行估值。详细检测过程将在下文进行详细描述。
根据本申请实施例,能够在PISA架构上实现对异常数据流低内存、高精度的检测。
下面将结合附图,对本申请实施例涉及的二维表数据结构、统计信息的更新算法和检测算法进行详细描述。
图5是本申请实施例提供的一种二维表数据结构示例图。如图5所示,二维表数据结构是一个d×w的二维表,该二维表有d行,每行包含w个桶以及一个独立的哈希函数。以第一桶B(i,j)为例,该第一桶中当前的统计信息包括三个元素Vi,j、Ki,j和Ci,j;其中,i,j用于指示第一桶位于二维表数据结构中的第i行的第j列。
应理解,本申请实施例中,当前的统计信息表示第一桶中的统计信息还没有根据新数据包进行更新的统计信息,也就是说,当前的统计信息用来记录第一桶中的统计信息在根据新数据包进行更新之前,在第一桶中具有较大流量或频次的第二数据流的统计信息。
可选地,在进行频次统计时,Vi,j表示截至当前映射到所述第一桶中所有数据包的总频次,Ki,j表示第二数据流的键值即第一桶中当前记录的第二数据流的键值,Ci,j表示所述第二数据流的频次的投票数即第一桶中当前记录的第二数据流的频次的投票数。在进行流量统计时,Vi,j表示截至当前映射到所述第一桶中的所有数据包的总流量,Ki,j表示第二数据流的键值即第一桶中当前所记录的第二数据流的键值,Ci,j表示第二数据流的流量的投票数即第一桶中当前记录的第二数据流的流量的投票数。
其中,Ci,j可以看做是当前记录的第二数据流的计数值,在根据新数据包更新当前统计信息的过程中,能够通过Ci,j和数据包的vx值判断第一桶中当前记录的第二数据流是要保留还是要被替换成第一数据流。
另外,在本申请实施例中,将当前第一桶B(i,j)中能够记录的数据流记为majority数据流,应理解,该majority数据流是指频次或流量超过当前桶中的总数据流的频次或流量的50%的数据流。应理解,在数据包的键值x映射之前,第一桶中当前所记录的第二数据流就是当前的majority数据流,Ki,j表示当前的majority数据流的键值。当数据包的键值x映射到第一桶中进行频次或流量更新时,若所属第一数据流的数据包的键值x与第二数据流的键值Ki,j不匹配,但该数据包的频次或流量值vx超过第一桶中所记录的第二数据流的频次或流量的投票数,也就是超过了当前桶中的总数据流的频次或流量(该数据包的频次或流量值vx与桶中所记录的第二数据流投票数之和)的50%,则该桶中可以记录的数据流为第一数据流,即此时第一数据流就成为新的majority数据流,否则相反。但应理解,majority数据流并不等于最终要检测的异常数据流,也就是说majority数据流仅仅是作为一个统计数据。在进行异常数据流检测时,还需要根据统计数据计算某个数据流的估计值,再进行异常数据流的检测。
基于上述二维表数据结构,键值的匹配过程可以按照如下方式进行:在接收到数据包的键值x时,二维表数据结构中每行对应的哈希函数将该数据包的键值x对应的多个变量对依次映射到每行的第一桶中,在映射完之后与桶内记录的当前的majority数据流(第二数据流)的多个变量对进行匹配。如果多个变量对都完全相同,则认为该数据包是所记录的majority数据流;如果不完全相同,则认为该数据包的键值x不是所记录的majority数据流。
进一步地,结合键值匹配结果,可以按照图6或图7所示更新算法的流程图对第一桶中的三个元素进行更新。在本申请实施例中,可以使用多步骤判断语句在PISA的多个阶段上对上述第一桶中当前的统计信息进行更新。
可选地,在一种实现方式中,图6是本申请实施例提供的一种数据流的频次更新算法的示例性流程图。
在接收到新数据包时,二维表数据结构中每行对应的哈希函数将该数据包的键值x分别映射到每行的第一桶(B(i,j))中。同时将该数据包的频次vx=1作为输入,对第一桶中的三个元素Vi,j、Ki,j和Ci,j进行更新。其中,Vi,j表示截至当前映射到所述第一桶中所有数据包的总频次,Ki,j表示所述第一桶中当前记录的第二数据流的键值,Ci,j表示所述第一桶中当前记录的第二数据流的频次的投票数。
应理解,在该实施例中,根据匹配结果,在所述PISA的多个阶段上对第一桶中当前的统计信息进行更新占用PISA上的两个阶段,包括:阶段一和阶段二;阶段一和阶段二为PISA上的多个阶段中相邻的两个阶段。其中,在阶段一中对Vi,j进行更新,在阶段二中对Ki,j和Ci,j进行更新。
如图6所示,该频次更新方法600包括S610-S640,其中,S610在阶段一上进行,S620-S640在阶段二上进行。下面将结合附图对频次更新过程进行详细的描述。
在阶段一上,执行步骤S610,更新Vi,j=Vi,j+1。
该步骤是对映射到第一桶中的所有数据包总频次的更新。应理解,在新的数据包的键值x被映射到第一桶中时,无论键值x与第一桶中的第二数据流的键值是否匹配,都需要对第一桶中的总频次Vi,j进行更新。
应理解,在本实施例中,第一桶中当前记录的第二数据流为第一桶内当前具有较大频次的数据流,即上述的majority数据流。
在阶段二上执行步骤S620-S640,进行多步骤判断。
S620,若Ki,j=x或Ci,j=0,更新Ci,j=Ci,j+1,否则,转S630。
S630,若Ki,j≠x且Ci,j≠0,更新Ci,j=Ci,j-1。
S640,若Ki,j≠x且Ci,j=0,更新Ki,j=x。
具体地,步骤S620包括两种情况:在一种情况中,若数据包的键值x与第一桶中当前记录的第二数据流的键值Ki,j匹配,无论第一桶中当前记录的第二数据流的投票数Ci,j是否为0都更新Ci,j=Ci,j+1;在另一种情况中,若第一桶中当前记录的第二数据流的投票数Ci,j为0,无论数据包的键值x与第一桶中当前记录的第二数据流的键值Ki,j是否匹配,都更新Ci,j=Ci,j+1。在第二种情况中,当第二数据流的投票数Ci,j为0时,如果数据包的键值x与第一桶中当前记录的第二数据流的键值Ki,j匹配,则更新Ci,j=Ci,j+1,即意味着第二数据流记录的投票数增加1;如果数据包的键值x与第一桶中当前记录的第二数据流的键值Ki,j不匹配,也更新Ci,j=Ci,j+1,是因为此时该数据包的频次为1,而第二数据流的投票数为0,那么该数据包的频次(数据包的频次为1)超过了此时第一桶中记录的总数据流频次总和的50%(第一桶中记录的总数据流的频次总和为数据包的频次和第二数据流的频次之和1;总数据流频次总和的50%即0.5),也就意味着此时该数据包所属的第一数据流才是当前第一桶中需要记录的majority数据流,因此在该步骤S620中先对数据包所属第一数据流的投票数加1,然后在后续步骤S640中再对键值进行更新Ki,j=x。应理解,上述情况中,对数据包投票数的更新和键值的更新分别通过步骤S620和S640来完成是因为受PISA架构的限制,一个ALU运算最多只能处理一对(有状态)变量,并且一般只支持加减法这一类的简单运算。
如果不符合Ki,j=x或Ci,j=0,则执行步骤S630,更新Ci,j=Ci,j-1。具体地,若数据包的键值x与第一桶中当前记录的第二数据流的键值Ki,j不匹配且Ci,j≠0,更新Ci,j=Ci,j-1。应理解,这种情况中,数据包并不是第一桶中当前所记录的第二数据流,因此数据包的进入会给第二数据流在计数时投一个反对票,即将第二数据流的投票数减1.
还应理解,通常为了保证PISA每个阶段上ALU的延时在可接受范围(低于1GHz),在部署更新算法时,每个阶段上最多只允许2层的若-否则(if-else)分支,以此来保证PISA的线速。
在本实施例中,阶段二中,步骤S620、S630为一个if-else分支,步骤S640是一个if分支,因此符合要求,该算法能够保证PISA的线速。而且步骤S620、S630和S640会执行其中1个或2个,且每个步骤只会用到1个ALU,S610用到1个ALU,因此频次更新算法最多需要用到3个ALU。
可选地,在另一种实现方式中,图7是本申请实施例提供的一种数据流的流量更新算法的示例性流程图。
在接收到新数据包时,二维表数据结构中每行对应的哈希函数将该数据包的键值x分别映射到每行的第一桶(B(i,j))中。同时将该数据包的流量vx作为输入,对第一桶中的三个元素Vi,j、Ki,j和Ci,j进行更新。其中,Vi,j表示截至当前映射到所述第一桶中所有数据包的总流量,Ki,j表示所述第一桶中当前记录的第二数据流的键值,Ci,j表示所述第一桶中当前记录的第二数据流的流量的投票数。
应理解,在本实施例中,会对键值不匹配的数据包进行选择性重新发包。关于重新发包需要满足的条件将在具体实现步骤中进行详细的描述。
可选地,数据包不是重发的数据包,根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新占用PISA的三个阶段,包括:阶段一、阶段二和阶段三;阶段一、阶段二和阶段三为PISA上的多个阶段中相邻的三个阶段。其中,在阶段一中对Vi,j进行更新,在阶段二中对Ci,j进行更新,在阶段三中对数据包进行重发操作。
若数据包是重发的数据包,对第一桶中当前的统计信息进行更新占用PISA的两个阶段,包括:阶段一和阶段二;阶段一和阶段二为PISA上的多个阶段中相邻的两个阶段。其中,在阶段一和阶段二中分别对Ci,j和Ki,j进行更新。
如图7所示,该流量更新方法700包括S710-S780,下面将结合附图对流量更新过程进行详细的描述。
S710,判断数据包是否为重发的数据包。
应理解,本实施例中,在第一桶接收到数据包时,首先要判断该数据包是否为重发的数据包,若不是重发数据包则转S720;否则转S770。
具体地,若该数据包不是重发数据包,则按照步骤S720-S760所示算法在PISA的三个阶段上进行流量更新。
在阶段一上,执行步骤S720,更新Vi,j=Vi,j+vx
该步骤是对映射到第一桶中的所有数据包总流量的更新。应理解,在新的数据包的键值x被映射到第一桶中时,若判断出该数据包不是重发数据包,此时无论键值x与第一桶中的第二数据流的键值是否匹配,都需要对第一桶中的总流量Vi,j进行更新。
应理解,在本实施例中,第一桶中当前记录的第二数据流为第一桶内当前具有较大流量的数据流,即上述的majority数据流。
在阶段二上执行步骤S730-S750,进行多步骤判断。
S730,若Ki,j=x,更新Ci,j=Ci,j+vx,否则,转S740。
S740,若Ki,j≠x且Ci,j≥vx,更新Ci,j=Ci,j-vx
S750,若Ki,j≠x且Ci,j<vx,指示重发数据包。
具体地,如果数据包的键值x与第一桶中当前记录的第二数据流的键值Ki,j匹配,说明该数据包所属的数据流与当前第一桶中所记录的第二数据流相同,则增加第一桶中第二数据流的投票数Ci,j=Ci,j+vx。如果数据包的键值x与第一桶中当前记录的第二数据流的键值Ki,j不匹配,说明该数据包所属的数据流与当前第一桶中所记录的第二数据流不相同,此时需要进一步将第一桶中记录的第二数据流的投票数Ci,j与数据包的流量值vx进行比较。
如果Ci,j≥vx,说明第二数据流的流量在当前第一桶中占多数,此时数据包的进入相当于给第二数据流在计数时投了一个大小为vx的反对票,因此更新Ci,j=Ci,j-vx。如果Ci,j<vx,说明数据包的流量在当前第一桶中占多数,也就意味着此时该数据包所属的第一数据流才是当前第一桶中需要记录的majority数据流,也就意味着需要对第一桶中的键值和投票数进行更新。但受PISA架构的限制,每个阶段上的ALU运算能力有限。因此为了避免影响PISA的线速,在该阶段中,仅生成指示信息以指示对数据包执行重发操作,在具体算法中该指示信息可以为:repass=1。
在阶段三上执行步骤S760,对数据包执行重发操作。
具体地,在阶段三上,若所述指示信息指示对所述数据包执行重发操作即repass=1时,对该数据包进行重新发包操作。
若该数据包是重发数据包(repass=1),则按照步骤S770-S780所示算法在PISA的两个阶段上进行流量的更新。
在阶段一上执行步骤S770,更新Ci,j=vx-Ci,j
在阶段二上执行步骤S780,更新Ki,j=x。
其中,当Ci,j<vx时,意味着该数据包所属的第一数据流才是当前第一桶中需要记录的majority数据流,此时需要对键值和投票数进行更新,之前记录的第二数据流的投票数Ci,j相当于是第一数据流在计数时的反对票,因此更新Ci,j=vx-Ci,j
因此,经过更新后,Ci,j用来表示数据包所属的第一数据流的投票数,Ki,j表示数据包的键值也就是第一数据流的键值。
应理解,在本实施例中,不限定上述两个阶段的更新顺序。
还应理解,通常为了保证PISA每个阶段上ALU的延时在可接受范围(低于1GHz),在部署更新算法时,每个阶段最多只允许2层的若-否则(if-else)分支,以此来保证PISA的线速。
在本实施例中,对于非重发数据包的情景,示例性地,在阶段二上,步骤S730、S740为一个if-else分支,S750是一个if分支,第三阶段,也只有一个if分支,因此均符合要求,该算法能够保证PISA的线速。而且执行S720用到一个ALU,以及步骤S730、S740和S750只会执行其中1个,也就是会用到1个ALU,S760依靠指令执行不需要ALU,因此共需要2个ALU。重发数据包场景,执行步骤S770、S780共会用到2个ALU,因此,流量更新算法共需要占用PISA阶段的2个ALU。
还应理解,在本实施例中,对于键值不匹配的数据包会进行选择性重发。而不是对所有不匹配的数据包都进行重发。从而能够在提高检测精度的同时,避免PISA的线速降低。
综上所述,本申请实施例的方案使用简单的判断语句对频次或流量进行更新,并将这些简单的判断语句分配到PISA的不同阶段,而不是使用复杂的运算,从而能够避免PISA的线速降低。并且,对于键值不匹配的数据流进行选择性重新发包,即对流量或频次比当前桶中所记录数据流的投票数大的数据包进行重新发包,使得检测精度提高。
可选地,上述数据流的频次更新算法和流量更新算法通常是分开使用的,如果需要进行频次的统计,就采用频次更新算法;如果要进行流量的统计,就采用流量更新算法;如果想要同时进行流量和频次的统计,就需要在PISA上部署两个二维表数据结构,在一个表采用频次更新算法对频次进行统计;采用流量更新算法对流量进行统计。
下面以104位的五元组为例,结合键值匹配对上述流量更新过程所占用的PISA阶段数以及在每个阶段上的运算进行描述。
应理解,对于非重新发包场景,键值匹配过程和流量更新过程共占用PISA上的5个阶段。
在具体实现过程中,首先将104位的五元组的键值分解成两个变量对(x1,x2)和(x3,x4)并依次被映射到第一桶中时。
在阶段一中,更新Vi,j=Vi,j+vx
在阶段二中,进行键值的匹配,比较(x1,x2)和(k1,k2)是否相同。
应理解,PISA中一个阶段最多能处理64位的变量对,因此要将其进行分解成两个变量对分别进行匹配,该过程已经在上文中进行了详细描述,这里不再赘述
在阶段三中,进行键值的匹配,比较(x3,x4)和(k3,k4)是否相同。
在阶段四中,执行上述S730-S750。
在阶段五中,执行上述S760。
应理解,对于重发场景,只需进行键值的更新和流量的更新操作即可。但对于104位的五元组的键值x更新时,需要占用PISA的两个阶段对两个变量对分别进行更新。因此,对于重发场景,需要占用PISA的三个阶段。
在阶段一中,将(k1,k2)更新为(x1,x2)。
在阶段二中,将(k3,k4)更新为(x3,x4)。
在阶段三中,按照步骤S770更新Ci,j=vx-Ci,j
应理解,在本实施例中,不限定上述三个阶段的更新顺序。
本申请实施例能够基于上述频次或流量的更新算法对较大频次或流量的数据流进行统计。并在某个时间周期末,如果要判断二维表中所记录的某个数据流是否为异常数据流,则要先将这个数据流的某个数据包的键值通过哈希函数映射到二维表数据结构中的每行的某个对应的桶中,根据每行对应桶中统计信息对其频次或流量进行估计,再根据估计值判断是否为异常数据流。
示例性地,以第一数据流的检测为例对异常检测算法进行详细描述。应理解,如果要检测上述第一数据流是否为异常数据流,则要先将第一数据流的某个数据包的键值x通过每行的哈希函数映射到每行的第一桶中,然后将数据包的键值x与第一桶中的第二数据流的键值进行匹配,再根据匹配结果对第一数据流的频次或流量进行估计,并根据估计值判断第一数据流是否为异常的数据流。为便于描述,在本实施例中以第一桶B(i,j)为例,但应理解,在实际检测时,需要使用每行对应的第一桶中的统计值进行估计。
还应理解,当键值x的长度大于一定阈值时,还可以执行键值分解操作,具体键值分解与匹配过程可以参考上面的描述,不再赘述。
图8是本申请实施例提供的一种异常检测算法的示例性流程图。如图8所示,具体异常检测算法800包括步骤S810-S840。
S810,若Ki,j=x,估计值Si(x)=wVi,j+(1-w)Ci,j,否则转步骤S820。
其中,w为Vi,j的权重参数,1-w为Ci,j的权重参数,且0≤w≤1。
具体的,如果数据包的键值x与第一桶中的第二数据流的键值Ki,j匹配,则该桶中最终记录的数据流为第一数据流,也说明这个第一桶最终记录的投票数Ci,j是投给第一数据流。但又由于在整个时间周期内进行统计的过程中,Ci,j会受到其他被映射到该桶中的非第一数据流的键值的影响,所以在估计第一数据流的频次或流量时,要综合考虑Ci,j值和Vi,j值。在本实施例中,采用对Ci,j和Vi,j进行加权求和的方式,即Si(x)=wVi,j+(1-w)Ci,j。示例性地,当w=0.5时,该第一数据流的频次或流量的估计值可以按照公式Si(x)=(Vi,j+Ci,j)/2进行计算,相当于取Ci,j和Vi,j的平均值。
S820,若Ki,j≠x,估计值Si(x)=wVi,j-(1-w)Ci,j
具体地,如果数据包的键值x与第一桶中的第二数据流的键值Ki,j不匹配,则该桶中记录的第二数据流不是第一数据流,说明该桶最终记录的投票数Ci,j不是投给第一数据流的。但在整个时间周期内进行统计的过程中,Ci,j值会受到被映射进来的第一数据流的数据包的影响,所以要综合考虑Ci,j值和Vi,j值。在本实施例中,采用对Ci,j和Vi,j进行加权求差的方式,即Si(x)=wVi,j-(1-w)Ci,j。示例性地,当w=0.5时,该第一数据流的频次或流量的估计值可以按照公式Si(x)=(Vi,j-Ci,j)/2进行计算。
S830,第一数据流的频次或流量的估计值为S(x)=min1≤i≤d{Si(x)}。
应理解,第一数据流的某个数据包的键值x是通过二维表数据结构中每行的哈希函数映射到每行的第一桶中的,在估计时每行的第一桶都会对第一数据流有一个频次或流量的估计值。
在本申请实施例中,将所有第一桶中的最小的估计值作为对第一数据流的频次或流量的最终的估计值。其中,d为二维表数据结构的行数。应理解,上述估计值的计算方式仅仅作为一种示例,在实际应用中,也可以采取现有技术中的其他计算方式进行估计,S(x)的取值也是一种示例,在实际使用中,也可以采用平均的方式。
在得到第一数据流的频次或流量的估计值后,按照步骤S840对其是否属于异常数据流进行判断。
S840,若
Figure BDA0002521078210000161
Figure BDA0002521078210000162
第一数据流为异常数据流。
应理解,如果
Figure BDA0002521078210000163
则第一数据流是大流量对象;D(x)表示第一数据流在两个时期内估计值S(x)的差异,即变化值,如果
Figure BDA0002521078210000164
则第一数据流是大变化对象。应理解,当第一数据流为大流量对象或大变化对象时,就可以认为第一数据流为异常数据流。
其中,给定第四阈值
Figure BDA0002521078210000165
S为一个时期周期末二维表数据结构中记录的所有数据流的频次或流量的估计值的总和;即,在一个时间周期末,将二维表所有桶中记录的数据流的键值重新分别通过哈希函数一个个映射到对应的桶中,分别计算所有数据流频次或流量的估计值,然后对所有数据流的估计值求和得到S。D为两个时间周期末二维表数据结构中记录的所有数据流的频次或流量的总和的变化值。
为清楚描述本申请实施例的技术方案所能达到的效果,特通过以下实验和统计数据予以说明。
一方面,本申请实施例在进行频次更新算法时,不需要重新发包,在进行流量更新的时,需要采用选择性重新发包机制。为验证流量更新算法进行检测时采用该机制不会对PISA线速产生较大影响,特设置实验在两个公开网络流量数据集上进行检测。
具体地实验设置为:使用可编程芯片Tofino,在两个服务器的端口间进行数据传输;分别在两个数据集(CAIDA16和CAIDA18)中随机抽取50个时长为1秒、10秒、20秒、30秒、60秒的数据包作为输入。
进一步地,通过现有方案和本申请方案分别进行数据流的检测,获得本申请方案需要重新发包的比率,并获得在不同方案下采用流量更新算法检测时PISA的吞吐量。
具体地,采用本申请实施例方案,对于时长为1秒的数据包,需要重新发包的比率低于5%,而且随着数据包时长的增大,需要重新发包的比率不断降低,对于时长为于60秒的数据包,需要重新发包的比率低于2.5%。而且,实验验证,分别在数据集CAIDA16和CAIDA18上进行试验时,采用现有方案检测时PISA吞吐量分别为96.94%和98.15%;采用本申请实施例的方案检测时PISA吞吐量分别为99.95%和99.95%。应理解,吞吐量指PISA在单位时间内成功地传送数据包的数量,用来衡量算法是否是高效的。
可见,采用本申请实施例的流量更新算法进行检测时需要重新发包的比率较低,并且对线速的影响较低。又因为,本申请实施例采用频次更新算法进行检测时,不需要重新进行发包,因此不会对线速产生影响。
另一方面,为了与现有更新算法的性能进行对比,采用与上述同样的设备,在公开网络流量数据集上进行检测对比试验。发现采用本申请的频次更新算法或流量更新算法进行检测时比现有方案的效果好。具体地,准确率、召回率、F1分数(准确率和召回率的加权调和平均)都接近于1,误差率在0.01以下。其中,准确率指算法预测的结果中大流量数据流占所有公开数据集报导的大流量数据流的比例;召回率指算法预测的结果中大流量数据流占所有真正的数据流的比例;误差指测试周期内,数据流估计的误差比例。
又一方面,对本申请实施例中的频次和流量更新算法和现有更新算法在内存消耗、占PISA阶段数量、PISA上的动作使用数量、ALU运算数量和每个阶段之间传输的信息大小几个方面进行对比,如下表所示。
Figure BDA0002521078210000171
容易看出,在进行异常数据流检测时,采用本申请频次或流量更新算法内存消耗为64KiB,占PISA总内存空间的0.52%,采用现有技术算法内存消耗为160KiB,占PISA总内存空间的1.25%;本申请频次更新算法只需要使用PISA上的2个阶段就可以进行频次的更新,占PISA总阶段数量的16.6%,流量更新算法只需要使用PISA上的3个阶段就可以进行频次的更新,占PISA总阶段数量的25%,而现有技术频次或流量更新算法需要使用8个阶段,占总阶段数量的66.6%;本申请频次更新算法只需要使用PISA上的3个动作,本申请流量更新算法只需要使用PISA上的5个动作,现有频次或流量更新算法需要使用15个,应理解,PISA的动作用于指示PISA在收到匹配的数据包后应该如何对其进行处理;在检测每一个数据包的过程中,采用本申请频次更新算法最多需要进行3个ALU运算(加法(或减法:投票数C值的加减运算)以及赋值操作:键值的更新),占PISA允许的ALU运算数量的6.25%,流量更新算法仅需要进行2个ALU运算,占PISA允许的ALU运算数量的4.17%,而现有算法需要进行6个ALU运算;采用本申请频次或流量更新算法在每个阶段之间传输的信息大小为88字节,占PISA允许的最大传输大小的11.5%,现有算法在每个阶段之间传输的信息大小为117字节,占PISA允许的最大传输大小的15.2%。从上述统计可以看出,本申请实施例的更新算法在资源消耗上明显低于现有方案。
综上所述,采用本申请实施例的方案可以将算法成功的部署到PISA中,实现了占用更少内存空间、更少的ALU运算的同时,又保证了更高的检测精度;而且,对数据包的重发既不是随机重发,也不是全部重发,而是根据算法的判断进行选择性重发。因此采用本申请实施例的方案对于异常数据流的检测不会产生漏报,检测精度较高,而且又能避免在全部重发时PISA的线速降低。
图9是本申请实施例提供的一种异常数据流检测装置图,该装置900应用在部署有二维表数据结构且包括多个阶段的协议无关交换机架构PISA上,该装置包括:处理单元910,该处理单元910用于执行上述各种方法中的各个步骤,例如,方法300、方法600、方法700和方法800中的各个步骤。
可选地,该装置900还可以包括获取单元920,用于获取数据包。
图10是本申请实施例提供的一种异常数据流检测装置的硬件结构示例性框图。该装置1000(该装置1000具体可以是一种计算机设备)包括存储器1010、处理器1020、通信接口1030以及总线1040。其中,存储器1010、处理器1020、通信接口1030通过总线1240实现彼此之间的通信连接。
存储器1010可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器1010可以存储程序,当存储器1010中存储的程序被处理器1020执行时,处理器1020用于执行本申请实施例的检测方法的各个步骤。
处理器1020可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本申请方法实施例的检测方法。
处理器1020还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的预测方法的各个步骤可以通过处理器1020中的硬件的集成逻辑电路或者软件形式的指令完成。
上述处理器1020还可以是通用处理器、数字信号处理器(digital signalprocessing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1010,处理器1020读取存储器1010中的信息,结合其硬件完成本申请实施例的时间序列的预测装置中包括的单元所需执行的功能,或者执行本申请方法实施例的时间序列的预测方法。
通信接口1030使用例如但不限于收发器一类的收发装置,来实现装置1000与其他设备或通信网络之间的通信。
总线1040可包括在装置1000各个部件(例如,存储器1010、处理器1020、通信接口1030)之间传送信息的通路。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
需要说明的是,本文中涉及的第一、第二、第三或第四等各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (40)

1.一种异常数据流的检测方法,其特征在于,所述方法应用在部署有二维表数据结构且包括多个阶段的协议无关交换机架构PISA上,所述方法包括:
从第一数据流中提取数据包的键值;
将所述数据包的全部键值映射到所述二维表数据结构中每行的第一桶中;
将所述数据包的全部键值与所述第一桶中当前记录的第二数据流的键值进行匹配;
根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新,所述当前的统计信息包括第二数据流的信息,所述第二数据流的信息包括所述第二数据流的键值,更新后的统计信息包括所述第一数据流和所述第二数据流中频次或流量更多的数据流的信息;
根据所述更新后的统计信息进行异常数据流的检测。
2.根据权利要求1所述的检测方法,其特征在于,在所述将所述数据包的全部键值映射到所述二维表数据结构中每行的第一桶中之前,所述方法还包括:
将所述数据包的键值分解成K个变量对,所述K个变量对中的每个变量对的键值长度不超过第一阈值,K为正整数且K>1;
所述将所述数据包的全部键值映射到所述二维表数据结构中每行的第一桶中,包括:
将所述K个变量对依次映射到所述第一桶中;
所述将所述数据包的全部键值与所述第一桶中当前记录的第二数据流的键值进行匹配,包括:
将所述K个变量对分别与所述第二数据流的键值的相对应的部分在所述PISA的K个阶段中依次进行匹配。
3.根据权利要求2所述的检测方法,其特征在于,所述将所述K个变量对分别与所述第二数据流的键值的相对应的部分在所述PISA的K个阶段中依次进行匹配,包括:
将所述第二数据流的键值分解成K个变量对,且所述第二数据流的键值所分解的K个变量对中的每个变量对的键值长度与所述数据包的键值所分解的K个变量对中相对应的变量对的键值长度相等;
将所述数据包的键值所分解的K个变量对分别与所述第二数据流的键值所分解的相对应的K个变量对在所述PISA的K个阶段中依次进行匹配;
若所述数据包的键值所分解的K个变量对与所述第二数据流的键值所分解的K个变量对都匹配,则所述数据包的键值与所述第二数据流的键值匹配;
若所述数据包的键值所分解的K个变量对与所述第二数据流的键值所分解的K个变量对不完全匹配,则所述数据包的键值与所述第二数据流的键值不匹配。
4.根据权利要求1-3中任一项所述的检测方法,其特征在于,所述第一桶中当前的统计信息包括三个元素Vi,j、Ki,j和Ci,j
其中,i,j用于指示所述第一桶位于所述二维表数据结构中的第i行的第j列,Vi,j表示截至当前映射到所述第一桶中所有数据包的总频次,Ki,j表示所述第二数据流的键值,Ci,j表示所述第二数据流的频次的投票数。
5.根据权利要求4所述的检测方法,其特征在于,所述根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新占用PISA上的两个阶段,包括:阶段一和阶段二;所述阶段一和阶段二为所述PISA上的所述多个阶段中相邻的两个阶段。
6.根据权利要求5所述的检测方法,其特征在于,在所述阶段一的更新包括:
更新Vi,j=Vi,j+1。
7.根据权利要求6所述的检测方法,其特征在于,在所述阶段二的更新包括:
若所述数据包的键值与所述第二数据流的键值匹配或者Ci,j=0,更新Ci,j=Ci,j+1;
若所述数据包的键值与所述第二数据流的键值不匹配且Ci,j≠0,更新Ci,j=Ci,j-1;
若所述数据包的键值与所述第二数据流的键值不匹配且Ci,j=0,更新Ki,j=x,其中,x为所述数据包的键值。
8.根据权利要求1-3中任一项所述的检测方法,其特征在于,所述第一桶中当前的统计信息包括三个元素Vi,j、Ki,j和Ci,j
其中,i,j用于指示所述第一桶位于所述二维表数据结构中的第i行的第j列,Vi,j表示截至当前映射到所述第一桶中的所有数据包的总流量,Ki,j表示所述第二数据流的键值,Ci,j表示所述第二数据流的流量的投票数。
9.根据权利要求8所述的检测方法,其特征在于,所述数据包不是重发数据包,所述根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新占用PISA的三个阶段,包括:阶段一、阶段二和阶段三;所述阶段一、阶段二和阶段三为所述PISA上的所述多个阶段中相邻的三个阶段。
10.根据权利要求9所述的检测方法,其特征在于,在所述阶段一的更新包括:
更新Vi,j=Vi,j+vx,其中,vx表示所述数据包的流量值。
11.根据权利要求10所述的检测方法,其特征在于,在所述阶段二的更新包括:
若所述数据包的键值与所述第二数据流的键值匹配,更新Ci,j=Ci,j+vx
若所述数据包的键值与所述第二数据流的键值不匹配,且Ci,j≥vx,更新Ci,j=Ci,j-vx
若所述数据包的键值与所述第二数据流的键值不匹配,且Ci,j<vx,生成指示信息,所述指示信息用于指示对所述数据包执行重发操作。
12.根据权利要求10所述的检测方法,其特征在于,在所述阶段三的更新包括:若所述指示信息指示对所述数据包执行重发操作,对所述数据包执行重发操作。
13.根据权利要求8所述的检测方法,其特征在于,所述数据包是重发数据包,所述根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新占用PISA的两个阶段,包括:阶段一和阶段二;所述阶段一和阶段二为所述PISA上的所述多个阶段中相邻的两个阶段。
14.根据权利要求13所述的检测方法,其特征在于,在所述阶段一的更新包括:
更新Ci,j=vx-Ci,j
15.根据权利要求14所述的检测方法,其特征在于,在所述阶段二的更新包括:
更新Ki,j=x,其中,x为所述数据包的键值。
16.根据权利要求4或8所述的检测方法,其特征在于,所述根据所述更新后的统计信息进行异常数据流的检测包括:
根据所述更新后的统计信息,计算所述第一数据流的流量或频次的估计值;
根据所述估计值判断所述第一数据流是否为所述异常数据流。
17.根据权利要求16所述的检测方法,其特征在于,所述根据所述更新后的统计信息,计算所述第一数据流的流量或频次的估计值,包括:
若所述数据包的键值与所述更新后的统计信息中的数据流的键值匹配,所述位于所述二维表数据结构中的第i行的第j列的第一桶中的第一数据流的频次或流量的估计值为Si(x)=wVi,j+(1-w)Ci,j
若所述数据包的键值与所述更新后的统计信息中的数据流的键值不匹配,所述位于所述二维表数据结构中的第i行的第j列的第一桶中的第一数据流的频次或流量的估计值为Si(x)=wVi,j-(1-w)Ci,j
所述第一数据流的频次或流量的估计值为S(x)=min1≤i≤d{Si(x)},
其中,w为Vi,j的权重参数,1-w为Ci,j的权重参数,且0≤w≤1,d为二维表数据结构的行数。
18.根据权利要求17所述的检测方法,其特征在于,所述根据所述估计值判断所述第一数据流是否为所述异常数据流包括:
在一个时间周期末时,若所述S(x)大于第二阈值或者在两个时间周期末所述S(x)的变化值大于第三阈值时,所述第一数据流为所述异常数据流。
19.根据权利要求18所述的检测方法,其特征在于,所述第二阈值为
Figure FDA0002521078200000031
所述第三阈值为
Figure FDA0002521078200000032
其中,
Figure FDA0002521078200000033
为第四阈值,S为一个时期周期末二维表数据结构中记录的所有数据流的频次或流量的估计值的总和,D为两个时间周期末二维表数据结构中记录的所有数据流的频次或流量的总和的变化值。
20.一种异常数据流的检测装置,其特征在于,所述装置应用在部署有二维表数据结构且包括多个阶段的协议无关交换机架构PISA上,所述装置包括:
处理单元,用于从第一数据流中提取数据包的键值;
将所述数据包的全部键值映射到所述二维表数据结构中每行的第一桶中;
将所述数据包的全部键值与所述第一桶中当前记录的第二数据流的键值进行匹配;
根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新,所述当前的统计信息包括第二数据流的信息,所述第二数据流的信息包括所述第二数据流的键值,更新后的统计信息包括所述第一数据流和所述第二数据流中频次或流量更多的数据流的信息;
根据所述更新后的统计信息进行异常数据流的检测。
21.根据权利要求20所述的检测装置,其特征在于,在所述将所述数据包的全部键值映射到所述二维表数据结构中每行的第一桶中之前,所述处理单元还用于:
将所述数据包的键值分解成K个变量对,所述K个变量对中的每个变量对的键值长度不超过第一阈值,K为正整数且K>1;
所述将所述数据包的全部键值映射到所述二维表数据结构中每行的第一桶中,包括:
将所述K个变量对依次映射到所述第一桶中;
所述将所述数据包的全部键值与所述第一桶中当前记录的第二数据流的键值进行匹配,包括:
将所述K个变量对分别与所述第二数据流的键值的相对应的部分在所述PISA的K个阶段中依次进行匹配。
22.根据权利要求21所述的检测装置,其特征在于,所述将所述K个变量对分别与所述第二数据流的键值的相对应的部分在所述PISA的K个阶段中依次进行匹配,包括:
将所述第二数据流的键值分解成K个变量对,且所述第二数据流的键值所分解的K个变量对中的每个变量对的键值长度与所述数据包的键值所分解的K个变量对中相对应的变量对的键值长度相等;
将所述数据包的键值所分解的K个变量对分别与所述第二数据流的键值所分解的相对应的K个变量对在所述PISA的K个阶段中依次进行匹配;
若所述数据包的键值所分解的K个变量对与所述第二数据流的键值所分解的K个变量对都匹配,则所述数据包的键值与所述第二数据流的键值匹配;
若所述数据包的键值所分解的K个变量对与所述第二数据流的键值所分解的K个变量对不完全匹配,则所述数据包的键值与所述第二数据流的键值不匹配。
23.根据权利要求20-22中任一项所述的检测装置,其特征在于,所述第一桶中当前的统计信息包括三个元素Vi,j、Ki,j和Ci,j
其中,i,j用于指示所述第一桶位于所述二维表数据结构中的第i行的第j列,Vi,j表示截至当前映射到所述第一桶中所有数据包的总频次,Ki,j表示所述第二数据流的键值,Ci,j表示所述第二数据流的频次的投票数。
24.根据权利要求23所述的检测装置,其特征在于,所述根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新占用PISA上的两个阶段,包括:阶段一和阶段二;所述阶段一和阶段二为所述PISA上的所述多个阶段中相邻的两个阶段。
25.根据权利要求24所述的检测装置,其特征在于,在所述阶段一的更新包括:
更新Vi,j=Vi,j+1。
26.根据权利要求25所述的检测装置,其特征在于,在所述阶段二的更新包括:
若所述数据包的键值与所述第二数据流的键值匹配或者Ci,j=0,更新Ci,j=Ci,j+1;
若所述数据包的键值与所述第二数据流的键值不匹配且Ci,j≠0,更新Ci,j=Ci,j-1;
若所述数据包的键值与所述第二数据流的键值不匹配且Ci,j=0,更新Ki,j=x,其中,x为所述数据包的键值。
27.根据权利要求20-22中任一项所述的检测装置,其特征在于,所述第一桶中当前的统计信息包括三个元素Vi,j、Ki,j和Ci,j
其中,i,j用于指示所述第一桶位于所述二维表数据结构中的第i行的第j列,Vi,j表示截至当前映射到所述第一桶中的所有数据包的总流量,Ki,j表示所述第二数据流的键值,Ci,j表示所述第二数据流的流量的投票数。
28.根据权利要求27所述的检测装置,其特征在于,所述数据包不是重发数据包,所述根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新占用PISA的三个阶段,包括:阶段一、阶段二和阶段三;所述阶段一、阶段二和阶段三为所述PISA上的所述多个阶段中相邻的三个阶段。
29.根据权利要求28所述的检测装置,其特征在于,在所述阶段一的更新包括:
更新Vi,j=Vi,j+vx,其中,vx表示所述数据包的流量值。
30.根据权利要求29所述的检测装置,其特征在于,在所述阶段二的更新包括:
若所述数据包的键值与所述第二数据流的键值匹配,更新Ci,j=Ci,j+vx
若所述数据包的键值与所述第二数据流的键值不匹配,且Ci,j≥vx,更新Ci,j=Ci,j-vx
若所述数据包的键值与所述第二数据流的键值不匹配,且Ci,j<vx,生成指示信息,所述指示信息用于指示对所述数据包执行重发操作。
31.根据权利要求30所述的检测装置,其特征在于,在所述阶段三的更新包括:若所述指示信息指示对所述数据包执行重发操作,对所述数据包执行重发操作。
32.根据权利要求27所述的检测装置,其特征在于,所述数据包是重发数据包,所述根据匹配结果,在所述PISA的多个阶段上对所述第一桶中当前的统计信息进行更新占用PISA的两个阶段,包括:阶段一和阶段二;所述阶段一和阶段二为所述PISA上的所述多个阶段中相邻的两个阶段。
33.根据权利要求32所述的检测装置,其特征在于,在所述阶段一的更新包括:
更新Ci,j=vx-Ci,j
34.根据权利要求33所述的检测装置,其特征在于,在所述阶段二的更新包括:
更新Ki,j=x,其中,x为所述数据包的键值。
35.根据权利要求23或27所述的检测装置,其特征在于,所述根据所述更新后的统计信息进行异常数据流的检测包括:
根据所述更新后的统计信息,计算所述第一数据流的流量或频次的估计值;
根据所述估计值判断所述第一数据流是否为所述异常数据流。
36.根据权利要求35所述的检测装置,其特征在于,所述根据所述更新后的统计信息,计算所述第一数据流的流量或频次的估计值,包括:
若所述数据包的键值与所述更新后的统计信息中的数据流的键值匹配,所述位于所述二维表数据结构中的第i行的第j列的第一桶中的第一数据流的频次或流量的估计值为Si(x)=wVi,j+(1-w)Ci,j
若所述数据包的键值与所述更新后的统计信息中的数据流的键值不匹配,所述位于所述二维表数据结构中的第i行的第j列的第一桶中的第一数据流的频次或流量的估计值为Si(x)=wVi,j-(1-w)Ci,j
所述第一数据流的频次或流量的估计值为S(x)=min1≤i≤d{Si(x)},
其中,w为Vi,j的权重参数,1-w为Ci,j的权重参数,且0≤w≤1,d为二维表数据结构的行数。
37.根据权利要求36所述的检测装置,其特征在于,所述根据所述估计值判断所述第一数据流是否为所述异常数据流包括:
在一个时间周期末时,若所述S(x)大于第二阈值或者在两个时间周期末所述S(x)的变化值大于第三阈值时,所述第一数据流为所述异常数据流。
38.根据权利要求37所述的检测装置,其特征在于,所述第二阈值为
Figure FDA0002521078200000051
所述第三阈值为
Figure FDA0002521078200000052
其中,
Figure FDA0002521078200000053
为第四阈值,S为一个时期周期末二维表数据结构中记录的所有数据流的频次或流量的估计值的总和,D为两个时间周期末二维表数据结构中记录的所有数据流的频次或流量的总和的变化值。
39.一种计算设备,其特征在于,包括:至少一个处理器和存储器,所述至少一个处理器与所述存储器耦合,用于读取并执行所述存储器中的指令,以执行如权利要求1-19中任一项所述的方法。
40.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要1-19中任一项所述的方法。
CN202010490984.1A 2020-06-02 2020-06-02 异常数据流的检测方法和装置 Pending CN113765848A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010490984.1A CN113765848A (zh) 2020-06-02 2020-06-02 异常数据流的检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010490984.1A CN113765848A (zh) 2020-06-02 2020-06-02 异常数据流的检测方法和装置

Publications (1)

Publication Number Publication Date
CN113765848A true CN113765848A (zh) 2021-12-07

Family

ID=78782880

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010490984.1A Pending CN113765848A (zh) 2020-06-02 2020-06-02 异常数据流的检测方法和装置

Country Status (1)

Country Link
CN (1) CN113765848A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115460111A (zh) * 2022-07-26 2022-12-09 西安电子科技大学 基于HINOC协议的Top-k流的统计方法及其系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115460111A (zh) * 2022-07-26 2022-12-09 西安电子科技大学 基于HINOC协议的Top-k流的统计方法及其系统
CN115460111B (zh) * 2022-07-26 2023-07-25 西安电子科技大学 基于HINOC协议的Top-k流的统计方法及其系统

Similar Documents

Publication Publication Date Title
CN109309626B (zh) 一种基于dpdk的高速网络数据包捕获分流及缓存方法
US9787556B2 (en) Apparatus, system, and method for enhanced monitoring, searching, and visualization of network data
CN113487427B (zh) 一种交易风险识别方法、装置及系统
CN109194684B (zh) 一种模拟拒绝服务攻击的方法、装置及计算设备
JP2006279930A (ja) 不正アクセス検出方法及び装置、並びに不正アクセス遮断方法及び装置
Zhou et al. An efficient design of intelligent network data plane
Janabi et al. Convolutional neural network based algorithm for early warning proactive system security in software defined networks
Salih et al. Detection and classification of covert channels in IPv6 using enhanced machine learning
CN113765848A (zh) 异常数据流的检测方法和装置
Kuznetsov et al. Variance analysis of networks traffic for intrusion detection in smart grids
Gao et al. A novel completeness test and its application to side channel attacks and simulators
CN111669411B (zh) 一种工控设备异常检测方法及系统
TWI777766B (zh) 偵測惡意網域查詢行為的系統及方法
CN114362972B (zh) 一种基于流量摘要和图采样的僵尸网络混合检测方法及系统
WO2015105681A1 (en) Apparatus, system, and method for enhanced monitoring, searching, and visualization of network data
Lv et al. Network encrypted traffic classification based on secondary voting enhanced random forest
Sattolo Real-time detection of storage covert channels
Salih et al. New intelligent heuristic algorithm to mitigate security vulnerabilities in IPv6
EP3092771A1 (en) Apparatus, system, and method for enhanced monitoring and interception of network data
Filasiak et al. On the testing of network cyber threat detection methods on spam example
Qureshi et al. Analysis Distributed Denial-of-Service Attack Deploy Deep Learning Techniques
CN115225353B (zh) 兼顾DoS/DDoS洪泛和慢速HTTP DoS的攻击检测方法
CN112839018B (zh) 一种度数值生成方法以及相关设备
Rosay et al. Study of Network IDS in IoT devices
CN114244572B (zh) 一种基于零拷贝报文收集系统的物联网安全网关方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20211207