A trie searching technique employs entries each including a pointer to the next block in the search and a status indication and also including start and end indexes which define a selected section of the trie key identifying an entry within the block identified by the pointer. Thereby the program for selection of the search key is defined by the trie entries themselves, enabling a general variety of search selections and jumps to avoid any unnecessary parts of the trie search key.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method of performing a trie search in a look-up database which includes a multiplicity of entries each of which includes a pointer, the method comprising: providing a trie search key; performing a plurality of stages of a search, wherein each stage comprises accessing a data entry including a search code and a pointer which points to a block of entries for a next stage of the search; and accessing a selected section of said trie search key, said selected section defining a particular entry in said block of entries; wherein said accessing step comprises identifying a position of said selected section within said trie search key by means of said search code in said data entry.
2. A method according to claim 1 wherein said search code comprises fields defining the start and finish of the said selected section of the said trie search key for said next stage of the search.
3. A search apparatus comprising: a look-up database comprising a multiplicity of entries each of which includes an address pointer and a status indication, wherein said status indication indicates whether said pointer identifies a block of entries in the next stage of the search; and means for providing a trie key of which sections each define a particular entry within a block of entries defined by a pointer; wherein each of said entries includes a search code which comprises a start index and an end index, wherein said start index indicates the commencement of a selected section of the trie key for said next stage of the search and said end index indicates the end of said selected section.
4. A multi-port network switch comprising: a multiplicity of ports for receiving and sending addressed data packets; a look-up database; and a search engine for performing a trie search in said database to retrieve, in response to a trie search key, forwarding data identifying a port from which an addressed packet is to be forwarded; wherein said look-up database has a trie search structure comprising a multiplicity of entries each of which includes an address pointer which identifies a respective group of entries and wherein each of said entries in said multiplicity includes a search code which indicates the length and position of a selected section of said trie search key, said selected section identifying in combination with said address pointer an entry within said respective group of entries.
5. A trie search apparatus comprising: a root node; a multiplicity of trie blocks including at least a first trie block, a second trie block and a third trie block; and a trie search key; wherein: said root node includes a start index and an end index, said start index and said end index defining a start and a finish of a first section of said trie search key, and a pointer to said first trie block; each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a respective end index and a respective pointer; said first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index and a respective end index defining a second section of said trie search key and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index defining a third section of said trie search key and a respective pointer identifying said third trie block; and said third section of said trie search key identifies an entry in said third trie block.
6. A trie search apparatus comprising: a root node; a multiplicity of trie blocks including at least a first trie block and a second trie block; and a trie search key; wherein: said root node includes a start index and an end index, said start index and said end index defining a start and a finish of a first section of said trie search key, and a pointer to said first trie block; each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a respective end index and a respective pointer; said first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index and a respective end index defining a second section of said trie search key and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index defining a third section of said trie search key and a respective pointer identifying said third trie block, said third section of said trie search key not being contiguous with said second section of said trie search key; and said third section of said trie search key identifies an entry in said third trie block.
7. A trie search apparatus comprising: a root node; a multiplicity of trie blocks including at least a first trie block and a second trie block; a secondary database containing result entries; and a trie search key; wherein: said root node includes a start index and an end index, said start index and said end index defining a start and a finish of a first section of said trie search key, a status indication and a pointer to said first trie block; each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a respective end index, a status indication and a respective pointer, said status indication indicating whether the respective pointer identifies another trie block or a result entry in said secondary database; said first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index and a respective end index defining a second section of said trie search key and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index defining a third section of said trie search key and a respective pointer identifying said third trie block; and said third section of said trie search key identifies an entry in said third trie block.
8. A trie search apparatus comprising: a trie database including a root node and a multiplicity of trie blocks including at least a first trie block, a second trie block and a third trie block; a secondary database containing result entries; and a trie search key; wherein: said root node includes a start index and an end index, said start index and said end index defining a start and a finish of a first section of said trie search key, a status indication and a pointer to said first trie block; each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a respective end index, a status indication and a respective pointer, said status indication indicating whether the respective pointer identifies another trie block or a result entry in said secondary database; said first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index and a respective end index defining a second section of said trie search key and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index defining a third section of said trie search key and a respective pointer identifying said third trie block, said third section of said trie search key not being contiguous with said second section of said trie search key; and said third section of said trie search key identifies an entry in said third trie block.
9. A trie search apparatus comprising: a root node; a multiplicity of trie blocks including at least a first trie block and a second trie block; and a trie search key; wherein: said root node defines a start and a finish of a first section of said trie search key, and points to said first trie block; each of said multiplicity of the blocks includes a multiplicity of entries each including a respective start index and a respective pointer; said first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index, which defines a commencement of a second section of said trie search key, and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index, which defines the commencement of a third section of said trie search key, and a respective pointer identifying said third trie block; and said third section of said trie search key identifies an entry in said third trie block.
10. A trie search apparatus as in claim 9 , wherein said second section of said trie search key is not contiguous with said third section of said trie search key.
11. A trie search apparatus comprising: a root node; a multiplicity of trie blocks including at least a first trie block, a second trie block and a third trie block; a secondary database containing result entries; and a trie search key; wherein: said root node defines a start and a finish of a first section of said trie search key, and points to said first trie block; each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a status indication and a respective pointer, said status indication indicating whether said respective pointer identifies another trie block or a result entry in said secondary database; said first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index which defines a commencement of a second section of said trie search key, and a respective pointer, which identifies said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index, which defines a commencement of a third section of said trie search key, and a respective pointer, which identifies said third trie block; and said third section of said trie search key identifies an entry in said third trie block.
12. A trie search apparatus as in claim 11 wherein said third section of said search key is not contiguous with said second section of said trie search key.
13. A trie search apparatus comprising: a multiplicity of trie blocks including at least a first trie block, a second trie block and a third trie block; and a trie search key; wherein: a first section of said trie search key identifies an entry in said first trie block; each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a respective end index and a respective pointer; at least one entry in said first block has a respective start index and a respective end index defining a second section of said trie search key and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index defining a third section of said trie search key and a respective pointer identifying said third trie block; and said third section of said trie search key identifies an entry in said third trie block.
14. A trie search apparatus comprising: a multiplicity of trie blocks including at least a first trie block and a second trie block; and a trie search key; wherein: said root node includes a start index and an end index, said start index and said end index defining the start and finish of a first section of said trie search key, and a pointer to said first trie block; each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a respective end index and a respective pointer; a first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index and a respective end index defining a second section of said trie search key and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index defining a third section of said trie search key and a respective pointer identifying said third trie block, said third section of said trie search key not being contiguous with said second section of said trie search key; and said third section of said trie search key identifies an entry in said third trie block.
15. A trie search apparatus comprising: a multiplicity of trie blocks including at least a first trie block and a second trie block; a secondary database containing result entries; and a trie search key; wherein: each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a respective end index, a status indication and a respective pointer, said status indication indicating whether the respective pointer identifies another trie block or a result entry in said secondary database; said first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index and a respective end index defining a second section of said trie search key and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index defining a third section of said trie search key and a respective pointer identifying said third trie block; and said third section of said trie search key identifies an entry in said third trie block.
16. A trie search apparatus as in claim 15 wherein said third section of said trie search key is not contiguous with said second section of said trie search key.
17. A trie search apparatus comprising: a multiplicity of trie blocks including at least a first trie block and a second trie block and a trie search key; wherein: a first section of said trie search key points to said first trie block; each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index and a respective pointer; at least one entry in said first block has a respective start index, which defines the commencement of a second section of said trie search key, and a respective pointer identifying said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index and a respective end index, which defines the commencement of a third section of said trie search key, and a respective pointer identifying said third trie block; and said third section of said trie search key identifies an entry in said third trie block.
18. A trie search apparatus as in claim 17 wherein said second section of said trie search key is not contiguous with said third section of said trie search key.
19. A trie search apparatus comprising: a multiplicity of trie blocks including at least a first trie block, a second trie block and a third trie block; a secondary database containing result entries; and a trie search key; wherein: each of said multiplicity of trie blocks includes a multiplicity of entries each including a respective start index, a status indication and a respective pointer, said status indication indicating whether said respective pointer identifies another trie block or a result entry in said secondary database; a first section of said trie search key identifies an entry in said first trie block; at least one entry in said first block has a respective start index which defines a commencement of a second section of said trie search key, and a respective pointer, which identifies said second trie block; said second section of said trie search key identifies an entry in said second trie block; at least one entry in said second block has a respective start index, which defines a commencement of a third section of said trie search key, and a respective pointer, which identifies said third trie block; and said third section of said trie search key identifies an entry in said third trie block.
20. A trie search apparatus as in claim 19 wherein said second section of said search key is not contiguous with said first section of said trie search key.
21. A trie search apparatus as in claim 20 wherein said second section of said search key is not contiguous with said third section of said trie search key.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
December 8, 2000
July 13, 2004
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.