[发明专利]一个基于Wavelet Tree的网络数据包索引系统在审
申请号: | 201610027911.2 | 申请日: | 2016-01-15 |
公开(公告)号: | CN105718521A | 公开(公告)日: | 2016-06-29 |
发明(设计)人: | 孙建华;姚姝娜 | 申请(专利权)人: | 湖南大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 410082 *** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一个 基于 wavelet tree 网络 数据包 索引 系统 | ||
技术领域
本发明涉及计算机网络安全领域的网络数据分析,具体涉及针对海量网络数据包进行索引和查询分析的方法。
背景技术
在网络监测和网络安全的研究中,对抓取的网络数据包进行分析是一个重要的主题。通过对其进行抓取和分析,实现对网络有效的监控,准确定位网络中出现的故障。而当前的网络数据分析任务,例如协议性能评估、网络监测及辩证分析,在分析错误和评估性能时,网络数据包查询过程需要快速而有效地完成。事实上,该过程为一个CPU计算密集任务,特别是当处理一个包含复杂通信方式的大文件时,会给CPU带来很大负担。与此同时,随着网络飞速发展,网络通信越来越复杂,导致数据包路径的长度变得更大,同时查询条件也变得更为复杂,因此查询延时也随之快速地增加。
因此在该环境下,对网络数据包的查询效率的提升变得十分重要,而在此过程中最重要的是查询的精度与速度。目前,主要通过以下途径来提高海量数据的查询性能,一是改变数据的存储结构使其更好地满足上层查询;二是建立高效的索引提高数据检索的效率;其三是通过查询优化技术来优化查询语句,如启发式优化、基于代价的优化等。
而索引技术是上述几种方法中最常用的提高查询效率速度的手段。目前常用的索引结构主要有三种,B-树索引、R-树索引和位图索引。与前面两者,位图索引将比较、连接和聚集都变成了位逻辑运算,大大减少了运行时间,从而得到性能上的极大的提升。但将位图索引技术运用到网络数据包查询环境下,当数据包数量上升为百万时,采用该技术所建立的索引大小会异常地增加。因此,在抽取一个大的数据包的路径时,需在索引数据大小和数据包提取性能之间有一个折衷点。针对于该问题,有学者提出了一个新型的数据结构WaveletTree,采用该结构所建立的索引在索引数据的大小和数据包提取性能两者之间获取了一个平衡点,而且同时满足快速查找的性能和提供了高压缩比。
WaveletTree是一种存储压缩字符串的简洁的数据结构。它将字符串转换成由位向量组成的平衡二叉树,该树除叶子节点外的每个节点存储一个位序列,位序列的每个位置由0或1来标记。把字符串的字符集从根部开始分成两部分,左子树的符号被标记为0,其剩余的为右子树,标记为1。以这种方式递归生成下面的子树。
WaveletTree的递归定义如下:
1)将字符串所包含的字符集前半部分编码为0,后半部分编码为1:例如对于序列S={1,5,1,1,8,6,3,8,7,5,7,4,3,2,8,8},它的字符集为{1,2,3,4,5,6,7,8,9},S可编码为以下位序列0100110111100011;
2)字符集前半部分(即{1,2,3,4})中的每个符号编码为0,并将其作为子树;
3)字符集后半部分(即{5,6,7,8,9})中的每个符号编码为1,并将其作为子树;
4)重复应用此方法对每个子树递归,直到只有一个或两个符号留下,即所有的符号均用叶子节点表示。
WaveletTree有三个基本操作:rank、select和lookup,给定一个包含n个字符序列S,来对三个基本操作进行详细说明:
●rank
对于序列S具体的rank操作为rankb(S,i),计算字符b从开始位置一直到位置i出现的次数。具体实现为:从根部开始计算,首先得到字符b在这层的编码为0或1,然后用rank操作来计算0或1的数量,根据计算的结果移动到左子树或右子树的相应位置,接着依次递归。直至叶子节点处,最后位向量中的位置为rankb(S,i)的结果。
●select
select为rank的逆运算。对于序列S具体的select操作为selectb(S,j),即查找在序列中字符b第j次出现的位置。具体实现为:从字符b所在叶子节点开始,首先判断该字符在叶子节点的编码为0还是1,然后用select操作进行计算。通过得到的结果(即位置),向父节点移动,然后查询这个新位置。接着依次递归,直到根部,在根部的位置为最终结果。
●lookup
对于序列S具体的lookup操作为lookup(S,k),返回指定位置k上的值。对于位置k可以通过以下描述的路径来获取:在根中,如果该位图的位置k为0或1,根据取值找到根的左孩子或右孩子,在左子树或右子树用rank操作计算该位置之前0或1的个数。递归地执行该操作直至叶子节点,最后得到叶子节点的值即是为结果,此时完成该操作。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南大学,未经湖南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610027911.2/2.html,转载请声明来源钻瓜专利网。