CN113343034A - Ip查找方法、系统及存储介质 - Google Patents
Ip查找方法、系统及存储介质 Download PDFInfo
- Publication number
- CN113343034A CN113343034A CN202110637655.XA CN202110637655A CN113343034A CN 113343034 A CN113343034 A CN 113343034A CN 202110637655 A CN202110637655 A CN 202110637655A CN 113343034 A CN113343034 A CN 113343034A
- Authority
- CN
- China
- Prior art keywords
- address
- prefix
- storage space
- target
- chip
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000012163 sequencing technique Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/83—Querying
Abstract
本发明公开了一种IP查找方法、系统及存储介质,拆分路由表中的IP前缀,确定拆分的比特位M;将所述IP前缀的前M位作为索引存储在第一存储空间,后面部分存储在第二存储空间,并对第二存储空间内的数据进行排序;目标IP地址进入路由表中进行IP查找流程。本发明只需要在原有拆分哈希模型基础上对片外IP地址进行一次额外的排序操作,再使用二分法来替代原有线性查找方法即可,不影响原有系统的其它功能,无需对已有设备进行较大更改。
Description
技术领域
本发明涉及计算机网络传输领域,特别是一种IP查找方法、系统及存储介质。
背景技术
IP查找一直是计算机网络传输中的重要部分,一般通过最长前缀匹配的方式实现,其简单流程如下。表1为一个简单的路由前缀表示例,假设此时进行查找的IP地址前5位为:10011,那么对照表1我们发现序号为2、4、5的前缀都与此IP地址匹配,但因为5号前缀最长(即匹配的位数最多为4位),所以最终此IP地址匹配5号前缀,依照路由表转发信息,前往P5节点。
表1 IP路由前缀表
序号 | IP地址前缀 | 下一跳信息 |
1 | 0* | P1 |
2 | 1* | P2 |
3 | 01* | P3 |
4 | 100* | P4 |
5 | 1001* | P5 |
随着大数据时代的来临,IP地址的数目也是呈爆炸性的增长,想要将所有IP地址信息存储到路由器中需要较大的存储开销。因此,研究者们提出了多种优化存储的方案。哈希作为一种通用高效的数据结构在IP查找中有着广泛且深刻的应用,其中拆分哈希作为哈希方式的一种,通过将IP地址进行拆分,分别对两部分IP地址进行不同的处理。片上存储空间小但是查找速度快,适合存放少量索引前缀,因而将前半部分作为哈希索引部署到片上,后半部分剩余的IP地址存储在片外存储结构中。如表2所示为另一个路由前缀表示例,注意到11个前缀中的前三位只有2种情况,所以在IP地址前缀的第3位进行一次拆分。这样在查找时首先根据拆分位置将IP地址的前N位(示例中N=3)在片上进行查找,然后再在片外进行第二次查找。
现有研究方案主要集中在如何优化片上空间的存储,对于片外存储却没有考虑,都是采用单纯的线性哈希查找。但是随着网络的发展,IP地址的增多,尤其是IPv6地址的普及,片外空间也不是可以无限使用的,需要进行合理的优化,提高存储和查找效率。现有方法在处理片外IP地址时使用的线性哈希方法效率较低,尤其考虑到网络信息快速增长的场景后,包括IPv6地址的应用,使得片外IP查找效率降低,进而影响整个IP地址查找的效率,提高了网络传输的时延。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供一种IP查找方法、系统及存储介质,提高IP查找效率,从而降低网络时延。
为解决上述技术问题,本发明所采用的技术方案是:一种IP查找方法,包括以下步骤:
S1、拆分路由表中的IP前缀,确定拆分的比特位M;
S2、将所述IP前缀的前M位作为索引存储在第一存储空间,后面部分存储在第二存储空间,并对第二存储空间内的数据进行排序;
S3、目标IP地址进入路由表中进行IP查找流程。
本发明中,第一存储空间存储容量较小,但查找速度快,存储固定长度的IP前缀,适合统一处理,加快查找速度;第二存储空间存储容量较大,但查找速度慢,存储剩余长度不同的IP前缀,可通过本方法进行加速,提高查找速度。
所述第一存储空间为片上存储空间;第二存储空间为片外存储空间。片上存储空间可以是内存,片外存储空间可以是硬盘等存储设备。内存空间小,但处理快;硬盘处理慢,但空间大。本发明的方案充分利用了内存和硬盘的优势。
本发明的方法还包括:S4、根据查找结果进行信息传输,将目标IP地址请求发往至对应下一跳信息。
步骤S3中,目标IP地址进入路由表中进行IP查找流程的具体实现过程包括:
1)将所述目标IP地址分为前半段和后半段,其中前半段包括M比特位;将前M位作为索引在片上IP地址前缀中进行哈希匹配查找,匹配成功后,进入步骤2);
2)在所述第二存储空间内,利用二分法查找与所述后半段匹配的IP前缀,直至匹配成功,或者只有一个IP地址前缀仍然匹配失败,则停止。
本发明只需要在原有拆分哈希模型基础上对片外IP地址进行一次额外的排序操作,再使用二分法来替代原有线性查找方法即可,不影响原有系统的其它功能,无需对已有设备进行较大更改。
步骤2)的具体实现过程包括:设所述第二存储空间内有N个从小到大排列好的IP地址前缀,比较目标IP地址的后半段与N/2位置的IP地址前缀,如果目标IP地址小于该IP地址前缀,则选取N/4位置的IP前缀比较大小;如果目标IP地址大于该IP地址,则再选取3N/4位置的IP地址前缀比较大小;重复该步骤,直到匹配成功,或者区间内只有一个IP地址前缀仍然匹配失败,则停止。本发明还提供了一种IP查找系统,其包括计算机设备;所述计算机设备被配置或编程为用于执行上述方法的步骤。
作为一个发明构思,本发明还提供了一种计算机存储介质,其存储有程序;所述程序被配置为用于执行上述方法的步骤。
与现有技术相比,本发明所具有的有益效果为:
1、现有基于拆分哈希的IP查找方法在片外部分主要采用线性哈希查找,效率较低,在遇到IPv6等大规模查找场景下,本发明的方法可以显著提高查找速度;
2、现有方法最坏情形下需要N次哈希次数,N为对应的IP地址数目,而本发明采用二分法,可以将访存次数降至log(N);
3、本发明只需要在原有拆分哈希模型基础上对片外IP地址进行一次额外的排序操作,再使用二分法来替代原有线性查找方法即可,不影响原有系统的其它功能,无需对已有设备进行较大更改。
附图说明
图1为本发明IP查找流程图。
具体实施方式
为实现快速的IP查找,本发明实施例采用的技术方案是:在基于拆分哈希的IP查找过程中,将片外哈希地址进行排序,再使用二分法进行IP地址的查找,包括以下步骤:
1)对于路由表中的IP前缀进行拆分,确定拆分的比特位M;
2)根据拆分位M,将前M位作为索引存储在片上存储空间,后面部分存储在片外存储空间,并对片外存储空间进行排序;
3)目标IP地址进入路由表中进行IP查找流程;
4)根据查找结果进行信息传输,将目标IP地址请求发往对应下一跳信息。
主流程中步骤3)具体过程如下,流程图如图1所示:
1)收到目标IP地址,根据之前步骤确定的拆分位M,将目标IP地址拆分为两部分;
2)将前M位作为索引在片上IP地址前缀中进行哈希匹配查找,匹配成功后到索引块(即第二存储空间)的对应位置;
3)将后半部分到对应的片外IP地址前缀对应进行二分查找,假设其中有N个从小到大排列好的IP地址前缀。将目标IP地址的后半段与N/2位置的IP地址前缀比较大小,如果小于该地址,则再选取N/4位置的IP前缀比较大小;如果大于该地址,则再选取3N/4位置的IP地址前缀比较大小。即每次与当前区间中部的IP地址前缀比较,淘汰掉其中一半的区间,反复此操作,直到匹配成功或者区间内只有一个IP地址前缀仍然匹配失败的情况下停止;
4)根据获得的匹配结果,进行之后步骤的操作。
本发明针对拆分哈希的片外部分进行优化,采用时间复杂度为O(log(N))的二分查找法来取代时间复杂度为O(N)的线性查找法,提高片外IP地址查找效率,进而提高整个IP地址的查找效率,尤其适用于大规模IP查找情形以及IPv6的场景。
为了提高片外查找效率,本发明提出了二分法来加快查找效率。
表2 IP路由前缀表
如表3所示,我们将表2中的11个前缀从第三位进行拆分,变成两种情况。为了使用二分法处理片外情形,我们将两部分的剩余前缀进行大小排序。这样区别于传统的线性查找,采用二分法查找。例如:此时查找的IP地址前7位为0110111*,首先从第三比特位进行拆分,011和0111*;然后根据前三位“011”进入对应部分,最后用后面的前缀0111*进行二分查找。根据二分查找规律,第一次匹配011对应的最中间的片外IP地址前缀0111*,匹配成功,跳转信息为P9;而如果按照线性匹配,则需要3次才可以匹配成功。
表3拆分哈希IP地址前缀存储示例
由上述例子可见,现有方法在处理片外IP地址时使用的线性哈希方法效率较低,
尤其考虑到网络信息快速增长的场景后,包括IPv6地址的应用,使得片外IP查找效率降低,进而影响整个IP地址查找的效率,提高了网络传输的时延。
在片外IP前缀查找过程中,假设对应的索引前缀里总共有6个IP前缀地址,在最坏情形下(匹配失败),原有方法需要6次匹配过程才能确定匹配失败,即时间复杂度为O(N);而本发明方法使用二分法,只需要3次即可确定匹配失败,即时间复杂度为O(log(N))。随着IP地址的增多,本发明方法的优势将越加明显。
以表3为例,假设目标IP地址前7位为1000111。拆分后前3位是100在片上匹配成功,进入对应的片外IP地址前缀进行匹配。原有方法与里面的所有6个前缀地址均匹配失败后返回匹配失败的结果,访存次数为6。本方法现将0111与6个前缀地址中中间的前缀1010(或者1001,不影响结果)比较,0111小于1010,则舍弃所有大于1010的前缀。然后在剩余的0110,1000,1001三个前缀中于最中间的1000进行比较,0111小于1000,则舍弃所有大于1000的前缀。再和剩余的0110比较,0111大于0110,但是不存在大于0110小于1000的前缀,因而匹配失败。整个过程访存次数为3。
实施步骤如下:
步骤1:C语言编写模拟路由表记录的路由信息,并模拟IP地址存储、查找过程。
步骤2,准备IP地址前缀集合,模拟路由表信息,并准备IP地址集合,模拟IP传输请求。
步骤3,将IP地址前缀依照拆分哈希方式存入片上与片外哈希表中。
步骤4,输入IP地址,模拟IP传输过程。
步骤5,运用拆分哈希方法进行IP查找,首先将前半部分在片上进行索引查找。
步骤6,然后用后半部分在片外进行二分查找,并返回最终查找结果。
表4现有拆分哈希IP查找与本发明方法的时间开销对比
Claims (7)
1.一种IP查找方法,其特征在于,包括以下步骤:
S1、拆分路由表中的IP前缀,确定拆分的比特位M;
S2、将所述IP前缀的前M位作为索引存储在第一存储空间,后面部分存储在第二存储空间,并对第二存储空间内的数据进行排序;
S3、目标IP地址进入路由表中进行IP查找流程。
2.根据权利要求1所述的IP查找方法,其特征在于,所述第一存储空间为片上存储空间;第二存储空间为片外存储空间。
3.根据权利要求1所述的IP查找方法,其特征在于,还包括:
S4、根据查找结果进行信息传输,将目标IP地址请求发往至对应下一跳信息。
4.根据权利要求2所述的IP查找方法,其特征在于,步骤S3中,目标IP地址进入路由表中进行IP查找流程的具体实现过程包括:
1)将所述目标IP地址分为前半段和后半段,其中前半段包括M比特位;将前M位作为索引在片上IP地址前缀中进行哈希匹配查找,匹配成功后,进入步骤2);
2)在所述第二存储空间内,利用二分法查找与所述后半段匹配的IP前缀,直至匹配成功,或者只有一个IP地址前缀仍然匹配失败,则停止。
5.根据权利要求3所述的IP查找方法,其特征在于,步骤2)的具体实现过程包括:设所述第二存储空间内有N个从小到大排列好的IP地址前缀,比较目标IP地址的后半段与N/2位置的IP地址前缀,如果目标IP地址小于该IP地址前缀,则选取N/4位置的IP前缀比较大小;如果目标IP地址大于该IP地址,则再选取3N/4位置的IP地址前缀比较大小;重复该步骤,直到匹配成功,或者区间内只有一个IP地址前缀仍然匹配失败,则停止。
6.一种IP查找系统,其特征在于,包括计算机设备;所述计算机设备被配置或编程为用于执行权利要求1~5之一所述方法的步骤。
7.一种计算机存储介质,其特征在于,其存储有程序;所述程序被配置为用于执行权利要求1~5之一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110637655.XA CN113343034A (zh) | 2021-06-08 | 2021-06-08 | Ip查找方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110637655.XA CN113343034A (zh) | 2021-06-08 | 2021-06-08 | Ip查找方法、系统及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113343034A true CN113343034A (zh) | 2021-09-03 |
Family
ID=77474896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110637655.XA Pending CN113343034A (zh) | 2021-06-08 | 2021-06-08 | Ip查找方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113343034A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117221224A (zh) * | 2023-11-09 | 2023-12-12 | 格创通信(浙江)有限公司 | 一种表项构建、查找方法、装置、网络设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6731643B1 (en) * | 1998-12-30 | 2004-05-04 | Alcatel | Method and apparatus for routing information packets associated to addresses represented through numerical strings |
CN1787477A (zh) * | 2004-12-09 | 2006-06-14 | 北京三星通信技术研究有限公司 | IPv6路由表的查找方法 |
CN1964311A (zh) * | 2005-11-10 | 2007-05-16 | 中国科学院计算技术研究所 | IPv6路由表快速查找和更新的方法 |
US20080056262A1 (en) * | 2006-09-01 | 2008-03-06 | Dheeraj Singh | Approach for fast ip address lookups |
CN101286935A (zh) * | 2008-05-07 | 2008-10-15 | 中兴通讯股份有限公司 | 一种基于ip地址范围的路由查找方法 |
CN104679854A (zh) * | 2015-02-15 | 2015-06-03 | 中国科学院计算技术研究所 | 路由表存储与查找方法 |
CN105827530A (zh) * | 2016-03-11 | 2016-08-03 | 中国互联网络信息中心 | 一种兼容ipv4/ipv6的ip二分查找方法及装置 |
CN108134739A (zh) * | 2016-12-01 | 2018-06-08 | 深圳市中兴微电子技术有限公司 | 一种基于索引特里树的路由查找方法及装置 |
CN112187743A (zh) * | 2020-09-14 | 2021-01-05 | 北京云杉世纪网络科技有限公司 | 一种基于ip地址最长前缀的网络策略匹配方法及系统 |
-
2021
- 2021-06-08 CN CN202110637655.XA patent/CN113343034A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6731643B1 (en) * | 1998-12-30 | 2004-05-04 | Alcatel | Method and apparatus for routing information packets associated to addresses represented through numerical strings |
CN1787477A (zh) * | 2004-12-09 | 2006-06-14 | 北京三星通信技术研究有限公司 | IPv6路由表的查找方法 |
CN1964311A (zh) * | 2005-11-10 | 2007-05-16 | 中国科学院计算技术研究所 | IPv6路由表快速查找和更新的方法 |
US20080056262A1 (en) * | 2006-09-01 | 2008-03-06 | Dheeraj Singh | Approach for fast ip address lookups |
CN101286935A (zh) * | 2008-05-07 | 2008-10-15 | 中兴通讯股份有限公司 | 一种基于ip地址范围的路由查找方法 |
CN104679854A (zh) * | 2015-02-15 | 2015-06-03 | 中国科学院计算技术研究所 | 路由表存储与查找方法 |
CN105827530A (zh) * | 2016-03-11 | 2016-08-03 | 中国互联网络信息中心 | 一种兼容ipv4/ipv6的ip二分查找方法及装置 |
CN108134739A (zh) * | 2016-12-01 | 2018-06-08 | 深圳市中兴微电子技术有限公司 | 一种基于索引特里树的路由查找方法及装置 |
CN112187743A (zh) * | 2020-09-14 | 2021-01-05 | 北京云杉世纪网络科技有限公司 | 一种基于ip地址最长前缀的网络策略匹配方法及系统 |
Non-Patent Citations (2)
Title |
---|
李彦彪,张大方,何大成: "PMST:一种面向高性能IP查找的双向平衡流水线结构", 《中国科学:信息科学》, vol. 45, no. 7, 20 July 2015 (2015-07-20), pages 934 - 952 * |
苏长龄,王立君: "《大学计算机基础》", 30 September 2008, 中国铁道出版社, pages: 264 - 265 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117221224A (zh) * | 2023-11-09 | 2023-12-12 | 格创通信(浙江)有限公司 | 一种表项构建、查找方法、装置、网络设备及存储介质 |
CN117221224B (zh) * | 2023-11-09 | 2024-02-06 | 格创通信(浙江)有限公司 | 一种表项构建、查找方法、装置、网络设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1808987B1 (en) | Longest prefix matching using tree bitmap data structures | |
US8780926B2 (en) | Updating prefix-compressed tries for IP route lookup | |
EP1623347B1 (en) | Comparison tree data structures and lookup operations | |
US7415472B2 (en) | Comparison tree data structures of particular use in performing lookup operations | |
US6985483B2 (en) | Methods and systems for fast packet forwarding | |
Le et al. | Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning | |
JP3881663B2 (ja) | フィールドレベルツリーを用いたパケット分類装置及び方法 | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
CN102045412B (zh) | IPv6地址前缀压缩存储方法及设备 | |
US7478109B1 (en) | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes | |
US10515015B2 (en) | Hash table-based mask length computation for longest prefix match caching | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
CN113343034A (zh) | Ip查找方法、系统及存储介质 | |
US20060198379A1 (en) | Prefix optimizations for a network search engine | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
CN115086221B (zh) | 一种报文处理方法、装置、转发设备和存储介质 | |
JP3660311B2 (ja) | テーブル検索装置および方法およびプログラムおよび記録媒体 | |
CN107222401B (zh) | 一种基于tcam的路由查找系统及其方法 | |
Erdem et al. | Value-coded trie structure for high-performance IPv6 lookup | |
US20050117588A1 (en) | System and method for network address port translation | |
CN117914784A (zh) | 并行查表装置、方法、设备及计算机可读存储介质 | |
CN107204927B (zh) | 一种icn网络中基于名字拆分的信息查找方法 | |
Srinivasan et al. | An efficient parallel ip lookup technique using CREW based multiprocessor organization | |
Broderick | A Parallel IP Lookup Approach for IPv4 Routing Tables | |
Bando | High-performance packet processing for IP route lookup and deep packet inspection |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210903 |
|
RJ01 | Rejection of invention patent application after publication |