[发明专利]一种基于KNN算法的网络入侵检测并行化加速方法有效

专利信息
申请号: 201810418164.4 申请日: 2018-05-04
公开(公告)号: CN108600246B 公开(公告)日: 2020-08-21
发明(设计)人: 刘端阳;郑江帆;沈国江;刘志;朱李楠;杨曦;阮中远 申请(专利权)人: 浙江工业大学
主分类号: H04L29/06 分类号: H04L29/06;G06K9/62
代理公司: 杭州天正专利事务所有限公司 33201 代理人: 王兵;黄美娟
地址: 310014 浙*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要: 一种基于KNN算法的网络入侵检测并行化加速方法。方法采用了CUDA并行计算模型,首先针对基于KNN算法的网络入侵检测进行了并行化分析,在计算网络入侵检测数据点到训练数据集的距离时,采用了CUDA提供的通用矩阵乘函数进行加速,提高了运算速度;然后,在距离排序阶段,提供了两种并行化排序策略的选择机制,可以根据少量数据的排序结果,灵活选择排序时间少的排序算法进行距离排序;最后,在入侵检测数据点的分类阶段,采用基于CUDA的原子加法操作进行统计。实验结果表明,本发明提出的加速方法是有效的,在保证检测率的情况下,有效地提高了网络入侵检测的并行化加速性能。
搜索关键词: 一种 基于 knn 算法 网络 入侵 检测 并行 加速 方法
【主权项】:
1.一种基于KNN算法的网络入侵检测并行化加速方法,包括如下步骤:(1)在CPU端和GPU端进行算法的初始化;在CPU端初始化m个待检测的网络入侵检测数据点,n个带有分类标号的网络入侵检测训练数据点,每个数据点的维度为d,最近邻的个数为k(k≤n);在GPU端分配待检测的网络入侵检测数据点集和训练数据点集的内存空间,将数据从CPU端拷贝至GPU端;(2)并行化计算m个入侵检测数据点至n个训练数据点的距离,获得维度为m*n的距离矩阵;在GPU端,开启m个线程计算入侵检测数据点矩阵x的平方x2,每个线程计算一个入侵检测数据点在d个维度上的平方和;接着,开启n个线程计算训练数据点矩阵y的平方y2,每个线程计算一个训练数据点在d个维度上的平方和;然后,计算x2+y2;最后,在GPU端调用CUDA提供的通用矩阵乘函数cublasSgemm()进行距离计算,得到一个维度为m*n的距离矩阵Z,每一行代表一个入侵检测数据点与n个训练数据点的距离;(3)采用两种并行化排序算法对距离矩阵的任意一行数据进行排序,选择排序时间较小的算法来进行下一步的计算;在GPU端,从距离矩阵Z中随机抽取一行数据,对这一行的n个距离值进行两次并行化排序来计算k个最近邻,即k个距离最近的训练数据点;第一次排序采用基于k次最小值查找的最近邻选择算法,第二次排序采用基于双调排序的最近邻选择算法,如果第一次排序所需时间小于第二次排序所需时间,则继续下一步;否则,跳转至步骤(5);(4)采用基于k次最小值查找的最近邻选择算法,对距离矩阵的每一行数据进行并行化排序,计算每个入侵检测数据点的k个最近邻;在GPU端,首先,将全局存储器中的距离矩阵Z拷贝至共享内存;然后,开启m个线程块,每个线程块负责一行数据(即一个入侵检测数据点的距离数据)的排序,每个线程块内开启(说明:此处为向上取整)个线程进行比较和循环迭代,经过k次查找得到属于该入侵检测数据点的k个近邻,即k个距离最近的训练数据点;最后,每个线程块分别输出自己的k个最近邻,跳转至步骤(6);(5)采用基于双调排序的最近邻选择算法,对距离矩阵的每一行数据进行并行化排序,计算每个入侵检测数据点的k个最近邻;在GPU端,首先,检查是否需要补充元素;如果n≠2a(a>0),则需要补足最少个数的元素使n=2a,补足的元素统一为能够表示的最大数;接着,将距离矩阵Z拷贝至共享内存,开启m个线程块,每个线程块负责一行数据(即一个入侵检测数据点的距离数据)的排序,每个线程块内总共进行a轮迭代,前a‑1轮迭代进行相邻两个单调性相反的序列合并,并分别按相反单调性递归进行双调排序;直至第a轮迭代时,合并前面两个长度为n/2的单调序列为一个长度为n的双调序列;然后,每个线程块内开启n/2个线程做两两元素的比较,得到两个长度为n/2的子双调序列,按此方式循环迭代a轮,每轮都会开启n/2个线程参与计算,直至最后一轮迭代时是长度为2的序列相比较,即可得出单调递增的距离序列;最后,每个线程块分别输出自己的k个最近邻,即k个距离最近的训练数据点,并继续下一步;(6)根据k个最近邻的计算结果,采用并行化的方式对每个入侵检测数据点进行分类;在GPU端,首先,开启m个线程块,每个线程块负责一个待检测的入侵检测数据点分类标号的统计,每个线程块在共享内存上开辟一个数组,数组长度为训练数据点的类别个数;接着,每个线程块内开启k个线程,每个线程统计自己对应位置上数据(即对应的最近邻训练数据点)的类别标号,采用CUDA内部的原子加法操作统计,即atomicAdd()操作;最后,同步线程块内线程,得到数组的最终值,数组中数字最大的类别即为该入侵检测数据点的分类;(7)将步骤(6)的计算结果从GPU端拷贝至CPU端,输出m个待检测的入侵检测数据点的分类标号,如果该分类标号属于网络入侵分类标号,则判断该入侵检测数据点为入侵,否则为正常。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工业大学,未经浙江工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201810418164.4/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top