基于神经网络的入侵检测系统的制作方法

文档序号:16062677发布日期:2018-11-24 12:21阅读:386来源:国知局

本发明涉及计算机硬件加速领域,具体涉及一种入侵检测系统和其设计方法。

背景技术

在大数据时代,互联网相关的应用呈现爆炸式的增长,再加上黑客的攻击和网络病毒的广泛传播,使我们对网络安全提出了更高的要求。为了保护网络不受攻击或至少降低攻击,网络管理员一般会在路由器上使用防火墙。然而,网络管理员的防火墙只能捕获有限的网络攻击行为。因此,为了网络的安全,入侵检测系统在路由器上得到了越来越多的应用。入侵检测系统通过分析网络数据包来检测黑客的攻击和网络病毒。通常,入侵检测系统中存在许多硬件探测器,它们负责实时监测网络数据包,一旦硬件探测器检测到了异常,它就会触发入侵警报。

一般来说,入侵检测系统中最重要的部分是字符串匹配算法。字符串匹配问题是一个计算密集型问题,它将给定的字符串与参考字符串进行比较。入侵检测系统检查到来的数据包,并将它与参考字符串比较,如果匹配,则代表该数据包存在安全隐患,入侵检测系统会根据该隐患对系统的危险程度,将该数据进行处理。然而,随着网络洪流的增加,当前的计算机要处理的数据越来越多,已经不能满足人们在大数据时代的需求,比如,黑客可以很容易地将恶意的网络数据包传入系统,并通过大量的数据包和快速攻击方案来突破防火墙。为保证网络系统的安全,对提高网络入侵系统的吞吐率和速度提出了重大的挑战。

另一方面,神经网络隶属于人工智能领域的连接主义学派,是一种应用类似于大脑神经突触连接的结构进行信息处理的数学模型。20世纪50年代,第一代神经网络——感知机诞生,能够实现线性分类、联想记忆等;20世纪80年代,多层感知机及其训练算法——反向传播算法(backpropagation,bp),因为能够解决线性不可分问题被广泛研究和应用。但是当时较为低下的硬件计算能力和网络训练算法易陷入局部极小等问题,成为制约神经计算方法发展的瓶颈,直到2006年hinton教授开创的“多层结构、逐层学习”的深度学习方法,才使得神经网络的强大计算能力真正发挥出来,并在大数据的时代背景下成为大数据分析领域的一颗璀璨的明星。这种方法在语音识别、图像识别、自然语言处理等方面,已经取得了突破性的成功,以惊人的速度和结果,不断刷新着这些应用领域内的各种标志性纪录。



技术实现要素:

针对上述存在的技术问题以及最新的技术进展,本发明目的是:将神经网络技术应用于入侵检测系统,加快字符串匹配的速度,以满足大数据时代下对系统的要求。

本发明的技术方案是:

一种基于神经网络的入侵检测系统,包括cache模块和神经网络加速器模块,其中cache模块,利用硬件中的时间局部性来捕获冗余,减少对存储资源的需求;神经网络加速器模块用于探测攻击字符串,加速字符串匹配的过程;在此基础上,为了方便用户的使用,本发明提供了统一的编程接口供用户调用该服务。

优选方案中,cache模块利用布隆过滤器来支持并行查询,并扩展了布隆过滤器,设计了可计数的布隆过滤器,并以此为基本单元,多个该基本单元以并联的方式组成最小缓存结构,该方法能够大大的节省fpga片上的存储资源。

优选方案中,神经网络加速器模块,包括总线互联结构、缓存结构和计算引擎三部分构成。

总线互联结构,包括数据总线和控制总线,分别用于数据的传输和命令的传输。

缓存结构,包括输入缓存、输出缓存和权值缓存三部分,分别用于存储神经网络计算过程中输入数据、输出数据和权值数据。

计算单元,包括乘法器和加法器,用于神经网络中的乘加操作。

