CN101141389A - 增强多位Trie树查找方法和装置 - Google Patents
增强多位Trie树查找方法和装置 Download PDFInfo
- Publication number
- CN101141389A CN101141389A CNA2007101236740A CN200710123674A CN101141389A CN 101141389 A CN101141389 A CN 101141389A CN A2007101236740 A CNA2007101236740 A CN A2007101236740A CN 200710123674 A CN200710123674 A CN 200710123674A CN 101141389 A CN101141389 A CN 101141389A
- Authority
- CN
- China
- Prior art keywords
- node
- prefix
- searching
- tree
- bitmap
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及路由转发表的查找技术,特别是一种增强多位Trie树查找方法和装置。通过对多位Trie树的查找方法、树节点的数据结构,尤其是扩展位图以及上下级树节点之间的关系做出优化改进,以及对FPGA和DDRIISDRAM的采用,实现了大容量路由转发表的查找和20Gbps甚至40Gbps流量下的线速查找,在表项容量、成本等方面与商业三态内容可寻址存储器方案相比均有明显优势。
Description
技术领域
本发明涉及路由转发表的查找技术,特别是一种增强多位Trie树(以下称:Enhanced Multi-bit Trie)查找方法和装置。
背景技术
随着Internet网络的迅猛发展,网络上的路由前缀数目成倍的增长,对路由器产品的表项容量提出了越来越高的需求。因为在路由器当中,路由前缀存储在路由器的网际互连协议第4版本的转发信息库(以下简称:IPV4 FIB)当中,IPV4 FIB中的表项容量已经要求实现百万条的数量级。
多位Trie树(以下称:Multi-bit Trie)如图4所示,它是在左“0”右“1”的典型二叉树基础上按照一定的查找步长分割成多个子树之后形成的树形结构。将每次查找中需要检查的比特数称为查找步长,每个子树由一定查找步长内的多级节点构成,并且在最底级的节点处延伸有若干个“子”子树。任何路由转发表都可以用以上的树形结构来表示,并且可以按照“最长匹配原则”进行查找。
现有技术一以商用器件TCAM(三态内容可寻址存储器)来实现IPV4 FIB表项查找。商用器件TCAM的优点是查找速度快,已经能够达到每秒一亿次查找,正是40Gbps流量下的线速查找所需要的性能。但是,商用器件TCAM的致命缺点有二:1、容量小,一颗器件只能实现25万条表项;2、价格贵,一颗器件需要100多美金。那么要实现百万条表项的查找,需要4颗该商用器件TCAM,成本近500美金;如果是两百万条表项的查找,就需要8颗该商用器件TCAM,成本近1000美金。可见,可扩展性非常差,而且代价太高。
现有技术二采用算法查找,以受控前缀扩展(Controlled Prefix Expansion)为例。这个算法是多位树(Multi-bit Trie),即查找过程中每一次比较多位,这样每一次路由查找对存储器件的访问次数减少了,提高了查找速度。
图1是已有技术Controlled Prefix Expansion算法示意图。如图1所示,查找步长为3。P1-P9是9个原始的路由前缀,按照国际标准机构发布的相关规定,路由前缀遵从最长前缀匹配原则。比如,P2是1*,P4是101*,那么如果需要查找的IPV4地址是10100110的话,那么匹配的应该是P4,而不是P2。在受控前缀扩展查找算法中,凡是长度不是查找步长整数倍的前缀(以下称:prefix)需要扩展成多个长度是查找步长整数倍的prefix,但是扩展后与其他更长的prefix冲突的扩展prefix需要丢弃。比如1*需要扩展成100*、101*、110*、111*,但是由于101*和111*有对应的更长匹配P4和P5,所以P2(1*)只能扩展到100*和110*的位置。
在这个数据结构中,每个节点有8个表项,每个表项包含2个数值域,分别是下一跳信息和指向子节点的指针。从原始的一条路由前缀在算法中扩展成多个,需要存储多个冗余的前缀,可见这个算法比较浪费存储空间;而且,查找步长越长,扩展后生成的冗余前缀数目越多,那么存储空间浪费越严重。
发明内容
本发明实施方式的目的是提供一种增强多位Trie树查找方法,以实现大容量、低成本并且线速路由查找。
本发明解决上述技术问题的一个实施方式是:提供一种增强多位Trie树查找方法,该方法包括以下步骤:
(1)获取查找关键字;
(2)读取一个树节点;
(3)以所述关键字为索引,从所述的树节点包含的扩展位图中取得位图值;
(4)如果该位图值为M,那么根据该位图值在所述扩展位图中的偏移量和所述树节点中指向下一级子树节点的指针,重复步骤(2)与(3),所述偏移量指该位图值在所述扩展位图中的位置;如果该位图值不为M,转步骤(5);所述M是1或0;
(5)根据步骤(4)所述位图值在所述扩展位图中的偏移量和所述树节点中指向下一级子树节点的指针取回下一级树节点,如果该下一级树节点不是支持节点合并的节点,转步骤(6);如果该下一级树节点是支持节点合并的节点,转步骤(8);
(6)根据步骤(2)取得的前一级树节点指示的前缀节点信息取回该级的前缀节点,转步骤(7);
(7)根据当前正在查找的关键字和所述前缀节点中的前缀位图进行处理,如果有命中的前缀,根据指向结果节点数组的指针和命中前缀在所述前缀位图中的偏移量取回该命中前缀所对应的结果节点;如果没有命中的前缀,那么根据所述前缀节点中指向前一级的结果节点的指针,取回该结果节点。
(8)根据当前正在查找的关键字和步骤(5)中取回的下一级树节点中存储的前缀信息,判断是否有命中的前缀,如果有命中的前缀,取回该命中前缀所对应的结果节点;如果没有命中的前缀,根据所述下一级树节点中指向前一级的结果节点的指针取回该结果节点。
本发明解决上述技术问题的另一种实施方式是:提供一种增强多位Trie树查找装置,包括:算法查找引擎,与该算法查找引擎相连接的网络处理器、存储装置和中央处理器,所述中央处理器用于维护算法查找引擎,所述存储装置用于存储各种类型的树节点数据结构及这些树节点之间的关系,所述网络处理器用于完成报文的二三层报文头的解析、转发、访问权限控制,所述算法查找引擎用于从网络处理器得到查找的关键字,根据该关键字查找,查找结果回送给网络处理器。
本发明解决上述技术问题的又一种实施方式是:提供一种存储数据结构的计算机可读介质,所述数据结构包括:
第一级树节点,包括表示该第一级树节点拥有的子树节点位置的扩展位图,该扩展位图中的P表示该位置有下一级子树节点;Q表示该位置有下一级子树节点或无下一级子树节点两种情况之一,当所述位置有下一级子树节点时,该位置所对应的下一级子树节点与所述扩展位图中Q的左边第一个P所对应的子树节点进行合并;其中P和Q均是1或0且P、Q不相等;
第一级子树节点数组,包括所述第一级树节点的所有子树节点;
第一级结果节点数组,包括所述第一级树节点中所有前缀对应的结果信息;
第一级前缀节点,包括表示所述第一级树节点中所有前缀的前缀位图、指向第一级结果节点数组的指针、和指向结果节点的指针,该结果节点不属于所述第一级结果节点数组;
所述的第一级树节点还包括指向第一级所述子树节点数组的指针和指向所述第一级前缀节点的指针;如果所述前缀节点不存在,后一个指针不再指向第一级前缀节点,而是指向结果节点,并且该结果节点不属于该第一级结果节点数组。
与现有技术相比,本发明实施方式提供的技术方案,通过现场可编程门阵列(Field Programmable Gate Array,以下称FPGA)算法和双数据率同步动态随机访问存储器第二代产品(简称:DDRII SDRAM),实现了大容量路由转发表的查找和20Gbps甚至40Gbps流量下的线速查找,在表项容量、成本等方面与商业三态内容可寻址存储器(简称:TCAM)方案相比均有明显优势。
附图说明
图1是已有技术Controlled Prefix Expansion算法示意图;
图2是本发明实施方式的硬件逻辑框图;
图3是本发明实施方式查找引擎系统的模块划分和外部接口图;
图4是已有技术Multi-bit Trie示意图;
图5是本发明实施方式的前缀位图的生成图;
图6是本发明实施方式的扩展位图的生成图;
图7是本发明实施方式的上下级树节点之间的关系示意图;
图8是本发明实施方式的流程图。
图9是本发明实施方式的小表问题的示意图。
具体实施方式
下面结合附图与具体实施方式对本发明做进一步详细描述,但不应以此限制本发明的保护范围。本发明实施方式中所称的数据结构是指存储器中存储的不同类型树节点的数据格式。
本发明增强多位Trie树查找方法的硬件实现平台如图2所示,查找引擎系统的模块划分和外部接口如图3所示。
图2中,中央处理单元CPU主要使用摩托罗拉公司的通用处理器PPC系列,CPU通过PCI总线与算法查找引擎相连,并负责维护算法查找引擎。DRAM(Dynamic RAM,动态随机存储器)阵列为存储介质,用于存储各种类型的树节点数据结构,这些树节点的上下级关系由它们之间的指针指向关系确定。
网络处理器(Network Processor,以下简称NP)是路由器中的核心器件,完成报文的二三层报文头的解析、转发、访问权限控制等功能,其中完成转发功能时就需要向算法查找引擎发送查找请求,根据查找结果来决定转发策略。算法查找引擎由FPGA实现,包括查找引擎系统及其外部接口。算法查找引擎从网络处理器得到查找的关键字(以下称为key),根据该关键字key查找,查找结果回送给网络处理器。
图3为查找引擎系统的模块划分和外部接口图。查找引擎系统包括查找子系统、内存管理子系统、更新子系统和存储控制模块;存储控制模块是查找引擎系统的底层模块,为查找子系统、内存管理子系统、更新子系统三个子系统提供服务。查找引擎系统的外部接口包括NP接口、CPU接口、存储器接口。其中NP接口一端与查找子系统相连接,是查找引擎系统与网络处理器NP的接口,提供表项的查找服务。CPU接口一端与更新子系统相连接,是查找引擎系统与CPU的接口,提供表项的维护更新服务。存储器接口一端与存储控制模块相连接,是查找引擎系统与DRAM阵列的接口。
查找服务主要由查找子系统完成,查找子系统将第一级树节点的读取指令直接发送给存储控制模块,经过存储控制模块的调度,读取指令被发送给存储器接口,从DRAM阵列读取第一级树节点。查找子系统得到第一级树节点数据结构之后,进行解析处理,继续读取第二级树节点或者查找停止。其中表项的维护更新服务主要由更新子系统和内存管理子系统完成,更新子系统完成更新策略的运算,内存管理子系统提供算法查找引擎中最底级的读写接口和进行统一的内存管理。更新表项所需的写指令发送给存储控制模块后由存储控制模块进行统一的调度,防止与查找服务中的读取指令冲突,调度之后,由存储控制模块将读或者写指令发送给存储器接口。
本发明实施方式通过对Multi-bit Trie的查找方法进行必要的改进,能够由价格限制在100美金左右的FPGA来实现,用于支持线速查找和快速更新。本发明实施方式可以通过图2中FPGA和DDRII SDRAM的硬件方案来实现40Gbps流量下的线速查找。
请参阅图8,本发明查找方法的实施方式首先从第一级的树节点开始进行查找,具体流程如下:
(1)、网络处理器向算法查找引擎发送查找请求,该算法查找引擎从所述网络处理器得到查找的关键字(以下称为Key);
(2)、所述算法查找引擎的查找子系统将对第一级树节点的读取指令直接发送给存储控制模块,经过该存储控制模块的调度,所述读取指令被发送给存储器接口;
(3)、所述查找子系统从DRAM阵列中读取一个树节点;
(4)、所述查找子系统根据当前正在查找的关键字作为索引,从所述的树节点包含的扩展位图中取得位图值;
(5)、如果该位图值为“1”,那么根据该位图值在所述扩展位图中的偏移量和所述树节点中指向下一级子树节点的指针,重复步骤(3)与(4),所述偏移量指该位图值在所述扩展位图中的位置;如果该位图值为“0”,转步骤(6);
(6)、根据步骤(5)所述位图值在所述扩展位图中的偏移量和所述树节点中指向下一级子树节点的指针取回下一级树节点,如果该下一级树节点不是支持节点合并的节点,转步骤(7);如果该下一级树节点是支持节点合并的节点,转步骤(9);
(7)、所述查找子系统根据步骤(3)取得的前一级树节点指示的前缀节点信息取回该前一级的前缀节点,转步骤(8);
(8)、所述查找子系统根据当前正在查找的关键字和所述前缀节点中的前缀位图(以下称为Prefix Bitmap)进行处理,判断是否有命中的前缀,如果有命中的前缀,根据指向结果节点数组的指针和命中前缀在所述前缀位图中的偏移量取回该命中前缀所对应的结果节点,转步骤(10);如果没有命中的前缀,那么根据所述前缀节点中指向前一级的结果节点的指针,取回该前一级的结果节点,转步骤(10);
(9)、所述查找子系统根据当前正在查找的关键字和步骤(6)中取回的下一级树节点中存储的前缀信息,判断是否有命中的前缀,如果有命中的前缀,就取回该命中前缀所对应的结果节点;如果没有命中的前缀,就根据所述下一级树节点中指向前一级的结果节点的指针取回该前一级的结果节点,转步骤(10);
(10)、所述算法查找引擎把查找结果回送给所述网络处理器。
该方法可以用于多级树节点中的关键字查找。
介绍树节点之前首先介绍一下两种用来表示子树结构的位图:前缀位图和扩展位图。按照Multi-bit Trie的查找步长分割之后形成的每一个子树,它们的关键信息是:子树内包含哪些路由前缀,子树的哪些路径存在下一级子树。
请参阅图5,图5是本发明实施方式的前缀位图的生成图。前缀位图(以下称:Prefix Bitmap)用来代表某一子树中的每个节点是前缀或是空节点,比如图5中,P1,P2,P3是前缀,其他的为空节点。如果查找步长为s,那么前缀位图的长度为2s-1位。位图中的比特位从左至右与子树中从上到下、从左到右的节点顺序对应,如果某一节点存在前缀的话,该节点对应的比特位被设为1,反之为0。比如,图5中的位图为1001001,第一个1对应前缀P1,第二个1对应前缀P2,第三个1对应前缀P3。
请参阅图6,图6是本发明实施方式的扩展位图的生成图。扩展位图(以下称:Extending Bitmap)中的每一比特分别与当前子树(简称:subtree)最底级的节点所延伸的“子”子树(简称:child subtree)对应,用“1”来表示该位置存在“子”子树、用“0”来表示该位置可能存在“子”子树。如果查找步长为s,那么子节点位图的长度为2s位。
图6是图4树形结构中的第一级(以下简称:levell)子树所对应的扩展位图示意图,该子树在“010”、“011”和“111”3个位置存在“子”子树,分别对应扩展位图中的第3、4和8个比特位。该扩展位图为00110001。但是在查找流程中,即使解析得到扩展位图中对应位置的比特值为“0”也不能够立即判断该位置不存在“子”子树,因为有可能存在子树合并,必须取得该“0”位置左边的第一个“1”所对应的“子”子树数据结构进一步判断才行。
本发明实施方式中各种形状的树节点由表1~7中的数据结构来表示如下:
表1 TRIE节点(TNode)
1 | TYPE | Have_p_node | Reserved | PBMI/PNode_address |
2 | Reserved | Child_address |
3 | Extending Bitmap High Bits | |
4 | Extending Bitmap Low Bits |
表1中,TYPE表示节点类型。Have_p_node用于判断该TRIE节点是否存在前缀节点,当Have_p_node为“1”时,存在前缀节,此时PBMI/PNode_address表示为PNode_address(指向前缀节点的指针);当Have_p_node为“0”,即不存在PNode,此时PBMI/PNode_address表示为PBMI(Parent_best_match_pointer,父节点最长匹配指针)。Child_address表示指向子树节点数组的指针。Reserved是预留的位。
Extending Bitmap High Bits表示扩展位图高字节,Extending Bitmap LowBits表示扩展位图低字节。
表2前缀节点(PNode)
1 | TYPE | Reserved | PBMI |
2 | Reserved | Result_address | |
3 | Prefix Bitmap High Bits | ||
4 | Prefix Bitmap Low Bits |
表2中,Result_address表示指向结果节点数组的指针。Prefix Bitmap HighBits表示前缀位图高字节,Prefix Bitmap Low Bits表示前缀位图高字节。PBMI(Parent_best_match_pointer)是父节点最长匹配指针,表示指向某个结果节点的指针。
表3末尾节点(ENode)
1 | TYPE | Reserved | PBMI |
2 | Reserved | Result_address | |
3 | Prefix Bitmap High Bits | ||
4 | Prefix Bitmap Low Bits |
表3中,Result_address表示指向结果节点的指针。Prefix Bitmap High Bits表示前缀位图高字节,Prefix Bitmap Low Bits表示前缀位图高字节。
表4跳跃节点(SNode)
1 | TYPE | Skip_1ength | Reserved | PBMI |
2 | Reserved | Child_address | ||
3 | Skip_data High Bits | |||
4 | Skip_data Low Bits |
表4中Skip_length表示跳跃长度,Skip_data High Bits表示跳跃长度的高字节,Skip_data Low Bits表示跳跃长度的低字节。
表5超级末尾节点(SENode)
1 | TYPE | Length1 | Reserved | PBMI | |||
2 | Reserved | Result_address | |||||
3 | KeyLeft3 | Length3 | KeyLeft2 | ||||
4 | KeyLeft2 | Length2 | KeyLefi1 |
表5 SENode可以存储3个关键字。KeyLeft1表示第一个Key查找剩余的字段,Length1表示该第一个Key查找剩余的字段的长度;KeyLeft2表示第二个Key查找剩余的字段,Length2表示该第二个Key查找剩余的字段的长度;KeyLeft3表示第三个Key查找剩余的字段,Length3表示该第三年个Key查找剩余的字段的长度。
表6超级末尾节点+(SENodeP)
1 | TYPE | PreKey2 | Parent_bes_match_pointer | |||||
2 | FoS | Pointer Offset | LoR | Reserved | Result_address | |||
3 | PreKey1 | KeyLeft2 | Length2 | |||||
4 | Length2 | KeyLeft1 | Length1 |
表6中Parent_best_match_pointer是父节点最长匹配指针。PreKey1表示前置路径关键字1,KeyLeft2表示前置路径关键字2。LoR表示左或右的标志位,FoS表示Parent_best_match_pointer指针对应合并前的第一个或第二个节点。
表7结果节点(RNode)
1 | Associative Information |
结合上述表1~7,下面介绍本发明实施方式基于的树节点的数据结构。
本发明实施方式基于的树节点的数据结构包括:
(1)第一级树节点,如表1所示,该树节点包含了表示该第一级树节点拥有的子树节点位置的扩展位图,表1中Extending Bitmap High Bits表示扩展位图高字节,Extending Bitmap Low Bits表示扩展位图低字节。该扩展位图中的“1”表示该位置有下一级子树节点;“0”表示该位置有下一级子树节点或无下一级子树节点两种情况之一,当所述位置有下一级子树节点时,该位置所对应的下一级子树节点与位图中“0”的左边第一个“1”所对应的子树节点进行了合并;
(2)第一级子树节点数组,其中包含了所述第一级树节点的所有子树节点,即第二级树节点;
(3)第一级结果节点数组,如表7所示,其中包含了所述第一级树节点中所有前缀对应的结果信息Associative Information;
(4)第一级前缀节点,如表2所示,其中包含了表示所述第一级树节点中所有前缀的前缀位图(Prefix Bitmap High Bits表示前缀位图高字节,PrefixBitmap Low Bits表示前缀位图高字节)、一个指向第一级结果节点数组的指针Result_address、和一个指向结果节点的指针PBMI,并且该结果节点不属于所述第一级结果节点数组;
(5)所述的第一级树节点还有一个指向第一级所述子树节点数组的指针和一个指向所述第一级前缀节点的指针;如果所述前缀节点不存在,后一个指针不再指向第一级前缀节点,而是指向结果节点,并且该结果节点不属于该第一级结果节点数组。
所述的第一级树节点,可以不包含扩展位图,而是包含了一个前缀位图、结果节点数组和一个指向所述结果节点数组的指针,如表3所示。
所述的第一级树节点,还可以不包含扩展位图,也不包含前缀位图,而是直接存储了前缀信息,还包括结果节点数组和一个指向所述结果节点数组的指针,如表5和表6所示。
所述的第一级树节点,还可以不包含扩展位图,也不包含前缀位图,而是直接存储了子树节点位置的信息,并且还有一个指向子树节点的指针Child_address,在此子树节点数组里只有这一个子树节点,如表4所示。
本发明实施方式基于的树节点可以采用多级树节点,各级树节点均可采用上述第一级树节点采用的数据结构。
请参阅图4和图7。图4是已有技术Multi-bit Trie示意图,图7是本发明实施方式的上下级树节点之间的关系示意图。图4所示的树形结构第一级(以下简称:level1)和第二级(以下简称:Level2)按照以上的数据结构表示为如图7中的右图所示。图7中左边的树是原始的二叉数,右边的图是第一级和第二级按照本发明实施方式的数据格式形成的关系图。
下面以图7中表示的数据结构为例,介绍本发明实施方式的三个典型的查找流程实施例。
实施例一
查找的关键字(以下称为Key)为0100001010,查找引擎系统的NP接口从网络处理器得到查找的Key,首先从第一级的树节点TNode开始,该TNode中的Have_p_node为“1”,即存在前缀节点PNode,此时PBMI/PNode_address表示为指向前缀节点的指针PNode_address,即图7中的指针110;该TNode中的Extending Bitmap为“00110001”,取查找Key的最高3比特“010”,寻址得到Extending Bitmap中左数第3比特为“1”,所以存在子树节点,并且是子树节点中的第一个;因为存在子树节点,所以不需要读取当前级的PNode进行解析处理,根据TNode中的指向子树节点数组的指针Child_address,即图7中的指针100,取得第二级的第一个树节点TNode。
第二级的第一个树节点TNode中的Have_p_node同样为“1”,即存在
PNode,此时PBMI/PNode_address表示为PNode_address,即图7中的指针210;该TNode中的Extending Bitmap为“00100000”,取查找Key的第二组3比特“000”,寻址得到Extending Bitmap中左数第1比特为“0”,由于当前位图位置的左边不存在“1”,所以当前级TNode在“000”路径上肯定不存在子树节点;根据PNode_address取得PNode进行解析,取查找Key的第二组3比特“000”中的“00*”、“0*”和“*”找到Prefix Bitmap中对应位置的位图值,只有“0*”对应的位图值为“1”,即查找命中,且为最长匹配。根据PNode中的指向结果节点的指针Result_address,即图7中的指针220,得到查找结果。如果Prefix Bitmap中不止一个“1”,那么就需要根据所命中“1”在Prefix Bitmap中的相对位置作为偏移量和Result_address一起得到查找结果。查找结果通过查找引擎系统的NP接口回送给网络处理器。
实施例二
假如查找Key为0101001010,第一级查找与实施例一查找Key为0100001010的时候一样,第二级查找也基本一样,只不过在第二级的PrefixBitmap解析中没有找到命中的前缀,此时就需要判断第二级PNode中的PBMI(图7中的指针211)是否有效;在该例子中,该PBMI有效,并且指向第一级子树中的第一个Prefix所对应的RNode,得到查找结果。
实施例三
假如查找Key为1110011011,首先从第一级的树节点TNode开始,该TNode中的Have_p_node为“1”,即存在PNode,此时PBMI/PNode_address表示为PNode_address(图7中的指针110);该TNode中的Extending Bitmap为“00110001”,取查找Key的最高3比特“111”,寻址得到Extending Bitmap中左数第8比特为“1”,所以存在子树节点,并且是子树节点中的第三个;因为存在子树节点,所以不需要读取当前级的PNode进行解析处理,根据TNode中的Child_address(图7中的指针100)取得第二级的第三个树节点TNode。
第二级的第三个树节点TNode中的Have_p_node为“0”,即不存在PNode,此时PBMI/PNode_address表示为PBMI(图7中的指针212);该TNode中的Extending Bitmap为“00110000”,取查找Key的第二组3比特“001”,寻址得到Extending Bitmap中左数第2比特为“0”,由于当前位图位置的左边不存在“1”,所以当前级TNode在“001”路径上肯定不存在子树节点;又由于不存在PNode,所以判断PBMI(图7中的指针212)是否有效;在该例子中,该PBMI有效,并且指向第一级子树中的第三个Prefix所对应的RNode,得到查找结果。
以上是本发明实施方式的三个典型实施例。下面介绍本发明实施方式路由查找中的三种优化措施。
1、对于大表问题的解决方案
本发明实施方式通过图2中FPGA和DDRII SDRAM的硬件方案实现时,当该硬件实现方案中的查找级数受到限制时,例如受查找时延和成本的控制,那么在查找过程中就需要采用路径压缩,使得在限定的存储空间中能够存放的表项数量受制于表项分布,简称大表问题。
跳跃节点、超级末尾节点和超级末尾节点+是采用路径压缩的数据结构,因为这几个树节点中比较的Key位数不一定是“查找步长”,而是查找步长的整数倍,因此这几个树节点中没有完整的子树位图或者前缀位图,所以说“采用路径压缩”。
当路由查找出现大表问题时,本发明实施方式的优化措施是的关键是不使用跳跃节点、超级末尾节点和超级末尾节点+此类采用路径压缩的数据结构,而是在实施常规的增强多位Trie树查找方法前,将IPv4虚拟专用网的转发表的Key的虚拟专用网号提取出来存储在SVRF寄存器中,使得IPv4虚拟专用的转发表的Key长度缩短。所述虚拟专用网号位于查找关键字的前14位。
全局的IPv4转发表(以下简称:G1obal FIB4)的Key长为32,不需要路径压缩,按照以下方法分级,查找步长为6:
Level 1[9,14];
Level 2[15,20];
Level 3[21,26];
Level 4[27,32]。
其中Level 1通过前9比特Key直接寻址得到。
IPv4虚拟专用网的转发表(以下简称:VPN FIB4)的Key长为46,如果查找级数只有4级,那么按照常规方法必须使用路径压缩才行。为了使大表的表容量不受制于表项分布,本发明的实施方式实现了普通虚拟路由器转发表(以下简称:NVRF)和超级虚拟路由器转发表(以下简称:SVRF)这两种不同的树结构,其中NVRF是未采取优化措施的增强多位Trie树查找方法生成的树形结构,SVRF是采用了针对大表问题的优化措施后的增强多位Trie树查找方法生成的树形结构,SVRF是为了实现真正的大表。
NVRF中的分级如下:
Level 1[V11,14]采用跳跃节点(SNode);(V11是虚拟专用网的识别号VPN ID的第11位)
Level 2[15,20]采用TRIE节点(TNode);
Level 3[21,26]采用TNode;
Level 4[27,32]采用末尾节点(ENode);
或者:
Level 1[V11,2]:TNode;
Level 2[3,14]:SNode;
Level 3[15,20]:TNode;
Level 4[21,32]:超级末尾节点(SENode);
或者:
Level 1[V11,2]:TNode;
Level 2[3,8]:TNode;
Level 3[9,14]:TNode;
Level 4[15,32]:SENode;
等等。
无论如何,必须使用跳跃节点SNode或者超级末尾节点SENode这一类路径压缩方法。
在SVRF的树结构中不需要14比特VPN ID,采用跟Global FIB4
一样的分级:Level 1[9,14];Level 2[15,20];Level 3[21,26];Level4[27,32],其中Level 1的寻址首先通过VPN ID跟特定的寄存器进行匹配得到基地址,该特定的寄存器可以是SVRF寄存器,然后再通过前9比特IPv4地址(以下简称:IPv4 Address)来得到地址偏移量。能够实现的SVRF个数受FPGA片内SRAM资源的大小限制,所以只有大表才采用SVRF,普通的小表仍旧采用NVRF,并且实现了SVRF和NVRF之间的转换。
2、对于小表问题的解决方案
查找引擎中如果实现大量的小表,比如1M条/24长度的表项随机分布在1K个虚拟路由器转发表(以下简称:VRF)中,那么存储空间的利用率非常低,每个树节点占用16字节,而平均1.1-1.3个树节点才存1个表项,简称小表问题。其中DRAM阵列用于存储各种类型的树节点数据结构,这些树节点的上下级关系由它们之间的指针指向关系确定。
本发明实施方式对于小表问题的优化措施是通过将树节点和其相邻节点合并,来解决小表问题。
请参阅图9,图9是本发明实施方式的小表问题的示意图。图9还是以二叉树为根据,图9中每一级树节点的类型就是如前所述的Level1-4所示。
小表问题所述的应用场景生成图9所示的树形结构,4级查找如下:
Level 1[V11,2]:TNode;
Level 2[3,8]:TNode;
Level 3[9,14]:TNode;
Level 4[15,32]:SENode。
以图9为例,图9中关键字V11-2是Level1,关键字3-8是Level2,关键字9-14是Level3,关键字15-32是Level4。为了提高存储空间的利用率,就需要把图9中的Level 4中相邻的两个SENode合并成一个超级末尾节点+(SENodeP)。合并之后,Level 3父节点的扩展位图中对应被合并子节点SENode的位虽然为“0”,但是此时的“0”就不再表示此路径下不存在子树节点,而是可能存在子树节点,并且跟左边第一个‘1’所对应的子树节点合并,从而解决了所述小表问题。
3、最后一级的路径压缩的优化措施
当查找级数较少时,采用最后一级路径压缩的方法。路径压缩虽然有副作用,但是在特定硬件方案的某些应用场景下它是必不可少的。
对于超级末尾节点和超级末尾节点+,此类树节点中比较的Key位数不是“查找步长”,而是查找步长的整数倍;由于这个原因,这几个树节点中没有完整的前缀位图,所以说“采用路径压缩”,所谓“路径压缩”,就是只存储仅有的几条路径。假如长度12比特的子树,需要2的12次方-1比特的前缀位图,以及212比特的字节点位图;但是这棵子树中只有2-3条路径,其他都是空的,用位图来保存信息的话非常浪费。但是,如果需要查找的Key长度大于查找引擎的级数和查找步长之积时,那么就必须采用最后一级的路径压缩才能实现查找。但是,由于这几种树节点中没有完整的前缀位图,那么可支持的表项个数较少。所以虽然路径压缩有副作用,但是在特定硬件方案的某些应用场景下它是必不可少的。
本发明实施方式中,当查找级数由硬件实施方案限制成少于4级时,则需要采用最后一级路径压缩的优化措施,本发明实施方式设计了两种新的区别于末尾节点的最后一级树节点,分别是超级末尾节点和超级末尾节点+,所述超级末尾节点的存储的容量是3个Key,所述超级末尾节点+的存储的容量是2个Key。“最后一级的路径压缩”并不是特指第4级,在1-4级的任何一级都可能是当前查找路径的最后一级。
如果没有路径压缩,那么IPv4虚拟专用网的转发表VPN FIB4的查找级数(查找步长为6)如下:
Level 1[V11,2]:TNode; (V11是VPN ID的第11位)
Level 2[3,8]:TNode;
Level 3[9,14]:TNode;
Level 4[15,20]:ENode;
由于本发明实施方案的硬件实现平台最多只能实现4级查找,那么对于VPN FIB4来讲,只能够支持最长20比特长度的路由前缀查找。
为此,设计了两种新的“最后一级”树节点,区别于ENode,分别是超级末尾节点SENode和超级末尾节点+(SENodeP)。前者可以存储3个Key,后者可以存储2个Key,相邻的两个SENode合并成一个SENodeP。
优化之后,VPN FIB4的查找级数如下:
Level 1[V11,2]:TNode; (V11是VPN ID的第11位)
Level 2[3,8]:TNode;
Level 3[9,14]:TNode;
Level 4[15,32]:SENode或者SENodeP。
采取本发明实施方式采用了最后一级路径压缩的优化措施后,当本发明实施方案的硬件实现平台最多只能实现4级查找时,对于VPN FIB4来讲,也能够支持最长32比特长度的路由前缀查找。
以上所述是本发明实施方式的三种优化措施。
综上所述,本发明实施方式是基于图2、图3所示的FPGA+DDRIISDRAM的硬件平台来实现,可以达到大容量、低成本并且20Gbps流量下的线速路由查找。
以上所述仅为本发明的较佳实施例而已,并非用来限定本发明的实施范围。本领域技术人员根据本发明的具体实施方式,可以做出各种变化方案,比如,位图值为“1”或“0”所代表的意义是可以互换的,从而据此做出的下一步骤的选择也是可以互换的,但是其本质并未超出本发明的范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应为本发明的技术范畴。
Claims (13)
1.一种增强多位Trie树查找方法,其特征在于,该方法包括以下步骤:
(1)获取查找关键字;
(2)读取一个树节点;
(3)以所述关键字为索引,从所述的树节点包含的扩展位图中取得位图值;
(4)如果该位图值为M,那么根据该位图值在所述扩展位图中的偏移量和所述树节点中指向下一级子树节点的指针,重复步骤(2)与(3),所述偏移量指该位图值在所述扩展位图中的位置;如果该位图值不为M,转步骤(5);所述M是1或0;
(5)根据步骤(4)所述位图值在所述扩展位图中的偏移量和所述树节点中指向下一级子树节点的指针取回下一级树节点,如果该下一级树节点不是支持节点合并的节点,转步骤(6);如果该下一级树节点是支持节点合并的节点,转步骤(8);
(6)根据步骤(2)取得的前一级树节点指示的前缀节点信息取回该级的前缀节点,转步骤(7);
(7)根据当前正在查找的关键字和所述前缀节点中的前缀位图进行处理,如果有命中的前缀,根据指向结果节点数组的指针和命中前缀在所述前缀位图中的偏移量取回该命中前缀所对应的结果节点;如果没有命中的前缀,那么根据所述前缀节点中指向前一级的结果节点的指针,取回该结果节点。
(8)根据当前正在查找的关键字和步骤(5)中取回的下一级树节点中存储的前缀信息,判断是否有命中的前缀,如果有命中的前缀,取回该命中前缀所对应的结果节点;如果没有命中的前缀,根据所述下一级树节点中指向前一级的结果节点的指针取回该结果节点。
2.根据权利要求1所述的增强多位Trie树查找方法,其特征在于,还包括回送查找结果的步骤。
3.根据权利要求1所述的增强多位Trie树查找方法,其特征在于,所述多位Trie树包括多级树节点。
4.根据权利要求1或2所述的增强多位Trie树查找方法,其特征在于,所述树节点包括前缀信息、结果节点数组和指向所述结果节点数组的指针。
5.根据权利要求1或2所述的增强多位Trie树查找方法,其特征在于,当路由查找出现大表问题时,在步骤(2)之前,将IPv4虚拟专用网的转发表的关键字的虚拟专用网号提取出来存储在SVRF寄存器中,使得IPv4虚拟专用的转发表的关键字长度缩短。
6.根据权利要求1或2所述的增强多位Trie树查找方法,其特征在于,当出现小表问题时,将树节点和其相邻节点合并。
7.根据权利要求1或2所述的增强多位Trie树查找方法,其特征在于,当查找的Key长度大于查找引擎的级数和查找步长之积或查找级数不大于预定查找级数时,定义超级末尾节点和超级末尾节点+,该超级末尾节点和超级末尾节点+区别于末尾节点的最后一级树节点,此类树节点中比较的Key位数不是“查找步长”,而是查找步长的整数倍。
8.一种存储数据结构的计算机可读介质,所述数据结构包括:
第一级树节点,包括表示该第一级树节点拥有的子树节点位置的扩展位图,该扩展位图中的P表示该位置有下一级子树节点;Q表示该位置有下一级子树节点或无下一级子树节点两种情况之一,当所述位置有下一级子树节点时,该位置所对应的下一级子树节点与所述扩展位图中Q的左边第一个P所对应的子树节点进行合并;其中P和Q均是1或0且P、Q不相等;
第一级子树节点数组,包括所述第一级树节点的所有子树节点;
第一级结果节点数组,包括所述第一级树节点中所有前缀对应的结果信息;
第一级前缀节点,包括表示所述第一级树节点中所有前缀的前缀位图、指向第一级结果节点数组的指针、和指向结果节点的指针,该结果节点不属于所述第一级结果节点数组;
所述的第一级树节点还包括指向第一级所述子树节点数组的指针和指向所述第一级前缀节点的指针;如果所述前缀节点不存在,后一个指针不再指向第一级前缀节点,而是指向结果节点,并且该结果节点不属于该第一级结果节点数组。
9.一种增强多位Trie树查找装置,其特征在于,包括:算法查找引擎,与该算法查找引擎相连接的网络处理器、存储装置和中央处理器,所述中央处理器用于维护算法查找引擎,所述存储装置用于存储各种类型的树节点数据结构及这些树节点之间的关系,所述网络处理器用于完成报文的二三层报文头的解析、转发、访问权限控制,所述算法查找引擎用于从网络处理器得到查找的关键字,根据该关键字查找,查找结果回送给网络处理器。
10.如权利要求9所述的增强多位Trie树查找装置,其特征在于,所述算法查找引擎由FPGA实现。
11.如权利要求9所述的增强多位Trie树查找装置,其特征在于,所述算法查找引擎包括查找引擎系统及其外部接口,所述查找引擎系统用于根据关键字执行查找功能,所述外部接口用于查找引擎系统与所述网络处理器、存储装置和中央处理器之间的连接。
12.如权利要求11所述的增强多位Trie树查找装置,其特征在于,所述查找引擎系统包括:查找子系统、内存管理子系统、更新子系统和存储控制模块;
所述存储控制模块是查找引擎系统的底层模块,为所述查找子系统、所述内存管理子系统、所述更新子系统三个子系统提供服务;
所述查找子系统用于根据关键字完成查找服务;
所述更新子系统和所述内存管理子系统用于完成表项的维护更新服务;
述更新子系统完成更新策略的运算,所述内存管理子系统提供算法查找引擎中最底级的读写接口和进行统一的内存管理。
13.如权利要求12所述的增强多位Trie树查找装置,其特征在于,所述外部接口包括:网络处理器接口、中央处理器接口和存储装置接口;其中
所述网络处理器接口一端与所述查找子系统相连接,是所述查找引擎系统与所述网络处理器的接口,提供表项的查找服务;
所述中央处理器接口一端与所述更新子系统相连接,是所述查找引擎系统与所述中央处理器的接口,提供表项的维护更新服务;
所述存储装置接口一端与所述存储控制模块相连接,是所述查找引擎系统与所述存储装置的接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101236740A CN101141389B (zh) | 2007-09-29 | 2007-09-29 | 增强多位Trie树查找方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101236740A CN101141389B (zh) | 2007-09-29 | 2007-09-29 | 增强多位Trie树查找方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101141389A true CN101141389A (zh) | 2008-03-12 |
CN101141389B CN101141389B (zh) | 2010-06-16 |
Family
ID=39193141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101236740A Expired - Fee Related CN101141389B (zh) | 2007-09-29 | 2007-09-29 | 增强多位Trie树查找方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101141389B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009132556A1 (zh) * | 2008-04-30 | 2009-11-05 | 华为技术有限公司 | 一种数据查找的方法及装置 |
WO2009135417A1 (zh) * | 2008-05-05 | 2009-11-12 | 华为技术有限公司 | 一种基于树形数据结构的最长前缀匹配方法和装置 |
WO2010000201A1 (zh) * | 2008-06-30 | 2010-01-07 | 华为技术有限公司 | 存储、查找路由表的方法及装置 |
WO2010054599A1 (zh) * | 2008-11-13 | 2010-05-20 | 华为技术有限公司 | 存储数据的方法、装置及系统 |
CN101645852B (zh) * | 2009-06-09 | 2011-06-15 | 中国科学技术大学 | 一种网络包分类的设备和方法 |
CN102195853A (zh) * | 2010-03-09 | 2011-09-21 | 杭州华三通信技术有限公司 | 一种保存位图的方法和装置 |
WO2011127642A1 (zh) * | 2010-04-12 | 2011-10-20 | 华为技术有限公司 | 路由表建立方法和装置及路由表查找方法和装置 |
CN101388842B (zh) * | 2008-10-30 | 2012-04-04 | 华为技术有限公司 | 一种存储方法和装置 |
CN101515298B (zh) * | 2009-03-30 | 2013-09-25 | 华为技术有限公司 | 基于树形数据结构节点的插入的方法和存储装置 |
CN104461965A (zh) * | 2014-12-19 | 2015-03-25 | 浪潮集团有限公司 | 一种低开销配置长表项的方法 |
WO2015109586A1 (en) * | 2014-01-27 | 2015-07-30 | Hewlett-Packard Development Company, L.P. | Multi-bit trie based indexed shape graph |
CN105119834A (zh) * | 2015-07-17 | 2015-12-02 | 西安空间无线电技术研究所 | 一种基于复合trie树结构的源地址目的地址联合查找方法 |
WO2015192742A1 (zh) * | 2014-06-20 | 2015-12-23 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN106330721A (zh) * | 2015-06-30 | 2017-01-11 | 杭州华三通信技术有限公司 | Ip路由查找方法及装置 |
CN106708749A (zh) * | 2016-12-23 | 2017-05-24 | 量子云未来(北京)信息科技有限公司 | 一种数据查找方法 |
CN108197313A (zh) * | 2018-02-01 | 2018-06-22 | 中国计量大学 | 通过16位Trie树实现空间优化的词典索引方法 |
CN108733681A (zh) * | 2017-04-14 | 2018-11-02 | 华为技术有限公司 | 信息处理方法及装置 |
CN110995876A (zh) * | 2019-10-11 | 2020-04-10 | 中国科学院计算技术研究所 | 一种ip存储与查找的方法及装置 |
CN112887212A (zh) * | 2021-02-25 | 2021-06-01 | 清华大学 | 基于可变步宽trie树的高速路由查找方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3735471B2 (ja) * | 1998-10-05 | 2006-01-18 | 株式会社日立製作所 | パケット中継装置およびlsi |
US7249149B1 (en) * | 1999-08-10 | 2007-07-24 | Washington University | Tree bitmap data structures and their use in performing lookup operations |
US7899067B2 (en) * | 2002-05-31 | 2011-03-01 | Cisco Technology, Inc. | Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match |
CN100477644C (zh) * | 2006-10-17 | 2009-04-08 | 华为数字技术有限公司 | 一种路由存储方法及装置 |
-
2007
- 2007-09-29 CN CN2007101236740A patent/CN101141389B/zh not_active Expired - Fee Related
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101572647B (zh) * | 2008-04-30 | 2012-07-04 | 华为技术有限公司 | 一种数据查找的方法及装置 |
WO2009132556A1 (zh) * | 2008-04-30 | 2009-11-05 | 华为技术有限公司 | 一种数据查找的方法及装置 |
CN101577662B (zh) * | 2008-05-05 | 2012-04-04 | 华为技术有限公司 | 一种基于树形数据结构的最长前缀匹配方法和装置 |
WO2009135417A1 (zh) * | 2008-05-05 | 2009-11-12 | 华为技术有限公司 | 一种基于树形数据结构的最长前缀匹配方法和装置 |
WO2010000201A1 (zh) * | 2008-06-30 | 2010-01-07 | 华为技术有限公司 | 存储、查找路由表的方法及装置 |
US8341187B2 (en) | 2008-10-30 | 2012-12-25 | Huawei Technologies Co., Ltd. | Method and device for storage |
CN101388842B (zh) * | 2008-10-30 | 2012-04-04 | 华为技术有限公司 | 一种存储方法和装置 |
WO2010054599A1 (zh) * | 2008-11-13 | 2010-05-20 | 华为技术有限公司 | 存储数据的方法、装置及系统 |
CN101741708B (zh) * | 2008-11-13 | 2012-11-21 | 华为技术有限公司 | 一种存储数据的方法和装置 |
CN101515298B (zh) * | 2009-03-30 | 2013-09-25 | 华为技术有限公司 | 基于树形数据结构节点的插入的方法和存储装置 |
CN101645852B (zh) * | 2009-06-09 | 2011-06-15 | 中国科学技术大学 | 一种网络包分类的设备和方法 |
CN102195853A (zh) * | 2010-03-09 | 2011-09-21 | 杭州华三通信技术有限公司 | 一种保存位图的方法和装置 |
CN102195853B (zh) * | 2010-03-09 | 2013-09-04 | 杭州华三通信技术有限公司 | 一种保存位图的方法和装置 |
WO2011127642A1 (zh) * | 2010-04-12 | 2011-10-20 | 华为技术有限公司 | 路由表建立方法和装置及路由表查找方法和装置 |
CN102484610A (zh) * | 2010-04-12 | 2012-05-30 | 华为技术有限公司 | 路由表建立方法和装置及路由表查找方法和装置 |
WO2015109586A1 (en) * | 2014-01-27 | 2015-07-30 | Hewlett-Packard Development Company, L.P. | Multi-bit trie based indexed shape graph |
WO2015192742A1 (zh) * | 2014-06-20 | 2015-12-23 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN105227468A (zh) * | 2014-06-20 | 2016-01-06 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN105227468B (zh) * | 2014-06-20 | 2019-01-08 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN104461965B (zh) * | 2014-12-19 | 2018-05-01 | 浪潮集团有限公司 | 一种低开销配置长表项的方法 |
CN104461965A (zh) * | 2014-12-19 | 2015-03-25 | 浪潮集团有限公司 | 一种低开销配置长表项的方法 |
CN106330721B (zh) * | 2015-06-30 | 2019-09-17 | 新华三技术有限公司 | Ip路由查找方法及装置 |
CN106330721A (zh) * | 2015-06-30 | 2017-01-11 | 杭州华三通信技术有限公司 | Ip路由查找方法及装置 |
US10476785B2 (en) | 2015-06-30 | 2019-11-12 | New H3C Technologies Co., Ltd | IP routing search |
CN105119834B (zh) * | 2015-07-17 | 2018-06-01 | 西安空间无线电技术研究所 | 一种基于复合trie树结构的源地址目的地址联合查找方法 |
CN105119834A (zh) * | 2015-07-17 | 2015-12-02 | 西安空间无线电技术研究所 | 一种基于复合trie树结构的源地址目的地址联合查找方法 |
CN106708749A (zh) * | 2016-12-23 | 2017-05-24 | 量子云未来(北京)信息科技有限公司 | 一种数据查找方法 |
CN106708749B (zh) * | 2016-12-23 | 2019-08-23 | 量子云未来(北京)信息科技有限公司 | 一种数据查找方法 |
CN108733681A (zh) * | 2017-04-14 | 2018-11-02 | 华为技术有限公司 | 信息处理方法及装置 |
US11132346B2 (en) | 2017-04-14 | 2021-09-28 | Huawei Technologies Co., Ltd. | Information processing method and apparatus |
CN108733681B (zh) * | 2017-04-14 | 2021-10-22 | 华为技术有限公司 | 信息处理方法及装置 |
CN108197313A (zh) * | 2018-02-01 | 2018-06-22 | 中国计量大学 | 通过16位Trie树实现空间优化的词典索引方法 |
CN110995876A (zh) * | 2019-10-11 | 2020-04-10 | 中国科学院计算技术研究所 | 一种ip存储与查找的方法及装置 |
CN112887212A (zh) * | 2021-02-25 | 2021-06-01 | 清华大学 | 基于可变步宽trie树的高速路由查找方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101141389B (zh) | 2010-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101141389B (zh) | 增强多位Trie树查找方法和装置 | |
US6434144B1 (en) | Multi-level table lookup | |
Chen et al. | The dynamic cuckoo filter | |
Bando et al. | Flashtrie: Hash-based prefix-compressed trie for IP route lookup beyond 100Gbps | |
CN101577662B (zh) | 一种基于树形数据结构的最长前缀匹配方法和装置 | |
US7953077B2 (en) | Network processor with single interface supporting tree search engine and CAM | |
US8780926B2 (en) | Updating prefix-compressed tries for IP route lookup | |
CN101667958B (zh) | 选择哈希函数的方法、存储及查找路由表的方法及装置 | |
KR101298367B1 (ko) | 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법 | |
CN101604337B (zh) | 一种哈希表项存储、查找装置及方法 | |
CN102484610B (zh) | 路由表建立方法和装置及路由表查找方法和装置 | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
US20050174272A1 (en) | Content-based information retrieval architecture | |
TW200402639A (en) | Method and data structure for a low memory overhead database | |
CN106326475B (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN101621502A (zh) | 存储、查找路由表的方法及装置 | |
CN108874987B (zh) | 表项管理方法、装置及交换芯片 | |
CN101620623A (zh) | 内容可寻址存储器表项管理方法和装置 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN101267381A (zh) | 哈希表操作方法及装置 | |
US20140052710A1 (en) | Device and method of mass data storage based on tree structure | |
CN101741708A (zh) | 一种存储数据的方法、装置及系统 | |
CN102984071B (zh) | 分段地址路由的路由表组织方法及查找路由的方法 | |
CN100487697C (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100616 Termination date: 20150929 |
|
EXPY | Termination of patent right or utility model |