基于倒排列表的网流索引检索与压缩的方法

文档序号:7803898阅读:341来源:国知局
基于倒排列表的网流索引检索与压缩的方法
【专利摘要】本发明公开了计算机网络和大数据分析交叉领域的一种基于倒排列表的网流索引检索与压缩的方法,用以解决目前网流索引检索与压缩的研究中存在的问题。该方法具体步骤为:首先,把IP偏移量地址建立成索引,具体包括,先把数字转换成词典,再将IP偏移词典建立为倒排索引;其次,对倒排列表中的数据进行压缩,压缩算法包括simple9算法压缩,carryover-12算法压缩,pfordelta算法压缩;再次,解压和寻回,具体包括先根据压缩算法的不同选择相应的解码器,将压缩单位进行解码,再将解压数字转换成特定的数据结构,如倒排索引和词典;最后,根据倒排索引获得每个流量包的信息。本发明的有益效果在于有效实现高效的索引技术,以及索引压缩技术,能够有效检索海量网络流量数据。
【专利说明】基于倒排列表的网流索弓I检索与压缩的方法
【技术领域】
[0001]本发明涉及计算机网络和大数据分析交叉领域,特别涉及一种基于倒排列表的网流索引检索与压缩的方法。
【背景技术】
[0002]I网络流量
[0003]计算机网络之间在传递信息时,单个信息被划分为多个数据块,并以其作为传输单位进行发送,每个小块可能会沿着不同的路径在一个或多个网络中传输,并在目的地实施重组,这些小块就是“网包”。传输控制协议/因特网互联协议(Transmission ControlProtocol/InternetProtocol, TCP/IP)协议簇中将网络的网包因其包含信息不同,可以分为因特网协议(Internet Protocol, IP)网包、传输层传输控制协议/用户数据报协议(Transmission Control Protocol/User DatagramProtocol, TCP/UDP)网包和应用层网包。
[0004]IP包的结构由如下字段组成:版本(4位)、首部长度(4位)、分区服务(8位)、总长度(16位)、标识(16位)、标志(3位)、片偏移(13位)、生存时间(8位)、协议(8位)、首部检验和(16位)、源地址(32位)、目的地址(32位)。
[0005]TCP包的机构由如下字段组成:源端口(16位)、目的端口(16位)、序号(32位)、确认号(32位)、数据偏移(4位)、保留出位)、紧急比特位URG、确认比特位ACK、复位比特位RST、同步比特位SYN、终止比特位FIN、窗口(16位)、检验和(16位)、紧急指针(16位)、选项字段、填充字段。
[0006]随着计算机网络技术的发展,网络安全问题日益凸显,由于其开放性,计算机网络要遭受大量可知或未知的攻击。在这种背景下出现很多网络安全防范技术,例如入侵检测系统、特征码检测、安全扫描技术等,但是很多攻击是无法进行及时检测和预防的,需要通过对网包的捕获来实现对网络流量信息的收集,便于以后的分析和使用。
[0007]网络流量获取的格式主要有以下二种。
[0008](I)网包级(Packet-level)的流量数据:主要关注所有网包(packet)的协议头和载荷(payload)。其中PacketHeader包含截获的IP包的描述信息,如时间戳,大小。而PacketPayload则是完整IP包的内容。
[0009]⑵Flow-level的流级流量数据:主要关注流(flow)的特征及其到达过程,可以为一个TCP连接或者一个UDP流。其中,流通常指一个由源IP地址、源端口、目的IP地址、目的端口、应用协议等组成的多元组。
[0010]图1给出了一个流记录格式的描述,其中还包括源自治域(Autonomous System,AS)域号,目的AS域号,起止时间,该流包含的网包数目。比较著名的是CISCO公司开发出了 Netflow V5版本流记录格式。NetFlow根据IP数据包的7个域,即源IP地址、目的IP地址、源通信端口号、目标通信端口号、第三层协议类型、TOS字节(DSCP)、网络设备输入(或输出)的逻辑网络端口(iflndex),来判断是否属于某一个流。
[0011]其中CISCO公司的NetFlow V9还被IETF组织从5个候选方案中确定为IP FlowInformation Export (IPFIX)标准。
[0012]流量的数据一般特点是数量巨大,检索困难。以IOGbps链路为例,如果按每个网包64字节计算,每秒将达1400万网包,产生的索引量巨大,检索查找速度慢。
[0013]网包的索引信息具有以下一些特点:海量、数据结构固定、只增不改、重复性较高。海量是指网包索引信息条数众多,一天可以产生几百万条甚至上亿条索引信息。数据结构固定是指每一条网包的索引信息都有固定的格式和固定的长短。只增不改是指网包的索引信息只会不断增加,一旦产生,以后不可能也不需要在进行修改。重复性高指就每一个域来看,一个域中的千万条数据出现大量的重复。这些特点导致使用关系型数据库处理这样的数据效率并不高,因为传统的关系型数据库是面向更改的,储存在数据库中的数据需要经常的改动。
[0014]为此需要设计高效的索引技术,以及索引压缩技术,能够有效检索海量网络流量数据。
[0015]2倒排列表
[0016]倒排列表是一种索引数据结构技术,广泛应用于文本检索,如搜索引擎,能够有效检索海量网络流量数据。倒排列表记录了出现过某个单词的所有文档的文档列表和单词在该文档中出现的位置信息,每条记录称为一个倒排项,根据倒排列表,即可知道哪些文档包含某个单词。图2是一个倒排列表的实例。
[0017]3倒排列表的压缩
[0018](l)simple9 算法
[0019]simple9是一种字对齐算法,最常用的是利用32个比特位来作为一个压缩单位,给定固定大小的压缩单位之后,每个压缩单位试图存储多个待压缩的数字。
[0020]在32位的前4个比特作为管理数据存储区,剩下28个比特作为压缩数据存储区,根据使用情况,压缩数据存储区会被分为9中情况,由4比特的指示位来知名存储类型是哪种。
[0021]图3是simple9算法的压缩码字类型。
[0022]在压缩时,首先读取带压缩数值的后续28个数字,如果发现这28个数字都是O或1,则说明可以用B= I的格局来存储,将28个数字存入后28个数据位。如果发现有大于I的数值,说明B = I这种格局无法容纳这组数据,那么就判断后续14个待压缩的数据是否都在O到3的数值范围内,如果是的话则采取B = 2的压缩格局,否则考虑B = 3的格局,以此类推,即可将带压缩数字都表示为固定长度为32比特的压缩表示方式。
[0023](2) carryover-12 算法
[0024]实际上carryover-12 是根据 relative-10 改进而得,relative-10 是一种比simple9更高效的算法,因为simple9的指示位有四位而其码型只有9种,relative-10把指示位缩减成2bit,而数据存储的位数就可以增加到30比特,这有一个好处,因为30有更多的因子数。这样处理之后,只有两种情况的未利用存在2bit的未利用位。图4为relative-10码字类型。
[0025]因为指示位只有2bit,所以只能表示4种类型,为了解决这个问题,relative-10算法规定如果先前的一个压缩单位采用的是r类型,那么这个压缩单位的指示位就用来表示r_l, r, r+1和10类型。图5为relative-10算法码型转换表。[0026]可以看出,relative-10算法中仍然有码型中存在没有利用的2bit。
[0027]carryover-12算法则解决了以上问题,carryover-12算法允许码中的数据存储位是32或者30。如果一个码型和上一个码型相同,那么它全部的32bit全部作为存储位,如果不相同,那么它就由2bit的标志位和30bit的数据存储位构成。如果遇到有2bit不能存储的情况,则将这2bit作为下一个码型的指示位,下一个码型32bit全部作为存储位。
[0028](3) pfordelta 算法
[0029]pfordelta压缩算法是目前解压速度最快的一种倒排文件压缩算法,出发点是,一次性压缩和解压多个数值。此算法在压缩速率和压缩解压速度方面找到一个平衡点,对于待编码的连续的k个数值,找出其中百分之十的比例大数,根据剩下的百分之九十的数值范围来决定应该采取的比特宽度,而百分之十的大数则当作异常数据单独反序存储并且不对其编码,每个数值采用四字节存储,在常规数据存储区中插入数值来表明其位置。压缩数据区分为三个部分,即异常链表头指针(指向了异常链表的第一个数值)、常规数据存储区、异常数据存储区。

