CN109245879A - 一种存储和查找ip地址映射关系的双哈希算法 - Google Patents
一种存储和查找ip地址映射关系的双哈希算法 Download PDFInfo
- Publication number
- CN109245879A CN109245879A CN201811039437.0A CN201811039437A CN109245879A CN 109245879 A CN109245879 A CN 109245879A CN 201811039437 A CN201811039437 A CN 201811039437A CN 109245879 A CN109245879 A CN 109245879A
- Authority
- CN
- China
- Prior art keywords
- address
- storage
- hash
- mapping relations
- double
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
-
- 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/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种存储和查找IP地址映射关系的双哈希算法,用于在现场可编程门阵列中实现IP地址的存储和查找,包括以下步骤:在现场可编程门阵列中例化一随机存储器;设置两个或以上的哈希函数用于存储前的哈希运算;对等待存储的IP地址进行哈希运算;获得在所述哈希运算的结果范围内的一存储地址;遍历读取所有对应所述存储地址的值;判断所有对应所述存储地址的值的情况;将等待存储的IP地址值存到对应的地址空间内。由于现场可编程门阵列并行的特性,在进行双哈希的插入和读取数据时可以并行进行,提升了哈希表的操作处理性能,而这是软件层面的哈希表处理方法所不具备的。
Description
技术领域
本发明涉及互联网通信技术领域,尤其涉及一种基于双哈希函数的存储和查找IP地址映射的关系的算法及其现场可编程门阵列实现。
背景技术
常用的网络地址转换表查找算法有二叉树算法和哈希算法。哈希算法是一种检索效率非常高的组织字典数据的方法,其方式主要为对存储的键值进行哈希运算,使得每一个存储值与表中的一个唯一的位置相对应。哈希函数建立了从“键-值对”到哈希表地址集合的一个映射,有了哈希函数,我们就可以根据键来确定“键-值对”在哈希表中的位置的地址。使用这种方法由于不必进行多次键的比较,所以其搜索速度非常快。
哈希链表的应用能够提高查找效率,哈希链表是一种数据结构,表头和节点的数据结构不同,这样在进行表头或者节点的删除插入以及遍历操作时可以采用统一操作。
目前实现哈希链表的方式主要是利用C语言等高级编程语言来进行软件实现,硬件实现与软件实现相比,有更快的速度、更高的效率以及更好的稳定性。
通常值的取值范围比哈希表地址集合大很多,因此有可能经过同一哈希函数的计算,把不同的值映射到了同一个键(地址)上面,从而产生地址冲突。如果“键-值对”在加入哈希表的时候产生了冲突,就必须分配一个额外的地址来解决冲突,冲突太多会降低数据插入和搜索的效率,因此本领域技术人员希望能找到一个不容易产生冲突的函数,即构造一个地址分布比较均匀的哈希函数来降低地址冲突。
发明内容
针对哈希算法导致的地址冲突的问题所导致的数据插入和搜索效率的降低,本发明所述算法在现场可编程门阵列的器件实现上采用了一种基于双哈希的算法来降低冲突产生的概率,提高地址的分布均匀度,并且基于双哈希同时寻址,其相对于单哈希寻址在搜索效率上有了进一步的提高。
本发明所述的存储和查找网络地址转换表(存储IP和端口信息)的双哈希算法,用于在现场可编程门阵列中实现网络地址转换表的存储和查找,包括以下步骤:在现场可编程门阵列中例化一随机存储器;设置两个或以上的哈希函数用于存储前的哈希运算;对等待存储的(IP和端口值)进行哈希运算;获得在所述哈希运算的结果范围内的一存储地址;遍历读取所有对应所述存储地址的值;判断所有对应所述存储地址的值的情况;将等待存储的(IP和端口值)值存到对应的地址空间内。
在本发明的其他实施例中,所述IP地址还包括对应的端口。
在本发明的其他实施例中,当存储的表完成后,需要查询对应的值时,则通过对应地址进行查找。
在本发明的其他实施例中,所述随机存储器为双口随机存储器。
在本发明的其他实施例中,所述随机存储器的大小为16k*48bits。
在本发明的其他实施例中,所述IP地址和对应的端口为48bits。
在本发明的其他实施例中,所述随机存储器被配置为将每4K个地址作为一个桶的地址范围。
在本发明的其他实施例中,所述桶用于存储哈希算法结果冲突的多个存储值。
在本发明的其他实施例中,所述随机存储器通过IP核例化,并通过初始化文件把所述随机存储器的存储空间初始化为零。
在本发明的其他实施例中,所述存储和查找配置为分别进行或同时进行。
由于本发明是在现场可编程门阵列这类可编程硬件上的实现,其资源相对于在软件层面的实现来说,资源比较有限。因此本发明着重提出哈希函数对于地址空间(硬件资源)的更有效利用,而不是简单使用了拉链法解决了哈希冲突的问题,在软件层面的哈希函数具有足够多的硬件资源,无需考虑使用哈希函数所导致的资源空间利用率低的问题。
在技术实现难度上,由于现场可编程门阵列的特性,需要小心的处理其功能的实现和相对的有限资源。因此在一般的使用中采用双哈希算法(每个哈希函数4个桶一共为8个桶)来替代单哈希算法(每个哈希函数8个桶一共为8个桶)。当然也可以使用多哈希函数以及更多的桶深,但是一方面地址空间的利用率提升并不显著,并且增加了硬件资源的消耗。此外,如果资源足够多并且存储的数据过多可以适当增加双哈希函数的桶深。
另外,由于现场可编程门阵列并行的特性,在进行双哈希的插入和读取数据时可以并行进行,提升了哈希表的操作处理性能,而这是软件层面的哈希表处理方法所不具备的。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1为本发明实施提供的一种存储结构示意图;
图2为本发明实施提供的一种网络地址转换表学习流程图;
图3为本发明实施提供的一种网络地址转换表删除流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步描述。
本发明所述的技术方案,针对在网络地址转换表学习中采用的单哈希算法不足与缺点,提出了一种基于双哈希的算法,其主要原理为通过不同的哈希函数建立两张哈希列表,当有新的IP地址和端口需要学习的时候,经过第一个哈希函数的运算,后放入相应的地址空间,每个地址空间里可以存放四个不同的IP地址和端口,用于解决哈希冲突问题,当在同一个地址空间下的存放的IP地址和端口超过4个时(即冲突次数大于4时),则将IP地址和端口存放进第二个哈希表中。而在检索和删除IP地址和端口的时候,通过IP地址和端口的哈希运算获得对应的键,并通过键来获取存储的值。此外,由于硬件可以同时对两张表同时进行哈希运算,从而提高了网络地址转换表检索和删除效率和速度。
另外,由于第一张哈希表和第二张哈希表使用的是同一片地址空间,而通过对哈希函数的选择使得存放的数据可以更好的利用地址空间,提高了硬件资源的利用率和地址的分布均匀度。
在现场可编程门阵列的哈希表上的具体建立过程如下:
在现场可编程门阵列中例化1块16k*48bits大小的双口RAM,作为哈希表的物理地址,当需要存储的内容需要进行存储时,然后将每4K个地址作为一个桶的地址范围,因此16K的地址范围代表了4个桶。
当有值(IP和端口号为48bits)需要存储时,经过哈希运算时,获得一个在0-4096范围内的一个地址值,此时会先遍历读取这4个桶所对应地址的值,双哈希函数的情况下会读取8个地址,并判断8个地址所存储值的情况,之后将值存到对应的地址空间内。
当表建立之后,需要查询对应的值时,则通过对应地址进行查找。
如图1所示,等待存储的IP地址及其端口,同时经过两个哈希函数(哈希函数1和哈希函数2)的运算,分别得到与哈希函数1对应的4个存储地址和与哈希函数2对应的4个存储地址中的一个存储地址,然后判断这个存储地址的链表长度和节点情况,之后将值存到对应的地址空间内。当表建立之后,需要查询对应的值时,则通过对应地址进行查找。
如图2所示,网络地址转换表的学习过程从收到IP和端口号开始,同时通过经过两个哈希函数(哈希函数1和哈希函数2)的运算,以哈希函数1为例,刚收到的IP和端口号,经过哈希函数1运算,得到哈希函数1的存储地址,然后查找这个存储地址上存储的内容,这时判断这个地址存储的内容是否为0,若不为0,说明这个地址已经存有内容,则需继续查找下一个桶(当前地址加4096)所在的地址是否有内容(为0),若仍已存内容则继续查找下一个桶,直到遍历完4个桶(进入下一个桶之前需判断是否超过4个桶);另一边,若查找到的地址上存储的内容确为0,仍需进一步遍历哈希函数1运算所得的地址内容是否有为0,若有则获取保存内容为0的哈希地址,并保存当前的IP和端口内容在该地址上。若遍历完哈希函数1运算所得的地址内容没有为0,则仍需遍历哈希函数2运算所得的地址内容是否有为0,若有则获取保存内容为0的哈希地址,并保存当前的IP和端口内容在该地址上,若没有则结束。哈希函数2运算流程和哈希函数1类似,这里就不再赘述。
如图3所示,网络地址转换表的删除从收到IP和端口号和哈希地址开始,找到这个哈希地址上存储的内容,判断是否与收到的IP和端口号一致,如果一致则清除该地址下的内容(置零),如果不一致,则再继续查找下一个桶,再次判断内容是否一致。另外,进入下一个桶之前需判断是否超过4个桶。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (10)
1.一种存储和查找IP地址映射关系的双哈希算法,用于在现场可编程门阵列中实现IP地址的存储和查找,其特征在于,至少包括以下步骤:
在现场可编程门阵列中例化一随机存储器;
设置两个或以上的哈希函数用于存储前的哈希运算;
对等待存储的IP地址进行哈希运算;
获得在所述哈希运算的结果范围内的一存储地址;
遍历读取所有对应所述存储地址的值;
判断所有对应所述存储地址的值的情况;
将等待存储的IP地址值存到对应的地址空间内。
2.如权利要求1所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,所述IP地址还包括对应的端口。
3.如权利要求1所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,当存储的表完成后,需要查询对应的值时,则通过对应地址进行查找。
4.如权利要求1所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,所述随机存储器为双口随机存储器。
5.如权利要求1所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,所述随机存储器的大小为16k*48bits。
6.如权利要求2所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,所述IP地址和对应的端口为48bits。
7.如权利要求5所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,所述随机存储器被配置为将每4K个地址作为一个桶的地址范围。
8.如权利要求7所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,所述桶用于存储哈希算法结果冲突的多个存储值。
9.如权利要求1所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,所述随机存储器通过IP核例化,并通过初始化文件把所述随机存储器的存储空间初始化为零或随机值。
10.如权利要求5所述的存储和查找IP地址映射关系的双哈希算法,其特征在于,所述存储和查找配置为分别进行或同时进行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811039437.0A CN109245879A (zh) | 2018-09-06 | 2018-09-06 | 一种存储和查找ip地址映射关系的双哈希算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811039437.0A CN109245879A (zh) | 2018-09-06 | 2018-09-06 | 一种存储和查找ip地址映射关系的双哈希算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109245879A true CN109245879A (zh) | 2019-01-18 |
Family
ID=65067394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811039437.0A Pending CN109245879A (zh) | 2018-09-06 | 2018-09-06 | 一种存储和查找ip地址映射关系的双哈希算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109245879A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459741A (zh) * | 2020-03-27 | 2020-07-28 | 天津普智芯网络测控技术有限公司 | 一种通用的存储器数据和地址产生算法 |
CN111565180A (zh) * | 2020-04-28 | 2020-08-21 | 广州锦行网络科技有限公司 | 一种虚拟端口的保护系统及方法 |
CN113592920A (zh) * | 2021-07-28 | 2021-11-02 | 南京物间科技有限公司 | 一种基于Census和哈希链表的快速立体匹配方法 |
CN113873056A (zh) * | 2021-09-24 | 2021-12-31 | 福建天晴在线互动科技有限公司 | 一种ip快速范围匹配的方法及系统 |
CN114710467A (zh) * | 2022-03-25 | 2022-07-05 | 阿里巴巴(中国)有限公司 | Ip地址存储方法、装置和硬件网关 |
CN114969061A (zh) * | 2022-08-01 | 2022-08-30 | 浙江木链物联网科技有限公司 | 一种工业时序数据分布式存储方法、装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050141519A1 (en) * | 2003-12-31 | 2005-06-30 | Stmicroelectronics, Inc. | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware |
CN101034412A (zh) * | 2007-04-02 | 2007-09-12 | 华为技术有限公司 | 一种信息存储的方法、信息查找的方法及引擎装置 |
CN104104604A (zh) * | 2013-04-04 | 2014-10-15 | 马维尔以色列(M.I.S.L.)有限公司 | 网络交换机设备中的准确匹配哈希查找数据库 |
-
2018
- 2018-09-06 CN CN201811039437.0A patent/CN109245879A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050141519A1 (en) * | 2003-12-31 | 2005-06-30 | Stmicroelectronics, Inc. | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware |
CN101034412A (zh) * | 2007-04-02 | 2007-09-12 | 华为技术有限公司 | 一种信息存储的方法、信息查找的方法及引擎装置 |
CN104104604A (zh) * | 2013-04-04 | 2014-10-15 | 马维尔以色列(M.I.S.L.)有限公司 | 网络交换机设备中的准确匹配哈希查找数据库 |
Non-Patent Citations (1)
Title |
---|
中国机械工业教育协会: "《数据结构》", 31 December 2001 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459741A (zh) * | 2020-03-27 | 2020-07-28 | 天津普智芯网络测控技术有限公司 | 一种通用的存储器数据和地址产生算法 |
CN111459741B (zh) * | 2020-03-27 | 2022-08-26 | 天津普智芯网络测控技术有限公司 | 一种通用的存储器数据和地址产生方法 |
CN111565180A (zh) * | 2020-04-28 | 2020-08-21 | 广州锦行网络科技有限公司 | 一种虚拟端口的保护系统及方法 |
CN113592920A (zh) * | 2021-07-28 | 2021-11-02 | 南京物间科技有限公司 | 一种基于Census和哈希链表的快速立体匹配方法 |
CN113592920B (zh) * | 2021-07-28 | 2024-05-10 | 南京物间科技有限公司 | 一种基于Census和哈希链表的快速立体匹配方法 |
CN113873056A (zh) * | 2021-09-24 | 2021-12-31 | 福建天晴在线互动科技有限公司 | 一种ip快速范围匹配的方法及系统 |
CN113873056B (zh) * | 2021-09-24 | 2023-09-26 | 福建天晴在线互动科技有限公司 | 一种ip快速范围匹配的方法及系统 |
CN114710467A (zh) * | 2022-03-25 | 2022-07-05 | 阿里巴巴(中国)有限公司 | Ip地址存储方法、装置和硬件网关 |
CN114710467B (zh) * | 2022-03-25 | 2024-03-12 | 阿里巴巴(中国)有限公司 | Ip地址存储方法、装置和硬件网关 |
CN114969061A (zh) * | 2022-08-01 | 2022-08-30 | 浙江木链物联网科技有限公司 | 一种工业时序数据分布式存储方法、装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109245879A (zh) | 一种存储和查找ip地址映射关系的双哈希算法 | |
Manzoor et al. | Fast memory-efficient anomaly detection in streaming heterogeneous graphs | |
CN102521334B (zh) | 一种基于分类特性和平衡二叉树的数据存储、查询方法 | |
CN105975587B (zh) | 一种高性能的内存数据库索引组织与访问方法 | |
CN105138678B (zh) | 一种地图瓦片数据的读取、分发方法及读取、分发系统 | |
CN103593436B (zh) | 文件合并方法和装置 | |
CN103544269B (zh) | 目录的存储方法、查询方法及节点控制器 | |
CN106980656B (zh) | 一种基于二值码字典树的搜索方法 | |
US20140188885A1 (en) | Utilization and Power Efficient Hashing | |
CN109416681A (zh) | 使用幽灵指纹进行工作负载优化的重复数据删除 | |
CN107533518A (zh) | 用于容错对象存储器结构的分布式索引 | |
István et al. | Runtime parameterizable regular expression operators for databases | |
CN106156331A (zh) | 冷热温数据服务器系统及其处理方法 | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、系统及存储介质 | |
US20160224581A1 (en) | Recursive Multi-Threaded File System Scanner For Serializing File System Metadata Exoskeleton | |
CN109166615A (zh) | 一种随机森林哈希的医学ct图像存储与检索方法 | |
CN109597829B (zh) | 一种实现可搜索加密关系型数据库缓存的中间件方法 | |
CN104021223B (zh) | 一种集群数据库测点的访问方法及装置 | |
CN112000846A (zh) | 基于gpu分组lsm树索引的方法 | |
CN106708749B (zh) | 一种数据查找方法 | |
Luffel et al. | Grouper: A compact, streamable triangle mesh data structure | |
CN108009250A (zh) | 一种多分类赛事数据缓存建立、查询方法及装置 | |
CN114817648A (zh) | 一种高能效协同图计算方法及装置 | |
US10235420B2 (en) | Bucket skiplists | |
CN107273443B (zh) | 一种基于大数据模型元数据的混合索引方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190118 |