CN106302172A - 同时支持哈希查找和路由查找的存储、查找方法和装置 - Google Patents

同时支持哈希查找和路由查找的存储、查找方法和装置 Download PDF

Info

Publication number
CN106302172A
CN106302172A CN201510252724.XA CN201510252724A CN106302172A CN 106302172 A CN106302172 A CN 106302172A CN 201510252724 A CN201510252724 A CN 201510252724A CN 106302172 A CN106302172 A CN 106302172A
Authority
CN
China
Prior art keywords
hash
lookup
sublist
key assignments
route
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
Application number
CN201510252724.XA
Other languages
English (en)
Inventor
程晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
Shenzhen ZTE Microelectronics Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen ZTE Microelectronics Technology Co Ltd filed Critical Shenzhen ZTE Microelectronics Technology Co Ltd
Priority to CN201510252724.XA priority Critical patent/CN106302172A/zh
Priority to PCT/CN2015/092392 priority patent/WO2016184029A1/zh
Publication of CN106302172A publication Critical patent/CN106302172A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Abstract

本发明实施例公开了同时支持哈希查找和路由查找的存储方法,将预先获取的哈希表拆分成多个哈希子表;获取每个哈希子表的待存储信息和多级路由查找的每一级结点的待存储信息;规划出多个哈希表项存储单元和多个路由表项存储单元;每个哈希子表对应一个哈希表项存储单元,所述多级路由查找的每一级结点的待存储信息对应一个路由表项存储单元;将每个哈希子表的待存储信息存入对应的哈希表项存储单元,将多级路由查找的每一级结点的待存储信息存入对应的路由表项存储单元。本发明实施例还公开了同时支持哈希查找和路由查找的存储装置、查找方法和查找装置。

Description

