发明内容
为解决上述问题,本发明提供了一种基于检索信息投影的网络会话包索引方法,包括如下步骤:
步骤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天,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:读取最后一次锁定的时间单元内的网络会话流,提取出满足要求的网络会话流。