一种基于CUDA的网络入侵检测并行化加速方法技术

技术编号:19141166 阅读:22 留言:0更新日期:2018-10-13 08:49
一种基于CUDA的网络入侵检测并行化加速方法。方法采用了CUDA并行计算模型,首先针对网络入侵检测系统中的k‑means算法进行了并行化分析,设计了一个全局选择器,在距离计算前运用全局选择判断入侵检测数据点所属聚簇是否改变,减少了冗余计算;然后在距离计算时采用了CUDA提供的通用矩阵乘函数进行加速,提高了运算速度;最后在聚簇中心更新时将所有入侵检测数据点按照簇标签排序分组,通过组内数据简单相加,减少了原子内存操作,从而提高整体性能。实验结果表明,本发明专利技术提出的加速方法是有效的,在保证检测率的情况下,有很高的并行化加速性能。

A parallel acceleration method for network intrusion detection based on CUDA

A parallel acceleration method of network intrusion detection based on CUDA. Methods The CUDA parallel computing model was adopted. Firstly, the k_means algorithm in the network intrusion detection system was parallelized and analyzed. A global selector was designed to judge whether the cluster of the intrusion detection data points belonged to changed or not before the distance calculation, which reduced the redundant computation. Finally, all intrusion detection data points are sorted and grouped according to the cluster label when the cluster center is updated. By simply adding the data in the group, the atomic memory operation is reduced and the overall performance is improved. The experimental results show that the acceleration method proposed by the invention is effective and has high parallel acceleration performance under the condition of guaranteeing the detection rate.

