一种聚合型IP索引的建立和应用方法转让专利

申请号 : CN202111067029.8

文献号 : CN113515527B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田红伟徐文勇王伟旭

申请人 : 成都数默科技有限公司

摘要 :

本发明公开了一种聚合型IP索引的建立和应用方法,属于数据处理技术领域。包括将所有IP域范围内的4个字节,转换对应为主机字节序的整数,建立空白位图索引;抽取一个时空内接收的所有数据块中的IP数据转化为整数,放入空白位图索引中对应的位置打上标记,形成处理索引;将处理索引进行逻辑“或”操作聚合到更大时空索引中;接收待查IP数据,确定待查IP数据转换为对应主机字节序的整数是否在更大时空索引中,若是则依次读取更小时空索引,直至定位到该IP数据。通过本发明所述的方法能够简单快速判断在数据有效时间范围内,原始数据中是否存在某IP数据。

权利要求 :

1.一种聚合型IP索引的建立和应用方法,其特征在于,包括如下步骤:步骤S1、索引设计:将所有IP域范围内的4个字节,转换对应为主机字节序的整数,建立空白的位图索引;

将转换对应为主机字节序的整数按段均匀划分,形成分片数组,并为每个分片数组编制一个分片序号;

将每个分片数组以指定的映射倍数进行模糊处理,即将一个分片数组中的N个连续整数用一个位来表示,只要该位中任意一个IP地址出现,则将该位置为“1”;

步骤S2、索引标记:接收数据块,抽取一个时空内到来的所有数据块的IP地址数据转化为整数,放入空白的位图索引中对应的位置打上标记,形成局部时空的处理索引;

处理索引的形成过程为:根据数据块中的IP地址数据转化为整数后的大小,确定该整数所在的空白位图索引上的分片序号,根据分片序号内分片数组的映射倍数,获取该IP地址数据所在空白位图索引的偏移和位置,并将该位置为“1”;

步骤S3、索引聚合:将多个打上标记的处理索引进行逻辑“或”操作聚合到较大时空索引中;将聚合成的较大时空索引通过逻辑“或”操作聚合到更大时空索引中;

步骤S4、数据查询:接收待查IP地址数据,确定待查IP地址数据转换为对应主机字节序的整数是否在步骤S3形成的更大时空索引中,若是则依次读取更小时空索引,直至定位到该IP地址数据;否则继续接收待查IP地址数据。

2.根据权利要求1所述的一种聚合型IP索引的建立和应用方法,其特征在于,使用LZ4压缩算法,对形成的空白的位图索引中的每个分片数组进行压缩处理,按照每个分片数组进行整体的存储和读取。

3.根据权利要求1所述的一种聚合型IP索引的建立和应用方法,其特征在于,步骤S3中,索引聚合过程包括如下步骤:

步骤S31、合并第一个处理索引时:将打上标记的处理索引的每个分片内存依次拷贝到相同分片序号的内存进行覆盖;

步骤S32、合并后来的处理索引时:依次按照索引分片,对相同分片序号相同偏移位的IP地址数据进行位“或”运算,并将运算结果保存到新的索引分片中。

4.根据权利要求1所述的一种聚合型IP索引的建立和应用方法,其特征在于,步骤S4具体包括:

步骤S41、输入待查IP地址数据,查找该待查IP地址数据所在的时间段,并将该待查IP地址数据转换为对应主机字节序的整数;

步骤S42、根据该待查IP地址数据转换为对应主机字节序的整数的大小,定位到具体的分片数组,并读取该分片数组的分片序号;

步骤S43、根据该分片序号内分片数组的映射倍数,确定该待查IP地址数据所在的位图偏移是否为“1”;

步骤S44、若为1,则进入所在时段的更小时空索引中,最终定该待查IP地址数据出现在哪些时段;若为0,则该待查IP地址数据在该时段中不存在。

