CN1784678A - 用于高效地搜索被分成具有界大小的、有界数量的子数据库的转发数据库的系统和方法 - Google Patents
用于高效地搜索被分成具有界大小的、有界数量的子数据库的转发数据库的系统和方法 Download PDFInfo
- Publication number
- CN1784678A CN1784678A CNA2004800084745A CN200480008474A CN1784678A CN 1784678 A CN1784678 A CN 1784678A CN A2004800084745 A CNA2004800084745 A CN A2004800084745A CN 200480008474 A CN200480008474 A CN 200480008474A CN 1784678 A CN1784678 A CN 1784678A
- Authority
- CN
- China
- Prior art keywords
- prefix
- subdata base
- pointer
- database
- node
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供一种方法、设备和存储介质产品以形成转发数据库并使用所形成的数据库更有效、快速地沿计算机网络路由数据包。转发数据库被配置成多个子数据库。每个子数据库由指针表中的指针所指向。当对入站地址进行最长匹配搜索时,可用最长前缀匹配算法以在存储于指针表中的规定“矛前缀”中寻找最长匹配。在找到最长匹配后,指针表将执行由矛前缀所指向的子数据库中的下一次搜索。另一最长匹配搜索可对由指针所选择子数据库中的数据库前缀(或简称“前缀”)而进行。仅搜索感兴趣的数据库,不对其它数据库进行访问。使用前驱指针,被优化地约束大小和数量的子数据库保证功耗被限制在仅被访问的子数据库内,由于仅寻找感兴趣的子数据库,可实现更高速度的查找操作。
Description
技术领域
本发明涉及计算机网络。更具体地,本发明涉及一种被分成预定大小的预定数量的子数据库的查找表的转发数据库,每个子数据库可用指针表选择,指针表通过在存储于指针表中的矛前缀进行最长匹配搜索而选择感兴趣的子数据库。
背景技术
下面的说明和范例根据它们包含在这部分中的内容并不认为是传统技术。。
计算机网络一般被认识为是通过多个计算机的互联网络进行数据包通信。网络的一个目的是将数据包快速地从源点转发到目的地。因此,网络本身可以是一个或更多转发设备,这里可互换地指网关、网桥、交换机以及路由器。
转发设备一般包括查找表。入站地址可与存储在查找表中的前缀表项进行比较。如果发生匹配,关联的信息数据包被发送到转发设备的一个适当端口。作为网络交换的链路,在转发设备之间路由协议交换信息以改变相应查找表中的前缀表项。这种改变不仅会修改查找表中的前缀还会修改由那些前缀指向的下一级跳跃(next hop)的标识符。因此,当链路在互联网或企业内部网的多个部分中断开和恢复时,通过转发设备的路由可动态地改变。
与数据包相关的互联网协议(IP)地址一般包括:网络字段和主机字段。用于网络和主机字段的比特数能以一种基于类的互联网寻址结构改变。随着被称为无类域内路由(CIDR)的无类寻址结构的出现,网络字段和主机字段之间的界限可以改变。除了类和无类寻址结构,目前还存在多种IP寻址的互联网协议版本。例如,IP版本4(IPV4)使用32比特寻址前缀,而IP版本6(IPV6)使用128比特寻址前缀。如果使用例如IPV4寻址,转发设备可能仅考虑在确定下一级跳跃中的32比特寻址字段的最前8、16和24比特。
一种用于确定下一级跳跃的流行方法是使用被称为最长匹配前缀的技术。在这种技术中,32比特的IP地址,例如192.2.8.64与查找表中的前缀表项(此后称为“前缀”)相比较。前缀192.2.0.0/16具有比前缀192.0.0.0/8更长的匹配前缀。这主要因为前者的前缀长度为16比特,而后者的前缀长度仅为8比特。当作为数据包发送目的地的下一级跳跃地址被确定时,转发设备将考虑前两个字节192.2*。
有很多方法能够进行最长匹配前缀比较。例如可用指针或散列。二进制序列的最前几个比特可作为指针存储在表内。各指针表项将不仅跟踪指针中的前缀,还指向完成最长前缀匹配所需要的随后的二进制表项。尽管指针将指向子数据库中可能的几百个前缀,许多子数据库关于任何对入站地址的匹配是空的或稀疏的。使用先驱指针划分前缀数据库尽管是启发性的,但无法保证数据库被优化地分裂。另外,这种传统技术不提供对查找表性能上的任何最坏情况的保证。
另一种用来分裂数据库的技术牵涉到使用树或结(trie),现存在许多不同的树结构。简单树经常指二叉树,具有更复杂树结构的、作为二叉树压缩形式二叉树。要在树中搜索地址,搜索开始于根节点。从根节点伸展开的“1”指针或“0”指针跟随到树中的下个节点或二进制比特位置。如果,地址例如开始于001*,然后搜索开始于根,并向下进行到每个顶点节点,其过程沿“0”分支节点开始,到下个“0”分支节点并最后到“1”分支指针。在到达叶节点或发生失败前,搜索将继续。可压缩二叉树以改善搜索操作。帕特丽夏树是一种用于缩短分支长度以使其具有相对较少的叶节点的压缩形式。
上面所提到的该技术的不利因素在于:他们不提供对延伸到任何指针之外的子数据库大小的任何界限。这难以为任何子数据库准备给定的存储量,并同样不提供对查找速度或查找性能的任何保证(除了查找全部子数据库之外的平凡的最坏情况的保证)。
如果能更优化地分配在各节点或可搜索的子数据库中的多个前缀,搜索能得以更优化地实现。因此存在一种要求:即用作为搜索时指针的“矛前缀”配置一种可搜索数据库的特别形式,以仅指向感兴趣的子数据库。所要求的分配包括将界限设置于每个子数据库中的前缀数量上,并将界限设置于查找表中的子数据库的数量上。通过控制子数据库的数量和子数据库的大小,查找操作更具确定性,且能够保证最坏情况的查找时间。另外,子数据库有界数量能更为有利地分配到一个物理设备(诸如一存储器),存储器的专用部分的大小被设计成能够容纳相应子数据库。由于在具体查找期间仅需访问子数据库,这将减少查找操作的功耗。
发明内容
通过将子数据库进行更优化的分配的一种系统、方法和存储器能大部分地解决上面所罗列的问题。子数据库中的前缀数量被较佳地限制为不超过T个数目的前缀,其中T根据所要求的速度和功耗而选择,一般远小于数据库中的总前缀数N。另外,数据库中的子数据库的数量直接与N成正比并与T成反比,其数量被较佳地限定在N/T和(2N/T)+1之间。
通过将数据库分裂为子数据库,只需要搜索一个子数据库。感兴趣的子数据库通过使用一指针单元而被选择,据所知该指针单元以另一种方式也可被称为一分离引擎。分离引擎包括存储一组指针的指针表。每个指针具有此后称为“矛前缀”的相应前缀。矛前缀项被用来注释指针函数,指针函数被用来矛指(spear)从根节点到子数据库。矛前缀与普通数据库前缀的不同点在于,矛前缀是唯一用于这里的特别函数前缀,以允许最长匹配矛前缀搜索匹配从而根据下面将描述的那样确定感兴趣的数据库。为了简单起见,与数据库的N个前缀相关联的数据库前缀此后被简称为“前缀”,同时存储在指针表中并由指针单元使用的特定前缀此后被称为“矛前缀”。
根据一实施例提供了一种方法。该方法被用来通过将数据库分裂成多个子数据库而形成一个转发数据库。被适当地给定有界的大小和数量的子数据库,一组矛前缀表项和相关指针可形成以指向适当的数据库。指针不仅跟踪始于根节点的多个1和多个0的二进制字符串,同时指向感兴趣的子数据库。
根据本发明另一实施例,这里提供另一种用于将前缀定位到被分裂成多个子数据库的转发数据库中的方法。该方法包括例如使用指针表中的指针并对存储于其中的矛前缀应用最长匹配。随后可使用与最长矛前缀相关联的指针以指向转发数据库中所选择的子数据库。数据库前缀的最长匹配(或简称“前缀”)可随后用于确定在所选子数据库中的最长前缀。找到指针表中的最长矛前缀以及所选子数据库中的最长前缀,由此确定转发相关联数据包的下一级跳跃。
根据另一实施例,这里构思出一种具有计算机可读存储介质的转发设备。存储介质可包含:分裂程序、指针表以及查找表。分裂程序可由处理器调用从而形成具有从根节点向多个叶节点伸展开的分支的树。该程序随后在每个具有小于T个前缀的叶节点形成一个子数据库,其中在诸叶节点以及位于根节点与叶节点之间的诸节点中的前缀累计数为N个前缀。在搜索操作中,在搜索地址时访问指针表并获得指针。指针表仅指向查找表包含所选子数据库的部分。因此,指针表可看做是对应于用于“矛指”于相应数据库的二叉树的分支,相应数据库可看做是二叉树中的叶节点。
附图说明
通过阅读结合附图对本发明所作的详细说明,本发明的其它目的和优点将变得明晰:
图1是通信网络的示意图;
图2是图1中通信网络中的数据包转发引擎(即交换机或路由器)的框图;
图3是将通过将地址的较高有效比特匹配于指针表中的前缀,并将地址的较低有效比特匹配于由指针单元指向的子数据库中的前缀而将地址指向相应子数据库的指针单元的框图;
图4是一种路由器内的、用于存储由数据包处理器使用的分裂程序以配置图3查找表中的指针表和子数据库的计算机存储介质的框图;
图5是表示在被限定为不少于N/T个子数据库和不超过(2N/T)+1个子数据库之间的数据库中具有N数量的前缀的二叉树的平面图。
图6是用于将数据库二分成具有上限数量前缀的子数据库的分裂程序的流程图;
图7是表示如果前缀数量小于下限数量前缀,用于将子数据库合并为二叉树的分裂程序的流程图。
图8是查找操作的流程图,它开始于在指针表的前缀中查找最长前缀匹配,选择由指针表指向的子数据库(或多个子数据库)并随后在所选子数据库(或诸子数据库)的前缀中查找最长前缀匹配。
由于本发明能够有多种修改和替换形式,其特殊实施例是以范例形式出现在附图中并在这里详细说明的。然而,应该懂得,附图和详细说明并不打算将本发明限制为所公开的具体形式,而是相反,本发明覆盖所有落在由所附权利要求书所限定的本发明精神和范围内的修改、等效物和替换物。
具体实施方式
下面将描述用来生成更有效的转发数据库并使用数据库执行最长前缀匹配的一种方法、设备和存储器产品。由于对转发数据库中最合适前缀的最长匹配搜索在诸子数据库中进行,每个子数据库相对地具有相同大小(即前缀数量),转发设备可更快地转发数据包。因此,最长匹配搜索仅发生在一个子数据库中而不是所有子数据库中。所选子数据库是对指针表中的特定矛前缀进行最长匹配搜索后得到的结果。矛前缀基本在数量上小于数据库前缀(或简称“前缀”),只需在指针列表中搜索相对较少的二进制的“1”和“0”。一旦在指针表中确定最长矛前缀匹配,通过只使用一个子数据库寻找转发数据库中的最合适表项,使这类搜索例程大大地加速。
图1示出计算机网络10中的多个转发设备12,介于诸计算机14之间的互联网或内联网的拓扑可以改变。如果计算机14a要求发送数据包到计算机14b,然后它必须通过遍历网络10中的一个或多个转发设备12而实现这种做法。转发设备12a可能会接收到数据包,该数据包包含例如转发设备12b(或计算机14b)的目的地地址。确定将数据包发送到网络10中的哪里并因此使数据包到达更靠近目的地的转发设备(或级)是转发设备12a中的查找表的本质上的功能。较优化地,12a中的查找表将接收目的地地址,并将地址或关键字与查找表中的前缀相比较。与每个前缀相关的可以是一个下一级跳跃识别符。因此,例如使用最长前缀匹配比较,一旦前缀匹配于目的地地址,那么数据包被路由至更接近目的地的下一级跳跃。
图2示出一种转发设备12的范例,转发设备是诸如路由器、网关、网桥或交换机等设备。转发设备12经常被称为数据包转发引擎并包括一种交换结构20,以及多个线路卡22。交换结构20为大众所知地包括一个纵横式交换机,它将所有线路卡互联在一起。至少一个线路卡包括路由处理器。因此转发设备12可视为执行两种功能(i)基于数据包的目的地地址执行路由查找以识别外外出端;以及(ii)将数据包切换到合适的输出端口。
可在入口线路卡(如线路卡22a)上主要地执行路由功能,而将数据包交换到合适的输出端口或线路卡的动作可发生在交换结构20上。数据包的目的地地址(DA)可通过I/O接口输入到线路卡22a。各线路卡一般包括:媒体访问控制器(MAC)24、地址解析单元(ARU)26以及存储装置28。MAC24被配置成能接受许多不同的通信协议,诸如CSMA/CD、FDDI或ATM通信协议。当读取自入口MAC24a的数据包,控制数据包通过交换结构20所必须的转发控制信息将被前附于和/或后附于那些数据包上。
位于入口线路卡上的ARU26较佳地采用最长前缀匹配比较技术执行路由功能。ARU能执行无类或基于类的路由功能并能够支持可变长度子网掩码(VLSM)。当从使用众所周知的路由协议(诸如RIP、OSPF或BGP)的网络中添加或删除路由时,可重新配置每个ARU。存储装置28可通过不同类型的随机存取存储器(RAM)实现,比如DRAM、SRAM或内容可寻址存储器(CAM)、一种三重CAM(或TCAM)的掩模CAM的普通形式。存储器28可包含查找表。如果查找表内置于线路卡22上,在进入数据包上的查找可以无需加载转发设备12的中央处理器而局部地进行。
图3示出总查找表的配置或结构。查找表可以视为由分裂引擎或指针单元32处理的总转发数据库30。数据库30被二分或分裂成多个子数据库34。下面将结合图5-8对用来将数据库分裂为子数据库34的机制进行说明。另外,将提供实施例以阐述如何将各子数据库内的前缀数量限定在最大前缀量(或阈值“T”)和最小前缀量(或T/2)之间。因此,图3示出一种具有T数量前缀36的子数据库34a以及具有最小数量前缀36的子数据库34b。不仅对每个子数据库中的前缀数量进行控制,还对数据库30中的子数据库34的数量进行控制。
作为查找表的一部分,或位于查找表之前的是一个指针单元32。指针单元32可包括一个具有指针列的指针表。每个指针包括一个代表分支或“矛指”向相应子数据库的合适的唯一二进制序列的二进制序列。例如,一个指针38可指向前缀01*,其中*代表一任意或屏蔽表项。前缀01*是前缀的一种特殊形式,完全不同于数据库前缀的N数量,前缀01*即指“矛前缀”,由于如范例中所示那样它起矛指向子数据库34a的功能。如果入站地址(DA)开始于后面跟随1的0,那么指针38将指向子数据库“D”,子数据库“D”包含有限数量的、开始于二进制序列01并跟随由受约束范围的其它二进制组合的前缀。另一指针在图3中被表示为由标号34b所表示的指向子数据库“I”的指针40。子数据库“I”可具有开始于矛前缀1100的二进制序列,具有包含子数据库“I”的前缀表项的数量的后续二进制排列。在图3范例中表示为01*、1100*以及*的指针组被配置成总地址解析的一部分并存储于指针单元32的指针表中。
要知道图2和图3中所描述的每个功能单元都可通过硬线电路、应用专用集成电路(ASICs)、一个或更多逻辑电路、处理器或者可进行由软件或硬件(或者软硬件组合)规定的一系列运算的任何可编程计算机部件。重要的是,本发明不打算被限制在功能单元的具体实现上,而是不管使用硬件、固件或软件,只要是能够实现其功能的功能化单元即可。
图4示出一种转发设备12中的范例性存储分配。如图2所示,转发设备包括多个与网络中的其它转发设备进行通信的输入/输出端口40。在所例示的实现中,能拜访数据包处理器42以获取存储器28中的分裂程序44。当在处理器42上执行时,查找表的数据库被分裂成具有有界大小和数量的子数据库。下面将对分裂数据库的机制进行说明。一旦分裂,处理器42将子数据库配置到查找表46并将指针存入指针表48。当进行地址搜索时,入站地址将经由I/O端口40被发送到指针表48。
基于在那个地址的较早的二进制比特组中的最长前缀的匹配选择一合适的指针。该比特组表示矛前缀,并通过对存储在指针表中的矛前缀组中最长矛前缀的匹配而选择指针。所选择的指针将因此指向查找表46中的适当子数据库。将进行另一最长前缀匹配操作以确定仅在那个子数据库中的最长匹配前缀。一旦确定,然后最长匹配前缀将指向相应的下一级跳跃的表项。如图3所示,查找操作的结果将被送到选择器,选择器随后选择能被图2中交换结构所识别的下一级跳跃识别符。在图3中下一级跳跃地址选择器由标号39表示,存储在存储器38中的下一级跳跃的表由标号49表示。
图5示出分裂程序44(图4)如何利用二叉树50以生成指针表项或矛前缀,以及在每个子数据库中的前缀。如图所示,转发数据库中的前缀地址能由二叉树数据结构50表示。每个最高节点表示包括多个1和多个0的二进制字符串。根(R)是由*表示的空字符串。两个指针起始于每个节点。第一指针由当前二进制字符串加0后构成,而第二字符串由当前二进制字符串加1后构成。
为将转发数据库二分成有界的子数据库,这里提供了一个范例。如范例所示,转发数据库由300个前缀组成,或者也可称为N个前缀。开始于300个前缀的空节点或根节点R,60个前缀在它们的较高有效比特位置处以0开始,而240在较高有效比特位置处以二进制的1开始。因此,节点A将具有60个前缀而节点B具有240个前缀。由于不再存在任何关联于根节点的前缀,通过在那里图示“×”而删去数字300。
在另一范例使用中,可能要求确保在任何子数据库中不超过50个前缀。因此,由于节点A和B的每个包含超过50个前缀,两节点都必须进一步分裂。节点A前缀可能包括与具有0值的下一个二进制比特关联的12个前缀以及与具有1二进制值的下一个比特关联的48个前缀。由于节点D现在不超过T=50个前缀,可以说节点D表示子数据库和指针,该指针指向具有经存储的01*二进制序列的节点D。用于节点D的矛前缀因此为01*,由于前缀数量小于T并且如下所述那样前缀数量大于T/2,因此节点D成为子数据库。在较高有效比特位置01处产生比较的掩码操作将地址指向包含48个前缀的子数据库D,在这之上必须进行附加的最长前缀匹配。
除了要求进一步进行二分的节点A的前缀,节点B的前缀同样必须经历一次分裂。8个前缀可能关联于下一个为0的比特值,而232个前缀可能关联于下一个为1的比特值。因此如图所示,节点F还必须进一步分裂成节点G和H。由于所有节点都具有超过最大数量的前缀(比如,该范例中所示的节点G具有70个前缀而节点H具有162个前缀),节点G以及节点H都必须进一步分裂。在进一步分裂后,节点G产生节点I和节点J,然后其中每个节点可能具有少于前缀最大受约束前缀的数量(比如,所示节点I具有28个前缀而节点J具有42个前缀)。为指向节点I处的子数据库和节点J处的子数据库,矛前缀指针必须作为1100*和1101*存储在指针表中。如所示那样在节点K上必须发生进一步分裂,直到所产生诸节点具有不大于最大前缀表项数量,在该范例中为50。由此,从具有157个前缀的节点K中,34个前缀可生成于节点O中、38个前缀可生成于节点Q中、42个前缀可生成于节点S中、43前缀可生成于节点N中。
导致其小于最大边界的前缀的节点被视为叶节点。因此,在该范例中的叶节点包括C、D、E、I、J、O、Q、S、N和L。然而,不是所有叶节点都包含子数据库。某些叶节点可能包含小于最小量的数量的前缀。例如,前缀的最小数量可能是T/2,或在该范例中为25,如图5所示,作为分裂程序的结果,每个节点C、E和L均具有小于25的前缀数量。
为优化最长匹配前缀操作,要求将包含少于最小边界的前缀的节点合并入二进制链中。如所示的那样,节点C中的12个前缀可向上合并到节点A中。然而,由于节点A的前缀将向下传送到节点C和D,因此节点A不包含任何前缀。由于节点A因为合并操作而具有少于可允许前缀最小数量的前缀,所以必须进行附加的合并。如第二虚线所表示的那样,从节点A到根节点必须在此经历一次向上合并。同样的合并操作发生于从节点E到节点B并从节点B到根节点R。在节点L中的前缀同样由虚线表示到节点H、节点F然后到节点B的向上合并。如果来自节点E的前缀数量与来自节点L的前缀数量组合后超过25,那么组合操作将终止于节点B。代替的,节点E中的8个前缀和节点L中的5个前缀组合后不会超过25,因此必须向上合并到根节点R,在那里它们与来自节点C的12个前缀组合。尽管向上合并到根节点R的前缀的总数等于最小值25,即使总数小于25,根节点组成对合并操作的例外。因此,如果少于25个前缀向上合并到根节点,从具有空指针的根节点开始不再需要发生进一步的向上合并。
作为分裂操作以及后续合并操作的结果,图5的二叉树50生成具有有界子数据库的8个节点。节点D、I、J、O、Q、S、N和R的每个子数据库中的前缀数量被表示在每个节点的右面,指向子数据库的指针表内的节点表项被表示在各节点下面的括号中。在所示范例中8个子数据库具有不大于T个的前缀以及不小于T/2个的前缀。T能被选择为取决于需要优化地进行最长前缀匹配的二分数目的任何预定数。另外,子数据库的数量被选择为不大于2N/T+1且不小于N/T。在所示范例中2N/T+1=600/50+1或13。另外N/T=300/50或6。由于生成了8个子目录,8落在6-13的边界内。
现在参阅图6,它示出了分裂程序的进一步细节。图6示出图4中分裂程序所使用的步骤顺序。这些步骤,特别地描述了分裂程序的分裂阶段。图7示出分裂程序的合并阶段。在分裂阶段中,分裂程序开始于步骤60并向下传到树或结(trie)。在步骤62检查较高有效比特位置的值,而如步骤64所示,与关联于的下一节点的位置处的0和1值相对应的前缀向下遍历结(tire)。如判决框66所示,对产生于分裂步骤64的每个节点进行检查以确定那个节点中的前缀是否小于或等于前缀数量的阈值T。如果是,分裂操作终止且前进至结束步骤74。如果不是,如步骤70所示检查下一个二进制值并在此分裂与下一对节点相关联的前缀。然后由判决框72检查每个结果节点中的前缀数量,观察该数量是否小于或等于阈值数T。如果是,分裂阶段将终止。如果不是,类似于步骤62-68,步骤68-72将被重复直到所有节点产生小于或等于阈值T的前缀数量。下面的伪代码表示分裂程序的分裂阶段,其中矛表项(SE)表示指向包含有界数量前缀的节点(即子数据库)的指针,其中Tsplit等于T:
Algorithm Split(R,Tsplit) ListPending={R} While(ListPending is non-empty) <!-- SIPO <DP n="10"> --> <dp n="d10"/> { Remove node A from ListPending n=|subtrie(A)| If(n>Tsplit){ /*split A */ Put A’s left child(if non-null)and right child(if non-null)in ListPending} } else{mark node A as a candidate-SE} /*end of Algorithm Split()*/
图7示出分裂程序的合并步骤,在分裂操作终止步骤74后开始。合并阶段开始于步骤76,通过查找每个包含被分裂前缀的节点。如果节点包含例如小于T/2的前缀,如判决框78所示,该节点必须向上合并。然而,如果每个节点都包含超过最小值门限例如T/2的前缀数,如步骤84所示,合并操作将终止。否则,合并操作前进至步骤80。如判决树82所示那样对下一后续节点重复判决树78,直到所有节点中的前缀数量被检查以保证那些前缀不少于最小边界值。最后将检查所有的节点并结束合并操作。下面内容表示合并操作的伪代码,其中Tmerge在范例中等于T/2。
Algorithm MergeUsingRecursion(R,Tmerge)
L=RecurseMerge(R,Tmerge);
If(L is non-empty[i.e.,non-zero])make R an SE and L its LSN.
/*end of Algorithm MergeUsingRecursion */
/*The following recursive function is used in the above algorithm.-Please rernove all instances
of[]since they are not relevant in this context */
Function List[int]RecurseMerge(A,Tmerge)
{
If(A is NULL)return NULL[0];
If(A is already marked candidate-SE)
{
if(|subtrie(A)|≥Tmerge){mark A as an SE;return NULL[0];}
else{return A[1];}
}
L1=RecurseMerge(A->leftChild,Tmerge);
L2=RecurseMerge(A->rightChild,Tmerge);
L=L1+L2;/*list concatenation operation[or integer addition operation in the case of ints]*/
If(A has a prefix){ret=({A}+L)[1+L]}
else{ret=L;}
if(ret≥Tmerge)
{
mark A as an SE,and L its LSN;
return NULL[0];
}
else return(ret);
/* end of algorithm RecurseMerge()*/
一旦分裂程序结束分裂和合并阶段而指针表和查找表被恰当地写入和填充后,即可进行查找操作。如果在判决框96中未发现匹配,则必须获取与获得自块94的指针存储在一起的事先计算的迄今为止最长匹配。图8示出一种可通过在不管是指针查找还是子数据库查找中获取有用动作而进行查找的方法。将T设得更大将减少转发数据库中子数据库的数量。T能够被设定为任何所希望的值,从而获得特定的前缀匹配特性,如较高搜索速度、较低存储要求、较少预处理时间以及较少更新时间。因此对T的调整能在确保最坏情况下搜索的同时对搜索机制呈现出可缩放性和可适应性。
查找开始于步骤90并如图92所示通过在指针表中执行最长匹配前缀搜索而进行。如步骤94所示,作为最长前缀匹配结果的指针将被选择以指向一个特定的子数据库,如步骤96所示,所选择的子数据库经受最长匹配前缀搜索以确定匹配于入站地址前缀的前缀。如步骤98所示,一旦发生匹配,查找操作对该地址终止。
用于在指针表中执行最长匹配操作的机制,后跟子数据库中最长匹配前缀可产生掩码操作的结果,开始于高有效比特位置并向下继续二进制格式到低有效比特位置。因此直到匹配发生前,掩码长度可被抽选或减短。任何形式的掩码以及任何公知的最长前缀匹配技术都可能使用,所有一切都包含在图8的块92和96中。
在上面的说明中,已结合特别实施例对本发明进行了说明,然而,显而易见的是本领域内技术人员可以作出不脱离本发明更广泛的精神和范围的各种修正和改变。因此说明书和说明书附图将被认为是阐述性的,而没有限制性意思。
Claims (28)
1.一种形成转发数据库的方法,包括:
将数据库中的N数量的前缀切割成多个有界的、正比于N且反比于T的子数据库,其中,每个子数据库具有不大于T的前缀数量,T小于N;以及
形成具有关联的、指向多个数据库中的一个的矛前缀的一组指针。
2.如权利要求1所述方法,其特征在于,所述分裂包括:开始于前缀N数量的最高有效比特,重复地分裂前缀的N数量以形成在根节点和多个叶节点之间扩展的树,其中每个叶节点具有不超过T数量的前缀。
3.如权利要求2所述方法,其特征在于,还包括将具有小于前缀最小数量的叶节点合并到比具有小于前缀最小数量的叶节点更加靠近根节点的叶节点内。
4,如权利要求3所述方法,其特征在于,所述前缀的最小数量为T/2。
5.如权利要求3所述方法,其特征在于,子数据库的数量被限定在N/T和(2N/T)+1之间。
6.如权利要求1所述方法,其特征在于,所述形成包括:开始于N数量前缀的高有效比特,添加低有效比特值,直到达到每个子数据库的高有效比特。
7.如权利要求1所述方法,其特征在于,还包括将每个子数据库安排到计算机可读存储介质的独立块或部分中。
8.如权利要求1所述方法,其特征在于,还包括将每个子数据库单独地配置到相同物理块的可访问部分中。
9.如权利要求1所述方法,其特征在于,还包括:在指针组和子数据库组之间递归地形成第二指针组,所述子数据库组被指针组指向,而指针组指向相应的子数据库组中的一个。
10.由权利要求1所述方法所解释的存储在计算机可读存储介质中的查找表。
11.用来执行权利要求1所述方法的、位于路由器或交换机、路由器或交换机的输入/输出端口的线路卡或者路由器或交换机的交换结构中的计算机或应用专用集成电路。
12.一种将在具有N数量前缀的转发数据库中一前缀定位的方法,包括:维护具有一组指向各子数据库组的矛前缀的指针表;在指针表的矛前缀中寻找最长矛前缀匹配;从被指针表中的最长匹配矛前缀指向的一组子数据库中选择前缀子的数据库;以及
在所选择的子数据库中寻找最长前缀匹配。
13.如权利要求12所述方法,其特征在于,寻找、选择和寻找步骤是以软件或硬件实现的。
14.如权利要求12所述方法,其特征在于,所述选择包括在子数据库组中选择前缀数量不超过T的子数据库,其中T小于N。
15.如权利要求12所述方法,其特征在于,所述选择包括仅访问包含由指针表中最长匹配矛前缀指向的子数据库的存储器的一部分,而不访问存储器任何其它部分,以减少存储器中的功耗并增加将前缀定位到数据库中的速度。
16.如权利要求15所述方法,其特征在于,所述存储器的一部分是多个存储块中的一存储块。
17.如权利要求12所述方法,其特征在于,所述选择包括仅访问包含由指针表中最长匹配矛前缀指向的子数据库的存储器的一部分,而不访问存储器任何其它部分,通过仅将用于指针表中的比特以及用于子数据库的最低有效比特存储到存储器中以提高存储性能。
18.如权利要求17所述方法,其特征在于,所述存储器的一部分是多个存储块中的一存储块。
19.如权利要求12所述方法,其特征在于,所述地址包括对应于数据分组的目的地地址。
20.如权利要求12所述方法,其特征在于,所述地址包括互联网协议(IP)地址。
21.一种计算机可读存储介质,包括:分裂程序,当由处理器执行时
(i)形成具有从根节点向多个叶节点伸展的分枝的树;
(ii)在每个叶节点上形成具有少于T个前缀的子数据库,其叶节点以及根节点和叶节点之间的节点的累积数量具有N个前缀;
包括一组对应于分枝的指针的指针表;以及
在每个叶节点上包含子数据库的查找表。
22.如权利要求21所述的计算机可读存储介质,其特征在于,每个叶节点上的子数据库的至少一部分被包含在存储器的各独立部分中。
23.如权利要求22所述计算机可读存储介质,其特征在于,存储器包括内容可寻址存储器(CAM或TCAM)。
24.如权利要求22所述计算机可读存储介质,其特征在于,存储器包括随机存取存储器(DRAM或SRAM)。
25.如权利要求21所述计算机可读存储介质,其特征在于,通过仅访问由具有最长匹配矛前缀的指针组中的一个指向的存储器部分而将一个地址定位到查找表中。
26.如权利要求21所述计算机可读存储介质,其特征在于,指针组和相应的多个子数据库被限定在N和N/T之间。
27.如权利要求21所述计算机可读存储介质,其特征在于,指针组和相应的多个子数据库被限定在2N/T和N/T之间。
28.如权利要求21所述计算机可读存储介质,其特征在于,除指针组外,指针表还存储一个地址的初始最长匹配矛前缀,而查找表存储所述地址的后续的最长匹配数据库前缀。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/402,887 US7426518B2 (en) | 2003-03-28 | 2003-03-28 | System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size |
US10/402,887 | 2003-03-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1784678A true CN1784678A (zh) | 2006-06-07 |
Family
ID=32989833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800084745A Pending CN1784678A (zh) | 2003-03-28 | 2004-03-26 | 用于高效地搜索被分成具有界大小的、有界数量的子数据库的转发数据库的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7426518B2 (zh) |
EP (1) | EP1611533A1 (zh) |
JP (1) | JP4614946B2 (zh) |
CN (1) | CN1784678A (zh) |
WO (1) | WO2004088548A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663051A (zh) * | 2012-03-29 | 2012-09-12 | 浪潮(北京)电子信息产业有限公司 | 搜索内容可寻址存储器的方法和系统 |
CN101388030B (zh) * | 2007-09-14 | 2014-06-11 | 迈塔斯威士网络有限公司 | 数据库和数据库处理方法 |
CN106202084A (zh) * | 2015-04-30 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 数据存储方法和数据存储装置 |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020089937A1 (en) | 2000-11-16 | 2002-07-11 | Srinivasan Venkatachary | Packet matching method and system |
US7426518B2 (en) * | 2003-03-28 | 2008-09-16 | Netlogic Microsystems, Inc. | System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size |
US7571156B1 (en) * | 2003-03-28 | 2009-08-04 | Netlogic Microsystems, Inc. | Network device, storage medium and methods for incrementally updating a forwarding database |
US7418519B1 (en) * | 2003-05-29 | 2008-08-26 | Nortel Networks Limited | Technique for prefix limit exchange for route advertisement |
US7437354B2 (en) * | 2003-06-05 | 2008-10-14 | Netlogic Microsystems, Inc. | Architecture for network search engines with fixed latency, high capacity, and high throughput |
US7934198B2 (en) * | 2003-10-17 | 2011-04-26 | Netlogic Microsystems, Inc. | Prefix matching structure and method for fast packet switching |
US7515588B2 (en) * | 2004-03-18 | 2009-04-07 | Intel Corporation | Method and apparatus to support a large internet protocol forwarding information base |
US7747599B1 (en) | 2004-07-23 | 2010-06-29 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations |
US8886677B1 (en) | 2004-07-23 | 2014-11-11 | Netlogic Microsystems, Inc. | Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length |
US7725450B1 (en) | 2004-07-23 | 2010-05-25 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations |
US7603346B1 (en) | 2004-07-23 | 2009-10-13 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein |
US7653619B1 (en) | 2004-07-23 | 2010-01-26 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height |
US7646773B2 (en) * | 2004-08-02 | 2010-01-12 | Extreme Networks | Forwarding database in a network switch device |
US7461200B1 (en) * | 2004-09-23 | 2008-12-02 | Netlogic Microsystems, Inc. | Method and apparatus for overlaying flat and tree based data sets onto content addressable memory (CAM) device |
US20060248375A1 (en) * | 2005-04-18 | 2006-11-02 | Bertan Tezcan | Packet processing switch and methods of operation thereof |
EP1821571A1 (en) * | 2006-02-15 | 2007-08-22 | Oticon A/S | Loop antenna for in the ear audio device |
US7817652B1 (en) * | 2006-05-12 | 2010-10-19 | Integrated Device Technology, Inc. | System and method of constructing data packets in a packet switch |
US7747904B1 (en) | 2006-05-12 | 2010-06-29 | Integrated Device Technology, Inc. | Error management system and method for a packet switch |
US7706387B1 (en) | 2006-05-31 | 2010-04-27 | Integrated Device Technology, Inc. | System and method for round robin arbitration |
US7697518B1 (en) | 2006-09-15 | 2010-04-13 | Netlogic Microsystems, Inc. | Integrated search engine devices and methods of updating same using node splitting and merging operations |
US7953721B1 (en) | 2006-11-27 | 2011-05-31 | Netlogic Microsystems, Inc. | Integrated search engine devices that support database key dumping and methods of operating same |
US7987205B1 (en) | 2006-11-27 | 2011-07-26 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations |
US7831626B1 (en) | 2006-11-27 | 2010-11-09 | Netlogic Microsystems, Inc. | Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node |
US8086641B1 (en) | 2006-11-27 | 2011-12-27 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same |
US7886176B1 (en) | 2007-09-24 | 2011-02-08 | Integrated Device Technology, Inc. | DDR memory system for measuring a clock signal by identifying a delay value corresponding to a changed logic state during clock signal transitions |
US7716204B1 (en) | 2007-12-21 | 2010-05-11 | Netlogic Microsystems, Inc. | Handle allocation managers and methods for integated circuit search engine devices |
US7801877B1 (en) | 2008-04-14 | 2010-09-21 | Netlogic Microsystems, Inc. | Handle memory access managers and methods for integrated circuit search engine devices |
US8255496B2 (en) | 2008-12-30 | 2012-08-28 | Juniper Networks, Inc. | Method and apparatus for determining a network topology during network provisioning |
EP2560327B1 (en) * | 2010-04-12 | 2014-06-04 | Huawei Technologies Co., Ltd. | Routing table establishment method and device |
US8438330B2 (en) | 2010-05-17 | 2013-05-07 | Netlogic Microsystems, Inc. | Updating cam arrays using prefix length distribution prediction |
US9406381B2 (en) * | 2010-08-01 | 2016-08-02 | Gsi Technology Israel Ltd. | TCAM search unit including a distributor TCAM and DRAM and a method for dividing a database of TCAM rules |
US9305115B1 (en) | 2010-10-04 | 2016-04-05 | Broadcom Corporation | Method and apparatus for reducing power consumption during rule searches in a content search system |
US8862603B1 (en) | 2010-11-03 | 2014-10-14 | Netlogic Microsystems, Inc. | Minimizing state lists for non-deterministic finite state automatons |
US9002859B1 (en) | 2010-12-17 | 2015-04-07 | Moonshadow Mobile, Inc. | Systems and methods for high-speed searching and filtering of large datasets |
US8891406B1 (en) | 2010-12-22 | 2014-11-18 | Juniper Networks, Inc. | Methods and apparatus for tunnel management within a data center |
US8615015B1 (en) * | 2010-12-30 | 2013-12-24 | Juniper Networks, Inc. | Apparatus, systems and methods for aggregate routes within a communications network |
EP2663939A4 (en) | 2011-01-10 | 2016-12-07 | Roy W Ward | SYSTEMS AND METHODS FOR HIGH SPEED SEARCHING AND FILTERING OF LARGE DATA SETS |
US9155320B2 (en) | 2011-07-06 | 2015-10-13 | International Business Machines Corporation | Prefix-based leaf node storage for database system |
US8861241B1 (en) | 2011-09-01 | 2014-10-14 | Netlogic Microsystems, Inc. | Content search system having embedded power control units |
US8639875B1 (en) | 2011-09-06 | 2014-01-28 | Netlogic Microsystems, Inc. | Content search system having multiple pipelines |
US9171054B1 (en) | 2012-01-04 | 2015-10-27 | Moonshadow Mobile, Inc. | Systems and methods for high-speed searching and filtering of large datasets |
US8990204B1 (en) | 2012-01-17 | 2015-03-24 | Roy W. Ward | Processing and storage of spatial data |
US9680747B2 (en) | 2012-06-27 | 2017-06-13 | Futurewei Technologies, Inc. | Internet protocol and Ethernet lookup via a unified hashed trie |
CN104025520B (zh) * | 2012-12-25 | 2017-04-26 | 华为技术有限公司 | 查找表的创建方法、查询方法、控制器、转发设备和系统 |
CN105229980B (zh) | 2013-04-11 | 2018-11-16 | 马维尔以色列(M.I.S.L.)有限公司 | 利用可变关键字大小的精确匹配查找的方法及设备 |
US9602407B2 (en) * | 2013-12-17 | 2017-03-21 | Huawei Technologies Co., Ltd. | Trie stage balancing for network address lookup |
US9935831B1 (en) * | 2014-06-03 | 2018-04-03 | Big Switch Networks, Inc. | Systems and methods for controlling network switches using a switch modeling interface at a controller |
CN105763454B (zh) * | 2016-02-25 | 2018-11-27 | 比威网络技术有限公司 | 基于二维路由策略的数据报文转发方法及装置 |
US10521411B2 (en) | 2016-08-10 | 2019-12-31 | Moonshadow Mobile, Inc. | Systems, methods, and data structures for high-speed searching or filtering of large datasets |
US10700974B2 (en) * | 2018-01-30 | 2020-06-30 | Marvell Israel (M.I.S.L) Ltd. | Dynamic allocation of memory for packet processing instruction tables in a network device |
US11327974B2 (en) * | 2018-08-02 | 2022-05-10 | Mellanox Technologies, Ltd. | Field variability based TCAM splitting |
US11003715B2 (en) | 2018-09-17 | 2021-05-11 | Mellanox Technologies, Ltd. | Equipment and method for hash table resizing |
CN110210307B (zh) * | 2019-04-30 | 2023-11-28 | 中国银联股份有限公司 | 人脸样本库部署方法、基于人脸识别业务处理方法及装置 |
CN110324403A (zh) * | 2019-05-23 | 2019-10-11 | 平安科技(深圳)有限公司 | 动态分库路由方法、装置、服务器及存储介质 |
US11539622B2 (en) | 2020-05-04 | 2022-12-27 | Mellanox Technologies, Ltd. | Dynamically-optimized hash-based packet classifier |
US11782895B2 (en) | 2020-09-07 | 2023-10-10 | Mellanox Technologies, Ltd. | Cuckoo hashing including accessing hash tables using affinity table |
US11917042B2 (en) | 2021-08-15 | 2024-02-27 | Mellanox Technologies, Ltd. | Optimizing header-based action selection |
US11929837B2 (en) | 2022-02-23 | 2024-03-12 | Mellanox Technologies, Ltd. | Rule compilation schemes for fast packet classification |
US11968285B2 (en) | 2022-02-24 | 2024-04-23 | Mellanox Technologies, Ltd. | Efficient memory utilization for cartesian products of rules |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU4661793A (en) | 1992-07-02 | 1994-01-31 | Wellfleet Communications | Data packet processing method and apparatus |
EP0863640A3 (en) * | 1997-03-04 | 2005-09-21 | Texas Instruments Incorporated | Improved physical layer interface device |
JP3520709B2 (ja) * | 1997-03-13 | 2004-04-19 | 三菱電機株式会社 | ネットワークアドレス検索方式 |
US5991758A (en) | 1997-06-06 | 1999-11-23 | Madison Information Technologies, Inc. | System and method for indexing information about entities from different information sources |
US6181698B1 (en) * | 1997-07-09 | 2001-01-30 | Yoichi Hariguchi | Network routing table using content addressable memory |
US6018524A (en) * | 1997-09-09 | 2000-01-25 | Washington University | Scalable high speed IP routing lookups |
US6223172B1 (en) * | 1997-10-31 | 2001-04-24 | Nortel Networks Limited | Address routing using address-sensitive mask decimation scheme |
US6212184B1 (en) | 1998-07-15 | 2001-04-03 | Washington University | Fast scaleable methods and devices for layer four switching |
IT1305140B1 (it) | 1998-10-27 | 2001-04-10 | Cselt Centro Studi Lab Telecom | Memoria per la ricerca di informazioni mediante analisi di prefissi inparticolare per la realizzazione di tabelle di instradamento in nodi |
US6081440A (en) | 1998-11-05 | 2000-06-27 | Lara Technology, Inc. | Ternary content addressable memory (CAM) having fast insertion and deletion of data values |
US6266262B1 (en) | 1998-11-05 | 2001-07-24 | Lara Technology, Inc. | Enhanced binary content addressable memory for longest prefix address matching |
US6385649B1 (en) * | 1998-11-06 | 2002-05-07 | Microsoft Corporation | Routers and methods for optimal routing table compression |
JP4156112B2 (ja) * | 1998-12-25 | 2008-09-24 | 富士通株式会社 | 高速検索方法及び高速検索装置 |
US6237061B1 (en) | 1999-01-05 | 2001-05-22 | Netlogic Microsystems, Inc. | Method for longest prefix matching in a content addressable memory |
US6963924B1 (en) * | 1999-02-01 | 2005-11-08 | Nen-Fu Huang | IP routing lookup scheme and system for multi-gigabit switching routers |
US6499081B1 (en) | 1999-02-23 | 2002-12-24 | Netlogic Microsystems, Inc. | Method and apparatus for determining a longest prefix match in a segmented content addressable memory device |
US6460112B1 (en) | 1999-02-23 | 2002-10-01 | Netlogic Microsystems, Llc | Method and apparatus for determining a longest prefix match in a content addressable memory device |
JP2000242532A (ja) * | 1999-02-23 | 2000-09-08 | Fujitsu Ltd | 出力ファイル制御装置、その装置を用いたデータ処理システム及びその装置での処理をコンピュータで行わせるためのプログラムを格納した記憶媒体 |
US6892272B1 (en) | 1999-02-23 | 2005-05-10 | Netlogic Microsystems, Inc. | Method and apparatus for determining a longest prefix match in a content addressable memory device |
US6192051B1 (en) * | 1999-02-26 | 2001-02-20 | Redstone Communications, Inc. | Network router search engine using compressed tree forwarding table |
US6298340B1 (en) | 1999-05-14 | 2001-10-02 | International Business Machines Corporation | System and method and computer program for filtering using tree structure |
JP3216630B2 (ja) * | 1999-06-09 | 2001-10-09 | 日本電気株式会社 | 通信制御装置 |
US6505270B1 (en) | 1999-07-02 | 2003-01-07 | Lara Technology, Inc. | Content addressable memory having longest prefix matching function |
US6662184B1 (en) | 1999-09-23 | 2003-12-09 | International Business Machines Corporation | Lock-free wild card search data structure and method |
US6801981B1 (en) | 2000-06-14 | 2004-10-05 | Netlogic Microsystems, Inc. | Intra-row configurability of content addressable memory |
US6799243B1 (en) | 2000-06-14 | 2004-09-28 | Netlogic Microsystems, Inc. | Method and apparatus for detecting a match in an intra-row configurable cam system |
US6934795B2 (en) | 1999-09-23 | 2005-08-23 | Netlogic Microsystems, Inc. | Content addressable memory with programmable word width and programmable priority |
US6795892B1 (en) | 2000-06-14 | 2004-09-21 | Netlogic Microsystems, Inc. | Method and apparatus for determining a match address in an intra-row configurable cam device |
US6542391B2 (en) | 2000-06-08 | 2003-04-01 | Netlogic Microsystems, Inc. | Content addressable memory with configurable class-based storage partition |
US6751701B1 (en) | 2000-06-14 | 2004-06-15 | Netlogic Microsystems, Inc. | Method and apparatus for detecting a multiple match in an intra-row configurable CAM system |
US6813680B1 (en) | 2000-06-14 | 2004-11-02 | Netlogic Microsystems, Inc. | Method and apparatus for loading comparand data into a content addressable memory system |
US6374326B1 (en) * | 1999-10-25 | 2002-04-16 | Cisco Technology, Inc. | Multiple bank CAM architecture and method for performing concurrent lookup operations |
US6154384A (en) * | 1999-11-12 | 2000-11-28 | Netlogic Microsystems, Inc. | Ternary content addressable memory cell |
US6502163B1 (en) | 1999-12-17 | 2002-12-31 | Lara Technology, Inc. | Method and apparatus for ordering entries in a ternary content addressable memory |
US6615210B1 (en) | 2000-02-04 | 2003-09-02 | Broad Web Corporation | Bit stream ternary match scheme |
TW498650B (en) | 2000-03-22 | 2002-08-11 | Ind Tech Res Inst | Flexible and highly efficient packet classification method |
JP2002016638A (ja) * | 2000-06-29 | 2002-01-18 | Mitsubishi Electric Corp | ルーチング情報検索装置およびルーチング情報検索制御データを記録したコンピュータ読み取り可能な記録媒体 |
US6792502B1 (en) | 2000-10-12 | 2004-09-14 | Freescale Semiconductor, Inc. | Microprocessor having a content addressable memory (CAM) device as a functional unit therein and method of operation |
US20020089937A1 (en) * | 2000-11-16 | 2002-07-11 | Srinivasan Venkatachary | Packet matching method and system |
US7266085B2 (en) * | 2001-03-21 | 2007-09-04 | Stine John A | Access and routing protocol for ad hoc network using synchronous collision resolution and node state dissemination |
US6735600B1 (en) | 2001-03-30 | 2004-05-11 | Lsi Logic Corporation | Editing protocol for flexible search engines |
US20030031179A1 (en) * | 2001-08-08 | 2003-02-13 | Jintae Oh | Self-updateable longest prefix matching method and apparatus |
KR100413528B1 (ko) * | 2001-11-30 | 2004-01-03 | 한국전자통신연구원 | Lpm 기반 cam의 룩업 테이블 관리 방법, 장치 및 그기록매체 |
US7050317B1 (en) | 2002-03-15 | 2006-05-23 | Integrated Device Technology, Inc. | Content addressable memory (CAM) devices that support power saving longest prefix match operations and methods of operating same |
US7441074B1 (en) * | 2002-08-10 | 2008-10-21 | Cisco Technology, Inc. | Methods and apparatus for distributing entries among lookup units and selectively enabling less than all of the lookup units when performing a lookup operation |
US7162481B2 (en) | 2002-12-06 | 2007-01-09 | Stmicroelectronics, Inc. | Method for increasing storage capacity in a multi-bit trie-based hardware storage engine by compressing the representation of single-length prefixes |
US7426518B2 (en) * | 2003-03-28 | 2008-09-16 | Netlogic Microsystems, Inc. | System and method for efficiently searching a forwarding database that is split into a bounded number of sub-databases having a bounded size |
US7571156B1 (en) * | 2003-03-28 | 2009-08-04 | Netlogic Microsystems, Inc. | Network device, storage medium and methods for incrementally updating a forwarding database |
TWI227395B (en) * | 2003-06-02 | 2005-02-01 | Genesys Logic Inc | Method for parallel processing of memory data and error correction code and related device thereof |
US7934198B2 (en) | 2003-10-17 | 2011-04-26 | Netlogic Microsystems, Inc. | Prefix matching structure and method for fast packet switching |
US7174441B2 (en) | 2003-10-17 | 2007-02-06 | Raza Microelectronics, Inc. | Method and apparatus for providing internal table extensibility with external interface |
US7194573B1 (en) | 2003-10-31 | 2007-03-20 | Integrated Device Technology, Inc. | CAM-based search engine devices having advanced search and learn instruction handling |
US7249228B1 (en) * | 2004-03-01 | 2007-07-24 | Cisco Technology, Inc. | Reducing the number of block masks required for programming multiple access control list in an associative memory |
US7461200B1 (en) | 2004-09-23 | 2008-12-02 | Netlogic Microsystems, Inc. | Method and apparatus for overlaying flat and tree based data sets onto content addressable memory (CAM) device |
US7339810B1 (en) | 2005-03-24 | 2008-03-04 | Netlogic Microsystems, Inc. | Device and method for ensuring current consumption in search engine system |
US7694068B1 (en) | 2005-12-08 | 2010-04-06 | Netlogic Microsystems, Inc. | Re-entrant processing in a content addressable memory |
US7624226B1 (en) | 2005-12-20 | 2009-11-24 | Netlogic Microsystems, Inc. | Network search engine (NSE) and method for performing interval location using prefix matching |
US7555593B1 (en) | 2006-01-31 | 2009-06-30 | Netlogic Microsystems, Inc. | Simultaneous multi-threading in a content addressable memory |
US7904642B1 (en) | 2007-02-08 | 2011-03-08 | Netlogic Microsystems, Inc. | Method for combining and storing access control lists |
-
2003
- 2003-03-28 US US10/402,887 patent/US7426518B2/en not_active Expired - Fee Related
-
2004
- 2004-03-26 JP JP2006509416A patent/JP4614946B2/ja not_active Expired - Fee Related
- 2004-03-26 CN CNA2004800084745A patent/CN1784678A/zh active Pending
- 2004-03-26 EP EP04758519A patent/EP1611533A1/en not_active Withdrawn
- 2004-03-26 WO PCT/US2004/009531 patent/WO2004088548A1/en active Application Filing
-
2008
- 2008-07-10 US US12/171,099 patent/US8073856B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388030B (zh) * | 2007-09-14 | 2014-06-11 | 迈塔斯威士网络有限公司 | 数据库和数据库处理方法 |
CN102663051A (zh) * | 2012-03-29 | 2012-09-12 | 浪潮(北京)电子信息产业有限公司 | 搜索内容可寻址存储器的方法和系统 |
CN106202084A (zh) * | 2015-04-30 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 数据存储方法和数据存储装置 |
Also Published As
Publication number | Publication date |
---|---|
US8073856B2 (en) | 2011-12-06 |
US20040193619A1 (en) | 2004-09-30 |
WO2004088548A1 (en) | 2004-10-14 |
JP2006527526A (ja) | 2006-11-30 |
EP1611533A1 (en) | 2006-01-04 |
US20080275872A1 (en) | 2008-11-06 |
JP4614946B2 (ja) | 2011-01-19 |
US7426518B2 (en) | 2008-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1784678A (zh) | 用于高效地搜索被分成具有界大小的、有界数量的子数据库的转发数据库的系统和方法 | |
US7418505B2 (en) | IP address lookup using either a hashing table or multiple hash functions | |
US6985483B2 (en) | Methods and systems for fast packet forwarding | |
US8325721B2 (en) | Method for selecting hash function, method for storing and searching routing table and devices thereof | |
JP4727594B2 (ja) | コンテンツ・ベースの情報検索アーキテクチャー | |
US7031320B2 (en) | Apparatus and method for performing high-speed IP route lookup and managing routing/forwarding tables | |
US7437354B2 (en) | Architecture for network search engines with fixed latency, high capacity, and high throughput | |
US7483430B1 (en) | Hierarchical hash method for performing forward route lookup | |
US7424468B2 (en) | Internet protocol address look-up device | |
US6963924B1 (en) | IP routing lookup scheme and system for multi-gigabit switching routers | |
CN1859316A (zh) | 数据包传送装置 | |
KR100512949B1 (ko) | 필드레벨 트리를 이용한 패킷분류장치 및 방법 | |
CN1216473C (zh) | 支持多个下一跳的三态内容可寻址存储器查找方法及系统 | |
Le et al. | Memory-efficient and scalable virtual routers using FPGA | |
US7478109B1 (en) | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes | |
US20040044868A1 (en) | Method and apparatus for high-speed longest prefix match of keys in a memory | |
US7493412B2 (en) | Method for processing a data packet | |
TWI239476B (en) | Address search | |
RU2233473C2 (ru) | Устройство и способ выполнения высокоскоростного поиска маршрутов протокола интернет и управления таблицами маршрутизации/пересылки | |
KR100686732B1 (ko) | 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터 | |
Erdem et al. | Value-coded trie structure for high-performance IPv6 lookup | |
KR100459542B1 (ko) | 인터넷 프로토콜 주소 룩-업 장치 | |
KR100460188B1 (ko) | 인터넷 프로토콜 주소 룩-업 방법 | |
US9444731B2 (en) | Methods and systems for data packet routing | |
CN118282943A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1093793 Country of ref document: HK |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20060607 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1093793 Country of ref document: HK |