【技术实现步骤摘要】
一种基于CUDA的网络入侵检测并行化加速方法
本专利技术涉及信息安全领域的网络入侵检测,是一种基于CUDA的网络入侵检测并行化加速方法。
技术介绍
网络入侵检测的目的是分析网络中传输的数据流量,从中发现异常的流量。目前有许多聚类算法应用于网络入侵检测系统,其中基于k-means算法的网络入侵检测方法较为流行。由于k-means算法在每次迭代过程中会计算每个入侵检测数据点到所有聚簇中心的距离,当需要检测的数据量尺寸和维度非常庞大时,该算法将会非常耗时。如果需要检测的数据总量为N,聚簇数目为k,算法经过m次迭代之后收敛,那么算法在计算距离阶段就要进行k*N*m次运算。随着网络入侵检测数据集的增长,算法的执行效率将大大降低。为了提高k-means算法在大规模网络入侵检测数据集上的执行速度,一种有效的途径就是将k-means算法移植到多核架构上,例如目前流行的图形处理单元GPU(GraphicsProcessingUnit),然后运用CUDA(ComputeUnifiedDeviceArchitecture)编程模型并行化该算法,这样可以节省大量计算时间,提高算法的执行效率。CUDA是显卡厂商NVIDIA公司推出的一款通用并行计算架构,它可以让GPU解决复杂的计算问题。CUDA提供了硬件的直接访问接口,这种接口可以实现GPU的直接访问,而不需要依赖传统的图形API。GPU是能够并行执行大量线程的协处理器。一个简单的GPU源程序包括运行在CPU上的主机端代码和运行在GPU上的内核(kernel)代码,这种编程方式可以降低GPU的编程难度。很多研究都采用CUDA来优化网络入侵检测系统的k-means聚类算法。常见的方法是将每个入侵检测数据点到所有聚簇中心的距离计算过程放在GPU端执行,而将聚簇中心的更新放在CPU端执行,这种方法执行效率很高而且也很普遍,但是加大了网络入侵检测数据在GPU和CPU端之间的传输时间。也有一些方法针对算法运行时网络入侵检测数据量的大小进行划分。当数据量较小时,就一次读入设备进行计算,当数据量较大时,就分批次读入设备进行计算,这种流式计算方法在面对大数据量时简单有效,但没有充分利用GPU内部的存储器体系。目前,基于CUDA的网络入侵检测并行化方法存在的主要问题如下:1)算法的执行过程中包含大量的冗余计算,许多网络入侵检测数据点在下一轮迭代时并不会改变其所属聚簇,因此它们完全不必要参加下一轮的距离计算;2)距离计算时的并行度不高,每个线程负责一个入侵检测数据点到所有聚簇中心的距离计算,没有充分利用CUDA的硬件特性;3)大部分聚簇中心的更新被重新移植到CPU端执行,提高了网络入侵检测数据的传输时间和计算成本。
技术实现思路
本专利技术克服了上述不足之处,目的在于提供了一种基于CUDA的网络入侵检测并行化加速方法。本专利技术首先针对k-means聚类算法中大量的重复距离计算问题,采用了基于上下界的全局选择器判断入侵检测数据点在本轮迭代中是否会改变所属聚簇,从而减少冗余计算。然后针对复杂的距离计算问题,将计算的公共部分提取出来,剩余部分利用CUDA提供的通用矩阵乘函数,实现了向量与矩阵,矩阵与矩阵之间的运算,提高了运算速度。最后针对每次迭代中聚簇中心的更新问题,将入侵检测数据按照聚簇标签进行排序分组,将数据点的累计转化为每个组内的简单相加,从而最小化原子内存操作,提升整体性能。本专利技术主要充分利用CUDA架构的特性,对网络入侵检测系统进行并行化加速,同时根据官方提供的高性能函数库对检测算法进行优化,在保证系统检测率的前提下,获得良好的加速比。本专利技术是通过以下技术方案达到上述目的,即一种基于CUDA的网络入侵检测并行化加速方法,具体的实施步骤如下:(1)在CPU端初始化n个网络入侵检测数据点的集合R,随机选取k个点作为初始聚簇中心,设置最大迭代次数为m,中心点收敛阈值为t。在GPU端分配网络入侵检测数据点集、聚簇中心、全局上下界以及中心点偏移量的内存空间,将数据拷贝至GPU端;(2)第一次计算所有入侵检测数据点至k个聚簇中心的距离。具体的计算方法采用步骤(4)的方法进行计算;然后,根据距离计算的结果,把数据点归入距离最近的聚簇中;最后,采用步骤(6)的方法来更新聚簇中心,从而获得全局选择器需要的数据;(3)对于每一个入侵检测数据点,采用全局选择器判断是否需要进行下一轮迭代。如果入侵检测数据点满足全局选择器判定条件,则转步骤(6)处理,如果不满足,则转步骤(4)处理。全局选择器的判定条件为:其中,x代表一个网络入侵检测数据点,e代表点x所属聚簇的聚簇中心,ue(x)代表x的全局上界,le(x)代表x的全局下界,φ(e)代表聚簇更新之后聚簇中心e的距离偏移量,C代表所有网络入侵检测聚簇中心的集合,c代表集合中除了e之外的一个聚簇中心,代表聚簇更新之后聚簇中心的最大距离偏移量;(4)计算所有入侵检测数据点至k个聚簇中心的距离。在GPU端开启n个线程计算入侵检测数据点矩阵x的平方x2,然后开启k个线程计算聚簇中心矩阵y的平方y2,并计算x2+y2;最后,调用CUDA提供的通用矩阵乘函数cublasSgemm()进行距离计算,即计算n个入侵检测数据点至k个聚簇中心的距离。cublasSgemm()函数属于Cublas库,实现的矩阵运算如下:Z=alpha*OP(A)*OP(B)+beta*C上述公式中alpha取值为-2,beta取值为1。调用cublasSgemm()函数时,每个数据点的维度为d,公式中OP(A)是n个入侵检测数据点矩阵x的转置,入侵检测数据点矩阵x的维度为d*n,其转置矩阵的维度为n*d。OP(B)是聚簇中心矩阵y,其维度为d*k。这样,OP(A)和OP(B)相乘所得结果矩阵的维度为n*k。C是入侵检测数据点矩阵和聚簇中心矩阵的平方和,即x2+y2,其维度为n*k。最后相加得到一个维度为n*k的结果矩阵Z,每一行代表一个网络入侵检测数据点分别与k个聚簇中心的距离;(5)根据距离计算的结果,寻找每个入侵检测数据点最近的聚簇中心,并把这个数据点归入该聚簇集合。由于部分入侵检测数据点满足全局选择器条件,没有进行距离计算,因此,在完成计算入侵检测数据点所属聚簇的基础上,需要加上这部分数据点所属聚簇,从而获得所有数据点的聚簇中心;(6)在GPU端按照每个网络入侵检测数据点的所属聚簇标签进行排序和分组,将所有具有同一聚簇标签的数据点归为一组。聚簇标签的排序可以调用CUDA提供的Thrust库中的sort_by_key()排序函数,这个函数可以根据key值进行排序。由于每一个聚簇中心都有一个相应的标签,调用sort_by_key()排序函数时,把数据点所属聚簇的标签作为key值即可。这样,经过sort_by_key()函数排序后,可以根据排序的情况,把具有相同聚簇标签的入侵检测数据点归为一组;(7)根据排序和分组的结果,计算新的聚簇中心。计算新的聚簇中心时,GPU开启合理的二维线程格和二维线程块,blockDim.y代表二维线程块y方向上的大小,而gridDim.y代表二维线程格y方向的大小,然后为每个线程分配同组内(n-1)/(blockDim.y*gridDim.y)个数据点,计算这些网络入侵检测数本文档来自技高网
...