卷积神经网络中的卷积层和全连接层具有不同的属性,卷积层是计算密集型,而全连接层是访存密集型的,因此,在应用卷积神经网络加速字符串的过程中,我们对卷积层和全连接层使用了不同的优化方法。优选方案中,对于卷积层,我们致力于计算并行,应用了一种方法将卷积计算转化为矩阵乘法计算;对于全连接层,我们致力于减少所需的内存带宽,应用了批处理的方法。

矩阵乘法计算,优选方案中,采用分片设计,将输入矩阵的每一行内部按分片大小进行分片,权值矩阵每一列按照分片大小进行分片,每一次计算都执行输入矩阵中分片大小的数据和权值矩阵中分片大小的数据之间的乘加运算,得到临时的计算结果,当一行计算完毕后,累加得到最终的结果。

优选方案中,神经网络加速器模块有多个计算单元,每个计算单元对应卷积神经网络模型中的一层,各个计算单元之间以流水线的方式进行计算。

由于已经将卷积层和全连接层的计算都统一到了矩阵乘法计算,在此基础上,我们使用了两种不同的矩阵乘法计算模式,在第一种计算模式中,输出矩阵的部分结果和利用分片大小的输入,然后,输出矩阵的部分结果和利用下一个分片大小的输入来更新该部分结果和,在这种模式下,权值矩阵窗口是垂直移动的;在第二种计算模式中,输出矩阵的所有部分结果和都只利用分片大小的输入,然后,输出矩阵的所有部分结果和将利用下一个分片大小的输入来更新部分结果和,在这种模式下,权值矩阵窗口是水平移动的。在优选方案中,这两种计算模式在流水线计算中交替使用。

优选方案中,所述编程接口,包括硬件平台初始化和数据传输。

与现有技术相比,本发明的优点是:

本发明简单易用,对用户透明。本发明设计实现的冗余表机制能够很好的利用硬件的时间局部性,大大减少对片上存储资源的需求。同时,为了提高入侵检测系统的速度和准确率,在本发明中还应用了神经网络方法来加速字符串匹配的过程。本发明的入侵检测系统相对于通用处理器具有高性能、低功耗的特点,能够满足在大数据时代下的对速度和吞吐量的需求。

附图说明

下面结合附图及实施例对本发明作进一步描述:

图1是本实施例的基于fpga的数据中心并行入侵检测系统的体系结构图;

图2是本实施例的入侵检测系统架构图;

图3是本实施例的布隆过滤器结构图;

图4是本实施例的扩展的可计数的布隆过滤器结构图;

图5是本实施例的cache模块详细设计图;

图6是本实施例的矩阵乘法方法计算卷积层图;

图7是本实施例的批处理方法计算全连接层图;

图8是本实施例的流水线计算方法图;

图9是本实施例的神经网络加速器的硬件结构图。

具体实施方式

以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。

本发明实施例中的入侵检测系统包括cache模块和神经网络加速器模块,其中,cache模块利用硬件中的时间局部性来捕获冗余,减少对存储资源的需求;神经网络加速器模块,用于探测攻击字符串,加速字符串匹配的过程。加速器和通用处理器之间的数据通路可以采用pci-e总线协议、axi总线协议等。本发明实施例附图数据通路采用axi总线协议为例说明,但本发明并不限于此。

图1是本实施例的基于fpga的数据中心并行入侵检测系统的体系结构图,在这里,入侵检测系统服务器主要负责模式匹配任务。在执行任务的过程中,部分的任务会加载到fpga加速器上进行加速。前端的入侵检测系统服务器负责数据中心的攻击检测,后端的服务器负责数据库管理。关于入侵检测系统的数据处理,入侵检测系统服务器首先分析应用程序的行为,分析的主要方法是基于神经网络的方法。任务的分配和接口运行在入侵检测系统的软件服务器上,而神经网络方法则运行在fpga的硬件加速器上。

图2是本实施例的入侵检测系统架构图,它包括缓冲区和匹配引擎两部分组成。缓冲区中存储的是等待匹配引擎处理的中间结果。stream表示有效负载,并基于写控制单元将其发送到缓冲区。在匹配引擎中,状态寄存器用于存储冗余字节的最终输出状态。

