IP Library Granted Patent US 9,582,756
Granted Patent B2
US 9,582,756 · App. 14/096,866 · Granted Feb 28, 2017

Data pattern analysis using optimized deterministic finite automation

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,582,756
App. No.
14/096,866
Granted
Feb 28, 2017
Kind
B2
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 (51)

1. A method for data pattern analysis of one or more packets, the method comprising:

a processor executing instructions residing in memory thereby inspecting the one or more packets for data patterns;

identifying a number of transitions that are present in a dynamic finite automation (DFA) state diagram from a current node in the DFA state diagram to one or more subsequent nodes in the DFA state diagram, wherein the DFA state diagram represents one or more sequences of data patterns, each of the current node and one or more subsequent nodes being associated with a DFA state, and each transition of the number of transitions corresponds to a change from one DFA state to another DFA state in the DFA state diagram;

dynamically allocating an array data structure maintained by the current node when the number of transitions that are present between the current node and the each of the one or more subsequent nodes correspond to a single node chain where each of the one or more subsequent nodes is associated with a single child node;

identifying a first pattern;

blocking the one or more packets when the first pattern is detected; and

issuing an alarm when the first pattern is detected.

2. The method of claim 1 , further comprising the processor storing information for each child node.

3. The method of claim 2 , wherein the information for each child node is compressed before it is stored.

4. The method of claim 1 , further comprising the processor dynamically allocating a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes in memory, wherein data structures for the subsequent nodes are dynamically allocated in an array data structure to optimize performance when the number of transitions is greater than a predetermined threshold, and wherein data structures for the subsequent nodes are dynamically allocated in a linked-list data structure to optimize memory utilization when the number of transitions is less than or equal to the predetermined threshold.

5. The method of claim 1 , further comprising:

the processor identifying a plurality of patterns, wherein the plurality of patterns include the first pattern;

the processor blocking the one or more packets when the plurality of patterns are

detected; and

the processor issuing an alarm when the plurality of patterns are detected.

6. The method of claim 5 , wherein:

the plurality of patterns form a signature,

an earlier pattern precedes a subsequent pattern in the signature, and

the processor continues looking for the earlier pattern after the processor has identified the earlier pattern while the processor is looking for the subsequent pattern.

7. The method of claim 5 , wherein:

the plurality of patterns form a signature,

an earlier pattern precedes a subsequent pattern in the signature, and

the earlier pattern must be separated from the subsequent pattern by a predetermined number of bytes or more for the subsequent pattern to be identified as a portion of the signature.

8. The method of claim 5 , wherein:

the plurality of patterns form a signature,

an earlier pattern precedes a subsequent pattern in the signature, and

the earlier pattern must be separated from the subsequent pattern by a predetermined number of bytes or less for the subsequent pattern to be identified as a portion of the signature.

9. A non-transitory computer storage medium having embodied thereon a program executable by a processor to perform a method for data pattern analysis of one or more packets, the method comprising:

inspecting the one or more packets for data patterns;

identifying a number of transitions that are present in a dynamic finite automation (DFA) state diagram from a current node in the DFA state diagram to one or more subsequent nodes in the DFA state diagram, wherein the DFA state diagram represents one or more sequences of data patterns, each of the current node and one or more subsequent nodes being associated with a DFA state, and each transition of the number of transitions corresponds to a change from one DFA state to another DFA state in the DFA state diagram;

dynamically allocating an array data structure maintained by the current node when the number of transitions that are present between the current node and the each of the one or more subsequent nodes correspond to a single node chain where each of the one or more subsequent nodes is associated with a single child node;

identifying a first pattern;

blocking the one or more packets when the first pattern is detected; and

issuing an alarm when the first pattern is detected.

10. The non-transitory computer readable storage medium method of claim 9 , further comprising the processor storing information for each child node.

11. The non-transitory computer readable storage medium method of claim 10 , wherein the information for each child node is compressed before it is stored.

12. The non-transitory computer readable storage medium method of claim 9 , the program further executable to dynamically allocate a data structure for each of the subsequent nodes for storing information associated with each of the subsequent nodes in memory, wherein data structures for the subsequent nodes are dynamically allocated in an array data structure to optimize performance when the number of transitions is greater than a predetermined threshold, and wherein data structures for the subsequent nodes are dynamically allocated in a linked-list data structure to optimize memory utilization when the number of transitions is less than or equal to the predetermined threshold.

13. The non-transitory computer readable storage medium method of claim 9 , the program further executable to:

identify a plurality of patterns;

block the one or more packets when the plurality of patterns are detected; and

issue an alarm when the plurality of patterns are detected.

14. The non-transitory computer readable storage medium method of claim 13 , wherein:

the plurality of patterns form a signature, an earlier pattern precedes a subsequent pattern in the signature, and

the processor continues looking for the earlier pattern after the processor has identified the earlier pattern while the processor is looking for the subsequent pattern.

15. The non-transitory computer readable storage medium method of claim 13 , wherein: the plurality of patterns form a signature,

an earlier pattern precedes a subsequent pattern in the signature, and

the earlier pattern must be separated from the subsequent pattern by a predetermined number of bytes or more for the subsequent pattern to be identified as a portion of the signature.

16. The non-transitory computer readable storage medium method of claim 13 , wherein:

the plurality of patterns form a signature,

an earlier pattern precedes a subsequent pattern in the signature, and

the earlier pattern must be separated from the subsequent pattern by a predetermined number of bytes or less for the subsequent pattern to be identified as a portion of the signature.

Assignments (26)
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 →
RELEASE OF REEL 032810 FRAME 0206 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; CREDANT TECHNOLOGIES, INC.; COMPELLENT TECHNOLOGIES, INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
Reel/Frame 040027/0204 →
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 →
RELEASE OF SECURITY INTEREST OF REEL 032809 FRAME 0930 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; CREDANT TECHNOLOGIES, INC.; COMPELLENT TECHNOLOGIES, INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
Reel/Frame 040045/0255 →
RELEASE OF REEL 032809 FRAME 0887 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; CREDANT TECHNOLOGIES, INC.; COMPELLENT TECHNOLOGIES, INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
Reel/Frame 040017/0314 →
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 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 032810/0206 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 032809/0930 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032809/0887 →
CHANGE OF NAME Recorded Dec 4, 2013
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 031717/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2013
From: DUBROVSKY, ALEKSANDR; BRADY, JUSTIN MICHAEL; YANOVSKY, ROMAN; YANOVSKY, BORIS
To: SONICWALL, INC.
Reel/Frame 031716/0877 →
MERGER Recorded Dec 4, 2013
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
Reel/Frame 031716/0934 →