IP Library Granted Patent US 7,917,486
Granted Patent B1
US 7,917,486 · App. 11/689,429 · Granted Mar 29, 2011

Optimizing search trees by increasing failure size parameter

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,917,486
App. No.
11/689,429
Granted
Mar 29, 2011
Kind
B1
Abstract

A search tree embodying a plurality of signatures to be compared with an input string of characters and including a number of branches of sequential states originating at a root node, wherein each state comprises a state entry including a failure transition and one or more success transitions, is optimized by selecting a failure size parameter indicating a minimum number of characters to be traversed on the failure transitions and selectively modifying the search tree to create a modified search tree for which all failure transitions to non-root states are characterized by the selected failure size parameter.

Claims (75)

1. A method for modifying a search tree embodying a plurality of signatures to be compared with an input string of characters, the search tree including a number of branches of sequential states originating at a root node, wherein each state comprises a state entry including a failure transition and one or more success transitions, the method comprising:

selecting a failure size parameter indicating a minimum number of characters to be traversed on the failure transitions; and

selectively modifying the search tree to create a modified search tree for which all failure transitions to non-root states are characterized by the selected failure size parameter, wherein selecting the failure size parameter (F) comprises:

determining a success size parameter (S) for the search tree, wherein S indicates a maximum number of characters traversed on the success transitions;

specifying a worst-case character processing speed (P) for a finite state machine (FSM) configured to implement the modified search tree; and

calculating F in response to S and P, wherein

F

=

S

*

P

S

P

.

2. The method of claim 1 , wherein the failure size parameter is selected to achieve a specified worst-case character processing speed for a finite state machine (FSM) configured to implement the modified search tree.

3. The method of claim 1 , wherein the selectively modifying comprises:

calculating a removed prefix length (RPL) value for each failure transition;

designating each state for which its failure transition points to a non-root state and has an RPL value that is less than the selected failure size parameter as a violating state; and

modifying the state entries of the violating states.

4. The method of claim 3 , wherein each RPL value indicates a number of characters that are removed from a potentially matching portion of an input string upon traversing the corresponding failure transition.

5. The method of claim 3 , wherein modifying the state entry comprises, for each violating state:

identifying a fail state of the violating state; and

replacing the failure transition of the violating state with the failure transition of the identified fail state.

6. The method of claim 5 , wherein modifying the state entry further comprises, for each violating state:

determining whether the identified fail state includes any success transitions that are not common to the success transitions of the violating state; and

adding the non-common success transitions of the identified fail state to the violating state.

7. The method of claim 5 , wherein modifying the state entry further comprises, for each violating state:

determining whether the identified fail state includes an output code; and

adding the output code to the state entry of the violating state.

8. The method of claim 1 , further comprising:

configuring a finite state machine (FSM) to implement the modified search tree.

9. A method for constructing a finite state machine (FSM) to compare a plurality of signatures with an input string, comprising:

creating a search tree embodying the plurality of signatures, the search tree including a number of branches of sequential states originating at a root node, wherein each state comprises a state entry including a failure transition and one or more success transitions:

selecting a failure size parameter (F) indicating a minimum number of characters to be traversed on the failure transitions, wherein the failure size parameter is selected to achieve a specified worst-case character processing speed (P) for the FSM;

calculating a removed prefix length (RPL) value for each failure transition to a non-root fail state;

comparing the RPL values of the failure transitions with F;

designating each state for which the RPL value of its failure transition is less than F as a violating state; and

modifying the state entries of the violating states so that the RPL value of the failure transition of each violating state becomes greater than or equal to F, wherein selecting F comprises:

determining a success size parameter (S) for the search tree, wherein S indicates a maximum number of characters traversed on the success transitions;

and

calculating F in response to S and P, and wherein

F

=

S

*

P

S

P

.

10. The method of claim 9 , wherein each RPL value indicates a number of characters that are removed from a potentially matching portion of the input string upon traversing the corresponding failure transition.

11. The method of claim 9 , wherein modifying the state entry comprises, for each violating state:

identifying the fail state of the violating state;

if the identified fail state includes any success transitions that are not common to the success transitions of the violating state, adding the non-common success transitions to the state entry of the violating state; and

replacing the failure transition of the violating state with a failure transition of the identified fail state.

12. An optimization engine for modifying a search tree embodying a plurality of signatures to be compared with an input string of characters, the search tree including a number of branches of sequential states originating at a root node, wherein each state comprises a state entry including a failure transition and one or more success transitions, the optimization engine comprising:

means for selecting a failure size parameter indicating a minimum number of characters to be traversed on the failure transitions; and

means for modifying the search tree to create a modified search tree for which all failure transitions to non-root states are characterized by the failure size parameter, wherein the means for selecting the failure size parameter (F) comprises:

means for determining a success size parameter (S) indicating a maximum number of characters traversed on the success transitions;

means for specifying a worst-case character processing speed (P) for a finite state machine (FSM) configured to implement the modified search tree; and

means for calculating F in response to S and P, wherein

F

=

S

*

P

S

P

.

13. The optimization engine of claim 12 , wherein the failure size parameter is selected to achieve a specified worst-case character processing speed for a finite state machine (FSM) configured to implement the modified search tree.

Assignments (8)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2015
From: NETLOGIC I LLC
To: BROADCOM CORPORATION
Reel/Frame 035443/0763 →
CHANGE OF NAME Recorded Apr 16, 2015
From: NETLOGIC MICROSYSTEMS, INC.
To: NETLOGIC I LLC
Reel/Frame 035443/0824 →
RELEASE OF SECURITY INTEREST Recorded Aug 30, 2011
From: SILICON VALLEY BANK
To: NETLOGIC MICROSYSTEMS, INC.; NETLOGIC MICROSYSTEMS INTERNATIONAL LIMITED; NETLOGIC MICROSYSTEMS CAYMANS LIMITED
Reel/Frame 026830/0141 →
SECURITY AGREEMENT Recorded Jul 17, 2009
From: NETLOGIC MICROSYSTEMS, INC.; NETLOGIC MICROSYSTEMS INTERNATIONAL LIMITED; NETLOGIC MICROSYSTEMS CAYMANS LIMITED
To: SILICON VALLEY BANK
Reel/Frame 022973/0710 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2007
From: GUPTA, PANKAJ; VANKATACHARY, SRINIVASAN
To: NETLOGIC MICROSYSTEMS, INC.
Reel/Frame 019277/0824 →