在每个处理周期的开始,临时寄存器和状态寄存器的组合将发送到cache模块和neuralnetwork模块,此组合表示cache模块的索引,而neuralnetwork模块处理输入状态和数据流。最初,2个select信号和nn_done信号被初始化为0。当cacheline在cache中发生命中时,从冗余表读取的输出状态将被发送到x总线上,同时select信号将被设置为1。同样的,在原来的模块中,遍历完有限状态机后的最终输出状态将被发送到y总线上,同时nn_done信号将被设置为1。select信号和nn_done信号将在en使能信号下进行or运算。当使能信号en为真时,mux单元将根据select信号从中选择x或者y总线上的输入作为输出,并将结果发送到匹配逻辑单元。同时,do_next信号有效,它将结束cache模块和neuralnetwork模块的执行,并开始下一个处理周期。同样地,read_next信号将置位,它将使controller从缓冲区中读入下一周期需要处理的数据。当匹配逻辑单元接收到状态数据时,它将判断该规则是否与有限状态机中已知的攻击行为相匹配。当发生匹配时,它将置位match信号,并直接更新状态寄存器。然后,匹配逻辑进入下一个处理周期。

在最先进的工作中,冗余表都是在软件中用原始的哈希表实现的。当哈希冲突增加时,索引将与表条目中的等效项进行比较。因此,需要将所有的索引存储在内存中。当表格条目增加时,所需的存储资源必然会更大。然而,fpga上的片上存储资源有限,片外访存的延迟又太高。为了解决这个问题,本发明在fpga上设计了一种新的冗余表存储结构。由于入侵检测系统容许一定的误差,以此,本发明使用布隆过滤器来重构cache的存储结构,并对布隆过滤器进行了扩展。

布隆过滤器是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。

图3是本实施例的布隆过滤器结构图,n是集合的大小,k是独立的哈希函数的个数,m是位向量v的位数。f代表出现第一类错误的概率,通过选择合适的m和k的值,可以减少出现第一类错误的概率。在最理想的情况下,假设我们已经选择了最合适的k值,如等式1所示:

则出现第一类错误的概率的计算如等式2所示:

布隆过滤器结构允许如下的操作:

添加元素:将其添加到k个散列函数中,得到k个位置,并将这些位置上的比特位置1。

查询元素:测试它是否在集合中,将其添加到k个散列函数中,得到k个位置。

而想要在布隆过滤器上删除一个元素是不可能的。因为第一类错误是不能够避免的。一个元素映射到k个位置,尽管将这k个位置都置为0足以删除该元素,但是它也删除了其他的元素。

布隆过滤器中使用了大量的哈希函数,这需要大量的硬件资源来实现。在原有的布隆过滤器的基础上,本发明对其进行了扩展,将原来的v数组中的每一个比特位替换位一个计数器,设计了可计数的布隆过滤器。

图4是本实施例的扩展的可计数的布隆过滤器结构图,包括了x和y作为索引。同时,本发明中还维护了一个m大小的数组c,其中的每一个元素ci都是相关联的v数组中第i个位置的计数器。c数组中的每一个元素都用来存储输出状态。当插入一个元素时,相应哈希索引值的每一个计数器都递增。假设字符串集合s中的每个元素都是冗余表的索引,集合中的所有索引的输出状态都被存储起来,然后,集合s中的每个索引都经过哈希操作,并且相应的计数器也累加,接着,入侵检测系统读取集合s中相应的计数器,并将相应索引的输出状态写到对应的数组c中计数器值最小的位置上。冗余配置是通过fpga上的blockram(bram)实现的。

