WO2002082322A1 - Compact data structures for pipelined message forwarding lookups - Google Patents

Compact data structures for pipelined message forwarding lookups Download PDF

Info

Publication number
WO2002082322A1
WO2002082322A1 PCT/US2002/010570 US0210570W WO02082322A1 WO 2002082322 A1 WO2002082322 A1 WO 2002082322A1 US 0210570 W US0210570 W US 0210570W WO 02082322 A1 WO02082322 A1 WO 02082322A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
branch
memory
lookup
entries
Prior art date
Application number
PCT/US2002/010570
Other languages
French (fr)
Other versions
WO2002082322A8 (en
Inventor
Pankaj Gupta
Srinivasan Venkatachary
Original Assignee
Cypress Semiconductor Corporation
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 Cypress Semiconductor Corporation filed Critical Cypress Semiconductor Corporation
Priority to AU2002338369A priority Critical patent/AU2002338369A1/en
Publication of WO2002082322A1 publication Critical patent/WO2002082322A1/en
Publication of WO2002082322A8 publication Critical patent/WO2002082322A8/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Definitions

  • This invention relates to compact data structures, such as for example those used for message forwarding.
  • lookup search keys including header information from packets in which those messages are embodied
  • routing information indicating how to process those packets and message. It is particularly desirable that the matching operation be performed as rapidly as possible. This has led to a desire for data structures for storing and retrieving information regarding those lookup search keys, so that data elements associated with those lookup search keys can be rapidly stored and retrieved.
  • the data structures used are relatively large.
  • the data structures are often stored in a relatively slow and expensive memory (such as an off- chip memory for a routing circuit integrated onto a single chip), thus slowing each access to the data structures themselves, and providing a limit to accesses due to the nature of the off-chip memory.
  • the invention provides a method and system for lookup (such as for example, lookup of message header information) that records information in a relatively large database in a relatively compact structure, while still providing for relatively rapid lookup and update.
  • a relatively large but compact database includes a hybrid tree (or hybrid trie) structure, whereby information in denser portions of the database can be stored and retrieved from an identifiable leaf in the hybrid trie.
  • the hybrid trie includes at least one leaf-search node marked to include a different data structure, whereby information in sparser portions of the database can be stored and retrieved from a more densely packed table.
  • each hybrid trie node is marked as one of: a branch node, a leaf-search node, or a branch-search node; each search node includes information for a sparser portion of the hybrid trie, packed into a structure capable of linear search in response to a set of packet header information (such as a destination IP address).
  • the hybrid trie is recorded in a sequence of SRAM memories, disposed so that each stride of the hybrid trie includes a lookup within a single memory, whereby a corresponding sequence of lookup requests can be processed in a pipelined manner with all the memories performing concurrent lookups, whereby complete lookups can be performed at a rate substantially equal to their arrival rate (even though each lookup takes a sequence of memory references to complete).
  • Each branch node and each leaf node is recorded in a single memory.
  • Each search node can be striped across a plurality of memories, whereby search of a search node can be distributed across those memories, and completion of lookups involving a search node operates within the pipeline paradigm of completion of lookups involving only reference to branch nodes and leaf nodes.
  • the invention has general applicability to compact memory storage and retrieval, to update of information recorded in relatively compact form, and to applications having utility for data lookup. None of these applications are limited specifically to lookup for message header information, nor are they necessarily related to the specific applications disclosed herein.
  • embodiments of the invention can include one or more of, or some combination of, the following applications:
  • Routers and switches at all levels of the ISO/OSI networking model including without limitation: bridges, network gateways, network routers and switches;
  • Figure 1 shows a data structure diagram of a hybrid trie structure including search nodes.
  • Figure 2 shows a memory structure diagram of a hybrid trie structure.
  • Figure 3 shows a process flow diagram of a data lookup method.
  • Figure 4 shows a process flow diagram of a data update method.
  • router in general, any device for performing lookup of message header information against a information database, and for treating messages having that message header information differentially in response to a result of the lookup.
  • a router can act in response to destination IP addresses (for forwarding), in response to destination IP addresses and source IP addresses (for multicast forwarding and for access control), or in response to port number or protocol type (for enforcing administrative restrictions or other message routing rules).
  • each stripe in general, a set of memory locations in a sequence of memories, disposed so that once the location of the stripe is known, searching in subsequent memories does not require any further pointers to successive parts of the stripe.
  • each stripe includes the same memory location offsets from the beginning of each memory in sequence after the beginning of the stripe.
  • each prefix is striped across a leaf-search node that is itself striped.
  • Figure 1 shows a data structure diagram of a hybrid trie structure including search nodes.
  • a data structure includes a hybrid trie 100, having a set of branch nodes 110 and a set of leaf- search nodes 120, and a set of branch-search nodes 130.
  • each branch node 110 defines a sub-trie that depends from that branch node 110.
  • Each leaf-search node 120 (and each branch- search node 130) defines a set of individual data elements, such as route pointers.
  • each leaf-search node 120 is used to substitute for a sub-trie including a plurality of branch nodes 110 (or branch-search nodes 130), where the sub-trie has fewer than a threshold value T individual data elements.
  • selection of which type of node to use at any selected point in the hybrid trie 100 can be responsive to factors other than comparing the number of data elements against a threshold value T, or can be responsive to factors other than the number of data elements.
  • the hybrid trie 100 with multiple types of nodes has the advantage that different types of nodes can be used when the nature of the stored data makes it advantageous to store that data in different formats.
  • leaf-search nodes 120 and branch-search nodes 130 use linear search to match prefix values against lookup search keys
  • leaf-search nodes 120 and branch-search nodes 130 may use other types of search (such as for example a balanced binary tree or a hash table), or there may be multiple subtypes of leaf-search nodes 120 and branch-search nodes 130, each using a distinct type of search adapted to its contents.
  • Each branch node 110 includes a marker 111 indicating that the node is a branch node 110, and a set of subnode pointers 113.
  • the subnode pointers 113 point to locations for each of the sub-tries depending from that branch node 110 that depend from that particular branch node 110.
  • Each leaf-search node 120 includes a marker 121 similar to a branch node 110, instead indicating that the node is a leaf-search node 120.
  • Each leaf-search node 120 terminates the path down the trie 100 and includes a set of prefix values against which a lookup search key can be matched.
  • Each leaf-search node 120 associates each of its prefix values with a specific data element 122.
  • the data element 122 includes a route pointer; this allows the hybrid trie 100 to be used for lookup or update of a route pointer in response to a lookup search key.
  • Each branch-search node 130 includes a marker 131 similar to a branch node 110 or a leaf-search node 120, indicating that the node is a branch-search node 130.
  • Each branch-search node 130 has the functionality of a branch node 110 and a leaf-search node 120 at the same time.
  • a branch-search node 130 can be used for further traversing of the hybrid trie 100, and can also be used to match a lookup search key against one of a set of prefix values.
  • Figure 2 shows a memory structure diagram of a hybrid trie structure.
  • a memory structure 200 includes a sequence of memories 210, each of which includes a set of memory registers 211, each capable of storing at least a portion of a branch node 110, a leaf-search node 120, or a branch-search node 130.
  • Each memory 210 includes a dynamically allocated portion allocated for trie storage 220, including branch nodes 110 and branch-search nodes 130, and a dynamically allocated portion allocated for search storage 230, including leaf-search nodes 120, and a dynamic portion not allocated and therefore free space 240.
  • each memory 210 participates in one memory access 250 (represented in the figure to indicate that a particular memory register 211 is accessed).
  • the memory accesses 250 to all memories 210 are performed substantially concurrently, therefore performing multiple memory accesses 250 per clock cycle, so as to process multiple lookup operations or update operations in a pipelined manner.
  • this allows the memory structure 200 to perform one lookup operation or update operation for each clock cycle. If the part of the lookup operation or update operation is for a branch node 110 or a branch-search node 130, the memory access 250 provides a branch pointer 260 to a location in the next memory 210. Thus, successive memory accesses
  • the memory access 250 provides either a data element 133 associated with a (searchable) lookup search key 132 found in the leaf-search node 120, or an indicator to continue searching the leaf-search node 120 in the next memory 210.
  • successive memory accesses 250 to a leaf-search node 120 can trace across a stripe in which the leaf-search node 120 is stored in the memory structure 200.
  • a leaf-search node 120 can trace across a stripe including one or more memories 210.
  • each prefix value in that leaf- search node 120 can also be striped across the memories 210 maintaining the leaf- search node 120. This allows each reference to the leaf-search node 120 to provide for comparison against a portion of the prefix value, in accordance with pipelined access to the memories 210.
  • Each prefix value can be striped across some of, or all of, the memories 210 the leaf-search node 120 is striped across.
  • Figure 3 shows a process flow diagram of a data lookup method.
  • a method 300 includes a set of flow points and process steps as described herein. Although by the nature of textual description, the flow points and process steps are described sequentially, there is no particular requirement that the flow points or process steps must be sequential. Rather, in preferred embodiments of the invention, the described flow points and process steps are performed in a parallel or pipelined manner.
  • the method 300 is ready to perform a lookup operation.
  • the method 300 selects a next node for the lookup operation.
  • the "next node" at the start of the method 300 is the branch node 110 at the root of the trie 100 (that is, the root node).
  • the method 300 determines the type for the node, thus, a branch node 110, a leaf-search node 120, or a branch-search node 130.
  • the method 300 proceeds with the step 321. If the node is a leaf- search node 120, the method 300 proceeds with the step 322. If the node is a branch- search node 130, the method 300 proceeds with the step 323.
  • the method 300 performs a lookup with regard to dn bits, where dn is a parameter specific to the depth within the trie 100 at which the branch node 110 is found. This is further described in the incorporated disclosure.
  • the method 300 determines a next node for lookup in the next memory 210. The method 300 proceeds with the step 311.
  • the method 300 attempts to match the lookup search key associated with the branch-search node 130. If the match fails, the method 300 proceeds with the step 321 to continue to walk down the trie 100 for the lookup search key. If the match succeeds, the method 300 records the successful match, and proceeds with the step 332. At a step 332, the method 300 has found a first data element associated with the lookup search key. The lookup operation proceeds further to attempt to find a longest prefix match, that is, a data element associated with a longer prefix of the lookup search key.
  • the method 300 therefore proceeds with the step 321, until the lookup search key is exhausted and there are no further bits for lookup, or there are no further data entries for the lookup operation to review (that is, there are no further nodes below the node being looked at).
  • the method 300 proceeds with the flow point 350.
  • the method 300 searches the leaf-search node 120, using the lookup search key, for the longest prefix match. If the lookup search key is found, the method 300 proceeds with the step 342. If the lookup search key is not found, the method 300 proceeds with the step 343.
  • the method 300 has found a data element associated with the lookup search key in a leaf-search node 120. If the leaf-search node 120 has been completely searched, the method 300 has found the longest prefix match, and proceeds with the flow point 350. If the leaf-search node 120 has not been completely searched, the method 300 continues with the step 343 to possibly find a longer prefix match.
  • the method 300 determines the location of a remaining portion of the leaf-search node 120 (thus, for a striped leaf-search node 120) in the next memory 210, and the method proceeds with the step 341.
  • the lookup operation is substantially complete.
  • the method 300 performs a plurality of lookup operations in a sequence in which they are presented, substantially concurrently in a pipelined manner, as further described in the incorporated disclosure.
  • Figure 4 shows a process flow diagram of a data update method.
  • the method 400 is ready to perform an update operation.
  • the method 400 selects a next node for the update operation.
  • the "next node" at the start of the method 400 is the branch node 110 at the root of the trie 100 (that is, the root node).
  • the method 400 determines a count of data elements in the sub-trie depending from the node found in the step 411. In a preferred embodiment, this count can be stored in the node itself, or in a data structure associated with the node, or otherwise.
  • the method 400 updates the count, preferably stored in the node or an associated data structure.
  • the method 400 performs the following comparisons:
  • the method 400 compares the count with a threshold T. • The method 400 determines the type of update operation; that is, the method 400 determines if the update operation includes a node insertion or a node removal. The update operation might instead include only a change to data in a node, in which case it involves neither a node insertion nor a node removal.
  • the method 400 determines if the node itself includes a sub-trie; that is, the node is a branch node 110 or a branch-search node 130 and therefore does, or the node is a leaf-search node 120 and therefore does not.
  • the method 400 converts the sub-trie depending from the branch node 110 or the branch-search node 130 into a leaf-search node 120, and performs the update with regard to the new leaf-search node 120.
  • the method 400 proceeds with the step 432.
  • the method 400 converts the leaf-search node 120 into a sub- trie including one or more branch nodes 110 or branch-search nodes 130, and performs the update with regard to the new sub-trie.
  • the method 400 proceeds with the step 432.
  • the method 400 walks down the trie to a branch node 110 or leaf-search node 120 associated with the update, and performs the update with regard to that associated node.
  • the method 400 proceeds with the step 432.
  • the method 400 performs the insert/remove, as appropriate.
  • the method 400 proceeds to flow point 440.
  • the update operation is substantially complete.
  • the method 400 performs a plurality of update operations in a sequence in which they are presented, substantially concurrently in a pipelined manner, as further described in the incorporated disclosure.
  • the invention has general applicability to compact memory storage and retrieval, to update of information recorded in relatively compact form, and to applications having utility for data lookup. None of these applications are limited specifically to lookup for message header information, nor are they necessarily related to the specific applications disclosed herein.
  • embodiments of the invention can include one or more of, or some combination of, the following applications:
  • Routers and switches at all levels of the ISO/OSI networking model including without limitation: bridges, network gateways, network routers and switches;

Abstract

The invention provides a method and system for rapid lookup and update (for example, of message header information) that records information in a database in a compact structure. The database includes a hybrid trie structure (100), wherein information in the denser portions of the database can be stored and retrieved from an identifiable leaf in the trie (100) and information in the sparser portions of the database can be stored and retrieved from a table. The hybrid trie (100) is recorded in a sequence of SRAM memories (210) so that a sequence of lookup requests can proceed in a pipelined manner with all the memories performing concurrent lookups so that the lookups can be performed at a rate substantially equal to their arrival rate.

Description

COMPACT DATA STRUCTURES FOR PIPELINED MESSAGE FORWARDING
LOOKUPS
Background of the Invention
1. Field of the Invention
This invention relates to compact data structures, such as for example those used for message forwarding.
2. Related Art
In forwarding messages in a computer network, it is desirable to match lookup search keys (including header information from packets in which those messages are embodied) with routing information indicating how to process those packets and message. It is particularly desirable that the matching operation be performed as rapidly as possible. This has led to a desire for data structures for storing and retrieving information regarding those lookup search keys, so that data elements associated with those lookup search keys can be rapidly stored and retrieved.
In known methods for storage and retrieval of information regarding lookup search keys, the data structures used are relatively large. Thus, the data structures are often stored in a relatively slow and expensive memory (such as an off- chip memory for a routing circuit integrated onto a single chip), thus slowing each access to the data structures themselves, and providing a limit to accesses due to the nature of the off-chip memory.
Accordingly it would be desirable to have a technique for storing and retrieving information associated with lookup search keys that is simultaneously relatively fast and inexpensive, while allowing for relatively large amounts of data, and is not subject to the drawbacks of the known art. The following features would be advantageous:
• It would be advantageous if that technique has all of the features of including a relatively compact data structure, one that is easy to read from (that is, to perform lookup operations), and easy to write to (that is, to perform update operations).
• It would be advantageous if that technique were not specific to any particular application, any particular format or size of lookup search keys and associated data.
• It would be advantageous if that technique were able to include multiple matching data elements for any selected lookup search key, where those multiple matching data elements can be ordered with regard to their priority.
This is particularly advantageous with regard to the "longest prefix match" problem, as further described in the incorporated disclosure (described below).
• It would be advantageous if that technique were well adapted to pipelined operation, such as further described in the incorporated disclosure.
These advantages and others are provided in an embodiment of the invention, described herein, including a hybrid trie data structure in which distinct types of nodes (such as a search node or a branch/search node, as described below) are substituted for sub-tries in response to a number of prefixes in those sub-tries.
Summary of the Invention
The invention provides a method and system for lookup (such as for example, lookup of message header information) that records information in a relatively large database in a relatively compact structure, while still providing for relatively rapid lookup and update.
In a first aspect of the invention, a relatively large but compact database includes a hybrid tree (or hybrid trie) structure, whereby information in denser portions of the database can be stored and retrieved from an identifiable leaf in the hybrid trie. The hybrid trie includes at least one leaf-search node marked to include a different data structure, whereby information in sparser portions of the database can be stored and retrieved from a more densely packed table. In a preferred embodiment, each hybrid trie node is marked as one of: a branch node, a leaf-search node, or a branch-search node; each search node includes information for a sparser portion of the hybrid trie, packed into a structure capable of linear search in response to a set of packet header information (such as a destination IP address).
In a second aspect of the invention, the hybrid trie is recorded in a sequence of SRAM memories, disposed so that each stride of the hybrid trie includes a lookup within a single memory, whereby a corresponding sequence of lookup requests can be processed in a pipelined manner with all the memories performing concurrent lookups, whereby complete lookups can be performed at a rate substantially equal to their arrival rate (even though each lookup takes a sequence of memory references to complete). Each branch node and each leaf node is recorded in a single memory. Each search node can be striped across a plurality of memories, whereby search of a search node can be distributed across those memories, and completion of lookups involving a search node operates within the pipeline paradigm of completion of lookups involving only reference to branch nodes and leaf nodes.
The invention has general applicability to compact memory storage and retrieval, to update of information recorded in relatively compact form, and to applications having utility for data lookup. None of these applications are limited specifically to lookup for message header information, nor are they necessarily related to the specific applications disclosed herein. For example, embodiments of the invention can include one or more of, or some combination of, the following applications:
• Routers and switches at all levels of the ISO/OSI networking model, including without limitation: bridges, network gateways, network routers and switches;
• Data storage and retrieval for arbitrary data in a relatively large database.
Brief Description of the Drawings
Figure 1 shows a data structure diagram of a hybrid trie structure including search nodes.
Figure 2 shows a memory structure diagram of a hybrid trie structure.
Figure 3 shows a process flow diagram of a data lookup method.
Figure 4 shows a process flow diagram of a data update method.
Description of the Preferred Embodiment
The invention is described herein with regard to preferred steps and data structures. Those skilled in the art will recognize, after perusal of this application, that the described steps and data structures are not limited to any particular circuits. Rather, those of ordinary skill in the art would be able to implement the described steps and data structures, and equivalents thereof, without undue experimentation or further invention. All such implementations are within the scope and spirit of the invention. Related Application
Inventions described herein can be used in conjunction with inventions described in the following document:
• U.S. Patent Application Serial No. 09/827,270, filed 4 April 2001 in the name of Pankaj Gupta and Srinivasan Venkatachary, titled "High-Speed Message Forwarding Lookups for Arbitrary Length Strings Using Pipelined Memories."
This document is hereby incorporated by reference as if fully set forth herein. This document is referred to as the incorporated disclosure.
Lexicography
The following terms refer or relate to aspects of the invention as described below. The descriptions of general meanings of these terms are not intended to be limiting, only illustrative.
• router — in general, any device for performing lookup of message header information against a information database, and for treating messages having that message header information differentially in response to a result of the lookup. For example, a router can act in response to destination IP addresses (for forwarding), in response to destination IP addresses and source IP addresses (for multicast forwarding and for access control), or in response to port number or protocol type (for enforcing administrative restrictions or other message routing rules).
• stripe — in general, a set of memory locations in a sequence of memories, disposed so that once the location of the stripe is known, searching in subsequent memories does not require any further pointers to successive parts of the stripe. In a preferred embodiment, each stripe includes the same memory location offsets from the beginning of each memory in sequence after the beginning of the stripe. In a preferred embodiment, each prefix is striped across a leaf-search node that is itself striped.
As noted above, these descriptions of general meanings of these terms are not intended to be limiting, only illustrative. Other and further applications of the invention, including extensions of these terms and concepts, would be clear to those of ordinary skill in the art after perusing this application. These other and further applications are part of the scope and spirit of the invention, and would be clear to those of ordinary skill in the art, without further invention or undue experimentation.
Hybrid Trie Structure
Figure 1 shows a data structure diagram of a hybrid trie structure including search nodes.
A data structure includes a hybrid trie 100, having a set of branch nodes 110 and a set of leaf- search nodes 120, and a set of branch-search nodes 130. One of the branch nodes 110, at the root of the trie 100, is the root node.
As described herein, each branch node 110 defines a sub-trie that depends from that branch node 110. Each leaf-search node 120 (and each branch- search node 130) defines a set of individual data elements, such as route pointers. In a preferred embodiment, each leaf-search node 120 is used to substitute for a sub-trie including a plurality of branch nodes 110 (or branch-search nodes 130), where the sub-trie has fewer than a threshold value T individual data elements.
In alternative embodiments, selection of which type of node to use at any selected point in the hybrid trie 100 can be responsive to factors other than comparing the number of data elements against a threshold value T, or can be responsive to factors other than the number of data elements. The hybrid trie 100 with multiple types of nodes has the advantage that different types of nodes can be used when the nature of the stored data makes it advantageous to store that data in different formats. While in a preferred embodiment, leaf-search nodes 120 and branch-search nodes 130 use linear search to match prefix values against lookup search keys, in alternative embodiments, leaf-search nodes 120 and branch-search nodes 130 may use other types of search (such as for example a balanced binary tree or a hash table), or there may be multiple subtypes of leaf-search nodes 120 and branch-search nodes 130, each using a distinct type of search adapted to its contents.
Each branch node 110 includes a marker 111 indicating that the node is a branch node 110, and a set of subnode pointers 113. The subnode pointers 113 point to locations for each of the sub-tries depending from that branch node 110 that depend from that particular branch node 110.
Each leaf-search node 120 includes a marker 121 similar to a branch node 110, instead indicating that the node is a leaf-search node 120. Each leaf-search node 120 terminates the path down the trie 100 and includes a set of prefix values against which a lookup search key can be matched. Each leaf-search node 120 associates each of its prefix values with a specific data element 122. In a preferred embodiment, the data element 122 includes a route pointer; this allows the hybrid trie 100 to be used for lookup or update of a route pointer in response to a lookup search key.
Although a preferred embodiment includes information regarding routing packets, there is no particular requirement for the invention not to include other or different information. Thus, references in this application to the marker 111 should be read generally to indicate any marker suitable for determining what type of node is present, and references in this application to a route pointer should be read generally to indicate any data suitable for a lookup or update operation. Each branch-search node 130 includes a marker 131 similar to a branch node 110 or a leaf-search node 120, indicating that the node is a branch-search node 130. Each branch-search node 130 has the functionality of a branch node 110 and a leaf-search node 120 at the same time. Thus, a branch-search node 130 can be used for further traversing of the hybrid trie 100, and can also be used to match a lookup search key against one of a set of prefix values.
Memory Structure Diagram
Figure 2 shows a memory structure diagram of a hybrid trie structure.
A memory structure 200 includes a sequence of memories 210, each of which includes a set of memory registers 211, each capable of storing at least a portion of a branch node 110, a leaf-search node 120, or a branch-search node 130.
Each memory 210 includes a dynamically allocated portion allocated for trie storage 220, including branch nodes 110 and branch-search nodes 130, and a dynamically allocated portion allocated for search storage 230, including leaf-search nodes 120, and a dynamic portion not allocated and therefore free space 240.
When performing a lookup or update, each memory 210 participates in one memory access 250 (represented in the figure to indicate that a particular memory register 211 is accessed). In a preferred embodiment, as further described in the incorporated disclosure, the memory accesses 250 to all memories 210 are performed substantially concurrently, therefore performing multiple memory accesses 250 per clock cycle, so as to process multiple lookup operations or update operations in a pipelined manner. In a preferred embodiment, further described in the incorporated disclosure, this allows the memory structure 200 to perform one lookup operation or update operation for each clock cycle. If the part of the lookup operation or update operation is for a branch node 110 or a branch-search node 130, the memory access 250 provides a branch pointer 260 to a location in the next memory 210. Thus, successive memory accesses
250 walk down the trie 100 until reaching a branch-search node 130 having a match to the lookup search key, and continues onward to find a longest prefix match.
If the part of the lookup operation or update operation is for a leaf- search node 120, the memory access 250 provides either a data element 133 associated with a (searchable) lookup search key 132 found in the leaf-search node 120, or an indicator to continue searching the leaf-search node 120 in the next memory 210. Thus, successive memory accesses 250 to a leaf-search node 120 can trace across a stripe in which the leaf-search node 120 is stored in the memory structure 200. As shown in the figure, a leaf-search node 120 can trace across a stripe including one or more memories 210.
When a leaf-search node 120 is striped across more than one memory 210 (and thus across more than one pipeline stage), each prefix value in that leaf- search node 120 can also be striped across the memories 210 maintaining the leaf- search node 120. This allows each reference to the leaf-search node 120 to provide for comparison against a portion of the prefix value, in accordance with pipelined access to the memories 210. Each prefix value can be striped across some of, or all of, the memories 210 the leaf-search node 120 is striped across.
Method of Use (Lookup)
Figure 3 shows a process flow diagram of a data lookup method.
A method 300 includes a set of flow points and process steps as described herein. Although by the nature of textual description, the flow points and process steps are described sequentially, there is no particular requirement that the flow points or process steps must be sequential. Rather, in preferred embodiments of the invention, the described flow points and process steps are performed in a parallel or pipelined manner.
*
At a flow point 310, the method 300 is ready to perform a lookup operation.
At a step 311, the method 300 selects a next node for the lookup operation. In a preferred embodiment, the "next node" at the start of the method 300 is the branch node 110 at the root of the trie 100 (that is, the root node).
At a step 312, the method 300 determines the type for the node, thus, a branch node 110, a leaf-search node 120, or a branch-search node 130. In the node is a branch node 110, the method 300 proceeds with the step 321. If the node is a leaf- search node 120, the method 300 proceeds with the step 322. If the node is a branch- search node 130, the method 300 proceeds with the step 323.
At a step 321 , the method 300 performs a lookup with regard to dn bits, where dn is a parameter specific to the depth within the trie 100 at which the branch node 110 is found. This is further described in the incorporated disclosure. In response to a result of the lookup, the method 300 determines a next node for lookup in the next memory 210. The method 300 proceeds with the step 311.
At a step 331, the method 300 attempts to match the lookup search key associated with the branch-search node 130. If the match fails, the method 300 proceeds with the step 321 to continue to walk down the trie 100 for the lookup search key. If the match succeeds, the method 300 records the successful match, and proceeds with the step 332. At a step 332, the method 300 has found a first data element associated with the lookup search key. The lookup operation proceeds further to attempt to find a longest prefix match, that is, a data element associated with a longer prefix of the lookup search key. The method 300 therefore proceeds with the step 321, until the lookup search key is exhausted and there are no further bits for lookup, or there are no further data entries for the lookup operation to review (that is, there are no further nodes below the node being looked at). When the lookup search key is exhausted, the method 300 proceeds with the flow point 350.
At a step 341, the method 300 searches the leaf-search node 120, using the lookup search key, for the longest prefix match. If the lookup search key is found, the method 300 proceeds with the step 342. If the lookup search key is not found, the method 300 proceeds with the step 343.
At a step 342, the method 300 has found a data element associated with the lookup search key in a leaf-search node 120. If the leaf-search node 120 has been completely searched, the method 300 has found the longest prefix match, and proceeds with the flow point 350. If the leaf-search node 120 has not been completely searched, the method 300 continues with the step 343 to possibly find a longer prefix match.
At a step 343, the method 300 determines the location of a remaining portion of the leaf-search node 120 (thus, for a striped leaf-search node 120) in the next memory 210, and the method proceeds with the step 341.
At a flow point 350, the lookup operation is substantially complete. The method 300 performs a plurality of lookup operations in a sequence in which they are presented, substantially concurrently in a pipelined manner, as further described in the incorporated disclosure. Method of Use (Update)
Figure 4 shows a process flow diagram of a data update method.
Although by the nature of textual description, the flow points and process steps are described sequentially, there is no particular requirement that the flow points or process steps must be sequential. Rather, in preferred embodiments of the invention, the described flow points and process steps are performed in a parallel or pipelined manner.
At a flow point 410, the method 400 is ready to perform an update operation.
At a step 411, the method 400 selects a next node for the update operation. In a preferred embodiment, the "next node" at the start of the method 400 is the branch node 110 at the root of the trie 100 (that is, the root node).
At a step 412, the method 400 determines a count of data elements in the sub-trie depending from the node found in the step 411. In a preferred embodiment, this count can be stored in the node itself, or in a data structure associated with the node, or otherwise.
As part of this step, the method 400 updates the count, preferably stored in the node or an associated data structure.
As part of this step, the method 400 performs the following comparisons:
• The method 400 compares the count with a threshold T. • The method 400 determines the type of update operation; that is, the method 400 determines if the update operation includes a node insertion or a node removal. The update operation might instead include only a change to data in a node, in which case it involves neither a node insertion nor a node removal.
• The method 400 determines if the node itself includes a sub-trie; that is, the node is a branch node 110 or a branch-search node 130 and therefore does, or the node is a leaf-search node 120 and therefore does not.
In response to these comparisons, and as part of this step, the method
400 determines which of the following conditions apply:
• The count = (T - 1), the update involves a node insertion, and the node is a leaf-search node 120. If so, the method 400 proceeds with the step 421.
• The count = T, the update involves a node removal, and the node is a branch node 110 or a branch-search node 130. If so, the method 400 proceeds with the step 441.
• Neither of the former two conditions applies. If so, the method 400 proceeds with the step 431.
At a step 441, the method 400 converts the sub-trie depending from the branch node 110 or the branch-search node 130 into a leaf-search node 120, and performs the update with regard to the new leaf-search node 120. The method 400 proceeds with the step 432.
At a step 421, the method 400 converts the leaf-search node 120 into a sub- trie including one or more branch nodes 110 or branch-search nodes 130, and performs the update with regard to the new sub-trie. The method 400 proceeds with the step 432. At a step 431, the method 400 walks down the trie to a branch node 110 or leaf-search node 120 associated with the update, and performs the update with regard to that associated node. The method 400 proceeds with the step 432.
At a step 432, the method 400 performs the insert/remove, as appropriate. The method 400 proceeds to flow point 440.
At a flow point 440, the update operation is substantially complete. The method 400 performs a plurality of update operations in a sequence in which they are presented, substantially concurrently in a pipelined manner, as further described in the incorporated disclosure.
Generality of the Invention
The invention has general applicability to compact memory storage and retrieval, to update of information recorded in relatively compact form, and to applications having utility for data lookup. None of these applications are limited specifically to lookup for message header information, nor are they necessarily related to the specific applications disclosed herein. For example, embodiments of the invention can include one or more of, or some combination of, the following applications:
• Routers and switches at all levels of the ISO/OSI networking model, including without limitation: bridges, network gateways, network routers and switches;
• Data storage and retrieval for arbitrary data in a relatively large but compact database.
Other and further applications of the invention in its most general form would be clear to those skilled in the art after perusal of this application. The invention would be usable for such other and further applications without undue experimentation or further invention.
Although preferred embodiments are disclosed herein, many variations are possible which remain within the concept, scope and spirit of the invention; these variations would be clear to those skilled in the art after perusal of this application.

Claims

Claims
1. Memory or mass storage having a stored data structure, said data structure including a hybrid trie structure having one or more nodes of a first type, each said first type node being referenced by a branch of said hybrid trie in response to at least a portion of said lookup value; and one or more nodes of a second type, each said second type node including a plurality of entries responsive to corresponding lookup values, said plurality of entries being searchable using a technique other than reference through a trie structure; wherein for each node, selection of said first or second type is responsive to a feature of a set of data to be maintained in said hybrid trie structure, so as to optimize at least one factor associated with operations with respect to said hybrid trie structure.
2. Memory or mass storage as in claim 1, wherein each one of said plurality of entries includes either a branch to another node of said hybrid trie structure; or a data value associated with said one entry.
3. Memory or mass storage as in claim 1, wherein said feature of said set of data includes a comparison with a threshold value of a number of entries in said set of data dependent from said node being selected for said first or second type; and at least one said associated factor includes an amount of memory used by said hybrid trie structure.
4. Memory or mass storage as in claim 1, wherein said branch of said hybrid trie is included in a branch node; and each said branch node is stored in a memory and requires only a single memory operation in response to said lookup value to select one of said branch pointers.
5. Memory or mass storage as in claim 1, wherein said branch of said hybrid trie is included in a branch node; and each said branch node includes a plurality of entries responsive to corresponding lookup values.
6. Memory or mass storage as in claim 5, wherein each said branch node is stored in a memory and requires only a single memory operation in response to said lookup value to both (a) select one of said branch pointers and (b) select one of said plurality of entries responsive to corresponding lookup value.
7. Memory or mass storage as in claim 1, wherein said hybrid trie includes at least a first type branch node and a second type branch node, said second type branch node having a plurality of entries corresponding to distinct lookup values associated therewith.
8. Memory or mass storage having a stored data structure, said data structure including at least one branch node, said branch node including one or more branch pointers referring to dependent nodes, each said branch pointer being selectable in response to at least a portion of a lookup value; and one or more branch pointers associated with said branch node referring to either a branch-search node or a leaf-search node, said branch-search node or leaf- search node having a plurality of entries responsive to corresponding lookup values, said plurality of entries being disposed in a data structure other than a tree.
9. Memory or mass storage as in claim 8, including at least one branch-search node, wherein said branch-search node includes plurality of entries, each one of said entries including either a branch to another node of said hybrid trie structure, or a data value associated with said one entry.
10. Memory or mass storage as in claim 8, wherein said feature of said set of data includes a comparison with a threshold value of a number of entries in said set of data dependent from said node being selected for said first or second type; and at least one said associated factor includes an amount of memory used by said hybrid trie structure.
11. Memory or mass storage as in claim 8, wherein each said branch node is stored in a memory and requires only a single memory operation in response to said lookup value to select one of said branch pointers.
12. Memory or mass storage as in claim 8, wherein each said branch node includes a plurality of entries responsive to corresponding lookup values.
13. Memory or mass storage as in claim 12, wherein each said branch node is stored in a memory and requires only a single memory operation in response to said lookup value to both (a) select one of said branch pointers and (b) select one of said plurality of entries responsive to coπesponding lookup value.
14. Memory or mass storage as in claim 8, wherein said hybrid trie includes at least a first type branch node and a second type branch node, said second type branch node having a plurality of entries coπesponding to distinct lookup values associated therewith.
15. Memory or mass storage having a stored data structure, said data structure including a plurality of memory regions, a first said memory region including one or more branch pointers stored in locations responsive to at least a portion of a lookup value, each said branch pointer referring to a location in a different said memory region; one or more branch pointers referring to a leaf-search node, said leaf- search node having a plurality of entries responsive to coπesponding lookup values, said leaf-search node having at least a first part and a second part, said first part and said second part being stored in a first and a second ones of said memory regions.
16. Memory or mass storage as in claim 15, wherein said memory regions form a sequence, and said different memory region is a next one in said sequence.
17. Memory or mass storage as in claim 15, wherein said memory regions form a sequence, and said first and second ones of said memory regions form a subsequence of said sequence.
18. Memory or mass storage as in claim 15, wherein said memory regions form a sequence, and said first and second ones of said memory regions form an unbroken subsequence of said sequence.
19. Memory or mass storage having a stored data structure, said data structure including a sequence of memory regions, a first said memory region including one or more branch pointers stored in locations responsive to at least a portion of a lookup value, each said branch pointer referring to a location in a next said memory region; at least one branch pointer referring to a leaf-search node, said leaf- search node having a plurality of entries responsive to coπesponding lookup values, said leaf-search node having a plurality of parts, said plurality of parts being stored in a subsequence of said sequence of memory regions, said subsequence including at least two said memory regions after said branch pointer in said sequence.
20. Memory or mass storage as in claim 19, wherein at least one prefix value in said leaf-search node is striped across a plurality of said memory regions.
21. A method including performing a lookup in response to at least a portion of a lookup value, said lookup providing a reference to a dependent node in a tree structure, said dependent node having one of a plurality of types; if said dependent node includes a leaf-search node, retrieving one of a plurality of entries stored at said leaf-search node in response to said lookup value.
22. A method as in claim 21, wherein if said dependent node includes a branch node including a plurality of said references, performing a lookup operation on said branch node using a single memory operation in response to said lookup value to select one of said references.
23. A method as in claim 21, wherein if said dependent node includes a branch node including a plurality of said references, performing a lookup operation on said branch node using a single memory operation in response to said lookup value to both (a) select one of said references and (b) select one of said plurality of entries responsive to coπesponding lookup value.
24. A method including performing a lookup in a first memory region in a sequence of memory regions, said lookup being in response to at least a portion of a lookup value, said lookup providing a reference to a dependent node in a tree structure, said dependent node having one of a plurality of types and being stored in a different memory region in said sequence; if said dependent node includes a leaf-search node, retrieving one of a plurality of entries stored at said leaf-search node in response to said lookup value, said leaf-search node having a plurality of parts, each said part being stored in a distinct one of said sequence of memory regions.
25. A method as in claim 24, wherein said different memory region is a next one in said sequence.
26. A method as in claim 24, wherein said different memory region is an earlier one in said sequence.
27. A method as in claim 24, wherein said distinct ones of said memory regions form a subsequence of said sequence.
28. A method as in claim 24, wherein said distinct ones of said memory regions form an unbroken subsequence of said sequence.
29. A method including adding a new entry to a hybrid trie structure having at least a first type node and a second type node, wherein said first type node includes one said entry and said second type node includes a plurality of said entries; converting a subtrie of said hybrid trie structure into at least one said second type node in response to a number of entries dependent from a branch node in said hybrid trie structure, wherein said new entry is dependent from said branch node.
30. A method as in claim 29, including converting a subtrie of said hybrid trie into at least one branch node and at least one additional node, in response to a number of entries in said second type node, whereby said number of entries in said second type node is limited to a number readable in a single memory operation.
31. A method as in claim 30, wherein said at least one additional node includes a plurality of said second type nodes.
32. A method as in claim 30, wherein said at least one branch node resulting from converting said subtrie includes a plurality of entries coπesponding to distinct lookup values.
33. A method asin claim 30, wherein said hybrid trie includes at least a first type branch node and a second type branch node, said second type branch node having a plurality of entries coπesponding to distinct lookup values associated therewith; and said at least one branch node resulting from converting said subtrie includes a plurality of entries coπesponding to distinct lookup values.
34. A method including removing an old entry from a hybrid trie structure having at least a first type node and a second type node, wherein said first type node includes one said entry and said second type node includes a plurality of said entries; converting a subtrie of said hybrid trie structure into at least one said first type node in response to a number of entries dependent from a branch node in said hybrid trie structure, wherein said old entry was dependent from said branch node.
35. A method as in claim 34, wherein said at least one branch node resulting from converting said subtrie includes a plurality of entries coπesponding to distinct lookup values.
36. A method as in claim 34, wherein said hybrid trie includes at least a first type branch node and a second type branch node, said second type branch node having a plurality of entries coπesponding to distinct lookup values associated therewith; and said at least one branch node resulting from converting said subtrie includes a plurality of entries coπesponding to distinct lookup values.
PCT/US2002/010570 2001-04-04 2002-04-04 Compact data structures for pipelined message forwarding lookups WO2002082322A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2002338369A AU2002338369A1 (en) 2001-04-04 2002-04-04 Compact data structures for pipelined message forwarding lookups

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/826,556 2001-04-04
US09/826,556 US6691124B2 (en) 2001-04-04 2001-04-04 Compact data structures for pipelined message forwarding lookups

Publications (2)

Publication Number Publication Date
WO2002082322A1 true WO2002082322A1 (en) 2002-10-17
WO2002082322A8 WO2002082322A8 (en) 2003-01-09

Family

ID=25246878

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2002/010570 WO2002082322A1 (en) 2001-04-04 2002-04-04 Compact data structures for pipelined message forwarding lookups

Country Status (3)

Country Link
US (1) US6691124B2 (en)
AU (1) AU2002338369A1 (en)
WO (1) WO2002082322A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005024659A1 (en) * 2003-08-11 2005-03-17 France Telecom Trie memory device with a circular pipeline mechanism

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9444785B2 (en) 2000-06-23 2016-09-13 Cloudshield Technologies, Inc. Transparent provisioning of network access to an application
US7032031B2 (en) * 2000-06-23 2006-04-18 Cloudshield Technologies, Inc. Edge adapter apparatus and method
US7003555B1 (en) 2000-06-23 2006-02-21 Cloudshield Technologies, Inc. Apparatus and method for domain name resolution
US8204082B2 (en) 2000-06-23 2012-06-19 Cloudshield Technologies, Inc. Transparent provisioning of services over a network
US7017021B2 (en) * 2001-04-04 2006-03-21 Cypress Semiconductor Corp. High-speed message forwarding lookups for arbitrary length strings using pipelined memories
US6691124B2 (en) * 2001-04-04 2004-02-10 Cypress Semiconductor Corp. Compact data structures for pipelined message forwarding lookups
US7539988B1 (en) * 2001-10-11 2009-05-26 Four J's Development Tools, Inc. System and method for deferred rebalancing of a tree data structure
KR100970122B1 (en) * 2001-11-01 2010-07-13 베리사인 인코포레이티드 High speed non-concurrency controlled database
US8195705B2 (en) * 2001-12-11 2012-06-05 International Business Machines Corporation Hybrid search memory for network processor and computer systems
US7953094B1 (en) * 2002-02-06 2011-05-31 Juniper Networks, Inc. Systems and methods for order preserving data
US7222129B2 (en) * 2002-03-29 2007-05-22 Canon Kabushiki Kaisha Database retrieval apparatus, retrieval method, storage medium, and program
US8117333B1 (en) 2002-05-22 2012-02-14 Juniper Networks, Inc. Systems and methods for distributed data forwarding
US20030236968A1 (en) * 2002-06-19 2003-12-25 Anindya Basu Method and apparatus for generating efficient data structures for use in pipelined forwarding engines
US7356033B2 (en) * 2002-11-21 2008-04-08 Lucent Technologies Inc. Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures
US7924839B2 (en) * 2002-12-06 2011-04-12 Stmicroelectronics, Inc. Mechanism to reduce lookup latency in a pipelined hardware implementation of a trie-based IP lookup algorithm
US7782853B2 (en) * 2002-12-06 2010-08-24 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
US7289508B1 (en) 2003-03-12 2007-10-30 Juniper Networks, Inc. Systems and methods for processing any-to-any transmissions
US7437354B2 (en) * 2003-06-05 2008-10-14 Netlogic Microsystems, Inc. Architecture for network search engines with fixed latency, high capacity, and high throughput
US7702882B2 (en) * 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US20060101018A1 (en) * 2004-11-08 2006-05-11 Mazzagatti Jane C Method for processing new sequences being recorded into an interlocking trees datastore
US8516004B2 (en) * 2003-09-19 2013-08-20 Unisys Corporation Method for processing K node count fields using an intensity variable
US7586917B1 (en) * 2003-09-30 2009-09-08 Juniper Networks, Inc. Systems and methods for re-ordering data in distributed data forwarding
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
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
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
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
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
US20060206513A1 (en) * 2005-03-08 2006-09-14 International Business Machines Corporation Method for speed-efficient and memory-efficient construction of a trie
US7551609B2 (en) * 2005-10-21 2009-06-23 Cisco Technology, Inc. Data structure for storing and accessing multiple independent sets of forwarding information
EP1821571A1 (en) * 2006-02-15 2007-08-22 Oticon A/S Loop antenna for in the ear audio device
US20070214153A1 (en) * 2006-03-10 2007-09-13 Mazzagatti Jane C Method for processing an input particle stream for creating upper levels of KStore
US7734571B2 (en) * 2006-03-20 2010-06-08 Unisys Corporation Method for processing sensor data within a particle stream by a KStore
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
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
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
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
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
US8089961B2 (en) * 2007-12-07 2012-01-03 University Of Florida Research Foundation, Inc. Low power ternary content-addressable memory (TCAMs) for very large forwarding tables
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
CN102184278B (en) * 2011-04-13 2013-01-09 河北建筑工程学院 Optimization method for drain pipe network
US8380758B1 (en) * 2011-11-14 2013-02-19 Google Inc. Trie specialization allowing storage of value keyed by patterns and retrieval by tokens
US10515141B2 (en) * 2012-07-18 2019-12-24 Software Ag Usa, Inc. Systems and/or methods for delayed encoding of XML information sets
US9922089B2 (en) 2012-07-18 2018-03-20 Software Ag Usa, Inc. Systems and/or methods for caching XML information sets with delayed node instantiation
US9760549B2 (en) * 2012-07-18 2017-09-12 Software Ag Usa, Inc. Systems and/or methods for performing atomic updates on large XML information sets
US20190004730A1 (en) * 2014-04-30 2019-01-03 International Business Machines Corporation Using index structure to guide load balancing in a distributed storage system
EP3376407B1 (en) 2017-03-15 2020-09-16 censhare AG Efficient use of trie data structure in databases

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768423A (en) * 1994-09-02 1998-06-16 Panasonic Technologies Inc. Trie structure based method and apparatus for indexing and searching handwritten databases with dynamic search sequencing
US6098034A (en) * 1996-03-18 2000-08-01 Expert Ease Development, Ltd. Method for standardizing phrasing in a document

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414836A (en) * 1993-09-29 1995-05-09 International Business Machines Corporation Software testing system that employs a graphical interface to generate test cases configured as hybrid tree structures
US6052693A (en) * 1996-07-02 2000-04-18 Harlequin Group Plc System for assembling large databases through information extracted from text sources
US6209020B1 (en) 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US6343072B1 (en) 1997-10-01 2002-01-29 Cisco Technology, Inc. Single-chip architecture for shared-memory router
US6018741A (en) * 1997-10-22 2000-01-25 International Business Machines Corporation Method and system for managing objects in a dynamic inheritance tree
US6029170A (en) * 1997-11-25 2000-02-22 International Business Machines Corporation Hybrid tree array data structure and method
JP4156112B2 (en) * 1998-12-25 2008-09-24 富士通株式会社 High-speed search method and high-speed search device
US6523042B2 (en) * 2000-01-07 2003-02-18 Accenture Llp System and method for translating to and from hierarchical information systems
DE60026229T2 (en) * 2000-01-27 2006-12-14 International Business Machines Corp. Method and apparatus for classifying data packets
US6735595B2 (en) * 2000-11-29 2004-05-11 Hewlett-Packard Development Company, L.P. Data structure and storage and retrieval method supporting ordinality based searching and data retrieval
US6691124B2 (en) * 2001-04-04 2004-02-10 Cypress Semiconductor Corp. Compact data structures for pipelined message forwarding lookups
US6785687B2 (en) * 2001-06-04 2004-08-31 Hewlett-Packard Development Company, L.P. System for and method of efficient, expandable storage and retrieval of small datasets
US6671694B2 (en) * 2001-06-04 2003-12-30 Hewlett-Packard Development Company, L.P. System for and method of cache-efficient digital tree with rich pointers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768423A (en) * 1994-09-02 1998-06-16 Panasonic Technologies Inc. Trie structure based method and apparatus for indexing and searching handwritten databases with dynamic search sequencing
US6098034A (en) * 1996-03-18 2000-08-01 Expert Ease Development, Ltd. Method for standardizing phrasing in a document

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005024659A1 (en) * 2003-08-11 2005-03-17 France Telecom Trie memory device with a circular pipeline mechanism

Also Published As

Publication number Publication date
US20020147721A1 (en) 2002-10-10
WO2002082322A8 (en) 2003-01-09
US6691124B2 (en) 2004-02-10
AU2002338369A1 (en) 2002-10-21

Similar Documents

Publication Publication Date Title
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
CA2434876C (en) Method and apparatus for ternary content addressable memory (tcam) table management
US7415472B2 (en) Comparison tree data structures of particular use in performing lookup operations
US7415463B2 (en) Programming tree data structures and handling collisions while performing lookup operations
US7433871B2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
EP1168723B1 (en) Method and apparatus for longest matching prefix determination in a communication network
US7017021B2 (en) High-speed message forwarding lookups for arbitrary length strings using pipelined memories
US7356033B2 (en) Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures
EP2040184B1 (en) Database and database processing methods
US7089240B2 (en) Longest prefix match lookup using hash function
US20050157712A1 (en) Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
KR100586461B1 (en) Method, Hardware Architecture and Recording Medium for Searching IP Address by Using Pipeline Binary Tree
US6804230B1 (en) Communication device with forwarding database having a trie search facility
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
EP1063827A2 (en) Method for address lookup
US7739445B1 (en) Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device
WO2002098055A2 (en) Load balancing in ip address lookup
US7299317B1 (en) Assigning prefixes to associative memory classes based on a value of a last bit of each prefix and their use including but not limited to locating a prefix and for maintaining a Patricia tree data structure
US20040210588A1 (en) Methods and apparatus for address lookup
SK3692000A3 (en) Method and system for fast routing lookups
WO2001063852A1 (en) A method and arrangement for constructing, maintaining and using lookup tables for packet routing
JP3660311B2 (en) Table search apparatus and method, program, and recording medium
KR100378599B1 (en) Routing Table Lookup Using Indirected RAM Indexing
JP2005117208A (en) Table searching apparatus
JP2002305539A (en) Associative memory and method for retrieving path table

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: C1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: C1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

CFP Corrected version of a pamphlet front page

Free format text: REVISED ABSTRACT RECEIVED BY THE INTERNATIONAL BUREAU AFTER COMPLETION OF THE TECHNICAL PREPARATIONS FOR INTERNATIONAL PUBLICATION

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP