IP Library Granted Patent US 7,949,683
Granted Patent B2
US 7,949,683 · App. 11/986,975 · Granted May 24, 2011

Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph

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,949,683
App. No.
11/986,975
Granted
May 24, 2011
Kind
B2
Abstract

An apparatus, and corresponding method, for traversing a compressed graph used in performing a search for a match of at least one expression in an input stream is presented. The compressed graph includes a number of interconnected nodes connected solely by valid arcs. A valid arc of a current node represents a character match in an expression of a character associated with the current node. Arcs which are not valid may be pruned. Non-valid arcs may include arcs which point back to a designated node(s), or arcs that point to the same next node as the designated node(s) for the same character. Each valid arc may comprise a next node pointer, a hash function, and a copy of an associated character. The hash function may be used to manage a retrieval process used by a walker traversing the compressed node. The walker may also use a comparison function to verify the correct arc has been retrieved.

Claims (25)

1. A method for traversing a compressed deterministic finite automata-based graph comprising:

in a processor:

traversing nodes in the compressed graph, the nodes being interconnected through valid arcs, by traveling node to node through a valid arc, where a current valid arc of a current node leads to a next node with a walker process to search for an expression in an input stream, the compressed graph having no redundant arcs, and each valid arc of the compressed graph representing a character match in the expression; and

using a hash value generated from an input character to index in the current node and to read the current valid arc associated with the input character;

using a hash function associated with the current valid arc to generate a hash value from a next input character; and

indexing in the next node using the hash value generated from the next input character to read a next valid arc to manage the walker process.

2. The method of claim 1 wherein each valid arc comprises a hash function associated with a next node.

3. The method of claim 1 wherein the hash function is common to all nodes in the graph and is stored in graph metadata.

4. The method of claim 1 further comprising:

comparing the next input character with a character copy in the next valid arc, where the next input character matches a next character of the expression when a comparison match is detected.

5. The method of claim 4 further comprising:

traversing the graph to a designated node when a comparison match is not detected.

6. The method of claim 4 wherein further comprising:

traversing the graph to a designated node associated with a current sub-section of the graph when a comparison match is not detected.

7. A processor comprising:

a memory unit configured to store a compressed graph having a plurality of nodes interconnected through valid arcs and no redundant arcs, each valid arc of the compressed graph representing a character match in an expression; and

a walker configured to walk the plurality of nodes in the compressed graph by traveling node to node through a valid arc, where a current valid arc of a current node leads to a next node, to search for an expression in an input stream by i) using a hash value generated from the input character to index in the current node and to read the current valid arc associated with the input character, ii) using a hash function associated with the current valid arc to generate a hash value from a next input character, and iii) indexing in the next node using the hash value generated from the next input character to read a next valid arc to manage a retrieval function of the walker.

8. The processor of claim 7 wherein each valid arc comprises a hash function associated with a next node.

9. The processor of claim 7 wherein the hash function is common to all nodes in the graph and is stored in graph metadata.

10. The processor of claim 7 wherein the walker is configured to compare the next input character with a character copy in the next valid arc, where the next input character matches a next character of the expression when a comparison match is detected.

11. The processor of claim 10 wherein the walker is configured to traverse the graph to a designated node when a comparison match is not detected.

12. The processor of claim 10 wherein the walker is configured to traverse the graph to a designated node associated with a current sub-graph when a comparison match is not detected.

13. A processor comprising:

means for storing a compressed graph having a plurality of nodes interconnected through valid arcs and no redundant arcs, each valid arc of the compressed graph representing a character match in an expression; and

means for walking the plurality of nodes in the compressed graph by traveling node to node through a valid arc, where a current valid arc of a current node leads to a next node, to search for the expression in an input stream by i) using a hash value generated from the input character to index in the current node and to read the current valid arc associated with the input character, ii) using a hash function associated with the current valid arc to generate a hash value from a next input character, and iii) indexing in the next node using the hash value generated from the next input character to read a next valid arc.

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 →
MERGER Recorded Jul 21, 2011
From: CAVIUM NETWORKS, INC.
To: CAVIUM, INC.
Reel/Frame 026632/0672 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2008
From: GOYAL, RAJAN
To: CAVIUM NETWORKS, INC.
Reel/Frame 020592/0587 →