同时支持哈希查找和路由查找的存储、查找方法和装置
技术领域
本发明涉及网络交换技术,尤其涉及同时支持哈希查找和路由查找的存储、查找方法和装置。
背景技术
随着Internet的迅猛发展,用于主干网络互联的核心路由器的接口速率达到200Gbps,作为路由器的心脏,网络处理器的性能决定了路由器的性能差异。网络处理器的主要工作是根据数据报文的各项关键字对报文进行分类和转发,而对这些关键字(键值)的查找归结于三种主要的查找方式:哈希查找、路由查找和流分类查找。在现有的处理方式中,流分类查找由于键值长度不定且多存在掩码查找,通常采用三态内容寻址存储器(ternary content addressablememory,TCAM)来实现;哈希查找由于键值长度固定且无掩码,可以由单独的哈希查找模块来实现;路由查找由于需要进行最长掩码匹配,也需要使用单独的路由查找模块来实现,通常路由查找可以依赖于TCAM来实现。
随着网络业务量的急速膨胀,每个路由器需要处理的哈希表项和路由表项需求也急速膨胀,而在不同的应用需求和应用环境下,路由器需要处理的哈希表项和路由表项的数量也不尽相同。有些场景下只需要少量的哈希表,但需要大量的路由表;而另一些场景下,需要大量的哈希表项而只需要少量的路由表项;也有一些场景同时需要大量的哈希表和路由表项。然而,现有技术中,缺乏针对上述不同场景并同时支持哈希查找和路由查找的实现方案。
发明内容
为解决上述技术问题,本发明实施例期望提供一种同时支持哈希查找和路由查找的存储、查找方法和装置,能够配置灵活地调整哈希表和路由表的容量比,满足更多应用场景的需求。
本发明的技术方案是这样实现的:
本发明实施例提供的同时支持哈希查找和路由查找的存储方法,包括:
将预先获取的哈希表拆分成多个哈希子表;
获取每个哈希子表的待存储信息和多级路由查找的每一级结点的待存储信息;
规划出多个哈希表项存储单元和多个路由表项存储单元;每个哈希子表对应一个哈希表项存储单元,所述多级路由查找的每一级结点的待存储信息对应一个路由表项存储单元;
将每个哈希子表的待存储信息存入对应的哈希表项存储单元,将多级路由查找的每一级结点的待存储信息存入对应的路由表项存储单元。
上述方案中,所述规划出多个哈希表项存储单元和多个路由表项存储单元,包括:
根据每个哈希子表的待存储信息的数据大小,确定对应的哈希表项存储单元的存储容量;根据所述多级路由查找对应的每一级结点的待存储信息的数据大小,确定对应的路由表项存储单元的存储容量。
本发明实施例提供同时支持哈希查找和路由查找的查找方法,所述哈希查找的哈希表拆分成M个哈希子表,M≥1;所述查找方法包括:
接收哈希查找时待查找的键值和路由查找时待查找的键值;
对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,同时,对所述路由查找时待查找的键值进行多级路由查找。
上述方案中,所述对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,包括:
步骤A1:利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B1:判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为哈希查找结果,并结束本次哈希查找流程,否则,执行步骤C1;
步骤C1:判断当前的j值是否等于M,若是,则本次哈希查找失败,否则,将j的值加1,返回至步骤A1。
上述方案中,所述对所述路由查找时待查找的键值进行多级路由查找,包括:对所述路由查找时待查找的键值进行多比特Trie树路由查找。
上述方案中,所述接收哈希查找时待查找的键值和路由查找时待查找的键值,包括:接收哈希查找时待查找的P个键值和路由查找时待查找的Q个键值,P和/或Q为大于1的自然数;
所述对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,包括:利用对应的哈希子表依次对所述哈希查找时待查找的第1个键值至第P个键值进行哈希查找;
所述对所述路由查找时待查找的键值进行多级路由查找,包括:对所述路由查找时待查找的第1个键值至第Q个键值依次进行对应级的路由查找。
本发明实施例提供的同时支持哈希查找和路由查找的存储装置,包括:拆分模块、获取模块和规划模块;其中,
拆分模块,用于将预先获取的哈希表拆分成多个哈希子表;
获取模块,用于获取每个哈希子表的待存储信息和多级路由查找的每一级结点的待存储信息;
规划模块,用于规划出多个哈希表项存储单元和多个路由表项存储单元;所述每个哈希子表对应一个哈希表项存储单元,所述多级路由查找的每一级结点的待存储信息对应一个路由表项存储单元;每个哈希表项存储单元用于存储对应的哈希子表的待存储信息,每个路由表项存储单元用于存储多级路由查找的对应级结点的待存储信息。
上述方案中,所述规划模块,还用于根据每个哈希子表的待存储信息的数据大小,确定对应的哈希表项存储单元的存储容量;还用于根据所述多级路由查找对应的每一级结点的待存储信息的数据大小,确定对应的路由表项存储单元的存储容量。
本发明实施例提供同时支持哈希查找和路由查找的查找装置,所述哈希查找的哈希表拆分成M个哈希子表,M≥1;所述装置包括:第一接收模块和第一查找模块;其中,
第一接收模块,用于接收哈希查找时待查找的键值和路由查找时待查找的键值;
第一查找模块,用于对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找;并用于在对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找的同时,对所述路由查找时待查找的键值进行多级路由查找。
上述方案中,所述第一查找模块用于对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,包括:
步骤A3:利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B3:判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为哈希查找结果,并结束本次哈希查找流程,否则,执行步骤C3;
步骤C3:判断当前的j值是否等于M,若是,则本次哈希查找失败,否则,将j的值加1,返回至步骤A3。
上述方案中,所述第一查找模块对所述路由查找时待查找的键值进行多级路由查找,包括:
所述第一查找模块对所述路由查找时待查找的键值进行多比特Trie树路由查找。
上述方案中,所述第一接收模块,用于接收哈希查找时待查找的P个键值和路由查找时待查找的Q个键值,P和/或Q为大于1的自然数;
所述第一查找模块,用于利用对应的哈希子表依次对所述哈希查找时待查找的第1个键值至第P个键值进行哈希查找,同时用于对所述路由查找时待查找的第1个键值至第Q个键值依次进行对应级的路由查找。
本发明实施例提供的同时支持哈希查找和路由查找的存储、查找方法和装置,根据需要为哈希查找和路由查找分别分配各自的存储单元,可同时支持哈希查找和路由查找,这样,能够将路由器上有限的存储容量复用,以应对路由器对哈希表项和路由表项的不同的应用需求,并能配置灵活地调整哈希表和路由表的容量比,降低路由器的生产成本,满足更多应用场景的需求。
附图说明
图1为本发明实施例同时支持哈希查找和路由查找的存储方法的流程图;
图2为本发明实施例同时支持哈希查找和路由查找的查找方法的第一流程图;
图3为本发明实施例同时支持哈希查找和路由查找的查找方法的第二流程图;
图4为本发明实施例同时支持哈希查找和路由查找的存储装置的组成结构示意图;
图5为本发明实施例同时支持哈希查找和路由查找的查找装置的组成结构示意图;
图6为本发明同时支持哈希查找和路由查找的存储方法的第一实施例的流程图;
图7为本发明同时支持哈希查找和路由查找的存储方法的第二实施例的流程图;
图8为本发明同时支持哈希查找和路由查找的查找方法的第一实施例的流程图;
图9为本发明同时支持哈希查找和路由查找的查找方法的第二实施例的流程图;
图10为本发明同时支持哈希查找和路由查找的查找方法的第二实施例中哈希查找的流程图;
图11为本发明同时支持哈希查找和路由查找的查找方法的实施例中路由查找的流程图;
图12为本发明同时支持哈希查找和路由查找的查找方法的第一实施例和第二实施例中并行进行哈希查找和路由查找的流程框图;
图13为本发明同时支持哈希查找和路由查找的查找方法的第三实施例的流程图;
图14为本发明同时支持哈希查找和路由查找的查找方法的第三实施例中并行查找的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
图1为本发明实施例同时支持哈希查找和路由查找的存储方法的流程图,如图1所示,该方法包括:
步骤100:将预先获取的哈希表拆分成多个哈希子表。
这里,每个哈希子表对应至少一个哈希函数,哈希表的获取有多种现有的实现方案,在此不再详述。
本步骤中,可以根据哈希表内包含的不同的存储位置,将哈希表拆分成多个哈希子表;这里,哈希表内的存储位置代表了对应的键值的存储地址;拆分成多个哈希子表的数据容量大小可以相同,也可以不同。
步骤101:获取每个哈希子表的待存储信息和多级路由查找的每一级结点的待存储信息。
这里,每个哈希子表的待存储信息包括以固定长度的关键字组成的键值。对于多级路由查找,需要依次进行多个级别的路由查找过程,在当前级的路由查找过程结束后,才能进行下一个级的路由查找。
在实际应用中,需要获取每个哈希子表的待存储信息和多级路由查找的每一级结点的待存储信息时,有多种现有的实现方式,例如:可以在客户端上输入对应的待存储信息,然后由客户端向路由器发送相应的待存储信息。
步骤102:规划出多个哈希表项存储单元和多个路由表项存储单元;每个哈希子表对应一个哈希表项存储单元,所述多级路由查找的每一级结点的待存储信息对应一个路由表项存储单元。
在实际应用中,可以根据每个哈希子表的待存储信息的数据大小,规划对应的哈希表项存储单元的存储容量;也可以根据多级路由查找对应的每一级结点的待存储信息的数据大小,确定对应的路由表项存储单元的存储容量。
步骤103:将每个哈希子表的待存储信息存入对应的哈希表项存储单元,将多级路由查找的每一级结点的待存储信息存入对应的路由表项存储单元。
下面分两种情况对本发明实施例同时支持哈希查找和路由查找的查找方法进行说明。
第一种情况:哈希查找时待查找的键值和路由查找时待查找的键值的个数均为1个。
图2为本发明实施例同时支持哈希查找和路由查找的查找方法的第一流程图,如图2所示,该方法包括:
步骤200:接收哈希查找时待查找的1个键值和路由查找时待查找的1个键值。
这里,所述键值是指关键字;所述哈希查找的哈希表拆分成M个哈希子表,M≥1,每个哈希子表对应至少一个哈希函数。
本步骤中,当需要接收哈希查找时待查找的键值和路由查找时待查找的键值时,可以由路由器接收来自客户端或服务器的待查找的键值。
步骤201:对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,同时,对所述路由查找时待查找的键值进行多级路由查找。
本步骤中,对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找可以有如下几种方法:
方法一:对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,包括:
步骤A1:利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B1:判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为哈希查找结果,并结束本次哈希查找流程,否则,执行步骤C1;
步骤C1:判断当前的j值是否等于M,若是,则本次哈希查找失败,否则,将j的值加1,返回至步骤A1。
方法二:对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,包括:
步骤A2:利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B2:判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为第j个哈希子表的哈希查找结果,并执行步骤C2,否则,令第j个哈希子表的哈希查找结果为没有,执行步骤C2;
步骤C2:判断当前的j值是否等于M,若是,将各个哈希子表的哈希查找结果汇总为本次哈希查找结果,否则,将j的值加1,返回至步骤A2。
具体地,如果在步骤C2中得出的各个哈希子表的哈希查找结果为多个与所述哈希查找时待查找的键值匹配的哈希表项,则在多个与所述哈希查找时待查找的键值匹配的哈希表项,任选一个哈希表项作为本次哈希查找结果;如果在步骤C2中得出的各个哈希子表的哈希查找结果为1个与所述哈希查找时待查找的键值匹配的哈希表项,则该与所述哈希查找时待查找的键值匹配的哈希表项为本次哈希查找结果。
在步骤201中,对所述路由查找时待查找的键值进行多级路由查找包括:对所述路由查找时待查找的键值进行多比特Trie树路由查找。
第二种情况,哈希查找时待查找的键值的个数大于1,和/或路由查找时待查找的键值的个数大于1。
图3为本发明实施例同时支持哈希查找和路由查找的查找方法的第二流程图,如图3所示,该流程包括:
步骤300:接收哈希查找时待查找的P个键值和路由查找时待查找的Q个键值,P和/或Q为大于1的自然数。
这里,所述哈希查找的哈希表拆分成M个哈希子表,M≥1,每个哈希子表对应至少一个哈希函数。
本步骤中,当需要接收哈希查找时待查找的键值和路由查找时待查找的键值时,可以由路由器接收来自客户端或服务器的待查找的键值。
步骤301:对所述哈希查找时待查找的P个键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,同时,对所述路由查找时待查找的Q个键值进行多级路由查找。
这里,当P大于1时,对所述哈希查找时待查找的P个键值利用每个哈希子表进行哈希查找包括:利用对应的哈希子表依次对所述哈希查找时待查找的第1个键值至第P个键值进行哈希查找。当Q大于1时,对所述路由查找时待查找的Q个键值进行每一级路由查找包括:对所述路由查找时待查找的第1个键值至第Q个键值依次进行对应级的路由查找。
图4为本发明实施例同时支持哈希查找和路由查找的存储装置的组成结构示意图,如图4所示,该存储装置包括拆分模块400、获取模块401和规划模块402;其中,
拆分模块400,用于将预先获取的哈希表拆分成多个哈希子表,每个哈希子表对应至少一个哈希函数。
获取模块401,用于获取每个哈希子表的待存储信息和多级路由查找的每一级结点的待存储信息。
规划模块402,用于规划出多个哈希表项存储单元和多个路由表项存储单元;每个哈希子表对应一个哈希表项存储单元,多级路由查找的每一级结点的待存储信息对应一个路由表项存储单元;每个哈希表项存储单元用于存储对应的哈希子表的待存储信息,每个路由表项存储单元用于存储多级路由查找的对应级结点的待存储信息。
所述规划模块402,还用于根据每个哈希子表的待存储信息的数据大小,确定对应的哈希表项存储单元的存储容量;还用于根据所述多级路由查找对应的每一级结点的待存储信息的数据大小,确定对应的路由表项存储单元的存储容量。
在实际应用中,所述拆分模块400、获取模块401和规划模块402均可由位于路由器中的中央处理器(Central Processing Unit,CPU)、微处理器(MicroProcessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。
图5为本发明实施例同时支持哈希查找和路由查找的查找装置的组成结构示意图,该查找装置包括:第一接收模块500和第一查找模块501;其中,
下面分两种情况进行说明。
第一种情况:哈希查找时待查找的键值和路由查找时待查找的键值的个数均为1个。
第一接收模块500,用于接收哈希查找时待查找的键值和路由查找时待查找的键值。
第一查找模块501,用于对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找;并用于在对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找的同时,对所述路由查找时待查找的键值进行多级路由查找。这里,所述哈希查找的哈希表拆分成M个哈希子表,M≥1,每个哈希子表对应至少一个哈希函数。
下面说明所述第一查找模块501的两种实现方案。
第一查找模块501的第一种实现方案:
所述第一查找模块501,具体用于执行以下步骤:
步骤A3:利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B3:判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为哈希查找结果,并结束本次哈希查找流程,否则,执行步骤C3;
步骤C3:判断当前的j值是否等于M,若是,则本次哈希查找失败,否则,将j的值加1,返回至步骤A3。
第一查找模块501的第二种实现方案:
所述第一查找模块501,具体用于执行以下步骤:
步骤A4:利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B4:判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为第j个哈希子表的哈希查找结果,并执行步骤C4,否则,第j个哈希子表的哈希查找结果为无,执行步骤C4;
步骤C4:判断当前的j值是否等于M,若是,将各个哈希子表的哈希查找结果汇总为本次哈希查找结果,否则,将j的值加1,返回至步骤A4。
第二种情况,哈希查找时待查找的键值的个数大于1,和/或路由查找时待查找的键值的个数大于1。
第一接收模块500,用于接收哈希查找时待查找的P个键值和路由查找时待查找的Q个键值,P和/或Q为大于1的自然数;
当哈希查找时待查找的键值的个数大于1,和/或路由查找时待查找的键值的个数大于1时,第一查找模块501,用于对所述哈希查找时待查找的P个键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,并用于在对所述哈希查找时待查找的P个键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找的同时,对所述路由查找时待查找的Q个键值进行多级路由查找;对所述哈希查找时待查找的P个键值利用每个哈希子表进行哈希查找包括:利用对应的哈希子表依次对所述哈希查找时待查找的第1个键值至第P个键值进行哈希查找;对所述路由查找时待查找的Q个键值进行每一级路由查找包括:对所述路由查找时待查找的第1个键值至第Q个键值依次进行对应级的路由查找。这里,所述哈希查找的哈希表拆分成M个哈希子表,M≥1,每个哈希子表对应至少一个哈希函数。
在实际应用中,所述第一接收模块500和第一查找模块501均可由位于路由器中的中央处理器(Central Processing Unit,CPU)、微处理器(Micro ProcessorUnit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。
下面将结合附图对本发明的具体实施例进行详细描述。
图6为本发明同时支持哈希查找和路由查找的存储方法的第一实施例的流程图。如图6所示,该流程包括:
步骤600:获取哈希表,并将获取的哈希表拆分成多个哈希子表。
本步骤中,每个哈希子表对应至少一个哈希函数,哈希函数可以是CRC函数,也可以是其他函数;当哈希函数采用CRC函数时,各个哈希子表对应的哈希函数之间可以采用不同的CRC多项式。
步骤601:获取每个哈希子表的待存储信息和多比特Trie树路由查找的每一级结点的待存储信息。
本步骤中,每个哈希子表的待存储信息包括以固定长度的关键字组成的哈希键值;多比特Trie树路由查找的每一级结点的待存储信息包括该级各个结点对应的前缀、以及该级各个结点的子结点指针,子结点指针指向了具有父子关系的各子结点的物理地址。根据多比特Trie树路由查找方法中存储信息的特点,每一级结点与上一级结点相比,该级结点对应的待存储信息中前缀长度大于上一级结点,也就是说,待存储信息中前缀长度越短,则该待存储信息对应的结点越靠近树的顶部。
步骤602:规划出多个哈希表项存储单元和多个路由表项存储单元;每个哈希子表对应一个哈希表项存储单元,所述多比特Trie树路由查找的每一级结点的待存储信息对应一个路由表项存储单元。
实际应用中,可以在物理内存或其他存储器上规划出第1个哈希表项存储单元至第M个哈希表项存储单元、以及第1个路由表项存储单元至第L个路由表项存储单元,L为多比特Trie树路由查找的级数,多比特Trie树路由查找的级数指多比特Trie树路由查找的结点的级数。这里,每个哈希表项存储单元/路由表项存储单元可以是虚拟的逻辑存储区,每个哈希表项存储单元用于存储哈希子表的待存储信息,每个路由表项存储单元用于存储多比特Trie树路由查找的每一级结点的待存储信息。另外,根据实际需要,步骤600拆分生成的哈希子表的个数与上述多比特Trie树路由查找的级数可以相同,也可以不同。
这里,还可以根据每个哈希子表的待存储信息的数据大小,规划对应的哈希表项存储单元的存储容量;也可以根据所述多比特Trie树路由查找对应的每一级结点的待存储信息的数据大小,确定对应的路由表项存储单元的存储容量;如此,可以根据路由器需要处理的哈希表项和路由表项的容量比,来设置规划出对应的哈希表项存储单元和路由表项存储单元,从而能够更好的适应路由器的相应应用需求。
下面以一个具体实施例进行说明,在该具体实施例中,按照各个哈希子表的待存储信息的数据由小倒大的顺序,将M个哈希子表排序为第1个哈希子表至第M个哈希子表;如果第m个哈希表项存储单元用于存储第M个哈希子表的待存储信息(m取1至M),则第1个哈希表项存储单元至第M个哈希表项存储单元的存储容量是由小到大排列的;同理,如果第k个路由表项存储单元用于存储多比特Trie树路由查找的第k级结点的待存储信息(k取1至L),则第1个路由表项存储单元至第L个路由表项存储单元的存储容量是由小到大排列的。
在实际应用中,物理内存的寄存器可以访问所有的多个哈希表项存储单元和多个路由表项存储单元,这样,在物理内存上规划出多个哈希表项存储单元和多个路由表项存储单元之后,还可以利用寄存器来对每个哈希表项存储单元和每个路由表项存储单元进行动态调整,该动态调整的过程是:根据实际情况调整每个哈希子表对应的哈希表项存储单元,并调整多比特Trie树路由查找的每一级结点的待存储信息对应的路由表项存储单元,不管进行怎样的动态调整,两个不同的哈希子表的待存储信息不处在同一哈希表项存储单元,多比特Trie树路由查找的不同的两级结点的待存储信息不处在同一路由表项存储单元。
需要说明的是,每个哈希表项存储单元/路由表项存储单元具有独立的地址访问总线和独立的数据总线,对于每个哈希表项存储单元/路由表项存储单元而言,地址访问总线和数据总线是可以复用的。但对于任意两个哈希表项存储单元或任意两个路由表项存储单元,它们之间地址访问总线和数据总线不可以复用。当后续过程需要查找哈希表项存储单元或路由表项存储单元时,通过发送相应的地址来访问哈希表项存储单元/路由表项存储单元中对应于所发送地址处存储的数据。
步骤603:将每个哈希子表的待存储信息存入对应的哈希表项存储单元,将多比特Trie树路由查找的每一级结点的待存储信息存入对应的路由表项存储单元。
这里,各个哈希子表与各个哈希表项存储单元形成一一对应的关系,即每个哈希子表的待存储信息只能存储于一个哈希表项存储单元,而每个哈希表项存储单元只能存储一个哈希子表的待存储信息;同样,多比特Trie树路由查找的各级结点的待存储信息与各个路由表项存储单元形成一一对应的关系,即多比特Trie树路由查找的每一级结点的待存储信息只能存储于一个路由表项存储单元中,而每个路由表项存储单元只能存储多级路由查找的一级结点的待存储信息。
图7为本发明同时支持哈希查找和路由查找的存储方法的第二实施例的流程图,如图7所示,该流程包括:
步骤700:获取哈希表,并将获取的哈希表拆分成M个哈希子表,每个哈希子表对应N个哈希函数,M和N均大于等于1。
步骤701:将第1个哈希子表作为当前的目标哈希子表;获取每个哈希子表的待存储信息和多比特Trie树路由查找的每一级结点的待存储信息。
步骤702:规划出多个哈希表项存储单元和多个路由表项存储单元;每个哈希子表对应一个哈希表项存储单元,所述多比特Trie树路由查找的每一级结点的待存储信息对应一个路由表项存储单元。
步骤703:将多比特Trie树路由查找的每一级结点的待存储信息存入对应的路由表项存储单元。
同时,依次利用当前的目标哈希子表对应的N个哈希函数计算当前的目标哈希子表的待存储信息的地址,根据每次计算得到的地址在对应的哈希表项存储单元中查找空位,若查找到,则将当前的目标哈希子表的待存储信息存入所述空位中;若未查找到,执行步骤704。
步骤704:判断当前的目标哈希子表是否为第M个哈希子表,若是,执行步骤705,否则,将当前的目标哈希子表更新为当前的目标哈希子表的下一个哈希子表,返回至步骤703。
例如,在将当前的目标哈希子表更新为当前的目标哈希子表的下一个哈希子表时,如果当前的目标哈希子表为第2个哈希子表,则将当前的目标哈希子表更新为第3个哈希子表。
步骤705:判断当前的目标哈希子表的哈希函数的更新次数是否大于预设门限,若是,将当前目标的目标哈希子表更新为当前的目标哈希子表的上一个哈希子表,重新执行本步骤,否则,将当前的目标哈希子表对应的N个哈希函数全部更新,返回至步骤703。
例如,在将当前目标的目标哈希子表更新为当前的目标哈希子表的上一个哈希子表,如果当前的目标哈希子表为第4个哈希子表,则将当前的目标哈希子表更新为第3个哈希子表。
这里,步骤700至步骤705与步骤600至步骤603基本一致,其区别点在于,哈希函数的更新和每个哈希子表的待存储信息的存储过程。在采用本实施例的方法对每个哈希子表的待存储信息进行存储之后,当进行后续的哈希查找时,一个哈希查找时待查找的键值如果在任意一个哈希子表中找出匹配的哈希表项,则不会在其他的哈希子表中找出匹配的哈希表项。
图8为本发明同时支持哈希查找和路由查找的查找方法的第一实施例的流程图。如图8所示,该流程包括:
步骤800:同时接收哈希查找时待查找的键值和路由查找时待查找的键值。哈希查找的哈希表拆分成M个哈希子表,M≥1,每个哈希子表对应至少一个哈希函数。
本步骤中,拆分成的M个哈希子表的实现方法与本发明实施例的存储方法中拆分成的M个哈希子表的实现方法相同,每个哈希子表对应的哈希函数与本发明实施例的存储方法中每个哈希子表对应的哈希函数相同。
步骤801:按照第一种方法对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的M个哈希子表进行哈希查找,同时,对所述路由查找时待查找的键值进行多比特Trie树路由查找。
这里,按照第一种方法对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的M个哈希子表进行哈希查找,包括:
步骤A1:进行第j级哈希计算,即利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值(即相应地址)在所述第j个哈希子表中进行查找。
步骤B1:进行第j级哈希查找,即判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将第j级哈希查找结果作为最终哈希查找结果,第j级哈希查找结果为与所述哈希查找时待查找的键值匹配的哈希表项,并结束本次哈希查找流程,否则,执行步骤C1。
步骤B1中,在根据所述哈希计算得到的各个哈希值(即相应地址)在所述第j个哈希子表中进行查找时,根据所述哈希计算得到的各个地址在第j个哈希子表中进行查找,得出相应的哈希表项(即哈希键值)。
步骤C1:判断当前的j值是否等于M,若是,则本次哈希查找失败,否则,将j的值加1,返回至步骤A1。
可以看出,按照方法一进行哈希查找时,如果利用其中一个哈希子表能够查找出与待查找的键值匹配的哈希表项,则不需要利用后面的哈希子表进行哈希查找,这样,可以节省运算量并降低功耗。
具体地,在步骤801中,对所述路由查找时待查找的键值进行多比特Trie树路由查找包括:
步骤a1:根据多比特Trie树路由查找的第1级结点的存储信息,对所述路由查找时待查找的键值进行第1级路由查找,得出第1级路由查找结果;
步骤b2:根据第k级路由查找结果、以及多比特Trie树路由查找的第k+1级节点的存储信息,对所述路由查找时待查找的键值进行第k+1级路由查找,得出第k+1级路由查找结果,k的初始值为1;
步骤c2:判断k是否等于L-1,L表示多比特Trie树路由查找的级数;如果k等于L-1,则在得出的L级路由查找结果中,利用最长前缀匹配原则得出最终的路由查找结果。
步骤802:输出哈希查找结果和路由查找结果。
图9为本发明同时支持哈希查找和路由查找的查找方法的第二实施例的流程图。如图9所示,该流程包括:
步骤900至步骤902与步骤800至步骤802基本一致,其区别在于:在步骤901中,按照第二种方法对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的M个哈希子表进行哈希查找。
具体地,按照第二种方法对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的M个哈希子表进行哈希查找,包括:
步骤A2:进行第j级哈希计算,即利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B2:进行第j级哈希查找,即判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为第j级哈希查找结果,并执行步骤C2,否则,令第j级哈希查找结果为没有,执行步骤C2;
步骤C2:判断当前的j值是否等于M,若是,将各个哈希子表的哈希查找结果汇总为本次哈希查找结果,否则,将j的值加1,返回至步骤A2。
可以看出,在本发明同时支持哈希查找和路由查找的查找方法的第一实施例和第二实施例中,哈希查找/路由查找均采用了串行的查找方式,即都是采用了多级的查找流程。
图10为本发明同时支持哈希查找和路由查找的查找方法的第二实施例中哈希查找的流程图,如图10所示,在进行哈希查找时,采用了多级的串行查找流程,只有本级的哈希查找结束后,才进行下一级哈希查找,直至第M级哈希查找过程结束;在进行第j级哈希查找时,进行第j级哈希计算,根据第j级哈希计算的结果在第j级哈希子表中进行哈希查找,得出第j级哈希查找结果;第M级哈希查找结果为最终哈希查找结果。
图11为本发明同时支持哈希查找和路由查找的查找方法的实施例中路由查找的流程图,如图11所示,本发明实施例在进行路由查找时,采用了多级的串行查找流程;在对所述路由查找时待查找的键值进行多比特Trie树路由查找的每级路由查找时,需要进行对应级的路由比较,即将所述路由查找时待查找的键值与多比特Trie树路由查找的对应级结点的存储信息中每个键值按照前缀匹配原则进行比较,进而得出对应级路由查找结果。
可以看出,哈希查找和路由查找均采用了多级查找方式,在进行每级哈希查找/路由查找时,均需要查找每一级哈希查找/路由查找的存储信息,也就是说,上述哈希查找和路由查找这两种查找方式的内存需求非常接近。如果在预先存储每个哈希子表的待存储信息和多比特Trie树路由查找的每一级结点的待存储信息时,分别为每级哈希查找/路由查找分配相应的存储空间,就可以在同时进行哈希查找和路由查找时,将这两种完全不同的查找方法在分层查找逻辑下融合起来,减少额外的内存开销。
下面以一个并行查找的具体实施例进行说明,图12为本发明同时支持哈希查找和路由查找的查找方法的第一实施例和第二实施例中并行进行哈希查找和路由查找的流程框图,如图12所示,在上述并行查找的具体实施例中,哈希查找的级数和路由查找的级数相同,均为M。
在上述并行查找的具体实施例中,在预先存储每个哈希子表的待存储信息和多比特Trie树路由查找的每一级结点的待存储信息时,规划出第1存储区至第M存储区;按照各个哈希子表的待存储信息的数据由小倒大的顺序,将拆分生成的M个哈希子表排序为第1个哈希子表至第M个哈希子表;如果第m个哈希表项存储单元用于存储第M个哈希子表的待存储信息(m取1至M),则第1个哈希表项存储单元至第M个哈希表项存储单元的存储容量是由小到大排列的;同理,如果第m个路由表项存储单元用于存储多比特Trie树路由查找的第m级结点的待存储信息(m取1至M),则第1个路由表项存储单元至第M个路由表项存储单元的存储容量是由小到大排列的。第m个哈希表项存储单元和第m个路由表项存储单元位于第m存储区内;可以看出,第1存储区至第M存储区可以由小到大进行排列,由此能够合理地利用存储空间。
如图12所示,当同时接收到哈希查找指令和路由查找指令时,并行进行哈希查找和路由查找;在进行每一级哈希查找/路由查找时,根据相应的存储结构,可以访问相同的存储区,从而减少了额外的内存开销。图13为本发明同时支持哈希查找和路由查找的查找方法的第三实施例的流程图。如图13所示,该流程包括:
步骤1000:接收哈希查找时待查找的2个键值和路由查找时待查找的2个键值。所述哈希查找的哈希表拆分成M个哈希子表,M≥1,每个哈希子表对应至少一个哈希函数。
本步骤中,拆分成的M个哈希子表的实现方法与本发明实施例的存储方法中拆分成的M个哈希子表的实现方法相同,每个哈希子表对应的哈希函数与本发明实施例的存储方法中每个哈希子表对应的哈希函数相同。
步骤1001:对所述哈希查找时待查找的2个键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,同时,对所述路由查找时待查找的2个键值进行多比特Trie树路由查找。
具体地,对所述哈希查找时待查找的2个键值利用每个哈希子表进行哈希查找包括:对所述哈希查找时待查找的第1个键值利用对应的哈希子表进行哈希查找,在得到对应的哈希子表的待查找的第1个键值的哈希查找结果之后,再对所述哈希查找时待查找的第2个键值利用对应的哈希子表进行哈希查找,在得到对应的哈希子表的待查找的第2个键值的哈希查找结果时,对所述哈希查找时待查找的2个键值利用对应哈希子表进行哈希查找的过程结束,此时,就可以利用下一个哈希子表对所述哈希查找时待查找的2个键值进行哈希查找。也就是说,在对所述哈希查找时待查找的2个键值利用每个哈希子表进行哈希查找时,先完成其中的第1个键值的哈希查找过程,同时将第2个键值的哈希查找过程暂停(可以看作延迟处理),等第1个键值的哈希查找过程结束后,再进行第2个键值的哈希查找。
本步骤中,对所述哈希查找时待查找的每个键值利用对应的哈希子表进行哈希查找的实施方式在本发明同时支持哈希查找和路由查找的查找方法的第一实施例和第二实施例中已经说明,这里不再赘述。
具体地,对所述路由查找时待查找的2个键值进行多比特Trie树路由查找每一级查找包括:对所述路由查找时待查找的第1个键值进行多比特Trie树路由查找的对应级的查找,在得到路由查找时待查找的第1个键值的路由查找结果之后,再对路由查找是待查找的第2个键值进行多比特Trie树路由查找的对应级的查找,在得到路由查找时待查找的第2个键值的路由查找结果时,对所述路由查找时待查找的2个键值进行多比特Trie树路由查找对应级的查找过程结束。此时,就可以对所述路由查找时待查找的2个键值进行多比特Trie树路由查找下一级查找。也就是说,在对所述路由查找时待查找的2个键值进行多比特Trie树路由查找每一级查找时,先完成所述路由查找时待查找的第1个键值的路由查找过程,同时将所述路由查找时待查找的第1个键值的路由查找过程暂停(可以看作延迟处理),在所述路由查找时待查找的第1个键值的路由查找过程结束后,再进行所述路由查找时待查找的第2个键值的路由查找。
本步骤中,在利用每个哈希子表对哈希查找时待查找的各个键值进行哈希查找时,或者在对所述路由查找时待查找的各个键值进行多比特Trie树路由查找每一级查找时,均采用串行实现的方式,不会同时有两个哈希查找指令访问同一哈希表项存储单元,也不会同时有两个路由查找指令访问同一路由表项存储单元,这样就可以避免查找冲突的发生。
步骤1002:输出所述哈希查找时待查找的每个键值的哈希查找结果以及路由查找时待查找的每个键值的路由查找结果。
图14为本发明同时支持哈希查找和路由查找的查找方法的第三实施例中并行查找的结构框图,如图14所示,哈希查找的级数和路由查找的级数相同,均为M,在预先存储每个哈希子表的待存储信息和多比特Trie树路由查找的每一级结点的待存储信息时,规划出第1存储区至第M存储区;拆分生成的M个哈希子表为第1个哈希子表至第M个哈希子表,第m个哈希表项存储单元用于存储第M个哈希子表的待存储信息(m取1至M);同理,第m个路由表项存储单元用于存储多比特Trie树路由查找的第m级结点的待存储信息(m取1至M),第m个哈希表项存储单元和第m个路由表项存储单元位于第m存储区内。
如图14所示,当同时接收到哈希查找指令和路由查找指令时,按照本发明同时支持哈希查找和路由查找的查找方法的第三实施例并行进行哈希查找和路由查找;在进行每一级哈希查找/路由查找时,根据相应的存储结构,可以访问相同的存储区,从而减少了额外的内存开销。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (12)

1.同时支持哈希查找和路由查找的存储方法,其特征在于,所述方法包括:
将预先获取的哈希表拆分成多个哈希子表;
获取每个哈希子表的待存储信息和多级路由查找的每一级结点的待存储信息;
规划出多个哈希表项存储单元和多个路由表项存储单元;每个哈希子表对应一个哈希表项存储单元,所述多级路由查找的每一级结点的待存储信息对应一个路由表项存储单元;
将每个哈希子表的待存储信息存入对应的哈希表项存储单元,将多级路由查找的每一级结点的待存储信息存入对应的路由表项存储单元。
2.根据权利要求1所述方法,其特征在于,所述规划出多个哈希表项存储单元和多个路由表项存储单元,包括:
根据每个哈希子表的待存储信息的数据大小,确定对应的哈希表项存储单元的存储容量;根据所述多级路由查找对应的每一级结点的待存储信息的数据大小,确定对应的路由表项存储单元的存储容量。
3.同时支持哈希查找和路由查找的查找方法,其特征在于,所述哈希查找的哈希表拆分成M个哈希子表,M≥1;所述查找方法包括:
接收哈希查找时待查找的键值和路由查找时待查找的键值;
对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,同时,对所述路由查找时待查找的键值进行多级路由查找。
4.根据权利要求3所述的方法,其特征在于,所述对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,包括:
步骤A1:利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B1:判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为哈希查找结果,并结束本次哈希查找流程,否则,执行步骤C1;
步骤C1:判断当前的j值是否等于M,若是,则本次哈希查找失败,否则,将j的值加1,返回至步骤A1。
5.根据权利要求3所述的方法,其特征在于,所述对所述路由查找时待查找的键值进行多级路由查找,包括:
对所述路由查找时待查找的键值进行多比特Trie树路由查找。
6.根据权利要求3至5任一项所述的方法,其特征在于,所述接收哈希查找时待查找的键值和路由查找时待查找的键值,包括:接收哈希查找时待查找的P个键值和路由查找时待查找的Q个键值,P和/或Q为大于1的自然数;
所述对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,包括:利用对应的哈希子表依次对所述哈希查找时待查找的第1个键值至第P个键值进行哈希查找;
所述对所述路由查找时待查找的键值进行多级路由查找,包括:对所述路由查找时待查找的第1个键值至第Q个键值依次进行对应级的路由查找。
7.同时支持哈希查找和路由查找的存储装置,其特征在于,所述装置包括:拆分模块、获取模块和规划模块;其中,
拆分模块,用于将预先获取的哈希表拆分成多个哈希子表;
获取模块,用于获取每个哈希子表的待存储信息和多级路由查找的每一级结点的待存储信息;
规划模块,用于规划出多个哈希表项存储单元和多个路由表项存储单元;所述每个哈希子表对应一个哈希表项存储单元,所述多级路由查找的每一级结点的待存储信息对应一个路由表项存储单元;每个哈希表项存储单元用于存储对应的哈希子表的待存储信息,每个路由表项存储单元用于存储多级路由查找的对应级结点的待存储信息。
8.根据权利要求7所述的装置,其特征在于,所述规划模块,还用于根据每个哈希子表的待存储信息的数据大小,确定对应的哈希表项存储单元的存储容量;还用于根据所述多级路由查找对应的每一级结点的待存储信息的数据大小,确定对应的路由表项存储单元的存储容量。
9.同时支持哈希查找和路由查找的查找装置,其特征在于,所述哈希查找的哈希表拆分成M个哈希子表,M≥1;所述装置包括:第一接收模块和第一查找模块;其中,
第一接收模块,用于接收哈希查找时待查找的键值和路由查找时待查找的键值;
第一查找模块,用于对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找;并用于在对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找的同时,对所述路由查找时待查找的键值进行多级路由查找。
10.根据权利要求9所述的装置,其特征在于,所述第一查找模块用于对所述哈希查找时待查找的键值依次利用所述哈希表拆分成的各个哈希子表进行哈希查找,包括:
步骤A3:利用第j个哈希子表对应的至少一个哈希函数对所述哈希查找时待查找的键值进行哈希计算,j的初始值为1;根据所述哈希计算得到的各个哈希值在所述第j个哈希子表中进行查找;
步骤B3:判断所述第j个哈希子表的查找结果中是否存在与所述哈希查找时待查找的键值匹配的哈希表项,如果存在,则将与所述哈希查找时待查找的键值匹配的哈希表项作为哈希查找结果,并结束本次哈希查找流程,否则,执行步骤C3;
步骤C3:判断当前的j值是否等于M,若是,则本次哈希查找失败,否则,将j的值加1,返回至步骤A3。
11.根据权利要求9所述的装置,其特征在于,所述第一查找模块对所述路由查找时待查找的键值进行多级路由查找,包括:
所述第一查找模块对所述路由查找时待查找的键值进行多比特Trie树路由查找。
12.根据权利要求9至11任一项所述的装置,其特征在于,
所述第一接收模块,用于接收哈希查找时待查找的P个键值和路由查找时待查找的Q个键值,P和/或Q为大于1的自然数;
所述第一查找模块,用于利用对应的哈希子表依次对所述哈希查找时待查找的第1个键值至第P个键值进行哈希查找,同时用于对所述路由查找时待查找的第1个键值至第Q个键值依次进行对应级的路由查找。
CN201510252724.XA 2015-05-18 2015-05-18 同时支持哈希查找和路由查找的存储、查找方法和装置 Pending CN106302172A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510252724.XA CN106302172A (zh) 2015-05-18 2015-05-18 同时支持哈希查找和路由查找的存储、查找方法和装置
PCT/CN2015/092392 WO2016184029A1 (zh) 2015-05-18 2015-10-21 支持哈希查找和路由查找的存储、查找方法和装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510252724.XA CN106302172A (zh) 2015-05-18 2015-05-18 同时支持哈希查找和路由查找的存储、查找方法和装置

Publications (1)

Publication Number Publication Date
CN106302172A true CN106302172A (zh) 2017-01-04

Family

ID=57319232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510252724.XA Pending CN106302172A (zh) 2015-05-18 2015-05-18 同时支持哈希查找和路由查找的存储、查找方法和装置

Country Status (2)

Country Link
CN (1) CN106302172A (zh)
WO (1) WO2016184029A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947762A (zh) * 2017-08-16 2019-06-28 深圳市中兴微电子技术有限公司 一种哈希表管理方法及装置、计算机可读存储介质
CN110968267A (zh) * 2019-11-15 2020-04-07 北京乐我无限科技有限责任公司 数据管理方法、装置、服务器及系统
CN111460510A (zh) * 2020-04-17 2020-07-28 支付宝(杭州)信息技术有限公司 基于隐私保护确定相同业务数据的方法及装置
CN112367351A (zh) * 2020-09-29 2021-02-12 上海商泰汽车信息系统有限公司 用于多设备的文件共享方法及装置、目标服务器、客户端
CN113946152A (zh) * 2021-11-22 2022-01-18 中国重汽集团济南动力有限公司 一种全局路径规划方法、系统及低速商用无人车

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558423A (zh) * 2018-10-31 2019-04-02 深圳壹账通智能科技有限公司 一种基于键值对的数据查找方法、装置及设备
CN113126888B (zh) * 2020-01-15 2024-04-19 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
CN112750040B (zh) * 2021-01-13 2023-07-14 国泰君安证券股份有限公司 应用于内存交易系统实现线程安全的数据处理方法、系统、应用、装置、处理器及存储介质
CN113726660B (zh) * 2021-08-27 2022-11-15 西安微电子技术研究所 一种基于完美哈希算法的路由查找器和方法
CN114780537A (zh) * 2022-03-23 2022-07-22 阿里巴巴(中国)有限公司 流表存储及报文转发方法、装置、计算设备及介质
CN114884877B (zh) * 2022-06-14 2023-02-03 电子科技大学 一种哈希表和HOT相结合的IPv6路由查找方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1426207A (zh) * 2003-01-17 2003-06-25 清华大学 同时支持路由查找、ip包分类、arp查找的方法及查找系统
CN1787477A (zh) * 2004-12-09 2006-06-14 北京三星通信技术研究有限公司 IPv6路由表的查找方法
CN101094179A (zh) * 2007-07-16 2007-12-26 中兴通讯股份有限公司 一种多级索引路由查找方法及装置
CN101604337A (zh) * 2009-07-13 2009-12-16 中兴通讯股份有限公司 一种哈希表项存储、查找装置及方法
CN101692651A (zh) * 2009-09-27 2010-04-07 中兴通讯股份有限公司 一种哈希查找表的方法和装置
CN104426774A (zh) * 2013-09-03 2015-03-18 中兴通讯股份有限公司 一种同时支持IPv4和IPv6的高速路由查找方法及装置
CN105791132A (zh) * 2014-12-17 2016-07-20 深圳市中兴微电子技术有限公司 一种基于多路搜索树路由查找的表项更新方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102195853B (zh) * 2010-03-09 2013-09-04 杭州华三通信技术有限公司 一种保存位图的方法和装置
CN102930004B (zh) * 2012-10-29 2015-07-08 华为技术有限公司 哈希值存储方法、装置及芯片
US9647941B2 (en) * 2013-10-04 2017-05-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Hierarchical hashing for longest prefix matching

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1426207A (zh) * 2003-01-17 2003-06-25 清华大学 同时支持路由查找、ip包分类、arp查找的方法及查找系统
CN1787477A (zh) * 2004-12-09 2006-06-14 北京三星通信技术研究有限公司 IPv6路由表的查找方法
CN101094179A (zh) * 2007-07-16 2007-12-26 中兴通讯股份有限公司 一种多级索引路由查找方法及装置
CN101604337A (zh) * 2009-07-13 2009-12-16 中兴通讯股份有限公司 一种哈希表项存储、查找装置及方法
CN101692651A (zh) * 2009-09-27 2010-04-07 中兴通讯股份有限公司 一种哈希查找表的方法和装置
CN104426774A (zh) * 2013-09-03 2015-03-18 中兴通讯股份有限公司 一种同时支持IPv4和IPv6的高速路由查找方法及装置
CN105791132A (zh) * 2014-12-17 2016-07-20 深圳市中兴微电子技术有限公司 一种基于多路搜索树路由查找的表项更新方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947762A (zh) * 2017-08-16 2019-06-28 深圳市中兴微电子技术有限公司 一种哈希表管理方法及装置、计算机可读存储介质
CN110968267A (zh) * 2019-11-15 2020-04-07 北京乐我无限科技有限责任公司 数据管理方法、装置、服务器及系统
CN111460510A (zh) * 2020-04-17 2020-07-28 支付宝(杭州)信息技术有限公司 基于隐私保护确定相同业务数据的方法及装置
CN112367351A (zh) * 2020-09-29 2021-02-12 上海商泰汽车信息系统有限公司 用于多设备的文件共享方法及装置、目标服务器、客户端
CN113946152A (zh) * 2021-11-22 2022-01-18 中国重汽集团济南动力有限公司 一种全局路径规划方法、系统及低速商用无人车

Also Published As

Publication number Publication date
WO2016184029A1 (zh) 2016-11-24

Similar Documents

Publication Publication Date Title
CN106302172A (zh) 同时支持哈希查找和路由查找的存储、查找方法和装置
CN104580027B (zh) 一种OpenFlow报文转发方法及设备
CN103905311B (zh) 流表匹配方法和装置以及交换机
CN100413285C (zh) 基于网络处理器的高速多维报文分类算法的设计和实现
CN106416152B (zh) 一种查找装置、查找配置方法和查找方法
CN101594319B (zh) 表项查找方法和装置
CN109146447A (zh) 区块链透明分片方法、装置及系统
JP2000115243A (ja) パケット中継装置およびマルチキャスト高速化方式
CN106100964B (zh) 一种虚拟网络映射的方法和装置
CN104283806A (zh) 业务链处理方法和设备
CN105843933B (zh) 分布式内存列式数据库的索引建立方法
CN104636349B (zh) 一种索引数据压缩以及索引数据搜索的方法和设备
CN107547391A (zh) 一种报文传输方法和装置
CN108875064A (zh) 基于FPGA的OpenFlow多维数据匹配查找方法
US20080133494A1 (en) Method and apparatus for searching forwarding table
CN102880724A (zh) 处理哈希冲突的方法及系统
CN103107945B (zh) 一种快速查找ipv6路由的系统及方法
CN107948060A (zh) 一种新型的路由表建立、以及ip路由查找方法和装置
CN104780101B (zh) 内容中心网络转发平面fib表结构及其检索方法
CN110380906B (zh) 一种大规模多维融合的虚拟网络映射方法
CN108304460A (zh) 一种改进数据库的定位方法及系统
CN110505322A (zh) 一种ip地址段查找方法及装置
CN105959224B (zh) 基于比特向量的高速路由查找装置及方法
US8032543B2 (en) Sorting apparatus and method
CN105302838A (zh) 分类方法、查找方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170104

WD01 Invention patent application deemed withdrawn after publication