|Publication number||US7840696 B2|
|Application number||US 10/650,154|
|Publication date||Nov 23, 2010|
|Filing date||Aug 28, 2003|
|Priority date||Jul 25, 2003|
|Also published as||CA2532259A1, EP1656758A2, EP1656758A4, US7774497, US20050021491, US20080052300, WO2005013532A2, WO2005013532A3|
|Publication number||10650154, 650154, US 7840696 B2, US 7840696B2, US-B2-7840696, US7840696 B2, US7840696B2|
|Original Assignee||Broadcom Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (23), Non-Patent Citations (3), Referenced by (8), Classifications (15), Legal Events (6)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application claims the benefit of Provisional Application Ser. No. 60/490,165 filed Jul. 25, 2003, entitled “Apparatus and Method for Classifier Identification,” which is expressly incorporated herein by reference.
The present invention relates generally to a method and system for packet classification, and more particularly to such methods and systems that efficiently classify packets.
Packet classification is a necessary precursor to providing security and Quality of Service (QoS) guarantees in advanced network applications. Packets are pieces of information transmitted over a packet-switched network. In addition to data, a packet contains the destination address that defines where the packet is to be delivered and frequently the source address, which indicates where it originated (this address information is typically contained in a “packet header”). Generally, packet classification relates to filtering packets that are to be processed differently from other packets in a network, and then processing those packets in a proscribed way.
Packet classifiers are used in routers, switches, and similar devices to perform these functions of filtering and processing packets. Packet classifiers receive packets to be routed and compare them to a list maintained by a system administrator. If a match is made, the packet is processed in a prescribed manner.
A common requirement in packet classification is for routers to classify packets based on information in packet headers. A packet header contains several fields that contain a variety of information, such as the source and destination addresses, protocols, flags, and type of service. Packets are classified into equivalence classes called flows, which are defined by rules. For example, a flow might be a set of packets that have source addresses that start with the prefix bits S, protocols that are TCP, and that are to be sent to the server port for web traffic. Each flow can have an additional processing instruction associated with it. Examples of instructions include sending a packet to a specific queue, dropping the packet, or copying the packet.
Packet classification must perform at rates approaching 15 million-packets/sec in 10 gigabit/sec Ethernet networks. For a typical packet classifier in a worst-case scenario, each packet must be compared to each rule before a result can be determined. Given “N” rules, this would result in 15ŚN million comparisons that must be made per second by the packet classifier. Presently, N typically is on the order of 1000. However, as the demands on the Internet become more complex, N could approach 100,000 in the near future. Such a large number of rules would require 1.5 trillion comparisons per second in a typical packet classifier. Additionally, the comparisons used in packet classification are non-trivial consisting of equality and range checking across a plurality of header fields.
One embodiment of the invention is a method for classifying an incoming packet. Such a method can be used, for example, in IPv4 or IPv6 packet matching. The method includes maintaining a database associated with patterns of fields, where the fields can be network addresses. According to one aspect of the invention, the database can be maintained in a trie data structure. The database can be developed by mapping each pattern to a unique numeric identifier. The number of unique numeric identifiers is equal to the number of patterns, and the size of each unique numeric identifier is substantially smaller than the field of each pattern. The database can be further developed by determining a range of one or more of the unique numeric identifiers to be associated with each pattern. The range for each pattern can be bounded by a minimum unique numeric identifier and a maximum unique numeric identifier. The method also includes using a field of the incoming packet to determine an associated identifier for that field, where the associated identifier is equal to one of the unique numeric identifiers. The associated identifier can then be matched with one or more of the ranges for the patterns, and the method can then determine how to process the incoming packet.
Another embodiment of the invention is an apparatus for packet classification that is uniquely suited to the method of the first embodiment. In this embodiment, a plurality of simple processing elements are organized and controlled in such a manner as to effect packet classification operations under programmed control. One capability of this embodiment is the enabling of numerical range operations—i.e. determining that a field lies numerically between two target values.
Yet another embodiment of the invention provides a mechanism that utilizes data in a classification record of an incoming packet to select a classification program segment that is applied directly to the classification record. This mechanism has two features. First, it features maintaining a first set of binary patterns and a second set binary patterns. In this embodiment, one of the sets of binary patterns can be used during operation for packet classification, and the other set of binary patterns can be updated by a system administrator. The two sets of binary patterns can then be switched in order to provide for seamless updating of patterns. Second, it features selection of a segment of the classification program with respect to data contained in the packet header, or classification record.
Other embodiments of the invention feature systems configured to perform the methods set forth above.
A. Methods for Classifying Packets
The embodiments of the invention provide for efficient packet classification in a network. The invention utilizes a method of minimizing the number of comparisons by remapping long fields (such as network addresses) to shorter numeric identifiers. The numeric identifiers are used in comparisons in lieu of the full fields. By leveraging a decrease in the number of computations required, power and cost can be saved, and the size of the footprint of the packet classifier can be decreased for a given number of rules.
According to one aspect of the invention, a method and system for packet classification is provided. In this embodiment, a packet classifier maintains a set of rules to be enforced. Each rule has a pattern of a field contained within it. The fields (such as addresses) can be matched with an address found within the packet header of an incoming packet. In one embodiment, a unique numeric identifier, called a classifier identifier, is used to identify each of the fields in the set of rules to be enforced. Classifier identifiers are assigned in accordance with the number of patterns contained within the rule set (that is, each pattern is assigned a unique classifier identifier). Accordingly, given “N” patterns, which can be maintained in rules, N classifier identifiers will be assigned. Specifically, each classifier identifier assignment is derived from the address (or addresses) associated with the rule, which is described in greater detail below. The fields can be, in one embodiment, network addresses, although the invention is not limited in application to network addresses.
An independent data structure is also maintained, and this data structure is used to provide an associated identifier for each independent field (such as an address) of the packet header of an incoming packet. Block 10 depicts this act. This act can be considered a preprocessing step to packet classification per se.
The associated identifier(s) for the incoming packet are then compared to the ranges assigned to patterns in the first database. If the associated identifier falls within one or more of these ranges, a priority computation module can be used to determine which of the rules will be enforced.
1. Remapping Patterns
As set forth in
In typical classification applications (in routers and switches) the destination addresses of incoming packets require examination to determine where the packet is to be sent next. The mechanisms for achieving this examination are the mechanisms on which the current embodiment builds to determine the unique classifier identifiers for patterns. There are many such mechanisms that are used for examination of destination addresses of incoming packets, including software data structures such as the familiar trie and hardware mechanisms such as TCAMs. Furthermore, routers and switches often perform a source address validity check, which generally requires a similar look-up as is the case with the destination addresses.
As an example, assume a packet classifier maintains a database of 1024 rules. At most, the rule database can have 1024 different address prefixes—one for each rule. No matter how long the network addresses are in the rule database, the database can simply refer to each of the address prefixes as “0-1023.” That is, one number is assigned to each address prefix. The required number of bits to refer to each of these network addresses is 10 (i.e., 2^10=1024).
During operation, a uniquely selected 10-bit number (called an associated identifier) is associated with the destination prefix of an incoming packet in the destination address lookup structure. The same is done with respect to the source address lookup structure. For IPv4 addresses, the required number of bit comparisons drop from 64 bits down to 20 bits—a significant gain of 44 bits. And for IPv6 addresses, the required comparisons drop from 256 bits to 20 bits.
With present bandwidth rates approaching 15 million-packets/sec in Ethernet networks, if N=1024 rules and N=1024 patterns, a typical packet classifier must perform approximately 15 billion-classifications/sec. Each classification is performed over several fields that usually include the destination and source addresses. The number of individual bits to be examined in (for instance) IPv4 destination and source addresses is 32 bits each, or 64 bits in total. Using the present embodiment of the invention, however, if N=1024 rules and N=1024 patterns, the comparisons per rule are reduced from 64 bits to 20 bits. This represents a gain of almost 68% over these important fields. For IPv6 the gain is of the order of 92% (256 address bits down to 20).
The process by which classifier identifiers are assigned to patterns will now be described. Addresses contained in the rule set (i.e., in the patterns) are assigned classifier identifiers using this process. In addition, the addresses found within the packet headers of incoming packets are also associated with associated identifiers using a look-up procedure. The process by which classifier identifiers can be assigned to addresses contained within the rule set will be described first. The addresses contained within the rule set will be referred to as “patterns” throughout this specification, and the addresses contained within packet headers of incoming packets will be referred to as “strings.”
After a user defines a rule set, a database is developed to assign a unique numeric identifier to each pattern in the rule set. The unique numeric identifier is smaller in length than the length of each pattern. In one embodiment, the database is a trie developed using the patterns of the rule set. The trie is created before any operation of the packet classifier begins on incoming packets.
The process uses a binary decision trie. Each pattern is analyzed from left to right (that is, highest bit first). Nodes 100, 110, 120, 130, 140, and 150 are represented by boxes. The numbers in the nodes are classifier identifiers. Nodes are connected to each other by decision paths 105, 115, 125, 135, 145, and 155. Each decision path has an associated binary number. The trie is created sequentially from left to right, starting with the pattern having the lowest value and ending with the pattern having the highest value. For example, the first decision path, if applicable, branches from a root node to a child node on the left hand side. This decision path is associated with the highest bit equaling “0” for all of the patterns. Therefore, all patterns that begin with “0” would traverse this decision path. Before traversal, the nodes do not have classifier identifiers assigned to them. The pattern with the lowest numerical value is the first to traverse the trie.
Node 100 in
Node 110 is assigned classifier identifier “0” because pattern “001” does not terminate at node 110. In accordance with the previous decision step, pattern “001” traverses decision path 115 and terminates at node 120. It should be noted that parent nodes that have singular children nodes are removed for illustrative purposes, and the parent decision paths reflect this abbreviation. Thus, decision path 115 has the binary string “01” associated with it. Pattern “001” runs out of bits at node 120 and terminates. Accordingly, node 120 is assigned classifier identifier “1,” which uniquely identifies pattern “001.”
A similar traversal occurs with the next pattern “010,” which is the smallest remaining pattern. Pattern “010” traverses through nodes 100, 110, and 140 before terminating in node 130. Node 130 is therefore assigned classifier identifier “2.” Similar traversals occur exhaustively until all patterns have been assigned classifier identifiers. For example, pattern “011” traverses nodes 100, 110, and 140 before terminating in node 150. Node 150 is therefore assigned classifier identifier “3.” Finally, pattern “111” traverses through node 100 before terminating in node 160. Node 160 is therefore assigned classifier identifier “4.”
In the example of
The patterns represent the subnet mask of each 32-bit IP address. For example, the pattern for 126.96.36.199/8 is the first eight bits of the address (i.e., “10000000”). Similarly, the pattern for 188.8.131.52/8 is the first eight bits of the address (i.e., “10010000”).
As with the example of
Nodes assigned the “0” classifier identifier that have only singular children nodes have been removed from
After construction of the trie data structure, it is traversed in order to assign appropriate classifier identifiers to each pattern. The method of traversal can be the well-known depth-first traversal algorithm. This traversal provides a mechanism that disambiguates address predicates in rule matching and allows for a number of mechanisms that enables checking ranges of classifier identifiers for each pattern.
The execution of a depth-first pre-order traversal of the trie represented in
The root node (205) is not a terminal node, so it is assigned the number “0.” The set of the root node's children is determined. This set will have 0, 1 or 2 members—by convention. When it has 2 members the first member is the numerically lesser of the two members. In
The set of children of node 215 contains nodes 220 and 250. We visit the “first” member of this set (node 220). Node 220 is a terminal node and is the first encountered, so it is assigned the number “1,” and the set of its children (nodes 230 and 240) is then examined.
Node 230 is the first of node 220's children, and node 230 is a terminal node. Because it is the second terminal node encountered, it is assigned the number “2” (indicating that it is the second terminal node encountered in the depth-first traversal). Node 230 has no children, so this path terminates.
Node 240 is the second of node 220's children, and is also a terminal node. Because it is the third terminal node encountered, it is assigned the number “3.” Node 240 has no children, so this path terminates.
Returning to node 215, the second of its children has yet to be enumerated. Node 215's second child is node 250, and it is the fourth terminal node encountered and hence is assigned “4.”
In the example of
IP addresses can be contained within other addresses. This also occurs in the patterns of the rule set. In the example of
These criterion are satisfied by using the following method to determine the pattern range. The classifier identifier assigned to the pattern is chosen to be the lower bound for the pattern range. The upper bound is the maximum classifier identifier beneath it (i.e., the children nodes beneath it). This ensures that more specific patterns under a general pattern will also match the general pattern even though the classifier identifier corresponds to the more specific pattern (e.g., if other fields in the pattern do not match).
Ranges are used to determine if a string of an incoming packet applies to more than one rule. Therefore, when a range is assigned to each of the patterns, it can be important that the range contains not only the classifier identifier assigned to the pattern, but also the classifier identifiers of its children nodes. The previous embodiment uses the classifier identifier as the lower bound of the range of the associated pattern, although nothing precludes the classifier identifier as being the upper bound of the range of the pattern. Any scheme that captures this functionality is within the scope of the invention.
The following code, when executed, can be used to enumerate the trie with classifier identifiers. This code is exemplary, and such a trie can be created by using other code or methods as well.
2. Operation for Classifying Packets
Referring again to
When a packet arrives at the ingress of a packet classifier, the packet contains a packet header that includes address information. In operation of this embodiment, incoming packets are received by a pre-processor, where the packet header is stripped from the packet. Network addresses contained within the packet header are identified. An attempt is then made to associate an associated identifier to each of the network addresses in the header by traversing a second database, which can, but need not be, similar to those discussed above in connection with
The second step 10 in
The third step 15 in
The last step 20 involves processing the packet in accordance with the matched pattern. That is, if the rule associated with the matched pattern instructs the packet classifier to drop the packet, then the packet gets dropped.
B. Classifier Identifier Hardware
The pattern memories 420, 430 store the patterns for a particular system configuration. Software drivers (not shown) configure the pattern memories to the classifier engine's 400 template 410 for a given set of rules. Two pattern memories, pattern A 420 and pattern B 430 are maintained in the classification engine 400 to enable seamless updating of the patterns. Either the A or the B patterns 420, 430 can be used to feed the match processing unit 440 at any given time. This allows the other of the patterns 420, 430 to be updated via a processor interface. Once updated, the processor can command the classification engine 400 to switch sets.
In operation, the preprocessor 450 delivers a classification record to the match processing unit 440. The classification record typically contains packet header information, including, for instance, fields such as addresses. Upon receiving instructions from the template 410, the match processing unit 440 compares the designated field(s) in the classification record to the A patterns 420 and sends the classification result to the post processor 460. The post-processing component 460 encodes the highest priority rule that the match processing unit 440 determined for a given header for a given pattern 420, 430. To summarize, packets are received by the preprocessor 450. The packets are then matched with patterns in the classification engine 400, and the matched packets are then processed by a postprocessor in accordance with the rules associated with the matched pattern.
1. Classification Record
The classification record is produced from the packet header of the incoming packet by the preprocesser 450. An exemplary classification record 500 having 128 bits is shown in
Once the classification record is formatted, the operations supported over the various fields are determined.
Operation 720 refers to the operation to be performed on the operand. Common operations can include equality, inequality, greater than, less than, range, and masked equality checking. Equality checking tests whether the bits in the field are identical to a pattern. An inequality check tests whether the field does not match a pattern. A greater than check tests if the field is greater than a specified number (i.e., the pattern). A less than check tests whether a field is less than a pattern. A masked equality check is similar to the equality test except for a preliminary step. The masked equality check first performs a bitwise Boolean AND operation with a first pattern before it tests equality with a second pattern. The operation range check is the combination of greater than and less than operations. It tests whether a field is between two patterns.
The column marked “Notes” 750 in
In the row 758, the corresponding Note 778 instructs the user that, for the operation “range” to be performed on the source port field, 32 bits are required. The operation “Range” tests whether an operand (e.g., the SA field 758) is between two numbers. Ranges require an upper bound (16 bits in length) and a lower bound (16 bits in length) to be performed on (for instance) the source port field 758.
2. Classification Result
When the classification engine 400 reaches a result of the match, this result, called the classification result, is written into the classification record. As depicted in
The set field 920 is five bits in length. The set field 920 indicates which filter set has matched. A filter set is a group of up to 512 rules (in this exemplary description). Filter sets are separated by a special instruction in the template called the rule separator.
This embodiment of the packet classifier maintains a database of rules. Rules are prioritized by a network manager (or protocol) in a rule database such that when a packet arrives at the packet classifier, rules are applied in a predetermined sequence. Thus, if a packet header matches two or more rules, the rule with the highest priority is applied.
The filter field 930 is nine bits in length in this embodiment. The filter field 930 can be used to report the result of a priority arbitration. For example, when the classification engine matches the associated identifier associated with an incoming packet to one or more rules, a question of priority arises. The classification engine (per the configuration set by the network manager) determines which filter is to be applied to the incoming packet. The filter field 930 is the result of the priority determination and indicates the highest priority filter that matched (if any).
3. Instruction Set
Some of the common operations include “Field Separator”, “Less than or Equal to”, “Greater than or Equal to”, “Equal to”, “Rule Separator”, “Less than or Equal to Priority”, “Greater than or Equal to Priority”, and “Equal to Priority.”
The Header Bit Select (HeaderBitSel) field 1020 selects a bit from the classification record as the source of one of the operands for the instruction. Each of the 512 pattern bits is provided as the source of the second operand with one bit corresponding to each of 512 filters that are compared simultaneously.
4. Synthesized Operations
One can synthesize other operations from this basic set, which may be useful to a particular application. For example, a Boolean “OR” instruction can be synthesized by a greater than or equal to (GE) instruction with Header Bit Select (HeaderBitSel) selecting the bits to be OR'd, where the patterns for successive OR instructions are all zeros except for the last OR instruction in the sequence, which must have a pattern of all ones.
The classification engine of the present embodiment can be superior in nature to a Ternary Content Addressable Memory (TCAM) used in packet classification for several reasons. In particular, the ability to express the Boolean logic “OR” operation cannot be done in a TCAM without using multiple TCAM entries. Also, the ability to apply a mask to a field as opposed to requiring one to be applied to every bit leads to more efficient utilization of pattern memory. Furthermore, the present embodiment has a great ability to support ranges. For example, a common port expression is “greater than 1023” in rule sets. The implementation of a rule incorporating this port expression on a TCAM would require 6 TCAM entries.
5. Classification Program Structure (Template)
6. Field Compression
The task of associating a forwarding path with a destination prefix or a DMAC address is a special (restricted) form of classification, which is typically a subset of the advanced N-tuple classification supported by the classification engine. In another embodiment of the invention, field compression is implemented as described above in section A. The principals described in section A enable a packet classifier to take advantage of field compression of the fields to be classified, as well as providing a mechanism to expand the potential number of rules supported by the system. The technique described in section A is outlined as it applies to field compression for completeness.
As the preprocessor executes its lookup functions (e.g., in a Longest-prefix Match in one embodiment), it populates the classification records with associated identifiers. For IPv4 addresses the required representation in the classification record (that is, of the associated identifier) drops from 64 bits down to 20 bits—a significant gain of 44 bits. For MAC addresses the required representation in the classification record drops from 96 bits down to 20 bits—an even more significant gain of 76 bits. And for IPv6 addresses, the required representation drops from 256 bits to 20 bits. This substitution is called field compression.
Some optimizations can be executed on templates to provide a data dependent reduction in template size. If the pattern for an LE (less than or equal to) instruction is equivalent to that of a GE (greater than or equal to) instruction for the same header bit, then the pair may be replaced by an EQ (equal to) instruction with the same pattern. If the pattern associated with an LE instruction is all ones, then that LE instruction may be eliminated. If the pattern associated with a GE instruction is all zeroes, then that GE instruction may be eliminated. If there is a MASK instruction with all zero pattern bits, then the MASK and its corresponding DATA instructions can be eliminated.
These optimizations enable simple transformations of the classification program template with respect to the patterns provided. As the template is reduced in size, additional template instructions are enabled. This, in turn, enables more filters to be specified. However, arbitrary rule ordering will generally not enable such optimizations. Therefore, this can require the application of some heuristics to increase the likelihood that one of the above optimizations may be applied.
8. Architecture of a Classification Engine
The following implementation can be used in one embodiment of the invention. The scope of the architecture of the invention is not limited to this embodiment. Referring to
A preprocessor (not shown) formats classification records of incoming packets and writes several fields of the classification records to the header array 1650. The number of fields written to the header array 1650 determines the packet processing rate of the packet classifier. For example, a packet processing rate of 20 million packets per second requires that at least one classification record needs to be processed every 50 nanoseconds. Given 32 classification records, the processor array can spend up to 1600 nanoseconds processing all records in parallel. Given a 4 nanosecond clock cycle time, up to 400 instructions may be applied to each classification record. As the number of records maintained in the header array is increased, the number of instructions that may be applied to each record is also increased.
The instruction memory 1620 and pattern memory 1630 are addressed by a common controller 1610 (e.g., a counter). An instruction consists of a header bit number and an opcode. The header bit is used by the header array 1650 to present the appropriately numbered bit to the processor array 1660. The opcode determines what action each processing element is to take with respect to the current rule data bit from the data memory in conjunction with the current header data bit from the header array 1650. The major components of the block diagram shown in
The controller 1610 provides timing for the data path elements. It maintains an instruction pointer which counts modulo the total number of instructions. This pointer is used to address the instruction memory 1620 and pattern memory 1630. The controller also manages the timing of the header array 1650 such that the header context is switched appropriately at the beginning of the instruction sequence.
b. Instruction and Pattern Memories
The instruction memory 1620 and pattern memory 1630 are comprised of Static Random Access Memory (SRAM) devices in this embodiment. In one embodiment, a common address is provided by the controller 1610. The data at the addressed location is read and delivered to the instruction decoder 1640 and header array 1650. Other RAM devices, such as Dynamic Random Access Memory (DRAM), may be substituted in the present embodiment.
c. Instruction Decoder
The instruction decoder 1640 is responsible for decoding the instructions received from the instruction memory 1620 such that appropriate control signals are developed for the processor array 1660. The relevant control signals are shown in
d. Header Array
e. Processor Array
A processing element 1850 is a four-state finite state machine (FSM) as depicted by the state diagram in
Upon the assertion of the new rule signal 1870, the match state 1910 for an entire column is loaded into a shift register (not shown) and the finite state machine 1850 is reset to the match state. In subsequent cycles, the shift register shifts these results to the priority encoder 1680 delivering a match. This includes shifting the vector 1810 for each header (row) on every cycle until the shift register has been completely flushed.
f. Priority Encoder
The priority encoder identifies the highest priority element set in the match vector and writes the result to the result memory.
The packet classifier detailed above can be used in a variety of implementations. In one implementation, it can be cascaded so that one instance of the device is used to feed another instance of the device.
Any references to greater and lesser, front and back, right and left, top and bottom, upper and lower, and horizontal and vertical are intended for convenience of description, not to limit the present invention or its components to any one relational, positional or spatial orientation. All dimensions of the components in the attached Figures may vary with a potential design and the intended use of an embodiment of the invention without departing from the scope of the invention.
While the present invention has been described with reference to several embodiments thereof, those skilled in the art will recognize various changes that may be made without departing from the spirit and scope of the claimed invention. Accordingly, the invention is not limited to what is shown in the drawings and described in the specification, but only as indicated in the appended claim.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5579307 *||Mar 23, 1995||Nov 26, 1996||Motorola, Inc.||Packet routing system and method with quasi-real-time control|
|US6041053 *||Sep 18, 1997||Mar 21, 2000||Microsfot Corporation||Technique for efficiently classifying packets using a trie-indexed hierarchy forest that accommodates wildcards|
|US6185568 *||Jun 15, 1999||Feb 6, 2001||Microsoft Corporation||Classifying data packets processed by drivers included in a stack|
|US6892237 *||Mar 28, 2000||May 10, 2005||Cisco Technology, Inc.||Method and apparatus for high-speed parsing of network messages|
|US6970462 *||Apr 24, 2000||Nov 29, 2005||Cisco Technology, Inc.||Method for high speed packet classification|
|US7054315 *||Sep 17, 2001||May 30, 2006||Pmc-Sierra Ltd.||Efficiency masked matching|
|US7088719||Dec 21, 2001||Aug 8, 2006||Agere Systems Inc.||Processor with packet processing order maintenance based on packet flow identifiers|
|US7134143 *||Feb 4, 2003||Nov 7, 2006||Stellenberg Gerald S||Method and apparatus for data packet pattern matching|
|US7227842 *||Apr 23, 2002||Jun 5, 2007||Tensilica, Inc.||Fast IP packet classification with configurable processor|
|US7239639||Dec 27, 2001||Jul 3, 2007||3Com Corporation||System and method for dynamically constructing packet classification rules|
|US7251651||May 25, 2004||Jul 31, 2007||International Business Machines Corporation||Packet classification|
|US7356695||Aug 1, 2002||Apr 8, 2008||International Business Machines Corporation||Multi-level security systems|
|US7415012 *||May 27, 2004||Aug 19, 2008||Verizon Corporate Services Group Inc.||Systems and methods for high speed packet classification|
|US7523218||Apr 30, 2003||Apr 21, 2009||University Of Florida Research Foundation, Inc.||O(log n) dynamic router tables for prefixes and ranges|
|US20020009076||Feb 7, 2001||Jan 24, 2002||Ton Engbersen||Method and means for classifying data packets|
|US20020191605 *||Feb 28, 2002||Dec 19, 2002||Lunteren Jan Van||Packet classification|
|US20030123452 *||Dec 27, 2001||Jul 3, 2003||Tippingpoint Technologies, Inc.||System and method for dynamically constructing packet classification rules|
|US20040264373||May 25, 2004||Dec 30, 2004||International Business Machines Corporation||Packet classification|
|US20080052300||Jun 29, 2007||Feb 28, 2008||Broadcom Corporation||Apparatus and method for classifier identification|
|CA2306364A1 *||Apr 20, 2000||Oct 30, 2000||Pmc-Sierra Inc.||Method and apparatus for programmable lexical packet classifier|
|WO1999000946A2||Jun 9, 1998||Jan 7, 1999||Telefonaktiebolaget Lm Ericsson (Publ)||Data routing in a communication network|
|WO2002052442A1||Dec 21, 2001||Jul 4, 2002||Samsung Electronics Co., Ltd||Apparatus and method for performing high-speed ip route lookup and managing routing/forwarding tables|
|WO2003063427A1||Jan 16, 2003||Jul 31, 2003||Rockstorm Technologies Ab||Method and system for fast ip routing lookup using forwarding tables with guaranteed compression rate and lookup performance|
|1||Habin Lu et al., "O(log n) Dynamic Router-Tables for Ranges," Proceedings 8th IEEE International Symposium on Computers and Communications, 2003, ISCC 2003, vol. 1, pp. 91-96.|
|2||International Search Report issued Jul. 16, 2008 for Appl. No. PCT/US2004/23370, 3 pages.|
|3||Sahni et al., "Data Structures for One-Dimensional Packet Classification Using Most Specific Matching," Proceedings International Symposium on Parallel Architectures, Algorithms and Networks, 2002, I-SPAN 2002, May 2002, pp. 1-12.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US8132248 *||Jun 15, 2008||Mar 6, 2012||Trend Micro Incorporated||Managing configurations of a firewall|
|US8327431||Dec 4, 2012||Trend Micro Incorporated||Managing configurations of a firewall|
|US8665868 *||Jul 9, 2009||Mar 4, 2014||Cpacket Networks, Inc.||Apparatus and method for enhancing forwarding and classification of network traffic with prioritized matching and categorization|
|US9049251 *||Aug 20, 2012||Jun 2, 2015||Futurewei Technologies, Inc.||Method and apparatus for internet protocol based content router|
|US20090025077 *||Jun 15, 2008||Jan 22, 2009||Bart Trojanowski||Managing configurations of a firewall|
|US20100008359 *||Jul 9, 2009||Jan 14, 2010||Rony Kay||Apparatus and method for enhancing forwarding and classification of network traffic with prioritized matching and categorization|
|US20100274897 *||Oct 28, 2010||Yean Kee Yong||Random Early Detect and Differential Packet Aging Flow Control in Switch Queues|
|US20130227166 *||Aug 20, 2012||Aug 29, 2013||Futurewei Technologies, Inc.||Method and Apparatus for Internet Protocol Based Content Router|
|U.S. Classification||709/236, 709/238, 370/392|
|International Classification||H04L12/56, G06F15/173|
|Cooperative Classification||H04L69/22, H04L69/161, H04L69/16, H04L47/10, H04L47/2441|
|European Classification||H04L29/06J3, H04L29/06J, H04L29/06N, H04L47/24D, H04L47/10|
|Mar 9, 2004||AS||Assignment|
Owner name: SANDBURST CORPORATION, MASSACHUSETTS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HORGAN, NICK;REEL/FRAME:014410/0287
Effective date: 20040220
|Oct 6, 2006||AS||Assignment|
Owner name: BROADCOM CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SANDBURST CORPORATION;REEL/FRAME:018361/0308
Effective date: 20060928
Owner name: BROADCOM CORPORATION,CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SANDBURST CORPORATION;REEL/FRAME:018361/0308
Effective date: 20060928
|Jul 3, 2014||REMI||Maintenance fee reminder mailed|
|Nov 23, 2014||LAPS||Lapse for failure to pay maintenance fees|
|Jan 13, 2015||FP||Expired due to failure to pay maintenance fee|
Effective date: 20141123
|Feb 11, 2016||AS||Assignment|
Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH
Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001
Effective date: 20160201