5.根据权利要求1或3所述的一种聚合型IP索引的建立和应用方法,其特征在于,使用LZ4压缩算法,对聚合后的索引中的每个分片数组进行压缩处理,按照每个分片数组进行整体的存储和读取。

说明书 :

一种聚合型IP索引的建立和应用方法

技术领域

[0001] 本发明涉及数据处理领域,具体涉及一种聚合型IP索引的建立和应用方法。

背景技术

[0002] 系统按照时间或空间对网络流量进行采集,这些网络流量中包含了大量的原始数据。如果需要确定每段时间采集的流量中是否存在某IP数据,则需要进行IP索引建立和检
索,但由于系统存储空间限制,需要进行IP数据和索引的删除。现有技术中,专利
CN110825940A公开了一种网络数据包存储和查询方法,其技术方案为:在收到网络数据包
时,将数据包放入数据包写入队列中;解析数据包的特征,并提取特征数据;根据特征数据
生成布隆过滤器、位图索引和偏移数组文件;以大数据包文件方式写入数据包。
[0003] 但是上述现有技术存在以下问题:首先,使用布隆过滤器无法实现索引的删除,容易造成系统存储空间的占用;其次,在构建索引时需要分别使用三种技术:布隆过滤器、位
图 和数组索引,才能定位到数据所在偏移,过程比较复杂。因此,亟待设计一种方法能够简
单快速判断在有效时间范围内,原始数据中是否存在某IP数据的方法。

发明内容

