IP Library Granted Patent US 8,886,680
Granted Patent B2
US 8,886,680 · App. 13/905,711 · Granted Nov 11, 2014

Deterministic finite automata graph traversal with nodal bit mapping

Inventor: Rajan Goyal (Saratoga, CA)
Assignee: Cavium, Inc.
G06F17/30958G06F17/30985G06F2221/2145H04L63/1416
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,886,680
App. No.
13/905,711
Granted
Nov 11, 2014
Kind
B2
Abstract

An apparatus, and corresponding method, for generating a graph used in performing a search for a match of at least one expression in an input stream is presented. The graph includes a number of interconnected nodes connected solely by valid arcs. A valid arc may also include a nodal bit map including structural information of a node to which the valid arc points to. A walker process may utilize the nodal bit map to determine if a memory access is necessary. The nodal bit map reduces the number of external memory access and therefore reduces system run time.

Claims (51)

1. A computer implemented method comprising:

given a current node and an arc pointing from the current node to a next node, analyzing arcs in a graph to determine which of the arcs are valid arcs pointing from the next node;

constructing arc configuration information associated with the arc pointing from the current node to the next node, the arc configuration information representing the valid arcs pointing from the next node; and

storing the arc configuration information representing the valid arcs pointing from the next node in the arc pointing from the current node to the next node to enable the arc configuration information to be evaluated and the valid arcs pointing from the next node to be identified from the evaluation of the arc configuration information without the next node being read.

2. The method of claim 1 wherein the arc configuration information comprises a bit map.

3. The method of claim 1 wherein constructing the arc configuration information associated with the arc pointing from the current node to the next node includes:

providing a listing of indicator values, each indicator value being associated with a respective character, each indicator value providing an indication of whether a valid arc associated with a respective character exists in the next node;

assigning a negative value to an indicator value if the associated valid arc does not exist in the next node; and

assigning a positive value to an indicator value if the associated valid arc does exist in the next node.

4. The method of claim 3 further including:

traversing the graph with a walker process to search for a match of at least one expression in an input stream;

retrieving the arc associated with a current character of the input stream in the current node;

reading the arc configuration information associated with the arc pointing from the current node to the next node;

determining the indicator value associated with a next character in the input stream; and

accessing a valid arc in the next node associated with the next character if the indicator value is positive.

5. The method of claim 1 wherein constructing the arc configuration information associated with the arc pointing from the current node to the next node further includes:

providing a listing of indicator values, each indicator value being associated with a respective range of characters, each indicator value providing an indication of whether one valid arc associated with at least one respective character in the respective range exists in the next node;

assigning a negative value to an indicator value if all valid arcs in the respective range do not exist in the next node; and

assigning a positive value to an indicator value if at least one valid arc in the respective range exists in the next node.

6. The method of claim 5 further including:

traversing the graph with a walker process to search for a match of at least one expression in an input stream;

retrieving the valid arc associated with a current character of the input stream in the current node;

reading the arc configuration information associated with the arc pointing from the current node to the next node;

determining the indicator value associated with a next character in the input stream; and

accessing an arc in the next node associated with the next character if the indicator value is positive.

7. The method of claim 5 wherein constructing the arc configuration information associated with the arc pointing from the current node to the next node further includes defining each respective range as having an equal number of associated characters.

8. The method of claim 6 wherein reading the arc configuration information associated with the arc pointing from the current node to the next node further includes dividing a numerical value associated with the next character by the number of characters included in each range, and determining a location of the indicator value associated with the next character as a function of the division.

9. The method of claim 6 wherein reading the arc configuration information associated with the arc pointing from the current node to the next node further includes reading a global look-up table to determine a location of the indicator value associated with the next character.

10. A system for locating an expression in a searchable deterministic finite automata-based graph, the system comprising:

a processor executing a walker process configured to traverse the searchable deterministic finite automata-based graph, the searchable deterministic finite automata-based graph including a plurality of interconnected nodes, where at least one node includes at least one valid arc; and

arc configuration information stored in an arc, the arc associated with a current node and pointing from the current node to a next node, the arc configuration information representing valid arcs pointing from the next node.

11. The system of claim 10 wherein the arc configuration information further includes:

a listing of indicator values, each the indicator value being associated with a respective character, each indicator value providing an indication of whether a valid arc associated with a respective character exists in the next node;

wherein an indicator value is negative if the associated valid arc does not exist in the next node; and

wherein an indicator value is positive if the associated valid arc does exist in the next node.

12. The system of claim 11 wherein the walker process is further configured to retrieve the arc pointing from the current node to the next node and associated with a current character of an input stream, the walker process is further configured to read the arc configuration information stored in the arc pointing from the current node to the next node and determine the indicator value associated with a next character in the input stream, wherein the walker process accesses in memory the next valid arc associated with the next character if the indicator value is positive.

13. The system of claim 10 wherein the arc configuration information further includes:

a listing of indicator values, each indicator value being associated with a respective range of characters, each indicator value providing an indication of whether one valid arc associated with at least one respective character in the respective range exists in the next node;

wherein an indicator value is negative if all valid arcs in the respective range does not exist in the next node; and

wherein an indicator value is positive if at least one valid arc in the respective range exists in the next node.

14. The system of claim 13 wherein the walker process is further configured to retrieve the arc pointing from the current node to the next node and associated with a current character of an input stream, the walker process is further configured to read the arc configuration information stored in the arc pointing from the current node to the next node and determine the indicator value associated with a next character in the input stream, wherein the walker process accesses in memory the next valid arc associated with the next character if the indicator value is positive.

15. The system of claim 14 wherein each respective range of the arc configuration information has an equal number of associated characters.

16. The system of claim 15 wherein the walker process is further configured to divide a numerical value associated with the next character by the number of characters included in each range, the walker process further configured to determine a location of the indicator value associated with the next character as a function of the division.

17. The system of claim 13 further including a global look-up table providing location information of the indicator value associated with the next character.

18. The system of claim 10 wherein the arc configuration information comprises a bit map.

19. A computer implemented method for traversing a deterministic finite automata-based graph comprising:

traversing nodes in the deterministic finite automata-based graph, with a walker process, to search for an expression in an input stream;

retrieving an arc associated with a current character of the input stream, the arc pointing from a current node to a next node;

reading arc configuration information associated with the arc pointing from the current node to the next node and stored in the arc, the arc configuration information representing valid arcs pointing from the next node;

determining if a next valid arc associated with a next character of the input stream exists in the next node based on a search indication provided by the reading; and

accessing in memory the next valid arc associated with the next character if the search indication is positive.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CERTIFICATE OF CONVERSION AND CERTIFICATE OF FORMATION Recorded Oct 2, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047185/0422 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
SECURITY AGREEMENT Recorded Aug 17, 2016
From: CAVIUM, INC.; CAVIUM NETWORKS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 039715/0449 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2013
From: GOYAL, RAJAN
To: CAVIUM NETWORKS, INC.
Reel/Frame 030710/0579 →
MERGER Recorded Jun 28, 2013
From: CAVIUM NETWORKS, INC.
To: CAVIUM, INC.
Reel/Frame 030710/0631 →
Continuity (3)
Continuation 12277129 · Nov 24, 2008
Provisional Application 61196717 · Oct 31, 2008
Related Publication 20130262518A1 · Oct 3, 2013