【发明内容】

[0030]本发明的目的在于,提出一种基于倒排列表的网流索弓丨检索与压缩的方法,用以解决目前索引技术及索引压缩技术研究存在的问题。
[0031]为实现上述目的,本发明提出的技术方案是,一种基于倒排列表的网流索引检索与压缩的方法,其特征是所述方法包括下列步骤:
[0032]步骤1:把IP偏移量地址建立成索引;
[0033]步骤2:对倒排列表中的数据进行压缩,并以数组的形式保存在内存中;
[0034]步骤3:解压和寻回;
[0035]步骤4:根据倒排索引获得每个流量包的信息。
[0036]所述把IP偏移量地址建立成索引具体包括:
[0037]步骤11:把数字转换成词典;
[0038]步骤12:将IP偏移词典建立为倒排索引,取固定长度的整数序列,压缩成一个索引文件。
[0039]所述对倒排列表中的数据进行压缩的索引压缩算法具体包括:simple9算法压缩,carryover-12算法压缩,pfordelta算法压缩。
[0040]所述解压和寻回的具体步骤包括:
[0041]步骤31:根据压缩算法的不同选择相应的解码器,将压缩单位进行解码;
[0042]步骤32:将解压数字转换成特定的数据结构,如倒排索引和词典。
[0043]本发明的有益效果在于有效实现高效的索引技术,以及索引压缩技术,能够有效检索海量网络流量数据。
【专利附图】

