CN105718521A - 一个基于Wavelet Tree的网络数据包索引系统 - Google Patents
一个基于Wavelet Tree的网络数据包索引系统 Download PDFInfo
- Publication number
- CN105718521A CN105718521A CN201610027911.2A CN201610027911A CN105718521A CN 105718521 A CN105718521 A CN 105718521A CN 201610027911 A CN201610027911 A CN 201610027911A CN 105718521 A CN105718521 A CN 105718521A
- Authority
- CN
- China
- Prior art keywords
- inquiry
- file
- index
- scope
- data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及计算机网络安全领域的网络数据分析,具体涉及针对海量网络数据包进行索引和查询分析的方法。该发明能够快速准确地从海量的网络数据包中检索出符合条件的数据包,它基于一种新型的数据结构Wavelet Tree,同时索引和查询的功能也是通过该数据结构来实现,查询功能的过程如图1所示。该发明需要较少的空间来存储建立的索引文件,且支持多种复杂的查询,对某一属性的准确查询、范围查询以及最值的查询等等。
Description
技术领域
本发明涉及计算机网络安全领域的网络数据分析,具体涉及针对海量网络数据包进行索引和查询分析的方法。
背景技术
在网络监测和网络安全的研究中,对抓取的网络数据包进行分析是一个重要的主题。通过对其进行抓取和分析,实现对网络有效的监控,准确定位网络中出现的故障。而当前的网络数据分析任务,例如协议性能评估、网络监测及辩证分析,在分析错误和评估性能时,网络数据包查询过程需要快速而有效地完成。事实上,该过程为一个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的个数。递归地执行该操作直至叶子节点,最后得到叶子节点的值即是为结果,此时完成该操作。
发明内容
本发明针对包含大量网络数据包的文件进行有效的数据检索,其索引和查询均是基于WaveletTree的数据结构。该发明需要较少的空间来存储建立的索引文件,且支持多种复杂的查询,对某一属性给出确定值查询、范围查询以及最值的查询等等。
1.构建索引数据
本发明支持对pcap文件建立索引,pcap为一种常见的网络数据包存储格式,其具体格式为:一个大小为24B文件头(PcapHeader),一个大小为16B数据包头(PacketHeader)以及数据包(PacketData),它包含一个14B大小的以太头和TCP/IP的数据。
本发明选取pcap文件中的时间戳(timestamp)、源/目的IP地址(src/dstip)、源/目的端口(sport、dport)以及payload的长度(payload_len)作为索引数据源。所有的索引数据被保存在相应的数组中,数组均包含相同的元素个数,与pcap文件中的总数据包个数相同。从原pcap文件中抽取索引数据的过程如图1所示。
为了进一步提高压缩效率,对于时间戳分为六个部分建立索引,分别为年、月、日、时、分、秒,源/目的IP分成四个部分建立索引。这里针对IP地址的四个部分建立索引的过程如图2所示。
2.数据包查询
(1)查询条件
查询条件的语法是通过json格式来表示,json是一种轻量级的数据交换格式,其由对象和数组两种结构组成,通过这两种结构可以表示各种复杂的结构。对象在json中表示为“{}”括起来的内容,数组在json中是“[]”括起来的内容。json的数组之间只允许and操作,对象之间则允许or操作。
写入查询条件的json语句为:
上述语句中query_string为timestamp、srcip、dstip、sport、dport和payload_len其中之一,operand是对查询属性所需要进行的操作符,为“>”、“<”和“=”其中之一,value为查询属性所要满足的值。
(2)查询过程
解析json文件获取需要查询的属性;
执行WaveletTree的rank操作计算所有满足查询属性的数据包个数;
执行WaveletTree的select操作来找出匹配的数据包索引号;
经过上面的两步,与每个查询属性匹配的数据包的索引号将分别生成一个压缩位图,再将它们一一进行逻辑与或者逻辑或运算,得出的最终结果即为满足所有查询条件的最终结果。
从索引数据中检索符合查询条件的数据包的具体的过程如图3所示:
(3)查询功能
改发明实现的查询功能有,对于下列给出的查询条件:
本发明实现的查询指定的时间戳或范围;
指定的源/目的IP,其中可以包含通配符;
指定的源/目的端口或范围;
指定的payload长度或范围。
能够实现对上述给出的查询条件,得出单一的或它们之间进行交集或并集的结果。
3.获取索引数据的最小/最大值
本发明利用范围分位点查询(rangequantilequery)来实现对于索引数据源/目的端口号(sport、dport)和payload长度(payload_len),给定一个序列S[1,n],字符集的范围为[1,σ]来说明范围分位点查询的具体实现。
范围分位点查询为在指定范围内,返回第k个最小值。完成此查询操作需要一个rank操作和指定范围内的子序列的端点,同时返回在子列表中rank的数量。例如,如果rank为子表长度的长度的一半的话,那么查询的结果则返回的子列表中位数。对上述序列S建立WaveletTree数据结构T,对于每个内部节点v,存储一个RRR的数据结构。其对于v的二进制字符串的rank操作的时间开销为O(1)。对于v的二进制查询,需要给定一个位置,然后返回在这个位置之前的1的个数。
给定k、l和r,查询S[l,r]中第k个最小值,从T的根部开始,首先考虑它的二进制字符串b,使用两个查询rankb(l-1)和rankb(r)来查询b[1..l-1]和b[l..r]中的0和1的值:
(1)如果b[l..r]中0的个数要大于k,则查询的目标位于T的左子树的叶子上,因此把l设为b[1..l-1]中0的个数加1,r为b[l..r]中0的个数,然后在左子树中递归。
(2)否则,在T的右子树中进行,从k中减去b[l..r]中0的个数,把l设为b[1..l-1]中1的个数加1,r为b[l..r]中1的个数,然后在右子树中递归。
(3)当到达一个叶子节点时,即l与r的值相等时,则返回它的标签。得到标签值之后,结合WaveletTree的select操作得出该值的频率。
将上述范围分位点查询问题运用到求取最大、最小值问题为:将k值设为1用于求取最小值,将k值设为r-l-1用于求取最大值。
4.索引数据排序
本发明利用范围众数查询(rangemodequery)来实现对于索引数据源/目的端口号(sport、dport)和payload长度(payload_len),给定一个序列S[1,n],字符集的范围为[1,σ]来说明范围分位点查询的具体实现。
范围众数查询为在指定范围内,返回在该序列中出现频率最高的元素,称为众数(mode)。对上述序列S建立WaveletTree数据结构T,其中每一个节点代表[1,σ]的一个范围(range),根部代表全部的范围,叶子代表单独的符号,一个节点的孩子代表节点的范围的左半部分和右半部分。
对于每个节点v,Sv为在v的子树中标记字符组成的子序列,T不存储Sv,只是用一个长为|Sv|的位图来指明Sv[i]应该是去向左孩子还是右孩子。与此同时,也可以追踪任意范围S[i..j]到任意的节点。假设[i..j]=[1..n],如果a1,..,ak’是k’个频率最多的元素。V是叶子标记为ak’的父亲,但不为a1,..,ak’-1的父亲,ak’是Sv中的一个众数。为了让V成为a1,..,ak’-1的父亲,使得V’为一个节点集,该节点集中包含本身不在V中节点,但其兄弟节点在V中。如果V为空集,则V’包含树的根部。通过每一个v∈V’查找Sv的众数来查找ak’和查找他们在S中的频率,将其最为最大频率。
用一个优先队列来存储每个v∈V’的众数。通过它们的频率和树T的节点来排序。将ak’作为队列的头部,让v成为相关节点,即在V’中的节点使得Sv中的众数为ak’。为了更新队列,删除ak’,在从v到叶子标记为ak’的路线上,对其兄弟上进行范围众数查询,将众数加入队列。
利用上述的查询,可以求取出在给定范围内一共包含有多少个不同的元素,以及它们出现的频率。同时通过比较两个元素的值,其对应在T中为相应两个查询节点,如果两个节点的深度不相等,如果第一个节点的深度小于第二个节点的深度,则第一个节点的值小于第二个的值,否则,为大于。如果两者的深度相等,如果第一个节点的请求点小于第二个节点的请求点,则第一个节点的值小于第二个节点,否则,为大于。
利用范围分位点查询对于索引数据生成众数值可以按照升序或降序的顺序进行排序,同时给出每一个众数出现的频率,同时也可以结合select操作给出其在序列中的具体位置。
附图说明
图1:构建索引数据图
图2:构建源IP地址索引图
图3:查询匹配数据包图
具体实施方式
1.程序框架
输入:需要执行的操作(getValue())以及需要执行操作的文件名(input_file)。
2.实验环境
本发明的硬件环境主要是一台DDR3服务器。其中,服务器的CPU为XEONL5520,内存为256GB。实验数据存储在一个1TB的硬盘驱动(HDD)和一个的256GB的SSD固态硬盘(PX-256M6S)。
本发明的软件实现以ubuntu14.04为平台,使用C++语言开发。
实验数据来自于某大学出口路由的实时通信数据,其格式为pcap文件。
在实验中,从三个方面对其进行了评估1)建立索引所需要的磁盘空间2)建立索引所需要的时间3)数据包查询性能。
Claims (5)
1.一个基于WaveletTree的网络数据包索引系统。
基于WaveletTree的网络数据包索引系统主要针对包含大量网络数据包的文件进行有效的数据检索,其索引和查询均是基于WaveletTree的数据结构。需要较少的空间来存储建立的索引文件,且支持多种复杂的查询,对某一属性给出确定值查询、范围查询、最值的查询以及按照升序或降序的顺序进行排序。
2.如权利要求1所述的对文件进行索引建立的具体实现为:首先选取需要建立的索引数据,然后将所有的索引数据被保存在相应的数组中,数组均包含相同的元素个数,与文件中的总数据包个数相同。最后对选取的索引数据建立相应的索引文件。
3.如权利要求1所述的对文件进行查询的具体步骤为:
1)将需要满足的查询条件写入文件中;
2)解析查询文件获取查询属性;
3)计算所有满足查询属性的数据包个数;
4)找出匹配数据包的索引号
5)将与每个查询属性匹配的数据包的索引号分别生成的压缩位图一一进行逻辑与或者逻辑或运算,得出的最终结果。
4.如权利要求1所述的对索引数值进行最大、最小值的查询基于范围分位点查询来实现。范围分位点查询为在指定范围内,返回第k个最小值。将k值设为1用于求取最小值,将k值设为索引文件的长度减1用于求取最大值。
5.如权利要求1所述的对索引数值进行升序、降序的排序是基于范围众数查询实现。范围众数查询为在指定范围内,返回在该序列中出现频率最高的元素,称为众数。利用众数值的大小可以按照升序或降序的顺序进行排序,同时给出每一个众数出现的频率,也可以给出其在序列中的具体位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610027911.2A CN105718521A (zh) | 2016-01-15 | 2016-01-15 | 一个基于Wavelet Tree的网络数据包索引系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610027911.2A CN105718521A (zh) | 2016-01-15 | 2016-01-15 | 一个基于Wavelet Tree的网络数据包索引系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105718521A true CN105718521A (zh) | 2016-06-29 |
Family
ID=56147193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610027911.2A Pending CN105718521A (zh) | 2016-01-15 | 2016-01-15 | 一个基于Wavelet Tree的网络数据包索引系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718521A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109962843A (zh) * | 2017-12-22 | 2019-07-02 | 上海威派格智慧水务股份有限公司 | 物联网网关实现边缘信息处理的方法 |
CN110019084A (zh) * | 2017-10-12 | 2019-07-16 | 航天信息股份有限公司 | 面向HDFS的split层索引方法和装置 |
CN111061684A (zh) * | 2019-12-31 | 2020-04-24 | 成都科来软件有限公司 | 一种数据包文件时序恢复系统 |
CN113139100A (zh) * | 2021-04-27 | 2021-07-20 | 中国科学院计算技术研究所 | 一种网络流量实时索引方法及系统 |
US20230015745A1 (en) * | 2020-06-01 | 2023-01-19 | Agora Lab, Inc. | Highly scalable system for automated sdk testing |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734671B1 (en) * | 2007-10-09 | 2010-06-08 | The United States Of America As Represented By The Director, National Security Agency | Method of sorting text and string searching |
CN102722527A (zh) * | 2012-05-16 | 2012-10-10 | 北京大学 | 一种支持含有缺失符号的查询请求的全文检索方法 |
US20120265765A1 (en) * | 2011-04-14 | 2012-10-18 | Atbrox, As | Self-indexer and self indexing system |
-
2016
- 2016-01-15 CN CN201610027911.2A patent/CN105718521A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734671B1 (en) * | 2007-10-09 | 2010-06-08 | The United States Of America As Represented By The Director, National Security Agency | Method of sorting text and string searching |
US20120265765A1 (en) * | 2011-04-14 | 2012-10-18 | Atbrox, As | Self-indexer and self indexing system |
CN102722527A (zh) * | 2012-05-16 | 2012-10-10 | 北京大学 | 一种支持含有缺失符号的查询请求的全文检索方法 |
Non-Patent Citations (2)
Title |
---|
TRAVIS GAGIE 等: "Range Quantile Queries:Another Virtue of Wavelet Trees", 《COMPUTER SCIENCE》 * |
YOUNG-HWAN KIM 等: "PcapWT: An Efficient Packet Extraction Tool for Large Volume Network Traces", 《COMPUTER NETWORKS》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019084A (zh) * | 2017-10-12 | 2019-07-16 | 航天信息股份有限公司 | 面向HDFS的split层索引方法和装置 |
CN110019084B (zh) * | 2017-10-12 | 2022-01-14 | 航天信息股份有限公司 | 面向HDFS的split层索引方法和装置 |
CN109962843A (zh) * | 2017-12-22 | 2019-07-02 | 上海威派格智慧水务股份有限公司 | 物联网网关实现边缘信息处理的方法 |
CN111061684A (zh) * | 2019-12-31 | 2020-04-24 | 成都科来软件有限公司 | 一种数据包文件时序恢复系统 |
CN111061684B (zh) * | 2019-12-31 | 2023-04-07 | 科来网络技术股份有限公司 | 一种数据包文件时序恢复系统 |
US20230015745A1 (en) * | 2020-06-01 | 2023-01-19 | Agora Lab, Inc. | Highly scalable system for automated sdk testing |
US11650913B2 (en) * | 2020-06-01 | 2023-05-16 | Agora Lab, Inc. | Highly scalable system for automated SDK testing |
CN113139100A (zh) * | 2021-04-27 | 2021-07-20 | 中国科学院计算技术研究所 | 一种网络流量实时索引方法及系统 |
CN113139100B (zh) * | 2021-04-27 | 2022-06-14 | 中国科学院计算技术研究所 | 一种网络流量实时索引方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220327137A1 (en) | Modifying field definitions to include post-processing instructions | |
US11423216B2 (en) | Providing extraction results for a particular field | |
CN106326381B (zh) | 基于MapDB构建的HBase数据检索方法 | |
CN105718521A (zh) | 一个基于Wavelet Tree的网络数据包索引系统 | |
EP1360616B1 (en) | Database system and query optimiser | |
US9870382B2 (en) | Data encoding and corresponding data structure | |
US7945569B2 (en) | Method and apparatus for querying spatial data | |
US9798772B2 (en) | Using persistent data samples and query-time statistics for query optimization | |
CN103514201B (zh) | 一种非关系型数据库的数据查询方法和装置 | |
US20160299991A1 (en) | Constructing an in-memory representation of a graph | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
EP3311305A1 (en) | Automated database schema annotation | |
CN107357843B (zh) | 基于数据流结构的海量网络数据查找方法 | |
CN108681603B (zh) | 数据库中快速搜索树形结构数据的方法、存储介质 | |
US9953058B1 (en) | Systems and methods for searching large data sets | |
CN107436911A (zh) | 模糊查询方法、装置及查询系统 | |
CN106874425A (zh) | 基于Storm的实时关键词近似搜索算法 | |
CN112214612B (zh) | 知识图谱标签松散场景下地理信息索引系统及检索方法 | |
CN107330094A (zh) | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 | |
CN102467544B (zh) | 基于空间模糊编码的信息智能搜索方法及系统 | |
CN112131356A (zh) | 一种基于tcam的报文关键字匹配方法和装置 | |
CN110110234A (zh) | 一种大数据实时搜索系统和方法 | |
Brisaboa et al. | Improved structures to solve aggregated queries for trips over public transportation networks | |
US20160125095A1 (en) | Lightweight temporal graph management engine | |
CN109684418A (zh) | 基于电网图数据库的数据存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160629 |