IP Library Granted Patent US 9,015,102
Granted Patent B2
US 9,015,102 · App. 14/063,554 · Granted Apr 21, 2015

Match engine for detection of multi-pattern rules

Inventor: Jan van Lunteren (Gattikon, CH)
Assignee: International Business Machines Corporation
G06F17/30386G06N5/025
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 9,015,102
App. No.
14/063,554
Granted
Apr 21, 2015
Kind
B2
Abstract

Methods, systems and computer program products are disclosed for detecting patterns in a data stream that match multi-pattern rules. One embodiment of the invention provides a method of recognizing a specified group of patterns in a data stream. The method comprises identifying a rule for said specified group of patterns in the data stream, and using a first array of finite state machines to scan the data stream for at least some of the patterns in the specified group. For patterns in the specified group that are found in the data stream by the first array of finite state machines, pattern identifiers are sent to a second array of finite state machines. The second array of finite state machines determines if the specified group of patterns is in the data stream in accordance with the identified rule by, at least in part, using said pattern identifiers.

Claims (33)

1. A method of recognizing a specified group of patterns in a data stream, the method comprising:

identifying a multi-pattern rule for said specified group of patterns in the data stream;

using a first array of finite state machines, in a first, pattern scanner stage, to scan the data stream for at least some of the patterns in the specified group;

for patterns in the specified group that are found in the data stream by the first array of finite state machines, sending pattern identifiers to a second array of finite state machines, in a second, rule processor stage;

using the second array of finite state machines for determining if the specified group of patterns is in the data stream in accordance with the identified multi-pattern rule by, at least in part, using said pattern identifiers; and

using a compiler to distribute a function that matches an individual pattern over the first, pattern scanner stage and the second, rule processor stage; and wherein:

the method is used to recognize a multitude of specified groups of patterns in the data stream, and the second array of finite state machines determining if the specified group of patterns is in the data stream includes:

running a multitude of threads on the second array of finite state machines; and

using said multitude of threads to determine whether the multitude of specified groups of patterns are in the data stream; and

the sending pattern identifiers to the second array includes:

for each of the multitude of specified groups of patterns, for patterns in said each group that are found in the data stream by the first array of finite state machines, sending pattern identifiers to an associated one of the threads running on the second array of finite state machines.

2. The method according to claim 1 , wherein the using said multitude of threads includes using each of the threads to determine whether a respective one of the specified groups of patterns is present in the data stream.

3. The method according to claim 1 , wherein the identifying a rule includes identifying a respective one rule for each of the multitude of specified groups of patterns.

4. The method according to claim 3 , wherein the using the first array includes using the first array to scan the data stream for at least some of the patterns in each of said multitude of specified groups of patterns.

5. The method according to claim 1 , wherein:

each of the threads is used to determine whether a respective one of the specified groups of patterns is in the data stream; and

the sending pattern identifiers to the second array includes, for each of the specified groups of patterns, for patterns in said each group that are found in the data stream by the first array of finite state machines, sending pattern identifiers to the one of the threads used to determine whether said each of the specified groups of patterns is in the data stream.

6. The method according to claim 1 , wherein the sending pattern identifiers further includes using an ID distributor to ensure that the only pattern identifiers received by each thread are the pattern identifiers needed by said each thread to determine whether the associated one of the specified groups of patterns is in the data stream.

7. The method according to claim 1 , wherein each thread has a respective one thread ID, and wherein the sending pattern identifiers includes, in each pattern identifier, the thread ID of the thread to which said pattern identifier is sent.

8. The method according to claim 1 , wherein the using the first array of finite state machines includes using the first array of finite state machines to scan for all of the patterns in the specified group.

9. An article of manufacture comprising:

at least one computer usable hardware medium having computer readable program code logic to execute a machine instruction in a processing unit for using a computer to for recognizing a specified group of patterns in a data stream in accordance with a defined multi-pattern rule, said computer readable program code logic, when executing, performing the following:

using a first array of finite state machines to scan the data stream for at least some of the patterns in the specified group;

for patterns in the specified group that are found in the data stream by the first array of finite state machines, sending pattern identifiers to a second array of finite state machines; and

using the second array of finite state machines for determining if the specified group of patterns is in the data stream in accordance with the identified multi-pattern rule by, at least in part, using said pattern identifiers wherein:

the machine instruction is executed to use the computer for recognizing a multitude of specified groups of patterns in the data stream, and wherein the second array of finite state machines determining if the specified group of patterns is in the data stream includes:

running a multitude of threads on the second array of finite state machines; and

using said multitude of threads to determine whether the multitude of specified groups of patterns are in the data stream.

10. The article of manufacture according to claim 9 , wherein:

each of the threads is used to determine whether a respective one of the specified groups of patterns is in the data stream; and

the sending pattern identifiers to the second array includes, for each of the specified groups of patterns, for patterns in said each group that are found in the data stream by the first array of finite state machines, sending pattern identifiers to the one of the threads used to determine whether said each of the specified groups of patterns is in the data stream.

11. The article of manufacture according to claim 10 , wherein the sending pattern identifiers further includes using an ID distributor to ensure that the only pattern identifiers received by each thread are the pattern identifiers needed by said each thread to determine whether the associated one of the specified groups of patterns is in the data stream.

12. The article of manufacture according to claim 11 , wherein each thread has a respective one thread ID, and wherein the sending pattern identifiers including, in each pattern identifier, the thread ID of the thread to which said pattern identifier is sent.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2014
From: VAN LUNTEREN, JAN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 032956/0124 →
Continuity (2)
Continuation 12533616 · Jul 31, 2009
Related Publication 20140052748A1 · Feb 20, 2014