IP Library Granted Patent US 7,991,723
Granted Patent B1
US 7,991,723 · App. 11/778,546 · Granted Aug 2, 2011

Data pattern analysis using optimized deterministic finite automaton

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 7,991,723
App. No.
11/778,546
Granted
Aug 2, 2011
Kind
B1
Abstract

Techniques for data pattern analysis using deterministic finite automaton are described herein. In one embodiment, a number of transitions from a current node to one or more subsequent nodes representing one or more sequences of data patterns is determined, where each of the current node and subsequent nodes is associated with a deterministic finite automaton (DFA) state. A data structure is dynamically allocated for each of the subsequent nodes for storing information associated with each of the subsequent nodes, where data structures for the subsequent nodes are allocated in an array maintained by a data structure corresponding to the current node if the number of transitions is greater than a predetermined threshold. Other methods and apparatuses are also described.

Claims (30)

1. A computer-implemented method to optimize data pattern analysis, comprising:

determining a number of possible transitions from a current node to one or more subsequent nodes representing one or more sequences of data patterns, each of the current node and subsequent nodes being associated with a deterministic finite automaton (DFA) state;

dynamically allocating a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes, wherein data structures for the subsequent nodes are allocated in a logical array maintained by a data structure corresponding to the current node if the number of possible transitions is greater than a predetermined threshold to improve performance; and

determining whether each of the subsequent nodes includes a single child node, wherein the data structures for the subsequent nodes are allocated in an array maintained by a data structure corresponding to the current node if each of the subsequent nodes includes a single child node.

2. The method of claim 1 , wherein each element of the logical array is directly accessible from the data structure corresponding to the current node.

3. The method of claim 1 , wherein if the number of transitions is less than or equal to a predetermined threshold, the data structures for the subsequent nodes are allocated in a chain manner with a reference maintained by the data structure corresponding to the current node to reduce memory usage.

4. The method of claim 3 , wherein the data structures for the subsequent nodes are allocated in a linked-list manner, wherein each of the data structures includes a first reference pointer linked to a previous data structure and a second reference pointer linked to a next data structure.

5. The method of claim 1 , further comprising allocating an array for storing matched data for the subsequent nodes and accessible by the data structure of the current node, each element of the array corresponding to one subsequent node.

6. A machine-readable medium having instructions stored therein, which when executed by a processor, cause the processor to perform a method to optimize data pattern analysis, the method comprises:

determining a number of possible transitions from a current node to one or more subsequent nodes representing one or more sequences of data patterns, each of the current node and subsequent nodes being associated with a deterministic finite automaton (DFA) state;

dynamically allocating a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes, wherein data structures for the subsequent nodes are allocated in a logical array maintained by a data structure corresponding to the current node if the number of possible transitions is greater than a predetermined threshold to improve performance; and

determining whether each of the subsequent nodes includes a single child node, wherein the data structures for the subsequent nodes are allocated in an array maintained by a data structure corresponding to the current node if each of the subsequent nodes includes a single child node.

7. The machine-readable medium of claim 6 , wherein each element of the logical array is directly accessible from the data structure corresponding to the current node.

8. The machine-readable medium of claim 6 , wherein if the number of transitions is less than or equal to a predetermined threshold, the data structures for the subsequent nodes are allocated in a chain manner with a reference maintained by the data structure corresponding to the current node to reduce memory usage.

9. The machine-readable medium of claim 8 , wherein the data structures for the subsequent nodes are allocated in a linked-list manner, wherein each of the data structures includes a first reference pointer linked to a previous data structure and a second reference pointer linked to a next data structure.

10. The machine-readable medium of claim 6 , wherein the method further comprises allocating an array for storing matched data for the subsequent nodes and accessible by the data structure of the current node, each element of the array corresponding to one subsequent node.

11. A data processing system, comprising:

a processor;

a memory for storing instructions, which when executed from the memory, cause the processor to

determine a number of possible transitions from a current node to one or more subsequent nodes representing one or more sequences of data patterns, each of the current node and subsequent nodes being associated with a deterministic finite automaton (DFA) state,

dynamically allocate a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes, wherein data structures for the subsequent nodes are allocated in a logical array maintained by a data structure corresponding to the current node if the number of possible transitions is greater than a predetermined threshold to improve performance, and

determine whether each of the subsequent nodes includes a single child node, wherein the data structures for the subsequent nodes are allocated in an array maintained by a data structure corresponding to the current node if each of the subsequent nodes includes a single child node.

12. A computer-implemented method to optimize data pattern analysis, comprising:

determining a relationship of each of one or more child nodes transitioned from a root parent node, the relationship including a distance between each of the child nodes and the root parent node, the root parent node and child nodes representing one or more sequences of data patterns, wherein each of the root parent node and child nodes is associated with a deterministic finite automaton (DFA) state; and

dynamically allocating a data structure for each of the child nodes for storing information associated with each of the child nodes, wherein a data structure for a child node is allocated either in an array or in a linked-list manner dependent upon the relationship between the child node and the root parent node, wherein the data structure for the child node is allocated in an array if a distance between the child node and the root parent node is less than a predetermined threshold.

13. The method of claim 12 , wherein the distance between the child node and the root parent node is represented by a number of intermediate nodes between the child node and the root parent node.

14. A machine-readable medium having instructions stored therein which when executed by a machine, cause the machine to perform a method to optimize data pattern analysis, the method comprising:

determining a relationship of each of one or more child nodes transitioned from a root parent node, the relationship including a distance between each of the child nodes and the root parent node, the root parent node and child nodes representing one or more sequences of data patterns, wherein each of the root parent node and child nodes is associated with a deterministic finite automaton (DFA) state; and

dynamically allocating a data structure for each of the child nodes for storing information associated with each of the child nodes, wherein a data structure for a child node is allocated either in an array or in a linked-list manner dependent upon the relationship between the child node and the root parent node, wherein the data structure for the child node is allocated in an array if a distance between the child node and the root parent node is less than a predetermined threshold.

15. The machine-readable medium of claim 14 , wherein the distance between the child node and the root parent node is represented by a number of intermediate nodes between the child node and the root parent node.

Assignments (24)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071777/0641 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Dec 18, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044890/0009 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 041073 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE INTELLECTUAL PROPERTY ASSIGNMENT.. Recorded Apr 5, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 042168/0114 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 23, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS, INC.
Reel/Frame 041073/0001 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
CONVERSION AND NAME CHANGE Recorded Dec 14, 2015
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 037289/0202 →
MERGER Recorded Dec 14, 2015
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 037285/0873 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED ON REEL/FRAME 024823/0280 Recorded May 8, 2012
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; SONICWALL, INC.
Reel/Frame 028177/0126 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED ON REEL/FRAME 024776/0337 Recorded May 8, 2012
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; SONICWALL, INC.
Reel/Frame 028177/0115 →
PATENT SECURITY AGREEMENT (SECOND LIEN) Recorded Aug 3, 2010
From: AVENTAIL LLC; SONICWALL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 024823/0280 →
SECURITY AGREEMENT Recorded Aug 3, 2010
From: AVENTAIL LLC; SONICWALL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 024776/0337 →
MERGER Recorded Jul 28, 2010
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC.
Reel/Frame 024755/0083 →
CHANGE OF NAME Recorded Jul 28, 2010
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 024755/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2007
From: DUBROVSKY, ALEKSANDR; BRADY, JUSTIN MICHAEL; YANOVSKY, ROMAN; YANOVSKY, BORIS
To: SONICWALL, INC.
Reel/Frame 019563/0347 →