本发明涉及internet管理技术领域,尤其是一种ip网段高效匹配的实现方法。
背景技术:
定制网络设备串接在路由器之间,或者旁路并接到承载网路由器线路上,完成对网络流量的初步分析。为了完成流量中报文的ip地址和该ip所属网段、运营商类型、对应省份的一一对应,传统的解决方案是根据各运营商在各省份的ip地址范围,为每个ip地址独立创建ip地址表项,每个表项存储其所属网段、运营商、省份等信息,当报文到达一级设备时,将根据其完整的32位源/目的ip地址进行hash查表,找到其对应的ip地址表项,从而获得该报文源端/目的端ip所属网段、运营商及省份信息。可见,传统解决方案虽然可以快速实现ip地址和所属网段、运营商及省份信息的快速对应,但是考虑到现网海量的ipv4地址数量,每个ip地址独立创建表项存储所属网段、运营商、省份信息时,此方案对内存的消耗也是巨大的。
技术实现要素:
本发明所要解决的技术问题在于,提供一种ip网段高效匹配的实现方法,能够实现高效查找,同时大幅节省内存空间。
为解决上述技术问题,本发明提供一种ip网段高效匹配的实现装置,包括:大网段自动拆分模块、高效表项管理模块和流量源/目的ip匹配模块;
大网段自动拆分模块,自动导入记录大量网段信息的csv文件,按行提取运营商所在省份的大网段范围,并按照24位掩码将大网段划分为一个个含有256个ip的小网段,每个小网段对应一个表项;
二级表散列管理模块,根据拆分出来的表项,取前24位网段id作为key值,进行hash计算后,挂入冲突链进行管理,在hash算法合适时,冲突率1.3以下,实现高效查找;hash算法合适是指,通过试用不同的hash算法,在现网环境进行调试,找到对应于现网流量ip特征的、hash冲突率低的算法;
流量源/目的ip匹配模块,现网流量进入本模块后,分别取源/目的ip前24位网段进行hash查找后遍历冲突链,直接获取到源/目的ip对应的表项,从而获取到其对应的网段、运营商及省份信息。
相应的,一种ip网段高效匹配的实现方法,包括如下步骤:
(1)大网段自动拆分模块导入csv文件,按行提取信息,每行所有信息形成一个一级表的表项;逐条提取一级表的表项,将每个表项中网段内ip数目,除以256,获取该一级表表项分割后对应的二级表数目n;然后取该一级表网段的起始ip地址,取前24位,得到分割后的第一个二级表网段地址a,此后循环n-1次,每次产生一个二级表表项,第i次循环产生的网段地址为a i*256,同时为每个二级表表项添加对应运营商及省份信息;
(2)二级表散列管理模块逐条提取二级表表项,用二级表的网段地址作为key值,进行hash计算后,挂到对应冲突链进行管理;
(3)流量接入设备流量源/目的ip匹配模块,分别提取源/目的ip前24位,作为网段地址进行二级表的hash查找,表项查找成功,输出流入包的源/目的ip对应的大网段范围、运营商及省份信息;表项查找失败,终止匹配流程。
优选的,步骤(1)中,按行提取信息包括网段范围、网段内ip数目、运营商信息和省份信息。
本发明的有益效果为:本发明实现了现网大流量场景下,ip地址的快速映射和匹配,可以实时实现任意ip地址和其所属运营商、国家、地区位置信息之间的快速匹配,而不依赖于任何硬件性能,且存储全球ip地址信息时,所消耗的存储空间为40亿ipv4地址空间的1/256。
附图说明
图1为本发明的流程示意图。
具体实施方式
一种ip网段高效匹配的实现装置,包括大网段自动拆分模块、高效表项管理模块和流量源/目的ip匹配模块。
大网段自动拆分模块,可以自动导入记录大量网段信息的csv文件,按行提取运营商所在省份的大网段范围,并按照24位掩码将大网段划分为一个个含有256个ip的小网段,每个小网段对应一个表项。
二级表散列管理模块,根据拆分出来的表项,取前24位网段id作为key值,进行hash计算后,挂入冲突链进行管理。在hash算法合适时,冲突率1.3以下,可以实现高效查找。
流量源/目的ip匹配模块,现网流量进入本模块后,分别取源/目的ip前24位网段进行hash查找后遍历冲突链,可以直接获取到源/目的ip对应的表项,从而获取到其对应的网段、运营商及省份信息。
如图1所示,一种ip网段高效匹配的实现方法,包括如下步骤:
(1)大网段自动拆分模块导入csv文件,按行提取信息,每行所有信息形成一个一级表的表项;逐条提取一级表的表项,将每个表项中网段内ip数目,除以256,获取该一级表表项分割后对应的二级表数目n;然后取该一级表网段的起始ip地址,取前24位,得到分割后的第一个二级表网段地址a,此后循环n-1次,每次产生一个二级表表项,第i次循环产生的网段地址为a i*256,同时为每个二级表表项添加对应运营商及省份信息;
(2)二级表散列管理模块逐条提取二级表表项,用二级表的网段地址作为key值,进行hash计算后,挂到对应冲突链进行管理;
(3)流量接入设备流量源/目的ip匹配模块,分别提取源/目的ip前24位,作为网段地址进行二级表的hash查找,表项查找成功,输出流入包的源/目的ip对应的大网段范围、运营商及省份信息;表项查找失败,终止匹配流程。
本发明中,针对ip地址和所属网段、运营商、省份信息之间的对应关系,设计一种按段存储结构来实现高效查找的同时大幅节省内存空间。首先将各运营商在各省份的大网段进行一次划分,划分完之后的基本单元为256个ip地址的小网段,同一大网段的所有小网段拥有相同的大网段id、运营商信息、省份信息。如此可以将表项的内存消耗减小到传统方案的1/256。当报文到达设备时,取源/目的ip地址的前24位,进行hash查表,将直接找到其对应的子网段表项,从而获取源/目的ip对应的大网段id、运营商及省份信息等,同时实现了内存节约和高效匹配。
1.一种ip网段高效匹配的实现装置,其特征在于,包括:大网段自动拆分模块、高效表项管理模块和流量源/目的ip匹配模块;
大网段自动拆分模块,自动导入记录大量网段信息的csv文件,按行提取运营商所在省份的大网段范围,并按照24位掩码将大网段划分为一个个含有256个ip的小网段,每个小网段对应一个表项;
二级表散列管理模块,根据拆分出来的表项,取前24位网段id作为key值,进行hash计算后,挂入冲突链进行管理,在hash算法合适时,冲突率1.3以下,实现高效查找;
流量源/目的ip匹配模块,现网流量进入本模块后,分别取源/目的ip前24位网段进行hash查找后遍历冲突链,直接获取到源/目的ip对应的表项,从而获取到其对应的网段、运营商及省份信息。
2.一种ip网段高效匹配的实现方法,其特征在于,包括如下步骤:
(1)大网段自动拆分模块导入csv文件,按行提取信息,每行所有信息形成一个一级表的表项;逐条提取一级表的表项,将每个表项中网段内ip数目,除以256,获取该一级表表项分割后对应的二级表数目n;然后取该一级表网段的起始ip地址,取前24位,得到分割后的第一个二级表网段地址a,此后循环n-1次,每次产生一个二级表表项,第i次循环产生的网段地址为a i*256,同时为每个二级表表项添加对应运营商及省份信息;
(2)二级表散列管理模块逐条提取二级表表项,用二级表的网段地址作为key值,进行hash计算后,挂到对应冲突链进行管理;
(3)流量接入设备流量源/目的ip匹配模块,分别提取源/目的ip前24位,作为网段地址进行二级表的hash查找,表项查找成功,输出流入包的源/目的ip对应的大网段范围、运营商及省份信息;表项查找失败,终止匹配流程。
3.如权利要求2所述的ip网段高效匹配的实现方法,其特征在于,步骤(1)中,按行提取信息包括网段范围、网段内ip数目、运营商信息和省份信息。
技术总结