一种基于检索信息投影的网络会话包索引方法技术领域
本发明属于数据索引领域,尤其涉及到一种基于检索信息投影的网络会话包索引
方法。
背景技术
目前的索引基本基于四元组作为KEY来建立索引,在海量数据流量下,HASH表的处
理性能和容量无法满足。目前主流的HASH处理极限规模在1000万左右,而且索引块占用的
内存大小不固定,随着数据量的增大而增大,无法预先分配固定的内存,需要承受频繁和无
效的内存申请释放。
发明内容
为解决上述问题,本发明提供了一种基于检索信息投影的网络会话包索引方法,
包括如下步骤:
步骤1:预先指定至少一个用于存储网络会话包某种信息的检索信息的索引空间,所述
索引空间内具有若干存储位,一个存储位对应一种检索信息,各个存储位具有相同的初始
值。
步骤2:提取出指定网络会话包的某种或者某几种信息,确定各种信息对应的索引
空间及索引空间大小。
步骤3:将各个网络会话包的各个信息分别进行Hash运算后进行投影映射。
每个信息的Hash运算包括如下步骤:
步骤3.1:提取出信息的参数。
步骤3.2:将参数作为Hash的输入值进行运算,得到散列值。
步骤3.3:将散列值除以该种信息对应的索引空间大小进行取余,得到余值。
步骤3.4:检索信息投影模块将该信息映射到对应索引空间中位号为余值的存储
位,所述余值就作为该信息的索引信息,被映射的存储位被标记为已投影。
进一步的,还包括将将时间分为若干时间周期层的流程,具体为:将时间划分为若
干按时间先后排列的、长度相同的时间单元,每个时间单元再被划分为若干时间先后排列
的、长度相同的时间单元以形成下一时间周期层,如此循环划分,直到达到预定的最小时间
单元。
进一步的,在整个方法的执行过程中,还有存储值情况记录流程,具体为:按照预
定周期循环记录各个索引空间所有存储位的存储值情况,并将各个记录时刻对应到各个时
间周期层对应的时间单元内。
进一步的,步骤3之后还包括读取流程,所述读取流程具体为:
步骤4.1:预先给定欲读取的网络会话流的某种或者某几种信息。
步骤4.2:信息压缩模块将步骤4.1中的信息逐个进行压缩运算后得到对应的检索
信息。
步骤4.3:读取模块根据检索信息,找到对应的存储位,进而寻找对应的网络会话
包。
进一步的,步骤4.3具体为:
步骤4.3.1:将时间单元长度最长的时间周期层作为第一层时间周期层,系统从第一层
时间周期层预先选定的时间单元开始读取各个检索信息对应的存储位是否均被标记为已
投影,如是锁定该时间单元,并执行下一步,如否则遍历读取第一层时间周期层其他时间单
元内各个检索信息对应的存储位,直到能够锁定存储位均被标记为已投影的时间单元,如
遍历后仍不能锁定则结束读取流程。
步骤4.3.2:系统开始从被锁定时间单元被划分的下一时间周期层的各个时间单
元中遍历寻找各个检索信息对应的存储位均被标记为已投影的时间单元,并锁定该时间单
元。
步骤4.3.3:重复进行步骤4.3.2,直到锁定时间单元最短的时间周期层的对应时
间单元。
步骤4.3.4:读取最后一次锁定的时间单元内的网络会话流,提取出满足要求的网
络会话流。
进一步的,各个存储位的原始值为0,被标记为已投影后变为1。
进一步的,网络会话包的信息种类包括IP地址信息和/端口号信息和/或网协议ID
号信息。
进一步的,步骤3.2中,如果是IP地址进行压缩运算,则将其各个字节独立的作为
Hash的输入参数。
进一步的,步骤3.2中,如果是对端口号进行压缩运算,则将其各个字节独立的作
为Hash的输入参数。
进一步的,步骤3.3中,索引空间大小对应的位的个数为取余运算式的分母。
本发明的有益效果为:
本发明通过定义了一种新型的索引技术-投影索引,能将索引的处理规模提升到无限
大,并能够高速地写入和查询,并且对于两个或者多个索引合并成更高层的索引时几乎也
是0成本。本发明的投影索引因为体积小,因此可以常驻内存,省去硬盘IO的成本,并且也是
位运算,写入和读取的成本基本趋近于0,但可以极大地提升性能。
附图说明
图1为存储流程示意图。
图2为读取流程示意图。
具体实施方式
在介绍本发明所述方法前,先对本发明所对应的系统进行说明、该系统包括至少
一个用于存储网络会话包某种信息的检索信息的索引空间、信息压缩模块、检索信息投影
模块、读取模块。
所述索引空间内具有若干存储位,一个存储位对应一种检索信息,各个存储位具
有相同的初始值。
所述信息压缩模块用于将指定网络会话包的某种或者某几种信息进行压缩运算
得到各信息对应的检索信息。
检索信息投影模块,用于网络会话包的相关信息投影映射到存储该种信息的检索
信息的索引空间的对应存储位,被投影的存储位在第一次被投影时被标记为已投影;具有
相同检索信息的网络会话包的相关信息均投影映射同一个存储位。
所述读取模块用于根据欲读取网络会话包的某种或者某几种信息对应的检索信
息,找到对应的存储位,进而找到对应的网络会话包。
进一步的,所述检索信息投影模块还将时间分为若干时间周期层,每个时间周期
层将时间划分为若干按时间先后排列的、长度相同的时间单元,每个时间单元再被划分为
若干时间先后排列的、长度相同的时间单元以形成下一时间周期层,如此循环划分,直到达
到预定的最小时间单元,检索信息投影模块按照预定周期循环记录各个索引空间所有存储
位的存储值情况,并将各个记录时刻对应到各个时间周期层对应的时间单元内。举例:第一
层时间周期层的时间单元长度为1天,1天再划分为整数个小时长度的时间单元,每个小时
再被划分为整数分钟长度的时间单元,每分钟长度的时间单元再被划分为整数秒长度的时
间单元。应当理解,具体时间单元长度的取值根据实际情况自行确定。本实施例优选将24小
时作为最长的时间单元,以使查询能够精确到日期。
所述网络会话包的信息种类包括IP地址信息和/端口号信息和/或网协议ID号信
息。当然,并不局限于此,还可以进行信息种类扩展。
信息压缩模块将指定网络会包某种信息进行压缩运算以得到检索信息的方法为:
步骤一:将该种信息的参数作为Hash函数的输入参数进行Hash运算得到散列值。
步骤二:将散列值除以该种信息对应索引空间的大小进行取余,得到的余值即为
检索信息。
举例,假设存储IP地址信息的索引空间具有N MB的空间。假设IP地址四个字节为
IP1,IP2,1P3,1P4(1个字节8位)。检索信息为POS,则计算步骤为:
HashKey = HASH(IP1,1P2,1P3,1P4);
POS = HashKey % (N*1024*1024*8);
N*1024*1024*8的由来是:在信息进行压缩运算以得到检索信息的过程中,索引空间大
小对应的位的个数为取余运算式的分母。
需要强调的是,检索信息投影模块将信息压缩模块中进行Hash运算的信息投影映
射到对应索引空间中位号为其余值的存储位。不同网络会话包的相同信息可能计算出来的
存储位相同,那么这些信息就就属于同一种信息,都投影映射到了相同的存储位,极大的节
省了索引空间大小。如果索引空间较大,则一个存储位对应较少的同种信息,信息分类更
细,如果索引空间较小,则存储位对应较多的同种信息,信息分类更加粗略。总之,该种设计
能适应任意大小的索引空间。
下面对本发明所述工作方法进行说明。工作方法可分为时间分为若干时间周期层
的流程、存储流程、存储值情况记录流程、读取流程。
时间分为若干时间周期层的流程具体为:每个时间周期层将时间划分为若干按时
间先后排列的、长度相同的时间单元,每个时间单元再被划分为若干时间先后排列的、长度
相同的时间单元以形成下一时间周期层,如此循环划分,直到达到预定的最小时间单元,检
索信息投影模块按照预定周期循环记录各个索引空间所有存储位的存储值情况,并将各个
记录时刻对应到各个时间周期层对应的时间单元内。
如图1所示,存储流程包括如下步骤:
步骤1:预先指定至少一个用于存储网络会话包某种信息的检索信息的索引空间,所述
索引空间内具有若干存储位,一个存储位对应一种检索信息,各个存储位具有相同的初始
值。
步骤2:提取出指定网络会话包的某种或者某几种信息,确定各种信息对应的索引
空间及索引空间大小。
步骤3:将各个网络会话包的各个信息分别进行Hash运算后进行投影映射。
每个信息的Hash运算包括如下步骤:
步骤3.1:提取出信息的参数。
步骤3.2:将参数作为Hash的输入值进行运算,得到散列值。
步骤3.3:将散列值除以该种信息对应的索引空间大小进行取余,得到余值。
步骤3.4:检索信息投影模块将该信息映射到对应索引空间中位号为余值的存储
位,所述余值就作为该信息的索引信息,被映射的存储位被标记为已投影。
存储值情况记录流程,具体为:按照预定周期循环记录各个索引空间所有存储位
的存储值情况,并将各个记录时刻对应到各个时间周期层对应的时间单元内。
如图2所示,读取流程包括如下步骤:
步骤1:预先给定欲读取的网络会话流的某种或者某几种信息。
步骤2:信息压缩模块将信息逐个进行压缩运算后得到对应的检索信息。
步骤3:读取模块根据检索信息,找到对应的存储位,进而寻找对应的网络会话包。
步骤3具体为:
步骤3.1:将时间单元长度最长的时间周期层作为第一层时间周期层,系统从第一层时
间周期层预先选定的时间单元开始读取各个检索信息对应的存储位是否均被标记为已投
影,如是锁定该时间单元,并执行下一步,如否则遍历读取第一层时间周期层其他时间单元
内各个检索信息对应的存储位,直到能够锁定存储位均被标记为已投影的时间单元,如遍
历后仍不能锁定则结束读取流程。
步骤3.2:系统开始从被锁定时间单元被划分的下一时间周期层的各个时间单元
中遍历寻找各个检索信息对应的存储位均被标记为已投影的时间单元,并锁定该时间单
元。
步骤3.3:重复进行步骤3.2,直到锁定时间单元最短的时间周期层的对应时间单
元。
步骤3.4:读取最后一次锁定的时间单元内的网络会话流,提取出满足要求的网络
会话流。