[0004] 本发明旨在解决现有技术中的数据存储和查询存在的过程复杂、容易造成系统空间占用的问题,提出一种性能好、效率高的聚合型IP索引的建立和应用方法。
[0005] 为了实现上述发明目的,本发明的技术方案如下:
[0006] 一种聚合型IP索引的建立和应用方法,包括如下步骤:
[0007] 步骤S1、索引设计:将所有IP域范围内的4个字节,转换对应为主机字节序的整数,建立空白的位图索引;
[0008] 步骤S2、索引标记:接收数据块,抽取一个时空内到来的所有数据块的IP地址数据转化为整数,放入空白的位图索引中对应的位置打上标记,形成局部时空的处理索引;
[0009] 步骤S3、索引聚合:将多个打上标记的处理索引进行逻辑“或”操作聚合到较大时空索引中;将聚合成的较大时空索引通过逻辑“或”操作聚合到更大时空索引中;
[0010] 步骤S4、数据查询:接收待查IP地址数据,确定待查IP地址数据转换为对应主机字节序的整数是否在步骤S3形成的更大时空索引中,若是则依次读取更小时空索引,直至定
位到该IP地址数据;否则继续接收待查IP地址数据。
[0011] 进一步的,步骤S1还包括:将转换对应为主机字节序的整数按段均匀划分,形成分片数组,并为每个分片数组编制一个分片序号。
[0012] 进一步的,步骤S1还包括:将每个分片数组以指定的映射倍数进行模糊处理,即将一个分片数组中的N个连续整数用一个位来表示,只要该位中任意一个IP地址出现,则将该
位置为“1”。
[0013] 进一步的,步骤S1还包括:使用LZ4压缩算法,对形成的空白的位图索引中的每个分片数组进行压缩处理,按照每个分片数组进行整体的存储和读取。
[0014] 进一步的,步骤S2中,处理索引的形成过程为:根据数据块中的IP地址数据转化为整数后的大小,确定该整数所在的空白位图索引上的分片序号,根据分片序号内分片数组
的映射倍数,获取该IP地址数据所在空白位图索引的偏移和位置,并将该位置为“1”。
[0015] 进一步的,步骤S3中,索引聚合包括如下步骤:
[0016] 步骤S31、合并第一个处理索引时:将打上标记的处理索引的每个分片内存依次拷贝到相同分片序号的内存进行覆盖;
[0017] 步骤S32、合并后来的处理索引时:依次按照索引分片,对相同分片序号相同偏移位的IP地址数据进行位“或”运算,并将运算结果保存到新的索引分片中。
[0018] 进一步的,步骤S4具体包括:
[0019] 步骤S41、输入待查IP地址数据,查找该待查IP地址数据所在的时间段,并将该待查IP地址数据转换为对应主机字节序的整数;
[0020] 步骤S42、根据该待查IP地址数据转换为对应主机字节序的整数的大小,定位到具体的分片数组,并读取该分片数组的分片序号;
[0021] 步骤S43、根据该分片序号内分片数组的映射倍数,确定该待查IP地址数据所在的位图偏移是否为“1”;
[0022] 步骤S44、若为1,则进入所在时段的更小的局部时空索引,最终定该待查IP地址数据出现在哪些时段;若为0,则该待查IP地址数据在该时段中不存在。
[0023] 进一步的,使用LZ4压缩算法,对聚合后的索引中的每个分片数组进行压缩处理,按照每个分片数组进行整体的存储和读取。
[0024] 综上所述,本发明具有以下优点:
[0025] 1、本发明采用位图索引模式,可以在数据完全不失真的情况下记录所有IP情况,并且位图匹配性能高效;
[0026] 2、本发明以主机字节序进行IP位图设计,相同网络的IP位标记会相近,在读取和匹配相近IP时,达到优化效果,由于大部分网络中是将IP以网段方式进行规划,网络中就会
出现相近IP;
[0027] 3、本发明中,采用索引分片技术,将索引分片进行存储和聚合,在聚合时,若IP数量较小,某个分片不存在,则该分片的聚合则可以不进行内存的申请,减小内存消耗;在索
引读取时,能根据查询IP定位具体索引分片,仅需要读取指定分片,减少读取IO消耗;
[0028] 4、本发明支持对分片进行模糊处理,支持在资源受限的情况下,将全位图索引以指定的映射倍数进行模糊处理,减少索引所耗内存和存储空间;
[0029] 5、本发明中,采用了分片压缩策略,作为512MB的全位图索引,存储空间进行lz4压缩,可在压缩效率和压缩比上获取可观的增益;
[0030] 6、本发明中,当索引所对应的数据由于时间失效时,需要将数据删除同时清除索引,本发明能直接将对应的索引清除,并且不会对数据检索和数据准确性造成影响;
[0031] 7、本发明中,所述的索引聚合策略,可灵活的由小片时空IP索引数据,聚合为更大时空IP索引数据;在检索时,由大时间窗口或者大数据范围快速减少数据筛选时间空间范
围,提高检索效率。

附图说明

[0032] 图1为本发明的数据入库步骤流程图;
[0033] 图2为本发明的数据查询步骤流程图;
[0034] 图3为本发明的索引标记步骤示意图;
[0035] 图4为本发明的索引聚合步骤示意图;
[0036] 图5为本发明的数据存储结构图;
[0037] 图6为本发明的数据查询步骤一个具体实施例的示意图。

具体实施方式

[0038] 下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
[0039] 实施例1
[0040] 本实施例提供了一种聚合型IP索引的建立和应用方法,包括如下步骤:
[0041] 步骤S1、索引设计:将所有IP域范围内的4个字节,转换对应为主机字节序的整数,建立空白的位图索引;以主机字节序进行IP位图设计,检索的时候能提高命中率,相同网络
的IP位标记会相近,在读取和匹配相近IP时,达到优化效果,由于大部分网络中是将IP以网
段方式进行规划,网络中就会出现相近IP。
[0042] 步骤S2、索引标记:接收数据块,抽取一个时空内到来的所有数据块的IP数据转化为整数,放入空白的位图索引中对应的位置打上标记,形成局部时空的处理索引;采用位图
索引模式,可以在数据完全不失真的情况下记录所有IP情况,并且位图匹配性能高效。
[0043] 步骤S3、索引聚合:将多个打上标记的处理索引进行逻辑“或”操作聚合到较大时空索引中;将聚合成的较大时空索引通过逻辑“或”操作聚合到更大时空索引中;
[0044] 步骤S4、数据查询:接收待查IP数据,确定待查IP数据转换为对应主机字节序的整数是否在步骤S3形成的更大时空索引中,若是则依次读取更小时空索引,直至定位到该IP
数据;否则继续接收待查IP数据。
[0045] 实施例2
[0046] 本发明提供了一种聚合型IP索引的建立和应用方法,该方法基于如下的索引设计策略:
[0047] 步骤一、将所有IP域范围(0‑255.255.255.255)内的4个字节,转换对应为主机字节序的整数,转换后的整数范围为0到 4294967295。
[0048] 步骤二、分别为每个整数建立一个掩码bit位,则总计需要4294967295位,这4294967295位形成一个空白的位图索引,则总计消耗512MB内存来记录该位图索引。
[0049] 步骤三、将整数按段均匀划分,形成分片数组,并为每个分片数组编制一个分片序号(0‑15);在本实施例中,将0到 4294967295的整数按段分片为16片,每片32MB。每片的数
据大小为268435456,0分片数据范围为[0,268435456)或[0,268435455],1分片数据范围为
[268435456, 536870911],以此类推,15分片数据范围为[4026531839,4294967295],如图3
所示。
[0050] 步骤四、对每个分片数组进行模糊分片处理,形成N倍映射,达到压缩每个分片数组空间的目的。具体处理方法是:将一个分片数组中的N个连续IP(也可以说是N个连续整
数)用一个位来表示,那么只要该位中存在其中一个IP,则将该位置为“1”;如当映射倍数为
2倍时,0.0.0.0和0.0.0.1公用0分片的0偏移位,其中属于其中的任意一个IP出现,则将该
位置为1(按位“或”运算)。
[0051] 步骤五、使用lz4压缩算法,对位图索引里的每个分片数组进行压缩,然后按照每个分片数组进行整体的存储和读取。
[0052] 步骤六、索引聚合。为了取得更大时间或者空间范围的快速检索,快速筛选更大时间跨度的数据,减少数据无效读取造成的资源消耗,创造一个更大时空的新索引,设计将多
个经过步骤一到步骤四产生的位图索引进行合并,索引聚合方式如下:
[0053] 合并第一个处理索引时:将打上标记的处理索引的每个分片内存依次拷贝到相同分片序号的内存进行覆盖;
[0054] 合并后来的处理索引时:依次按照索引分片,对相同分片序号相同偏移位的IP数据进行位“或”运算,并将运算结果保存到新的索引分片中。如图4所示。
[0055] 经过步骤六,可以生成多个位图索引的聚合索引,在查询时,如果聚合索引已经进行排除,那么就可以避免进行其参与聚合的位图索引的读取和判断,极大地提高查询效率。
[0056] 基于上述索引设计策略,本发明所述的一种聚合型IP索引的建立和应用方法,主要包括数据入库和数据查询两个步骤,其中,
[0057] 如图1所示,数据入库步骤主要包括:
[0058] 步骤S1、接收数据块:获取数据块中的IP数据,并将该IP数据转化对应为主机字节序的整数,接收的数据块作为原始数据进行存储。
[0059] 步骤S2、索引标记:根据转换后整数的大小,确定该整数所在的位图索引的分片序号;根据分片序号内的分片数组的映射倍数,获取该IP数据所在位图索引的偏移和位置,并
将该位置为“1”;循环上述步骤S1至步骤S2,将一个时空内到来的所有IP数据都打上位图标
记,形成对应的处理索引。
[0060] 下面通过具体的例子来说明索引标记过程,如图3所示,假设需要建立索引的IP数据为127.0.0.1;192.168.0.1。每个分片大小为32MB,映射为32位,映射倍数为1024*1024*
8,图中的每个空白单元格为一位。
[0061] 将上述两个IP转为主机字节数的整数分别为:213006433;3232235521。
[0062] 根据转换的整数大小定位其所在位图索引的分片序号和位移:
[0063] 213006433/268435456=0——分片0;
[0064] 余213006433;
[0065] 213006433/(1024*1024*8)=25——偏移25,则将该位置为“1”;
[0066] 3232235521/268435456=12——分片12;
[0067] 余11010049;
[0068] 11010049/(1024*1024*8)=1——偏移1,则将该位置为“1”。
[0069] 步骤S3、索引存储、压缩:将打上标记的位图索引(即处理索引)按照分片分别进行lz4压缩,并且分别存储。
[0070] 步骤S4、索引聚合:将步骤S1至步骤S3产生的处理索引进行按位“或”操作到更大时空索引中。如图4所示是将两个1小时索引聚合成1个2小时的聚合索引。
[0071] 步骤S5、循环步骤S1至步骤S4,形成更大时空索引。这里的更大时空索引,包括按照时间维度来聚合索引,如时间(1分钟,10分钟,1小时,1天,1周,1月,1年),还包括按照空
间维度来聚合索引,如空间(1GB,10GB,100GB,1TB,10TB,100TB,1PB)。需要明确的是,这里
的局部时空索引和更大时空索引是相对而言的。
[0072] 以按照时间维度来聚合索引为例,最终形成的数据存储结构如图5所示,从局部时间的10分索引聚合成更大时间的小时索引,小时索引又聚合成更大时间的天索引,天索引
还可以聚合成更大时间的周索引、月索引……。
[0073] 步骤S6、将聚合后的索引,按照上述步骤S3进行索引的压缩和存储。
[0074] 如图2所示,数据查询步骤包括:
[0075] 步骤S1、接收查询IP:输入待查IP,查找一天数据中该待查IP所在的时间段,并将该待查IP转换为对应主机字节序的整数;
[0076] 步骤S2、定位索引分片并读取分片:根据转换后整数的大小定位到具体的分片数组,并读取该分片数组对应的分片序号;
[0077] 步骤S3、匹配偏移:根据该分片数组的映射倍数,确定所在的位图偏移是否为“1”,若为1,则需要按照查看更小时空中的索引,最终定位该待查IP出现在哪些小时段;若为0,
则该IP在当天中并不存在。
[0078] 下面通过具体的例子来说明数据查询过程,如图6所示,需要查询的IP数据为127.0.0.2;220.222.18.1。设每个分片32MB,映射为32位,映射倍数为1024*1024*8;图中每
个空白单元格为一位。
[0079] 上述两个IP数据转为主机字节序对应的整数分别为213006434;3705541121。
[0080] 根据上述两个整数的大小定位分片序号和偏移:
[0081] 213006434/268435456——则分片序号为0;
[0082] 余213006434;
[0083] 213006434/(1024*1024*8)=25——偏移25;
[0084] 3705541121/268435456——则分片序号为13;
[0085] 余215880193;
[0086] 215880193/(1024*1024*8)=25——偏移25。
[0087] 分别读取0分片和13分片,分别解压分片数组到内存中。
[0088] 匹配0分片的25偏移,结果为已标记,则说明该IP数据疑似存在,继续进行小一刻度0分片的索引读取或者直接遍历查询数据;
[0089] 匹配13分片的25偏移,结果为未标记,说明该IP不存在,则跳过该时间段。
[0090] 本发明中提到的“IP”均指“IP地址”,IP地址是一种在Internet上的给主机编址的方式,也称为网际协议地址。
[0091] 虽然结合附图对本发明的具体实施方式进行了详细地描述,但不应理解为对本专利的保护范围的限定。在权利要求书所描述的范围内,本领域技术人员不经创造性劳动即
可做出的各种修改和变形仍属本专利的保护范围。
[0092] 以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护
范围之内。