Methods and systems for multi-pattern searching
First Claim
1. A method for building a state table of a state machine algorithm in a pattern matching application, comprising:
- identifying at least one search pattern;
creating a search pattern trie;
adding the at least one search pattern to the search pattern trie;
building a non-deterministic finite automata from the search pattern trie;
building a deterministic finite automata from the non-deterministic finite automata;
converting the deterministic finite automata into separate data structures comprising a state transition table, an array of per state matching pattern lists, and a separate failure pointer list for each state for the non-deterministic finite automata; and
using the separate data structures as the state table.
3 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the present invention relate to systems and methods for optimizing and reducing the memory requirements of state machine algorithms in pattern matching applications. Memory requirements of an Aho-Corasick algorithm are reduced in an intrusion detection system by representing the state table as three separate data structures. Memory requirements of an Aho-Corasick algorithm are also reduced by applying a banded-row sparse matrix technique to the state transition table of the state table. The pattern matching performance of the intrusion detection system is improved by performing a case insensitive search, where the characters of the test sequence are converted to uppercase as the characters are read. Testing reveals that state transition tables with sixteen bit elements outperform state transition tables with thirty-two bit elements and do not reduce the functionality of intrusion detection systems using the Aho-Corasick algorithm.
-
Citations
29 Claims
-
1. A method for building a state table of a state machine algorithm in a pattern matching application, comprising:
-
identifying at least one search pattern;
creating a search pattern trie;
adding the at least one search pattern to the search pattern trie;
building a non-deterministic finite automata from the search pattern trie;
building a deterministic finite automata from the non-deterministic finite automata;
converting the deterministic finite automata into separate data structures comprising a state transition table, an array of per state matching pattern lists, and a separate failure pointer list for each state for the non-deterministic finite automata; and
using the separate data structures as the state table. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method for searching for search patterns in a text sequence using a state transition table of a state machine algorithm in a pattern matching application, comprising:
-
reading a character from the text sequence;
reading an element of a current state vector of the state transition table that corresponds to the character;
if the element has a nonzero value, checking a pattern matching element of the current state vector for a matching pattern flag;
if the matching pattern flag is set, logging a pattern match;
selecting the current state vector corresponding to the nonzero value of the element; and
reading a next character from the text sequence. - View Dependent Claims (19, 20, 21, 22, 23)
-
-
24. A state table for a state machine algorithm used in a pattern matching application, comprising:
-
a state transition table;
an array of per state matching pattern lists; and
a failure pointer list for each state for a non-deterministic finite automata. - View Dependent Claims (25, 26, 27, 28, 29)
-
Specification