CN109246014B - 一种对ip地址进行快速分类的方法 - Google Patents
一种对ip地址进行快速分类的方法 Download PDFInfo
- Publication number
- CN109246014B CN109246014B CN201811049490.9A CN201811049490A CN109246014B CN 109246014 B CN109246014 B CN 109246014B CN 201811049490 A CN201811049490 A CN 201811049490A CN 109246014 B CN109246014 B CN 109246014B
- Authority
- CN
- China
- Prior art keywords
- key value
- splitting
- subnet
- value pair
- equal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种对IP地址进行快速分类的方法,包括如下步骤:步骤1,统一网段及其标识的格式为键值对的形式;步骤2,按规则等价拆分步骤1的键值对,并合并为键值对组:设定子网掩码长度为X,X介于0到32之间,按X长度的不同,遵循以下规则对子网进行拆分:若X在25至32之间,则将子网拆分为232‑X个32位长度的子网;若X在17至24之间,则将子网拆分为224‑X个24位长度的子网;若X在9至16之间,则将子网拆分为216‑X个16位长度的子网;若X在1至8之间,则将子网拆分为28‑X个8位长度的子网;步骤3,基于步骤2的键值对组,对目标IP按序编码依次查询。
Description
技术领域
本发明属于互联网技术领域,尤其涉及一种对IP地址进行快速分类的方法。
背景技术
自治系统(Autonomous System),简称AS,是指使用统一内部路由协议的一组网络。一般如果一个单位的网络规模比较大且有多个出口,通常会建立成一个自治系统。每个自治系统规划不同的AS号,并且每个AS号均规划了许多不重复的子网组。例如,国内运营商对不同地市的城域网、IDC出口以及大型单位均规划了不同的AS号。在数据中心机房中,我们可通过netflow协议获取设备下所有的流数据包,每条流均标记了源地址IP、目的地址IP、流大小、进出端口号等信息,我们常常需要对这些流包按不同的AS号进行归类统计分析。那么问题来了,如何在许许多多无规律的网段中精确而又快速地找到某个IP地址(如211.152.93.245)是属于哪个AS号呢?
针对上述问题,目前暂未有专门为IP地址进行分类制定快速高效的方案。目前,对IP地址进行分类仍基于传统的对IP地址的计算与转换后再逐一检查判断的做法。下面以AS号为例,当前对IP地址进行分类至AS号的方法主要分为以下几个步骤:
(1)整理信息
由于AS号涉及运营商的私密,因此此处的AS号举例以及各AS划分的子网均为随机挑选,如有雷同纯属巧合。如表1-1所示,AS号有1000、2000等,其分别由N个子网组成,一般来说这些子网是不交叉包含的(假设各个子网的网段不交叉且不重复)。通常来说,获取到的AS号的子网信息为字符串型的起始和结束网段,如58.32.0.0~58.41.255.255,通常先将起始网段和结束网段分别转换为十进制形式,如表1-1所示。
表1-1
(2)目标地址转换
为配合上述(1)整理的信息,因此此时需要将需要匹配的目标IP地址也转换为相同的数据类型,即十进制。例如,将目标IP地址为211.152.93.245(字符串型)转为3549978101(十进制型),将目标IP地址为101.224.11.11(字符串型)转为1709181707(十进制型)。
(3)逐一比较
将十进制的目标IP在整理后的AS信息表中去逐一比较,检查十进制IP地址是否在子网的起始网段与结束网段之间,如果是则返回结果。例如,IP为211.152.93.245属于2000的AS号,IP为101.224.11.11属于1000的AS号。
现有的方法需要在所有AS的子网表中去挨个比较查询,直到找到正确的为止。并且在实际的应用场景中,AS的子网表的条目有可能很多很多,这样查询一个IP所属AS可能需要检索很多次才能得到结果。即使先用模型先估算出个模糊区间,进而减少些范围再去检索,其仍然有可能需要查询多次才能得到最终的结果。因此,传统的技术方法需要解决如何才能减少这种不确定的查询次数的问题。
发明内容
针对现有技术的不足,本发明提供了一种用于对IP地址进行快速分类的方法。该方法对传统的方法进行了大幅度的优化和改进,提高了针对IP地址进行大数据分析的效率。本发明包括如下步骤:
步骤1,将网段及其标识的格式统一为键值对的形式;
步骤2,按规则等价拆分步骤1的键值对,并合并为键值对组;
步骤3,基于步骤2的键值对组,对目标IP按序编码依次查询。
步骤1包括:
统一网段及其标识的格式,将网段标识为N的xx.xx.xx.xx~xx.xx.xx.xx形式的网段(即xx.xx.xx.xx~xx.xx.xx.xx:N)转换为xx.xx.xx.xx/X:N(以下简称子网)的形式,其中,xx.xx.xx.xx为点分十进制的IPV4地址,X为掩码长度,1≤X≤32,xx.xx.xx.xx/X表示子网,N表示该网段的标识,xx.xx.xx.xx/X:N表示键值对,符号:为键值对中键与值之间的表示符号,符号:前面的内容为键,后面的内容为值。
步骤2-1,设定子网掩码长度为X,X介于1到32之间,按X长度的不同,遵循以下规则对步骤1的键值对中的键进行拆分:
若X在25至32之间,则将子网拆分为232-X个32位长度的子网;
若X在17至24之间,则将子网拆分为224-X个24位长度的子网;
若X在9至16之间,则将子网拆分为216-X个16位长度的子网;
若X在1至8之间,则将子网拆分为28-X个8位长度的子网;
步骤2-2,按照步骤2-1所述的规则对键值对的键进行拆分,并且保留原键值对的值,其中,子网拆分遵循IP地址等价转换原则。拆分好后,此时键值对只有四种形式,即xx.xx.xx.xx/32:N、xx.xx.xx.0/24:N、xx.xx.0.0/16:N以及xx.0.0.0/8:N,将这些键值对放至一起,形成键值对组。
步骤3包括如下步骤:
步骤3-1,设定目标IP为点分十进制的IPV4地址,即xx.xx.xx.xx;xx.xx.xx.xx加上后缀/32即xx.xx.xx.xx/32后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
步骤3-2,xx.xx.xx.xx最后一段数字改为0,即xx.xx.xx.0,再加上后缀/24,即xx.xx.xx.0/24后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
步骤3-3,xx.xx.xx.xx最后两段数字改为0,即xx.xx.0.0,再加上后缀/16,即xx.xx.0.0/16后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
步骤3-4,xx.xx.xx.xx最后三段数字改为0,即xx.0.0.0,再加上后缀/8,即xx.0.0.0/8后,在键值对组中检查,在键值对组中查询,若查询到,则返回结果,如查询不到,也结束,并返回-1或other的标识。
本发明具有以下技术优点:
1、每次查询均为精确查询,而非数值比较查询
传统的对IP地址进行分类的办法是判断十进制IP是否在子网的起始和结束的数值之间,这种比较查询的方式显然比较繁琐。本文中通过对网段的等价拆分以及对目标IP的合理编码,可实现对目标IP的精确查询。
2、减少查询次数
传统的对IP地址进行分类的办法是对目标IP在所有网段中逐一比较查询,直到找到匹配的结果为止。这种方法有很大的不确定性,找出结果需要查询的次数不固定。本文阐述的方法,可根据网段的数量以及计算机的性能灵活的进行调整,可通过几次查询即可得到结果。
3、结合计算机,仅需毫秒即可得到结果
运用本文的算法,再结合计算机的优化处理,可以在数毫秒内得到结果。例如,在实际应用中,可将等价拆分后的子网信息写成一组组的键值对,存入计算机编程的常量、文件、缓存、内存等读取较快的地方,再将目标IP改造后的编码作为key值,在键值对中精确查找出其value值,即输出结果。经实验证明,经实验证明,使用中等配置电脑(8g内存+128gSSD+i5),在变量中存1000万组键值对,通过key查询10次仅需1毫秒左右。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。
图1网段转换为键值对格式示例图。
图2等价拆分键值对中的子网键示例图。
图3对目标地址按序编码依次查询示意图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
本发明公开了一种对IP地址进行快速分类的方法,该方法的具体步骤如下:
步骤一、统一网段及其标识的格式为键值对的形式,即将网段标识为N的xx.xx.xx.xx~xx.xx.xx.xx形式的网段(即xx.xx.xx.xx~xx.xx.xx.xx:N)转换为xx.xx.xx.xx/X:N(以下简称子网)的形式。其中,xx.xx.xx.xx为点分十进制的IPV4地址,X为掩码长度,1≤X≤32,xx.xx.xx.xx/X表示子网,N表示该网段的标识,xx.xx.xx.xx/X:N表示键值对,“:”为键值对中键与值之间的表示符号,其前面内容为键,后面为值。举例说明,如图1所示:
将210.5.31.128~210.5.31.255:2000转换为210.5.31.128/25:2000;
将210.76.64.0~210.76.95.255:2000转换为210.76.64.0/19:2000;
将58.32.0.0~58.41.255.255:1000转换为58.32.0.0/13:1000及58.40.0.0/15:1000;
将0.0.0.0~3.255.255.255:12345转换为0.0.0.0/6:12345;
步骤二、按规则等价拆分步骤1的键值对,并合并为键值对组,如图2所示:
步骤一的键值对中的键为xx.xx.xx.xx/X形式的子网,其中子网掩码长度为X,X介于1到32之间,按X长度的不同,可遵循以下规则对子网拆分:
1)若X在25至32之间,则将子网拆分为232-X个32位长度的子网。例如,可将210.5.31.128/25等价转换为128个32位掩码长度的子网,分别为210.5.31.128/32、210.5.31.129/32、……、210.5.31.255/32。
2)若X在17至24之间,则将子网拆分为224-X个24位长度的子网。例如,可将210.76.64.0/19等价转换为32个24位的子网,分别为210.76.64.0/24、210.76.65.0/24、……、210.76.95.0/24。
3)若X在9至16之间,则将子网拆分为216-X个16位长度的子网。可将58.32.0.0/13和58.40.0.0/15等价转换为10个16位的子网,分别为58.32.0.0/16、58.33.0.0/16、……、58.41.0.0/16。
4)若X在1至8之间,则将子网拆分为28-X个8位长度的子网。这种类型的子网在实际应用中较少见。例如,可将0.0.0.0/6等价转换为4个8位的子网,分别为0.0.0.0/8、1.0.0.0/8、2.0.0.0/8、3.0.0.0/8。
按照上述的规则对键值对的键进行拆分,并且保留原键值对的值,其中,子网拆分遵循IP地址等价转换原则。拆分好后,此时键值对只有四种形式,即xx.xx.xx.xx/32:N、xx.xx.xx.0/24:N、xx.xx.0.0/16:N以及xx.0.0.0/8:N。最后,再将这些键值对放至一起,形成键值对组。
步骤三、基于步骤二的键值对组,对目标IP按序编码依次查询,如图3所示:
1)设定目标IP的格式为点分十进制的IPV4地址,即xx.xx.xx.xx,xx.xx.xx.xx加上后缀/32即xx.xx.xx.xx/32后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
2)xx.xx.xx.xx最后一段数字改为0,即xx.xx.xx.0,再加上后缀/24,即xx.xx.xx.0/24后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
3)xx.xx.xx.xx最后两段数字改为0,即xx.xx.0.0,再加上后缀/16,即xx.xx.0.0/16后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
4)xx.xx.xx.xx最后三段数字改为0,即xx.0.0.0,再加上后缀/8,即xx.0.0.0/8后,在键值对组中检查,在键值对组中查询,若查询到,则返回结果,如查询不到,也结束,并返回-1或other的标识。
此外,上述的最多四次查询即可得到结果的方法只是举例说明,在实际应用中,需要几次查询以及分几级等价拆分,这取决于网段的数量和计算机的性能。如果数量不大或计算机性能足够强大,则只需几次拆分;如果数量大或计算机性能一般则需要将进行多次拆分。
本发明提供了一种对IP地址进行快速分类的方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (1)
1.一种对IP地址进行快速分类的方法,其特征在于,包括如下步骤:
步骤1,将网段及其标识的格式统一为键值对的形式;
步骤2,按规则等价拆分步骤1的键值对,并合并为键值对组;
步骤3,基于步骤2的键值对组,对目标IP按序编码依次查询;
步骤1包括:
统一网段及其标识的格式,将网段标识为N的xx.xx.xx.xx~xx.xx.xx.xx形式的网段转换为xx.xx.xx.xx/X:N的形式,其中,xx.xx.xx.xx为点分十进制的IPV4地址,X为掩码长度,1≤X≤32,xx.xx.xx.xx/X表示子网,N表示该网段的标识,xx.xx.xx.xx/X:N表示键值对,符号:为键值对中键与值之间的表示符号,符号:前面的内容为键,后面的内容为值;
步骤2包括如下步骤:
步骤2-1,设定子网掩码长度为X,1≤X≤32,按X长度的不同,遵循以下规则对步骤1的键值对中的键进行拆分:
若25≤X≤32,则将子网拆分为232-X个32位长度的子网;
若17≤X≤24,则将子网拆分为224-X个24位长度的子网;
若9≤X≤16,则将子网拆分为216-X个16位长度的子网;
若1≤X≤8之间,则将子网拆分为28-X个8位长度的子网;
步骤2-2,按照步骤2-1所述的规则对键值对的键进行拆分,并且保留原键值对的值,其中,子网拆分遵循IP地址等价转换原则;拆分好后,此时键值对只有四种形式,即xx.xx.xx.xx/32:N、xx.xx.xx.0/24:N、xx.xx.0.0/16:N以及xx.0.0.0/8:N,将这些键值对放至一起,形成键值对组;
步骤3包括如下步骤:
步骤3-1,设定目标IP为点分十进制的IPV4地址,即xx.xx.xx.xx;xx.xx.xx.xx加上后缀/32即xx.xx.xx.xx/32后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
步骤3-2,xx.xx.xx.xx最后一段数字改为0,即xx.xx.xx.0,再加上后缀/24,即xx.xx.xx.0/24后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
步骤3-3,xx.xx.xx.xx最后两段数字改为0,即xx.xx.0.0,再加上后缀/16,即xx.xx.0.0/16后,在键值对组中查询,若查询到,则返回结果,如查询不到,则继续下一步;
步骤3-4,xx.xx.xx.xx最后三段数字改为0,即xx.0.0.0,再加上后缀/8,即xx.0.0.0/8,以xx.0.0.0/8为key,在键值对组中查询,若查询到,则返回结果,如查询不到,也结束,并返回-1或other的标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811049490.9A CN109246014B (zh) | 2018-09-10 | 2018-09-10 | 一种对ip地址进行快速分类的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811049490.9A CN109246014B (zh) | 2018-09-10 | 2018-09-10 | 一种对ip地址进行快速分类的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109246014A CN109246014A (zh) | 2019-01-18 |
CN109246014B true CN109246014B (zh) | 2021-04-20 |
Family
ID=65061137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811049490.9A Active CN109246014B (zh) | 2018-09-10 | 2018-09-10 | 一种对ip地址进行快速分类的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109246014B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113824813B (zh) * | 2021-09-18 | 2022-06-17 | 中电信数智科技有限公司 | 一种IPv6子网范围获取方法及查询系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104767839A (zh) * | 2015-03-25 | 2015-07-08 | 五八有限公司 | 一种ip定位方法及装置 |
CN107613043A (zh) * | 2017-09-26 | 2018-01-19 | 小草数语(北京)科技有限公司 | Ip地址的地域信息搜索方法及其装置 |
CN107800816A (zh) * | 2017-09-29 | 2018-03-13 | 中国平安人寿保险股份有限公司 | 一种ip地址数据库建立方法及终端设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7908347B2 (en) * | 2007-09-10 | 2011-03-15 | Ncomputing, Inc. | System and method for computer network configuration and operation |
-
2018
- 2018-09-10 CN CN201811049490.9A patent/CN109246014B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104767839A (zh) * | 2015-03-25 | 2015-07-08 | 五八有限公司 | 一种ip定位方法及装置 |
CN107613043A (zh) * | 2017-09-26 | 2018-01-19 | 小草数语(北京)科技有限公司 | Ip地址的地域信息搜索方法及其装置 |
CN107800816A (zh) * | 2017-09-29 | 2018-03-13 | 中国平安人寿保险股份有限公司 | 一种ip地址数据库建立方法及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109246014A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7603474B2 (en) | Efficient endpoint matching using a header-to-bit conversion table | |
US6792423B1 (en) | Hybrid longest prefix match and fixed match searches | |
EP2772040B1 (en) | Prefix and predictive search in a distributed hash table | |
CN101345707B (zh) | 一种实现IPv6报文分类的方法及设备 | |
CN112347377B (zh) | Ip地址段查找方法与业务调度方法、装置、电子设备 | |
JP3881663B2 (ja) | フィールドレベルツリーを用いたパケット分類装置及び方法 | |
CN101848248B (zh) | 一种规则查找方法和装置 | |
US20140105215A1 (en) | Converting addresses for nodes of a data center network into compact identifiers for determining flow keys for received data packets | |
CN112235197B (zh) | 一种并行路由查找方法及系统 | |
CN105426474A (zh) | 统一资源定位符url匹配的方法及装置 | |
CN109246014B (zh) | 一种对ip地址进行快速分类的方法 | |
CN114244842B (zh) | 一种安全资源调度方法、装置、电子设备及存储介质 | |
CN116233064B (zh) | 一种信息确定方法、装置、设备及计算机可读存储介质 | |
CN105357334A (zh) | 一种基于ipv6地址划分的ipv6地址存储及快速查询方法 | |
CN113407560B (zh) | 更新消息处理方法、数据同步方法、配置信息配置方法 | |
CN110362560A (zh) | 一种无业务主键数据在存储数据库时去重的方法 | |
CN100488173C (zh) | 对流分类算法进行自动选择的方法 | |
CN109815263B (zh) | 一种模糊查找的数据流识别方法及系统 | |
CN106067876B (zh) | 一种基于模式匹配的http请求报文识别方法 | |
CN109525503B (zh) | 一种压缩方法及装置、计算机可读存储介质 | |
CN108011989B (zh) | 一种重定向方法及装置 | |
KR100598341B1 (ko) | 이진표기 문자열을 이용한 데이터베이스 상에서의 인터넷프로토콜(ip)주소정보 관리방법 | |
CN112532414A (zh) | 确定isp归属的方法、装置、设备及计算机存储介质 | |
CN106850345B (zh) | 一种网络用户状态的监测及查询方法 | |
KR20020016732A (ko) | 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |