IP Library Granted Patent US 8,666,931
Granted Patent B2
US 8,666,931 · App. 13/183,964 · Granted Mar 4, 2014

Regular expression matching using TCAMs for network intrusion detection

Inventors: Xiang-Yang A. Liu (Okemos, MI); Chad R. Meiners (Westford, MA); Eric Torng (East Lansing, MI)
Assignee: Board of Trustees of Michigan State University
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,666,931
App. No.
13/183,964
Granted
Mar 4, 2014
Kind
B2
Abstract

A method is provided for implementing regular expression matching using ternary content-addressable memory devices. The method includes: receiving a set of regular expressions (REs) that specify data elements to be extracted from data packets; constructing a deterministic finite automaton (DFA) from the set of regular expressions; building a state transition table for each node of the deterministic finite automaton; combining the state transition tables into a single lookup table; and instantiating the lookup table in a ternary content-addressable memory device. Additional techniques are provided to reduce the TCAM space and improve RE matching speed.

Claims (63)

1. A computer-implemented method for implementing regular expression matching using ternary content-addressable memory devices, comprising:

receiving a set of regular expressions that specify characters to be extracted from data packets;

constructing a deterministic finite automaton from the set of regular expressions;

building a state transition table for each node of the deterministic finite automaton, the table having an input field having a fixed number of bits for encoding characters to be extracted from data packets, by

constructing a space reduction graph from the deterministic finite automaton, where vertices of the graph represent a distinct state of the automaton and weight assigned to each edge of the graph is a number of common transitions between two connected states;

trimming away edges in the graph having a weight below a predefined threshold;

computing a deferment forest by finding a maximum weight spanning forest for the space reduction graph; and

assigning identifiers of source states and destination states for states of the deferment forest;

combining the state transition tables into a single lookup table;

instantiating the lookup table in a ternary content-addressable memory device, wherein assigning identifiers further comprises

constructing an assignment tree by adding a virtual root node whose children are root nodes of all deferment trees comprising the deferment forest;

assigning nonzero binary identifiers to each node in the assignment tree such that all siblings have the same identifier;

setting source state identifiers for each node in the assignment tree such that a source state identifier of a given node is set to a concatenation of the binary identifiers assigned to the given node and its parent nodes;

identifying longest source state identifier from amongst the nodes in the assignment tree and padding remaining source state identifiers with trailing wildcard bits; and

setting destination state identifiers for each node in the assignment tree such that a destination state identifier of a given node is set to corresponding source state identifier for the given node with trailing wildcard bits replaced by zeros.

2. The method of claim 1 wherein building a state transition table for each node further comprises combining transitions having the same source state and the same destination into one table entry.

3. The method of claim 2 further comprises:

assigning each state of the deterministic finite automaton a unique identifier;

enumerating all transition rules for each state;

minimizing number of transition rules using a partial prefix list minimization algorithm; and

concatenating the transition rules from each state together by prepending each transition rule with an identifier for its corresponding source state.

4. The method of claim 1 further comprises combining transitions by ternary encoding the identifiers for source states to represent multiple source states.

5. The method of claim 1 wherein assigning nonzero binary identifiers further comprises traversing nodes in the assignment tree in a bottom-up manner and computing binary identifiers using a Huffman type coding algorithm.

6. The method of claim 1 wherein combining the state transition tables further comprises defining a consolidated table having an array of decisions associated with each rule therein and consolidating states in the lookup table into the consolidated table.

7. The method of claim 1 wherein instantiating the lookup table further comprises encoding an identifier for a source state in a first column of the lookup table and input characters in a second column of the lookup table, and storing corresponding identifier for a destination state in an associated entry of a static random-access memory.

8. The method of claim 1 further comprises modifying the lookup table so that the input field is enlarged to accommodate multiple sub-fields, where each sub-field having the fixed number of bits, and the decision includes an identifier for a decision state and a stride length indicating a number of characters consumed in a table lookup.

9. The method of claim 8 wherein modifying the lookup table further comprises

identifying at least one source state in the lookup table having a high degree of self-looping;

determining, for each identified source state, the number of characters to be consumed for the identified source state;

