IP Library Granted Patent US 8,819,217
Granted Patent B2
US 8,819,217 · App. 11/982,433 · Granted Aug 26, 2014

Intelligent graph walking

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,819,217
App. No.
11/982,433
Granted
Aug 26, 2014
Kind
B2
Abstract

An apparatus, and corresponding method, for performing a search for a match of at least one expression in an input stream is presented. A graph including a number of interconnected nodes is generated. A compiler may assign at least one starting node and at least one ending node. The starting node includes a location table with node position information of an ending node and a sub-string value associated with the ending node. Using the node position information and a string comparison function, intermediate nodes located between the starting and ending nodes may be bypassed. The node bypassing may reduce the number of memory accesses required to read the graph.

Claims (29)

1. A method comprising:

in a security appliance having a physical interface receiving an input stream:

generating a graph including a plurality of interconnected nodes, at least one ending node, and at least one starting node, the at least one starting node including a comparison command and a location table, the location table including node position information of the at least one ending node and a value of a sub-string between the at least one starting node and the at least one ending node;

traversing the plurality of interconnected nodes of the generated graph to search for a match of at least one expression in the input stream;

upon reaching the at least one starting node in the generated graph and upon finding a forward arc from the at least one starting node, the forward arc representing a match between the at least one expression and a character from the input stream, detecting a common sub-string in the at least one expression and the value of the sub-string in the location table using the comparison command;

upon detection of the common sub-string, bypassing at least two consecutively interconnected nodes in the generated graph by using the location table included in the at least one starting node to reach the at least one ending node indicated by the node position information of the at least one ending node, wherein the generated graph includes plural ending nodes and the location table includes multiple entries, each entry including node position information of a corresponding ending node of the plural ending nodes and a value of a sub-string between the at least one starting node and the corresponding ending node; and

using the comparison command to detect a common sub-string in the at least one expression and the value of the sub-string in the location table for each of the multiple entries in any order.

2. The method of claim 1 in which the at least one starting node is a root node.

3. The method of claim 1 in which the at least one starting node is an interconnecting node, the interconnecting node including at least two interconnections to at least two other nodes.

4. The method of claim 1 in which the at least one ending node is a mark node, the mark node indicating a matched expression.

5. The method of claim 1 in which the at least one ending node is an other starting node.

6. The method of claim 5 in which the other starting node is an interconnecting node, the interconnecting node including at least two interconnections to at least two other nodes.

7. The method of claim 1 where bypassing comprises retrieving node position information of the at least two consecutively interconnected nodes with a single memory access.

8. The method of claim 1 further comprising selecting the at least one ending node with a longest common sub-string, a shortest common sub-string, or both.

9. An apparatus comprising:

a hardware interface configured to receive an input stream;

a compiler configured to generate a graph including a plurality of interconnected nodes, at least one ending node, and at least one starting node, the at least one starting node including a comparison command and a location table, the location table including node position information of the at least one ending node and a value of a sub-string between the at least one starting node and the at least one ending node;

a memory communicatively coupled to the compiler and configured to store the generated graph; and

a walker process communicatively coupled to the hardware interface and configured to:

traverse the plurality of interconnected nodes of the generated graph to search for a match of at least one expression in the input stream;

upon reaching the at least one starting node and upon finding a forward arc from the at least one starting node, the forward arc representing a match between the at least one expression and a character from the input stream, the walker process configured to detect a common sub-string in the at least one expression and the value of the sub-string in the location table, using the comparison command;

upon detection of the common sub-string, bypass at least two consecutively interconnected nodes in the generated graph by using the location table included in the at least one starting node to reach the at least one ending node indicated by the node position information of the at least one ending node, wherein the generated graph includes plural ending nodes and the location table includes multiple entries, each entry including node position information of a corresponding ending node of the plural ending nodes and a value of a sub-string between the at least one starting node and the corresponding ending node; and

use the comparison command to detect a common sub-string in the at least one expression and the value of the sub-string in the location table for each of the multiple entries in any order.

10. The apparatus of claim 9 in which the at least one starting node is a root node.

11. The apparatus of claim 9 in which the at least one starting node is an interconnecting node, the interconnecting node including at least two interconnections to at least two other nodes.

12. The apparatus of claim 9 in which the at least one ending node is a mark node, the mark node indicating a matched expression.

13. The apparatus of claim 9 in which the at least one ending node is an other starting node.

14. The apparatus of claim 13 in which the other starting node is an interconnecting node, the interconnecting node including at least two interconnections to at least two other nodes.

15. The apparatus of claim 9 in which the walker process is configured to bypass the at least two consecutively interconnected nodes and retrieve node position information of the at least two consecutively interconnected nodes with a single memory access.

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 Nov 20, 2008
From: HUSSAIN, MUHAMMAD RAGHIB; GOYAL, RAJAN; BADR, IMRAN
To: CAVIUM NETWORKS, INC.
Reel/Frame 021873/0243 →