【技术保护点】
1.一种基于CUDA的网络入侵检测并行化加速方法,包括如下步骤:(1)在CPU端初始化n个网络入侵检测数据点的集合R,随机选取k个点作为初始聚簇中心,设置最大迭代次数为m,中心点收敛阈值为t;在GPU端分配网络入侵检测数据点集、聚簇中心、全局上下界以及中心点偏移量的内存空间,将数据拷贝至GPU端;(2)第一次计算所有入侵检测数据点至k个聚簇中心的距离;具体的计算方法采用步骤(4)的方法进行计算;然后,根据距离计算的结果,把数据点归入距离最近的聚簇中;最后,采用步骤(6)的方法来更新聚簇中心,从而获得全局选择器需要的数据;(3)对于每一个入侵检测数据点,采用全局选择器判断是否需要进行下一轮迭代;如果入侵检测数据点满足全局选择器判定条件,则转步骤(6)处理,如果不满足,则转步骤(4)处理;全局选择器的判定条件为:

【技术特征摘要】
1.一种基于CUDA的网络入侵检测并行化加速方法,包括如下步骤:(1)在CPU端初始化n个网络入侵检测数据点的集合R,随机选取k个点作为初始聚簇中心,设置最大迭代次数为m,中心点收敛阈值为t;在GPU端分配网络入侵检测数据点集、聚簇中心、全局上下界以及中心点偏移量的内存空间,将数据拷贝至GPU端;(2)第一次计算所有入侵检测数据点至k个聚簇中心的距离;具体的计算方法采用步骤(4)的方法进行计算;然后,根据距离计算的结果,把数据点归入距离最近的聚簇中;最后,采用步骤(6)的方法来更新聚簇中心,从而获得全局选择器需要的数据;(3)对于每一个入侵检测数据点,采用全局选择器判断是否需要进行下一轮迭代;如果入侵检测数据点满足全局选择器判定条件,则转步骤(6)处理,如果不满足,则转步骤(4)处理;全局选择器的判定条件为:其中,x代表一个网络入侵检测数据点,e代表点x所属聚簇的聚簇中心,ue(x)代表x的全局上界,le(x)代表x的全局下界,φ(e)代表聚簇更新之后聚簇中心e的距离偏移量,C代表所有网络入侵检测聚簇中心的集合,c代表集合中除了e之外的一个聚簇中心,代表聚簇更新之后聚簇中心的最大距离偏移量;(4)计算所有入侵检测数据点至k个聚簇中心的距离;在GPU端开启n个线程计算入侵检测数据点矩阵x的平方x2,然后开启k个线程计算聚簇中心矩阵y的平方y2,并计算x2+y2;最后,调用CUDA提供的通用矩阵乘函数cublasSgemm()进行距离计算,即计算n个入侵检测数据点至k个聚簇中心的距离;(5)根据距离计算的结果,寻找每个入侵检测数据点最近的聚簇中心,并把这个数据点归入该聚簇集合;由于部分入侵检测数据点满足全局...

【专利技术属性】
技术研发人员:刘端阳郑江帆沈国江刘志朱李楠杨曦阮中远
申请(专利权)人:浙江工业大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1