在入侵检测系统的硬件实现中,bram配置为双端口,为了更好的利用这些bram,最佳的k值是2。在本发明中,计数器的大小是3比特,我们使用15位来存储输出状态。因此,该冗余表中每一个条目的大小是18比特。一块bram有36k比特,所以每一个bram能够包含36*1024/18=2048条目,这也就是说,在布隆过滤器中m=2048,k=2,根据等式(1)和等式(2),可以计算得到一块bram能够支持n=(m/k)*ln2=709项,第一类错误出现的概率为(1/22=0.25。图5(a)是本实施例的cache模块的基本单元,在本发明中,我们定义m表示支持项的数量和地址范围的集合,例如m(709,[1...2048]).该基本单元的输入是索引值,输出是最小计数器和对用状态的组合,以及cache命中或者不命中的信号。此外,哈希地址生成器组件中使用的哈希函数彼此不同。通过并联5个这样的基本单元,一个最小的mini-ebf就组成了,如图5(b)所示,它的第一类错误概率f=(1/2)10。在本发明中,我们定义g表示支持项的数量、基本单元数量和地址范围的集合,例如g(709,5,[1...2048])。由于集合s中有20,000项,而每一个mini-ebf能够支持709项,因此总共需要20000/709=29个mini-ebf。

此外,在mini-ebf中,哈希函数的范围受限以地址范围,而哈希函数到一特定地址空间的映射限制对最后的第一类错误的影响可以忽略不计。如图5(c)所示,缓存模块的命中(不命中)信号等价于(a1va2v...a28va29).例如,当位向量(a1,a2,…,a29)等于(1,0,...,0)时,cache模块的输出状态是由mini-ebfg1的输入状态设定的,cache模块相应的命中(不命中)信号是1.

为了提高入侵检测系统的速度和准确率,在本发明中,我们在匹配逻辑中,还应用了neuralnetwork模块。

卷积神经网络中包含很多不同种类的层,它们可以分成两部分:特征提取器和分类器。特征提取器,由多个卷积层构成,加上下抽样层和激励层,用来提取输入的特征,特征提取器的输出连接到分类器的输入上,分类器有多个全连接层组成,分类器用来识别输入归属于哪一类别。

卷积神经网络中的卷积层和全连接层具有不同的属性,卷积层是计算密集型,而全连接层是访存密集型的,因此,在应用卷积神经网络加速匹配逻辑的过程中,本发明对卷积层和全连接层使用了不同的优化方法。对于卷积层,我们致力于计算并行,应用了一种方法将卷积计算转化为矩阵乘法计算;对于全连接层,我们致力于减少所需的内存带宽,应用了批处理的方法。在此基础上,本发明还对整个网络应用了流水线计算的方法。

卷积层的伪代码如下所示,它接收n个特征图作为输入,每个输入特征图被一个大小为k*k的滑动窗口做卷积运算,用来生成一个输出特征图上的一个像素点。其中滑动窗口的步长是s,m个输出特征图将作为下一轮的输入参与运算。

在本发明中,我们通过3维的映射将卷积层的计算转化为矩阵乘法计算。例如,图6是本实施例的矩阵乘法方法计算卷积层图,图6(a)是传统的卷积计算方法,图6(b)是矩阵乘法的卷积计算方法。通过比较,我们能够看到两种方法得到的输出结果是一致的。在图6(b)中,3个特征维度为3*3的输入被重排列为一个(2*2)*(3*2*2)的矩阵。输入特征图中的第一个卷积核窗口2*2的数据被展开并水平排列到输入矩阵,如图6(b)所示。将2*2的卷积核窗口应用到所有的3个输入特征,将得到整个的输入矩阵。6个2*2的卷积核也被重新排列为一个(3*2*2)*(2)的矩阵。最后完成两个矩阵的乘法计算就相当于完成了这一层的卷积计算。需要注意的是,整个输入特征的重排是我们将数据存入fpga片上缓存时完成的,所以能够减少对外部存储器的需求,因为不需要存储整个重新排列的输入矩阵。

全连接层的计算可以看作是矩阵向量乘计算,在本发明中,我们使用分片的方法来完成矩阵乘法的计算,如图7(a)所示。分片的大小是xm,我们首先执行输入数组中区间[x1,xm]与权值数据m*n的计算,得到部分结果和[y1,yn],然后我们利用[xm+1,x2m]作为输入,并于另外的权值数据m*n计算,来更新部分结果和[y1,yn],当所有的输入数据和第一列的权值都完成了计算后,我们就可以得到最终的[y1,yn]。其他的结果可以用相同的方法得到。

由于全连接层占据了大量的内存访问带宽,因此,在本发明中,我们使用批处理的方法来优化全连接层的内存访问。如图7(b)所示,由n个输入数组组成了一个输入矩阵,n可以被当作批处理的大小。在应用批处理方法后,计算增加了n倍,而内存访问没有增加,因此减少了内存访问的带宽。由于需要n个时钟周期完成n*m*n的乘法运算,在这段时间内,加速器需要准备好下一轮计算所需要的数据,因此,n应该不小于用于读取m*n个权值数据所花的时间。

在本发明中,卷积层和全连接层的计算都已经转换为矩阵乘法的计算,为了提高neuralnetwork模块的性能,我们应用了流水线计算的方法。

为了实现流水线计算的目的,矩阵乘法计算的模式被重新组织了。在图8(a)中,计算模式和图(7)相同,在图8(b)中,计算模式与图7不同。在图8(b)中,输出矩阵的所有部分结果和都只利用[x1,xm]作为输入,然后,输出矩阵的所有部分结果和将利用[xm+1,x2m]作为输入来更新部分结果和。在这种模式中,权值矩阵的窗口m*n是水平移动的,而在图7中,权值矩阵的窗口m*n是垂直移动的。

在本发明中,这两种矩阵乘法计算的模式交替使用。在第一层的矩阵乘法计算中,使用垂直移动模式来得到部分结果和[y1,yn],然后,第二层的矩阵计算能够开始计算,它使用水平移动模式,只采用[y1,yn]作为输入。由于第二层开始计算不是等第一层的所有计算都完成以后,因此我们只需要n*n大小的缓冲区来存储第一层计算的中间结果。对于随后的第三层矩阵乘法计算,采用垂直移动模式,随后的第四层矩阵乘法计算,采用水平移动模式,以此类推。通过这种方法,流水线能够顺利的流动起来。

图9是本实施例的神经网络加速器的硬件结构图,图中的axi4-lite总线用于命令的传输,axi4总线用于数据的传输。在图9中,有多个处理单元,每一个处理单元对应卷积神经网络拓扑中的一层。为了提高性能和吞吐量,所有的处理单元以流水线的方式工作。在我们的设计中,层间的部分结果和存储在fpga的片上缓冲区。通过这种方式,可以显著的降低数据访问,更重要的是,片上缓冲区也促进了数据的重用。

矩阵乘法的计算结构也可以从图9中找到,其中包含数据缓冲和计算引擎。在本发明中,计算引擎由许多的乘法器和加速器构成,负责乘法和加法计算。为了加快计算的速度,并行乘法运算后面都加了一个加速树结构来完成累计。输入缓冲区、输出缓冲区和权值缓冲区构成了数据缓冲区。在我们的设计中,输入数据和权值数据通过数据预取技术预取到相应的缓冲区,层间的部分结果和存储在输出缓冲区。双缓冲技术被用于片上缓冲区,使得数据能够以ping-pong的方式被访问,该技术使得数据的传输时间和计算时间能够重叠。

为了更加方便用户使用我们的入侵检测系统服务,我们定义了编程接口了控制其中的加速器。本发明中定义的编程接口具有通用性,能够适应不同应用领域和不同类型的加速器。编程模型的伪代码如下所示,它包含以下两个步骤。

1.硬件平台初始化:在我们设计的fpga加速器中,初始化包括神经网络加速器的初始化和dma的初始化。为了增加更多的硬件模块,我们可以基于硬件规范修改初始化代码。我们使用axidma_cfginitialize()api来初始化dma设备,相关的配置参数存储在dmadev结构体中,包括信道数、数据宽度、操作模式和控制信号。与dma设备的初始化操作类似,神经网络加速器的初始化配置信息包括控制信号、设备名字和物理地址。

2.应用加载和数据传输:初始化完成以后,通过设置特定的寄存器值,我们可以启动dma设备和加速器,所有的指导加速器完成计算的信息都包含在inputdata中。特别的,我们使用axidma_transfer()函数来传输数据到加速器,并接收从加速器中传送回来的数据。这个函数有4个参数,第一个参数指定dma设备,第二个参数指定数据传输的起始地址,第三个参数指定数据传输的大小,第四个参数指定数据传输的方向。

上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1