identifying, for each identified source state, entries for the identified state that transition to a different destination state;

creating multiple entries for each identified entry of an identified source state, where the number of entries is equal to the number of characters to be consumed for the identified source state and bits from the input field of the identified entry are placed into a different sub-field of the enlarged input field amongst the multiple entries for the identified entry.

10. The method of claim 1 wherein instantiating the lookup table further comprises encoding an identifier for a source state in a first column of the lookup table and input characters in a second column of the lookup table, and storing corresponding destination identifier in an associated static random-access memory.

11. A method for encoding identifiers for source states in a state transition table, comprising:

constructing a space reduction graph from the deterministic finite automaton, where vertices of the graph represent a distinct state of the automaton and weight assigned to each edge of the graph is a number of common transitions between two connected states;

trimming away edges in the graph having a weight below a predefined threshold;

computing a deferment forest by finding a maximum weight spanning forest for the space reduction graph;

assigning identifiers for source states and destination states for states of the deferment forest by

constructing an assignment tree by adding a virtual root node whose children are root nodes of all deferment trees comprising the deferment forest;

assigning nonzero binary identifiers to each node in the assignment tree such that all siblings have the same identifier;

setting source state identifiers for each node in the assignment tree such that a source state identifier of a given node is set to a concatenation of the binary identifiers assigned to the given node and its parent nodes;

sizing source state identifiers for each node in the assignment tree to equate in size to longest source state identifier from amongst the nodes; and

setting destination state identifiers for each node in the assignment tree such that a destination state identifier of a given node is set to corresponding source state identifier for the given node.

12. The method of claim 11 further comprises receiving a set of regular expressions that specify data elements to be extracted from data packets; and

constructing the deterministic finite automaton from the set of regular expressions.

13. The method of claim 11 wherein sizing source state identifiers further comprises

identifying longest source state identifier from amongst the nodes in the assignment tree and padding remaining source state identifiers with trailing wildcard bits.

14. The method of claim 13 wherein assigning nonzero binary identifiers further comprises traversing nodes in the assignment tree in a bottom-up manner and computing binary identifiers using a Huffman type coding algorithm.

15. A computer-implemented method for implementing regular expression matching using ternary content-addressable memory devices, comprising:

receiving a set of regular expressions that specify characters to be extracted from data packets;

constructing a deterministic finite automaton from the set of regular expressions;

building a state transition table for each node of the deterministic finite automaton, the table having an input field having a fixed number of bits for encoding characters to be extracted from data packets;

combining transitions in the state transition tables by ternary encoding characters of source states having the same characters in the input field and the destination state by

constructing a space reduction graph from the deterministic finite automaton, where vertices of the graph represent a distinct state of the automaton and weight assigned to each edge of the graph is a number of common transitions between two connected states;

trimming away edges in the graph having a weight below a predefined threshold;

computing a deferment forest by finding a maximum weight spanning forest for the space reduction graph; and

assigning identifiers of source states and destination states for states of the deferment forest;

combining the state transition tables into a single lookup table; and

instantiating the lookup table in a ternary content-addressable memory device, wherein assigning identifiers further comprises

constructing an assignment tree by adding a virtual root node whose children are root nodes of all deferment trees comprising the deferment forest;

assigning nonzero binary identifiers to each node in the assignment tree such that all siblings have the same identifier;

setting source state identifiers for each node in the assignment tree such that a source state identifier of a given node is set to a concatenation of the binary identifiers assigned to the given node and its parent nodes;

identifying longest source state identifier from amongst the nodes in the assignment tree and padding remaining source state identifiers with trailing wildcard bits; and

setting destination state identifiers for each node in the assignment tree such that a destination state identifier of a given node is set to corresponding source state identifier for the given node with trailing wildcard bits replaced by zeros.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2012
From: LIU, XIANG-YANG A.; MEINERS, CHAD R.; TORNG, ERIC
To: BOARD OF TRUSTEES OF MICHIGAN STATE UNIVERSITY
Reel/Frame 028101/0107 →
Continuity (2)
Provisional Application 61365079 · Jul 16, 2010
Related Publication 20120072380A1 · Mar 22, 2012