Apparatus and accompanying methods, using a trie-indexed hierarchy forest, for storing wildcard-based patterns and, given an input key, retrieving, from the forest, a stored pattern that is identical to or more general than the key
First Claim
1. A memory containing a stored trie-indexed forest having hierarchically-related pattern values stored therein and for access therefrom by a program executing on a computer, said pattern values having at least one wildcard therein, the memory comprising:
- search and pattern structures formed of branch and pattern nodes, respectively, each of said branch and pattern nodes being defined by a memory structure for each such node;
said search structure having a plurality of linked branch nodes collectively defining a binary search trie which indexes into a subset of the pattern nodes, wherein the memory structure for each of said branch nodes, along a search path containing said node, has an address stored therein to a next one of said nodes situated on said path, said next one node being either a different one of the branch nodes or a given one of the subset of the pattern nodes; and
said pattern structure having a set of pattern nodes, wherein the memory structure for each of said pattern nodes stores a corresponding one of the pattern values and at least one of said pattern values has said wildcard therein.
2 Assignments
0 Petitions
Accused Products
Abstract
A technique, specifically apparatus and accompanying methods, which utilizes a trie-indexed hierarchy forest ("rhizome") that accommodates wildcards for retrieving, given a specific input key, a pattern stored in the forest that is identical to or subsumes the key. The rhizome contains a binary search trie and a hierarchy forest. The search trie provides an indexed path to each unique, most specific, pattern stored in a lowest level of the hierarchy forest and also possibly to increasingly general patterns at higher levels in the pattern hierarchy. The hierarchy forest organizes the patterns into nodal hierarchies of strictly increasing generality. For use as a packet classifier, the rhizome stores wildcard-based packet classification patterns at separate corresponding pattern nodes, along with, corresponding "reference" fields associated therewith. Operationally, as each different queue is established or removed, a corresponding classification pattern is either inserted into or removed from the rhizome. A search key is formed for each packet, typically by concatenating classification fields, e.g., source and destination addresses and source and destination port designations, appearing in a header of the packet. The search key is then applied to the rhizome to determine whether that key exists therein, by virtue of either matching an identical classification pattern or being completely subsumed within a more general pattern stored therein. When such a classification is found, the classifier returns the contents of the associated reference field, which for scheduling, is a designation of a transmission queue to which the packet is to be directed.
122 Citations
130 Claims
-
1. A memory containing a stored trie-indexed forest having hierarchically-related pattern values stored therein and for access therefrom by a program executing on a computer, said pattern values having at least one wildcard therein, the memory comprising:
-
search and pattern structures formed of branch and pattern nodes, respectively, each of said branch and pattern nodes being defined by a memory structure for each such node; said search structure having a plurality of linked branch nodes collectively defining a binary search trie which indexes into a subset of the pattern nodes, wherein the memory structure for each of said branch nodes, along a search path containing said node, has an address stored therein to a next one of said nodes situated on said path, said next one node being either a different one of the branch nodes or a given one of the subset of the pattern nodes; and said pattern structure having a set of pattern nodes, wherein the memory structure for each of said pattern nodes stores a corresponding one of the pattern values and at least one of said pattern values has said wildcard therein. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer readable storage medium containing a stored trie-indexed forest having hierarchically-related pattern values stored therein, said pattern values having at least one wildcard therein, the medium comprising:
-
search and pattern structures formed of branch and pattern nodes, respectively, each of said branch and pattern nodes being defined by a memory structure for each such node; said search structure having a plurality of linked branch nodes collectively defining a binary search trie which indexes into a subset of the pattern nodes, wherein the memory structure for each of said branch nodes, along a search path containing said node, has an address stored therein to a next one of said nodes situated on said path, said next one node being either a different one of the branch nodes or a given one of the subset of the pattern nodes; and said pattern structure comprising a set of pattern nodes, wherein the memory structure for each of said pattern nodes stores a corresponding one of the pattern values and at least one of said pattern values has said wildcard therein. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A method responsive to an input key, for use with a data structure having pattern values stored therein, said pattern values having at least one wildcard therein, in retrieving one of said pattern values from said data structure which identically matches or subsumes the key,
wherein said data structure has a search trie and a pattern set, said search trie being formed of a plurality of branch nodes organized into a binary search trie extending from a root node therein to said pattern set, said pattern set having a plurality of pattern nodes, each of the pattern nodes having a different corresponding one of the pattern values associated therewith and at least one of said pattern values has said wildcard therein; the method comprises the steps of; traversing along a path through the search trie in order to reach one of the pattern nodes in said pattern set, the path being defined by the input key and pivot bit values associated with ones of said branch nodes; and determining whether the input key either matches or is subsumed by a pattern value associated with said one pattern node. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43)
-
44. Apparatus, responsive to an input key, for use in a computer system, having a processor, for retrieving a pattern value from a data structure having at least one stored wildcard-based pattern value therein such that the retrieved pattern identically matches or subsumes the key, wherein the apparatus comprises:
-
the processor, and a memory having executable instructions and a data structure stored therein;
the data structure having a search trie and a pattern set, said search trie being formed of a plurality of branch nodes organized into a binary search trie extending from a root node therein to said pattern set, said pattern set having a plurality of pattern nodes, each of the pattern nodes having a different corresponding one of the pattern values associated therewith and at least one of pattern values has a wildcard therein; andwherein the processor, in response to the stored instructions; traverses along a path through the search trie in order to reach one of the pattern nodes in said pattern set, the path being defined by the input key and pivot bit values associated with ones of said branch nodes; and determines whether the input key either matches or is subsumed by a pattern value associated with said one pattern node. - View Dependent Claims (45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61)
-
-
62. A memory containing a stored trie-indexed forest having hierarchically-related pattern values stored therein and for access therefrom by a program executing on a computer, said pattern values having wildcards therein, the memory comprising:
-
search and hierarchy structures formed of branch and pattern nodes, respectively, each of said branch and pattern nodes being defined by a memory structure for each such node; said search structure having a plurality of linked branch nodes collectively defining a binary search trie which indexes into a subset of the pattern nodes, wherein the memory structure for each of said branch nodes, along a search path containing said node, has an address stored therein to a next one of said nodes situated on said path, said next one node being either a different one of the branch nodes or a given one of the subset of the pattern nodes; and said hierarchy structure having linkages amongst said pattern nodes so as to define hierarchical nodal relationships occurring among the pattern values associated therewith, wherein the memory structure for each of said pattern nodes stores a corresponding one of the pattern values and an address to the memory structure, for another one of the pattern nodes, which stores a differing one of the pattern values having a wildcard therein and situated at a next higher level of an associated hierarchy. - View Dependent Claims (63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74)
-
-
75. A computer readable storage medium containing a stored trie-indexed forest having hierarchically-related pattern values stored therein, said pattern values having wildcards therein, the medium comprising:
-
search and hierarchy structures formed of branch and pattern nodes, respectively, each of said branch and pattern nodes being defined by a memory structure for each such node; said search structure having a plurality of linked branch nodes collectively defining a binary search trie which indexes into a subset of the pattern nodes, wherein the memory structure for each of said branch nodes, along a search path containing said node, has an address stored therein to a next one of said nodes situated on said path, said next one node being either a different one of the branch nodes or a given one of the subset of the pattern nodes; and said hierarchy structure having linkages amongst said pattern nodes so as to define hierarchical nodal relationships occurring among the pattern values associated therewith, wherein the memory structure for each of said pattern nodes stores a corresponding one of the pattern values and an address to the memory structure, for another one of the pattern nodes, which stores a differing one of the pattern values having a wildcard therein and situated at a next higher level of an associated hierarchy. - View Dependent Claims (76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87)
-
-
88. A method responsive to an input key, for use with a data structure having hierarchically-related pattern values stored therein, said pattern values having wildcards therein, in retrieving one of said pattern values from said data structure which identically matches or subsumes the key,
wherein said data structure has a search trie and a hierarchy forest, said search trie being formed of a plurality of branch nodes organized into a binary search trie extending from a root node therein to said hierarchy forest, said hierarchy forest having a plurality of pattern nodes, each having a different corresponding one of the pattern values associated therewith, and at least one hierarchy of pattern nodes with associated pattern values of increasing generality; the method comprises the steps of; traversing along a path through the search trie in order to reach one of the pattern nodes in said hierarchy forest, the path being defined by the input key and pivot bit values associated with ones of said branch nodes; and determining whether the input key either matches a pattern value associated with said one pattern node or is subsumed by a different pattern value associated with a different one of pattern nodes situated at an increasingly higher level of a hierarchy containing said one pattern node, so as to locate a desired one of the pattern values, stored in the hierarchy, that either identically matches or most specifically subsumes the input key. - View Dependent Claims (89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109)
-
110. Apparatus, responsive to an input key, for use in a computer system, having a processor, for retrieving a pattern value from a data structure having stored wildcard-based pattern values therein such that the retrieved pattern identically matches or subsumes the key, wherein the apparatus comprises:
-
the processor, and a memory having executable instructions and a data structure stored therein;
the data structure having a search trie and a hierarchy forest, said search trie being formed of a plurality of branch nodes organized into a binary search trie extending from a root node therein to said hierarchy forest, said hierarchy forest having a plurality of pattern nodes, each having a different corresponding one of the pattern values associated therewith, organized into at least one hierarchy of pattern nodes with associated pattern values of increasing generality wherein at least one of the pattern values in the hierarchy contains a wildcard; andwherein the processor, in response to the stored instructions; traverses along a path through the search trie in order to reach one of the pattern nodes in said hierarchy forest, the path being defined by the input key and pivot bit values associated with ones of said branch nodes; and determines whether the input key either matches a pattern value associated with said one pattern node or is subsumed by a different pattern value associated with a different one of pattern nodes situated at an increasingly higher level of a hierarchy containing said one pattern node, so as to locate a desired one of the pattern values, stored in the hierarchy, that either identically matches or most specifically subsumes the input key. - View Dependent Claims (111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130)
-
Specification