【附图说明】
[0044]图1是流记录格式。
[0045]图2是倒排列表实例。
[0046]图3是simple9压缩码字类型。[0047]图4 是 relative-10 编码类型。
[0048]图5是relative-10算法码型转换表。
[0049]图6是基于倒排序列表的网流索引压缩方法实现过程。
[0050]图7是网络流量词典库。
[0051]图8是词典存储数据结构。
[0052]图9是IP地址字段的倒排列表。
[0053]图10是网流检索寻回过程。
【具体实施方式】
[0054]下面结合附图,对优选实施例作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
[0055]本发明解决问题的思路主要分为两部分:第一部分,为网流信息做IP地址的词典索引;第二部分,采用索引压缩算法对倒排列表中的数据进行压缩。第一部分具体包括:把数字转换成词典;将IP偏移词典建立为倒排索引,取固定长度的整数序列,压缩成一个索引文件。第二部分中的索引压缩算法具体包括:PForDelta算法,simple9压缩算法,carryover-12 压缩算法。
[0056]下面以互联网流量大数据检索系统为例,实现本发明的基于倒排列表的网流索引检索与压缩的方法。
[0057]网流索引压缩中的大数据检索系统实现分成三个模块:数据预处理模块,位图索引构建模块,数据检索模块。
[0058]I数据预处理模块:
[0059]在数据进入模块之前有预处理过程,以动态和静态模式进行数据处理。对于静态模式(对于已经存储的原始数据文件进行重新处理来实现压缩与构建索引),将数据文件中的数据项利用局部敏感函数(LSH,相近的数据项得到的哈希值也相近)计算哈希值,并按照哈希值顺序进行重排序(reorder)过程,之后将数据提交给数据压缩模块与索引构建模块进行下一步处理。对于动态模式,用一段固定存储空间,缓存接收实时抓取的流量,当缓存数据达到上限时,提交给下一级来进行重排序的操作(类似于静态模式),之后数据提交给索引构建模块进行下一步处理。而由于此时缓存已经被清空,可以继续接受网络上的实时流量,这样就实现了动态处理的过程。
[0060]2索引构建模块:
[0061]随着互联网的飞速发展,各项信息也随之呈现链式增长,用户如果想在这样庞大的信息库中找到自己需要的东西,无异于大海捞针,而搜索引擎恰好解决了这样的问题,也对我们的发明提供了重要的技术参考。它通过种种高效的方式建立起简洁的、有针对性的索引,对用户的检索行为做出及时的相应。索引建立有很多方法,其中主流的有两遍文档遍历法和排序法,又如现在在搜索引擎中很流行的non-cluster方法,这项技术和语言文字的科学有着很大关系,涉及到语法库的存储,词汇库的存储,单个字的存储。索引器生成从关键词到特定数字建立索引表,索引表上会显示索引项在文档中的位置,以便检索器计算索引之间的相邻关系或者接近关系。
[0062]3数据检索模块:[0063]用户输入希望检索的条件,之后系统从构建的位图索引文件中依照索引查找对应的条目,可快速执行与,或,非与JOIN操作。如果对索引文件全部解码的话,会造成巨大的时间开销与空间开销,因此引入了动态判断策略,输入检索条件通过动态判断策略的处理决定是部分解码(partial-decompression)还是全部解码(full-decompression).部分解码的方法是只对命中条目附近的块(block)进行解码并抽出检索命中的数据,而全部解码则利用在部分解码带来收益不大的场景,这样可以相对提高检索效率。
[0064]当今网络流量的检索和查询的主要特点为:
[0065]1.仍然采用的是传统的定性存储,将各项数据信息以流记录的形式来存储。
[0066]2.大量的数据没有进行合适的加工和处理。
[0067]3.这些信息之间缺少必要的关联,而许多指针型数据,便占用了大量的存储空间。
[0068]搜索引擎中的数据条理性和存储灵活性给予我们启发,我们的发明主要将会对第2,3点产生优化效果。我们将网流检索和搜索引擎相结合,提出将搜索引擎的优势利用到网流检索中去。这项发明不仅可以应用到网流检索,同时可以应用到大数据存储和查找的各项相关领域中去。 [0069]下面的实施例是按照本发明提出的一种基于倒排列表的网流索引检索与压缩的方法对索引构建模块和数据检索模块进行处理的过程。以网流检索中的一个数据组{166;5,8, 10,11,13,15,28,36,61...}为例来阐明本专利的实现过程。图6是本发明所提出的基于倒排列表的网流索引检索与压缩方法的压缩算法流程图。
[0070]步骤1:把IP偏移量地址建立成索引。
[0071]步骤11:把数字转换成词典。
[0072]文本检索中的索引采用倒排列表作为其数据结构来存放信息比如文档编号,单词频率和文档位置,来配合单词编号,文档频率和文档位置进行查找。
[0073]在对网络流量信息进行查找和压缩处理的时候,我们把一个IP地址的字段的数字(8bit)作为单词,或者TCP/UDP协议的端口号16bit的一个字段作为单词集。也就是说,词典是数字的集合,即都是U,…,255}.[0074]接下来,通过哈希加链表的形式构造词典。哈希加链表中的每一项保存一个指针,指向冲突链表,相同哈希值的单词形成链表结构。
[0075]词典,单词和倒排文件这三者的关系可以通过图7来说明。
[0076]数字集单词词典的数据结构如图8所示。
[0077]步骤12:将IP偏移词典建立为倒排索引,取固定长度,比如4Kbit长度的整数序列,压缩成一个索引文件。
[0078]在倒排列表我们填充IP偏移量用以网络流量的定性分析。IP偏移量用来标识数据包在该数据流中的位置,也可以理解为使用同一个IP标识发送多个数据包时的顺序号,是一个十进制整数,第一个包的偏移量是0,之后的数据包偏移量以O为基准进行累计运算。如{166 ;5,8,10,11,13,15,28,36,61...}。
[0079]IP地址字段的倒排列表如图9所示。
[0080]步骤2:对倒排列表中的数据进行压缩,并以数组的形式保存在内存中。压缩算法包括:pForDelta算法,simple9算法压缩和carryover-12算法压缩。
[0081]1.simple9 算法压缩[0082]读取带压缩数值队列{5,8, 10,11,13,15,28,36,61}中后续28个数字,也就是所有的数字,发现有大于I的数字,说明B = I的布局无法容纳这组数字,于是改为读取队列中后续的14个数值,但发现有大于3的数字,B = 2的布局也无法容纳,以此类推,最终试探出5,8,10, 11,13,可以选取B = 5的布局进行压缩;15,28,36,61可以选取B = 7的布局进行压缩。最终压缩成小于三个四字节的定长压缩单位如下(*代表浪费的存储字节)
[0083]0101 00101 01000 01010 01011 01101***
[0084]0111 0001111 0011100 0100100 0111101*
[0085]可以看出,压缩之前的每个数字占四字节的存储空间,而全部数值总共占40字节,压缩之后尽管还有未利用的空间和冗余,但是存储空间只有8字节。
[0086]2.carryover-12 算法压缩
[0087]对于{5,8,10,11,13,15,28,36,61},进行压缩之后:
[0088]01 00101 01000 01010 01011 01101 01111
[0089]10 011100 100100 111101......[0090]可以看出这串数字被压缩成了不到两个压缩单位。需要说明的是我们约定第一个码字的类型编码是01。所以下一个码字的类型可以推导出来是10。
[0091]显然,在simple9中压缩成了 2个压缩单位,而利用carryoverl2压缩后,压缩量不到2个压缩单位。
[0092]3.pfordelta 算法压缩。
[0093]对于{5,8, 10,28,11,61,13,36,15},其中异常的大数为28,36,61,那么异常链表
头为3,表示经过三个数字之后是第一个异常大数。而常规数据存储区为{5,8,10,1,11,1,13,1,15}其中的三个I将28,61,36这三个大数替换,分别代表跳过后面I位便出现异常大数。在异常数据存储区,存放36,61,28。
[0094]全部的压缩序列将变成:[1,5,8,10,1,11,1,13,1,15,28,61,36]。
[0095]对于{5,8,10,28,11,61,13,36,15}的pfordelta 压缩结果为:
[0096]00000000000000000000000000000001 0101 1000 1010 0001 1011 0001 1101 00011111 0000000000000000000000000001I100 000000000000000000000000001II101 00000000000000000000000000100100
[0097]步骤3:解压和寻回。
[0098]步骤31:根据压缩算法的不同选择相应的解码器,将压缩单位进行解码。
[0099]步骤32:将解压数字转换成特定的数据结构,如倒排索引和词典。
[0100]步骤4:根据倒排索引获得每个流量包的信息。
[0101]其中,还原倒排索引信息和网络流量查询实现原理如图10所示。比如我们想寻发往端口 140的,目的地址为166.111.*.*的网流。首先将压缩的各个地址段或者端口的信息进行与或运算,得出的结果便是的偏移地址,这相当于一个过滤或者解压缩的过程,最后将得到的偏移地址对应到相应的存储块中并回溯相应的块,从而获得相应的网络流量信息。
[0102]由上面的实施例中的网流检索的实现过程可以看出本发明能够有效实现高效的索引技术,以及索引压缩技术,能够有效检索海量网络流量数据。
[0103]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本 【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【权利要求】
1.一种基于倒排列表的网流索引检索与压缩的方法,其特征是所述方法包括: 步骤1:把IP偏移量地址建立成索引; 步骤2:对倒排列表中的数据进行压缩,并以数组的形式保存在内存中; 步骤3:解压和寻回; 步骤4:根据倒排索引获得每个流量包的信息。
2.根据权利要求1所述的一种基于倒排列表的网流索引检索与压缩的方法,其特征是所述把IP偏移量地址建立成索引具体包括: 步骤11:把数字转换成词典; 步骤12:将IP偏移词典建立为倒排索引,取固定长度的整数序列,压缩成一个索引文件。
3.根据权利要求1所述的一种基于倒排列表的网流索引检索与压缩的方法,其特征是所述对倒排列表中的数据进行压缩的索引压缩算法具体包括:simple9算法压缩,carryover-12算法压缩,pfordelta算法压缩。
4.根据权利要求1所述的一种基于倒排列表的网流索引检索与压缩的方法,其特征是所述解压和寻回的具体步骤包括: 步骤31:根据压缩算法的不同选择相应的解码器,将压缩单位进行解码; 步骤32:将解压数字转换成特定的数据结构,如倒排索引和词典。
【文档编号】H04L12/24GK104009984SQ201410206048
【公开日】2014年8月27日 申请日期:2014年5月15日 优先权日:2014年5月15日
【发明者】陈震, 刘洪健, 马戈, 曹军威 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1