CN113286013B - 一种子网匹配方法和装置 - Google Patents
一种子网匹配方法和装置 Download PDFInfo
- Publication number
- CN113286013B CN113286013B CN202110544831.5A CN202110544831A CN113286013B CN 113286013 B CN113286013 B CN 113286013B CN 202110544831 A CN202110544831 A CN 202110544831A CN 113286013 B CN113286013 B CN 113286013B
- Authority
- CN
- China
- Prior art keywords
- target
- subnet
- binary search
- search tree
- matching
- 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
- 238000000034 method Methods 0.000 title claims abstract description 19
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种子网匹配方法和装置。其中,所述方法包括:根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树;其中,所述子网关联的二叉搜索树根据子网IP的首8位以及子网IP地址生成;根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点;将所述目标节点的子网与所述目标IP匹配,若匹配成功,则所述目标IP在子网集合中。本发明的技术方案,通过查询表和二叉搜索树来进行多子网的匹配,与现有技术相比,降低了匹配子网时的算法复杂度,降低了平均IP匹配时间,提高了高速网络应用中IP的匹配效率。
Description
技术领域
本发明实施例涉及网络代理技术领域,尤其涉及一种子网匹配方法和装置。
背景技术
在网络代理技术中,常常需要通过一系列不连续的子网段匹配流经网卡的数据包,若匹配成功,则代理该数据包。
目前的算法大多是线性匹配,即按顺序匹配子网段,扫描过程中,若找到匹配项,则直接结束算法,当全部扫描完后,没有匹配项,则匹配失败。当子网段数量庞大时,匹配效率较低下,不同IP的匹配时间相差较大,容易造成性能瓶颈。
发明内容
本发明提供一种一种子网匹配方法和装置,以提高子网匹配的效率。
第一方面,本发明实施例提供了一种子网匹配方法,包括:
根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树;其中,所述子网关联的二叉搜索树根据子网IP的首8位以及子网IP地址生成;
根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点;
将所述目标节点的子网与所述目标IP匹配,若匹配成功,则所述目标IP在子网集合中。
可选的,根据子网IP地址的首8位以及子网IP地址生成子网关联的二叉搜索树包括:
根据子网的首8位生成子网数组列表,所述子网数组列表中的每个元素对应一个二叉搜索树;
根据每个子网的首8位以及每个子网IP对应的整数值,将所述每个子网IP插入到二叉搜索树的对应位置。
可选的,根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树,包括:
将目标IP首8位构成的数组元素与所述子网数组列表进行匹配;
将匹配得到的子网数组元素所对应的二叉搜索树作为目标二叉搜索树。
可选的,根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点,包括:
将所述目标IP地址转换为32位的整数;
根据所述整数的大小,从所述目标二叉搜索树的根节点处对所述目标二叉树进行搜索,以确定所述目标IP对应的目标节点。
第二方面,本发明实施例还提供了一种子网匹配装置,包括:
目标二叉搜索树确定模块,用于根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树;其中,所述子网关联的二叉搜索树根据子网IP的首8位以及子网IP地址生成;
目标节点确定模块,用于根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点;
子网匹配模块,用于将所述目标节点的子网与所述目标IP匹配,若匹配成功,则所述目标IP在子网集合中。
可选的,所述目标二叉搜索树确定模块,具体用于:
将目标IP首8位构成的数组元素与所述子网数组列表进行匹配;
将匹配得到的子网数组元素所对应的二叉搜索树作为目标二叉搜索树。
可选的,所述目标节点确定模块,具体用于:
将所述目标IP地址转换为32位的整数;
根据所述整数的大小,从所述目标二叉搜索树的根节点处对所述目标二叉树进行搜索,以确定所述目标IP对应的目标节点。
本发明通过根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树,并根据目标IP对目标二叉树进行搜索,以确定目标IP对应的目标节点,进而将目标节点的子网与目标IP匹配,根据匹配结果来确定目标IP是否在子网集合中。本发明通过数组查询表和二叉搜索树来进行多子网的匹配,与现有技术相比,降低了匹配子网时的算法复杂度,降低了平均IP匹配时间,提高了高速网络应用中IP的匹配效率。
附图说明
图1为本发明实施例提供的一种子网匹配方法的流程图;
图2是本发明实施例提供的一种子网搜索二叉树的数据结构;
图3是本发明实施例提供的一种子网匹配装置的功能模块图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例
图1为本发明实施例提供的一种子网匹配方法的流程图,本实施例可适用于将数据包IP地址与子网集合中多个子网进行匹配的情况,该方法可以由子网匹配装置来执行,具体包括如下步骤:
S110、根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树;其中,所述子网关联的二叉搜索树根据子网IP的首8位以及子网IP地址生成。
其中,子网通过IP和掩码表示,例如,子网IP 192.168.1.0,掩码255.255.255.0,表示子网的IP范围为192.168.1.0-192.168.1.255的网段。子网也可写成192.168.1.0/24,”/”之前为子网的IP,”/”之后为子网的有效位数。子网集合包括一系列不连续的子网,上述子网在数据传输的过程中需要与数据包的目标IP进行匹配。当子网数量非常庞大时,上述匹配工作将是一项非常耗时的工作。
因此,本实施例通过将子网集合中的子网建立在一棵二叉搜索树上,通过对二叉搜索树的搜索来实现目标IP的快速匹配。
其中,所述子网关联的二叉搜索树根据子网IP的首8位以及子网IP地址生成。具体的,根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树,包括:
将目标IP首8位构成的数组元素与所述子网数组列表进行匹配;
将匹配得到的子网数组元素所对应的二叉搜索树作为目标二叉搜索树。
进一步参见图2,图2是本发明实施例提供的一种子网搜索二叉树的数据结构。由于子网集合中的子网数据非常庞大,因此将子网的首8位提出来,生成一个0-255的数组列表,数组列表中的每个元素都对应一个二叉搜索树。
在构建数据结构时,先根据每个子网的首8位值确定其在数组列表中位置,从而快速的确定其对应的二叉搜索树,然后再将其IP表示为一个32的整数,通过整数的大小将其插入到二叉搜索树的对应位置处,从而实现二叉搜索树的构建。
当进行目标IP的匹配时,首先确定目标IP首8为位对应的值,通过查表,确定目标IP在0-255数组列表中的对应位置,从而可以快速的确定目标IP对应的目标二叉搜索树。
具体的,记IP首8位构成的数组为m,m的元素指向对应二叉树的根节点,目标搜索二叉树的具体确定过程如下:将目标IP转换为32为整数x;目标IP首8a=(x>>24)&0xFF;令N=m[a]。其中,N为目标二叉搜索树对应的根节点。
本实施例中,通过数组查表的方式可以实现目标二叉搜索树的定位,大大的提高了搜索效率。
S120、根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点。
本实施例中,在目标搜索二叉树确定之后,再根据目标IP对目标二叉树进行搜索,以确定目标IP对应的目标节点。具体的,根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点,包括:将所述目标IP地址转换为32位的整数;根据所述整数的大小,从所述目标二叉搜索树的根节点处对所述目标二叉树进行搜索,以确定所述目标IP对应的目标节点。
假设目标搜索二叉树的根节点为R,目标IP为i,记目标二叉搜索树节点N的左子节点为NL,右子节点为NR,且NL<NR,目标二叉搜索树的搜索步骤如下:
记当前节点为N,N=R;将i转换为32位整数x;若x<N;则N=NL;若x=N,则返回节点N;若x<N;则N=NR;若N为叶子节点,返回N。
通过根据整数x的大小,来对目标二叉搜索树进行搜索,与现有技术中顺序匹配的方式相比,能够快速的确定与目标IP最接近的目标节点。
S130、将所述目标节点的子网与所述目标IP匹配,若匹配成功,则所述目标IP在子网集合中。
在目标IP最接近的目标节点确定之后,再将目标IP与目标节点对应的子网进行匹配,若匹配成功,则目标IP在子网集合中,若匹配失败,则目标IP不匹配子网集合。
本实施例的技术方案,通过查询表和二叉搜索树来进行多子网的匹配,与现有技术相比,降低了匹配子网时的算法复杂度,降低了平均IP匹配时间,提高了高速网络应用中IP的匹配效率。
图3为本发明实施例提供的一种子网匹配装置的功能模块图。该装置包括:目标二叉搜索树确定模块310,用于根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树;其中,所述子网关联的二叉搜索树根据子网IP的首8位以及子网IP地址生成;
目标节点确定模块320,用于根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点;
子网匹配模块330,用于将所述目标节点的子网与所述目标IP匹配,若匹配成功,则所述目标IP在子网集合中。
其中,根据子网IP地址的首8位以及子网IP地址生成子网关联的二叉搜索树包括:
根据子网的首8位生成子网数组列表,所述子网数组列表中的每个元素对应一个二叉搜索树;
根据每个子网的首8位以及每个子网IP对应的整数值,将所述每个子网IP插入到二叉搜索树的对应位置。
进一步的,所述目标二叉搜索树确定模块310,具体用于:
将目标IP首8位构成的数组元素与所述子网数组列表进行匹配;
将匹配得到的子网数组元素所对应的二叉搜索树作为目标二叉搜索树。
所述目标节点确定模块320,具体用于:
将所述目标IP地址转换为32位的整数;
根据所述整数的大小,从所述目标二叉搜索树的根节点处对所述目标二叉树进行搜索,以确定所述目标IP对应的目标节点。
本发明实施例所提供的一种子网匹配装置可执行本发明任意实施例所提供的一种匹配方法,具备执行方法相应的功能模块和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (6)
1.一种子网匹配方法,其特征在于,包括:
根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树;其中,所述子网关联的二叉搜索树根据子网IP的首8位以及子网IP地址生成;
根据子网IP地址的首8位以及子网IP地址生成子网关联的二叉搜索树,包括:
根据子网的首8位生成子网数组列表,所述子网数组列表中的每个元素对应一个二叉搜索树;
根据每个子网的首8位以及每个子网IP对应的整数值,将所述每个子网IP插入到二叉搜索树的对应位置;
根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点;
将所述目标节点的子网与所述目标IP匹配,若匹配成功,则所述目标IP在子网集合中。
2.根据权利要求1所述的方法,其特征在在于,根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树,包括:
将目标IP首8位构成的数组元素与所述子网数组列表进行匹配;
将匹配得到的子网数组元素所对应的二叉搜索树作为目标二叉搜索树。
3.根据权利要求1所述的方法,其特征在于,根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点,包括:
将所述目标IP地址转换为32位的整数;
根据所述整数的大小,从所述目标二叉搜索树的根节点处对所述目标二叉树进行搜索,以确定所述目标IP对应的目标节点。
4.一种子网匹配装置,其特征在于,包括:
目标二叉搜索树确定模块,用于根据目标IP首8位构成的数组元素,从子网关联的二叉搜索树中确定目标二叉搜索树;其中,所述子网关联的二叉搜索树根据子网IP的首8位以及子网IP地址生成;
根据子网IP地址的首8位以及子网IP地址生成子网关联的二叉搜索树,包括:根据子网的首8位生成子网数组列表,所述子网数组列表中的每个元素对应一个二叉搜索树;
根据每个子网的首8位以及每个子网IP对应的整数值,将所述每个子网IP插入到二叉搜索树的对应位置;
目标节点确定模块,用于根据所述目标IP对所述目标二叉搜索树进行搜索,确定所述目标IP对应的目标节点;
子网匹配模块,用于将所述目标节点的子网与所述目标IP匹配,若匹配成功,则所述目标IP在子网集合中。
5.根据权利要求4所述的装置,其特征在于,所述目标二叉搜索树确定模块,具体用于:
将目标IP首8位构成的数组元素与所述子网数组列表进行匹配;
将匹配得到的子网数组元素所对应的二叉搜索树作为目标二叉搜索树。
6.根据权利要求4所述的装置,其特征在于,所述目标节点确定模块,具体用于:
将所述目标IP地址转换为32位的整数;
根据所述整数的大小,从所述目标二叉搜索树的根节点处对所述目标二叉树进行搜索,以确定所述目标IP对应的目标节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110544831.5A CN113286013B (zh) | 2021-05-19 | 2021-05-19 | 一种子网匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110544831.5A CN113286013B (zh) | 2021-05-19 | 2021-05-19 | 一种子网匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113286013A CN113286013A (zh) | 2021-08-20 |
CN113286013B true CN113286013B (zh) | 2023-11-07 |
Family
ID=77279888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110544831.5A Active CN113286013B (zh) | 2021-05-19 | 2021-05-19 | 一种子网匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113286013B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107154899A (zh) * | 2017-03-23 | 2017-09-12 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种用后缀索引查找ip路由的系统 |
CN107169054A (zh) * | 2017-04-26 | 2017-09-15 | 四川长虹电器股份有限公司 | 基于前缀森林的ip索引方法 |
CN107423397A (zh) * | 2017-07-26 | 2017-12-01 | 北京时代民芯科技有限公司 | 一种面向多任务微系统的自适应压缩存储及解压提取方法 |
CN108875006A (zh) * | 2018-06-15 | 2018-11-23 | 泰康保险集团股份有限公司 | 确定ip地址所属地区的方法及装置 |
CN109710860A (zh) * | 2018-12-21 | 2019-05-03 | 武汉思普崚技术有限公司 | 一种url分类匹配的方法及装置 |
CN110071871A (zh) * | 2019-03-13 | 2019-07-30 | 国家计算机网络与信息安全管理中心 | 一种大模式集ip地址匹配方法 |
CN110290117A (zh) * | 2019-06-06 | 2019-09-27 | 新华三信息安全技术有限公司 | 一种匹配ip地址的方法及装置 |
CN110995876A (zh) * | 2019-10-11 | 2020-04-10 | 中国科学院计算技术研究所 | 一种ip存储与查找的方法及装置 |
CN112364319A (zh) * | 2020-10-12 | 2021-02-12 | 西安电子科技大学 | 一种基于二叉树混洗的生物特征模板保护方法及装置 |
-
2021
- 2021-05-19 CN CN202110544831.5A patent/CN113286013B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107154899A (zh) * | 2017-03-23 | 2017-09-12 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种用后缀索引查找ip路由的系统 |
CN107169054A (zh) * | 2017-04-26 | 2017-09-15 | 四川长虹电器股份有限公司 | 基于前缀森林的ip索引方法 |
CN107423397A (zh) * | 2017-07-26 | 2017-12-01 | 北京时代民芯科技有限公司 | 一种面向多任务微系统的自适应压缩存储及解压提取方法 |
CN108875006A (zh) * | 2018-06-15 | 2018-11-23 | 泰康保险集团股份有限公司 | 确定ip地址所属地区的方法及装置 |
CN109710860A (zh) * | 2018-12-21 | 2019-05-03 | 武汉思普崚技术有限公司 | 一种url分类匹配的方法及装置 |
CN110071871A (zh) * | 2019-03-13 | 2019-07-30 | 国家计算机网络与信息安全管理中心 | 一种大模式集ip地址匹配方法 |
CN110290117A (zh) * | 2019-06-06 | 2019-09-27 | 新华三信息安全技术有限公司 | 一种匹配ip地址的方法及装置 |
CN110995876A (zh) * | 2019-10-11 | 2020-04-10 | 中国科学院计算技术研究所 | 一种ip存储与查找的方法及装置 |
CN112364319A (zh) * | 2020-10-12 | 2021-02-12 | 西安电子科技大学 | 一种基于二叉树混洗的生物特征模板保护方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113286013A (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4452183B2 (ja) | プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置) | |
US6526444B1 (en) | Using an authentication server to obtain dial-out information on a network | |
US7664040B2 (en) | Method of accelerating the shortest path problem | |
US7103679B2 (en) | Automatically identifying subnetworks in a network | |
US6173384B1 (en) | Method of searching for a data element in a data structure | |
US6792423B1 (en) | Hybrid longest prefix match and fixed match searches | |
US7054855B2 (en) | Method and system for performing a pattern match search for text strings | |
EP2560327B1 (en) | Routing table establishment method and device | |
US8923298B2 (en) | Optimized trie-based address lookup | |
Li et al. | An improved trie-based name lookup scheme for named data networking | |
CN110233821B (zh) | 一种智能设备网络空间的探测和安全扫描系统及其方法 | |
US7948916B2 (en) | Method and apparatus for discovering topology information in a network | |
CN113286013B (zh) | 一种子网匹配方法和装置 | |
EP4060949A1 (en) | Method for reducing routing loops, apparatus and system | |
JP2019004398A (ja) | パケット識別装置およびパケット識別方法 | |
CN108616385B (zh) | 简单网管协议代理的查询方法、mib树的遍历方法及系统 | |
CN112187743B (zh) | 一种基于ip地址最长前缀的网络策略匹配方法及系统 | |
CN113839895B (zh) | 一种报文转发方法及装置 | |
CN112995353B (zh) | 基于流量分析的IPv6地址存活性扫描系统及扫描方法 | |
CN113343034A (zh) | Ip查找方法、系统及存储介质 | |
US6895442B1 (en) | Technique for fast and efficient internet protocol (IP) address lookup | |
CN106921661B (zh) | 一种基于关联规则的IPv6地址扫描方法 | |
CN109246014A (zh) | 一种对ip地址进行快速分类的方法 | |
US7376657B1 (en) | Fast IPv6 address lookup using skip level processing on multi-bit tries | |
JP3779619B2 (ja) | パケット転送装置およびネットワークおよびプログラムおよび記録媒体 |
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 |