IP Library Granted Patent US 9,866,540
Granted Patent B2
US 9,866,540 · App. 15/145,052 · Granted Jan 9, 2018

System and method for rule matching in a processor

Inventors: Gregg A. Bouchard (Georgetown, TX); Rajan Goyal (Saratoga, CA); Gregory E. Lund (Eau Claire, WI)
Assignee: Cavium, Inc.
H04L63/06G06F3/0629G06F3/0647G06F9/46G06F9/5016G06F9/5027G06F11/203G06F12/00G06F12/0207G06F12/04G06F12/06G06F12/0623G06F12/0802G06F12/0868G06F12/126G06F13/16G06F13/1642G06N5/02G06N5/027G11C7/1075H04L43/18H04L45/742H04L45/745H04L47/2441H04L47/39H04L63/0227H04L63/10H04L67/10H04L69/02H04L69/22H04L63/0263Y02B60/1228Y02B60/142
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,866,540
App. No.
15/145,052
Granted
Jan 9, 2018
Kind
B2
Abstract

In one embodiment, a system includes a format block configured to receive a key, at least one rule, and rule formatting information. The rule can have one or more dimensions. The format block can be further configured to extract each of the dimensions from the at least one rule. The system can further include a plurality of dimension matching engines (DME). Each DME can be configured to receive the key and a corresponding formatted dimension, and process the key and the corresponding dimension for returning a match or nomatch. The system can further include a post processing block configured to analyze the matches or no matches returned from the DMEs and return a response based on the returned matches or nomatches.

Claims (43)

1. A system comprising:

a format block configured to (a) receive a key including one or more bits from a packet, at least one rule for matching the key, and rule formatting information, the at least one rule having at least one rule dimension, the at least one rule dimension including a set of one or more bits from a corresponding rule of the at least one rule, and (b) extract each at least one rule dimension from the at least one rule; and

a plurality of dimension matching engines (DMEs), each DME, of the plurality of DMEs, coupled to the format block and configured to receive the key and a corresponding formatted dimension, and process the key and the corresponding formatted dimension for returning a match or nomatch.

2. The system of claim 1 , wherein the matches or no matches returned from the plurality of DMEs enables an analysis of the matches or no matches and return of a response based on the returned matches or nomatches.

3. The system of claim 1 , wherein the format block includes:

a start block configured to find rule starts, mark invalid or deactivated rules, and pre-calculate terms of the at least one rule dimension;

a middle block configured to remove marked rules, extract rule format from headers, and extract priority from headers;

a tween block configured to calculate rule header end position information and rule dimension end position information; and

a finish block configured to calculate control for the plurality of DMEs.

4. The system of claim 1 , wherein the plurality of DMEs are further configured to match the key to at least one of a range indicated by a minimum and maximum in the corresponding formatted dimension, an exact match indicated by a match value in the corresponding formatted dimension, a prefix match indicated by a prefix length and a match value in the corresponding formatted dimension, and a mask indicated by a bit mask and a match value indicated by the corresponding formatted dimension.

5. The system of claim 1 , wherein the plurality of DMEs further include at least one rule data aligner configured to align bits of a match value of the rule of the corresponding formatted dimension to a particular granularity.

6. The system of claim 1 , wherein the plurality of DMEs further include at least one key data aligner configured to align bits of the key to a particular granularity.

7. The system of claim 1 , wherein the plurality of DMEs further include a match unit to compare the key to the match value of the corresponding formatted dimension.

8. The system of claim 1 , wherein the plurality of DMEs further include a DME buffer unit configured to receive portions of a particular dimension in a buffer over a plurality of clock cycles and reassemble the portions into the particular dimension.

9. The system of claim 1 , further comprising a post processing block configured to return a response representing a Boolean—and of the matches or no matches returned from the plurality of DMEs.

10. The system of claim 9 , wherein the post processing block is further configured to sort multiple responses from the plurality of DMEs for multiple rules.

11. The system of claim 1 , wherein the format block is further configured to receive the at least one rule by receiving at least one line of data, each line of data having a particular size and each line further storing at least one rule and/or at least one partial rule that occupy the particular size, where the at least one partial rule can continue on a subsequent line of the at least one line or be continued from a previous line of the at least one line.

12. A method comprising:

in a hardware processor:

receiving from a memory, at a format block, a key including one or more bits from a packet, at least one rule for matching the key, and rule formatting information, the at least one rule having at least one rule dimension;

extracting, at the format block, each at least one rule dimension from the at least one rule, the at least one rule dimension including a set of one or more bits from a corresponding rule of the at least one rule;

receiving, at a plurality of dimension matching engines (DMEs), each DME, of the plurality of DMEs, coupled to the format block, the key and a corresponding formatted dimension; and

processing, at the plurality of DMEs, the key and the corresponding formatted dimension for returning a match or nomatch.

13. The method of claim 12 , wherein the matches or no matches returned from the plurality of DMEs enables an analysis of the matches or no matches and return of a response based on the returned matches or nomatches.

14. The method of claim 12 , further comprising:

within the format block:

finding, in a start block, rule starts;

marking, in the start block, invalid or deactivated rules;

pre-calculating, in the start block, terms of the at least one rule dimension;

removing, in a middle block, marked rules;

extracting, in the middle block, rule format from headers and priority from headers;

calculating, in a tween block, rule header end position information and rule dimension end position information; and

calculating, in a finish block, control for the plurality of DMEs.

15. The method of claim 12 , further comprising matching, at the plurality of DMEs, the key to at least one of a range indicated by a minimum and maximum in the corresponding formatted dimension, an exact match indicated by a match value in the corresponding formatted dimension, a prefix match indicated by a prefix length and a match value in the corresponding formatted dimension, and a mask indicated by a bit mask and a match value indicated by the corresponding formatted dimension.

16. The method of claim 12 , further comprising aligning, at a rule data aligner within the plurality of DMEs, bits of a match value of the rule of the corresponding formatted dimension to a particular granularity.

17. The method of claim 12 , further comprising aligning, at a key data aligner within the plurality of DMEs, bits of the key to a particular granularity.

18. The method of claim 12 , further comprising comparing, at a match unit within the plurality of DMEs, the key to the match value of the corresponding formatted dimension.

19. The method of claim 12 , further comprising:

receiving, at a DME buffer unit within the plurality of DMEs, portions of a particular dimension in a buffer over a plurality of clock cycles; and

reassembling, at the DME buffer unit, the portions into the particular dimension.

20. The method of claim 12 , further comprising returning, at a post processing block, a response representing a Boolean—and of the matches or no matches returned from the plurality of DMEs.

21. The method of claim 20 , further comprising sorting, at the post processing block, multiple responses from the plurality of DMEs for multiple rules.

22. The method of claim 12 , wherein receiving the at least one rule includes receiving at least one line of data, each line of data having a particular size and each line further storing at least one rule and/or at least one partial rule that occupy the particular size, where the at least one partial rule can continue on a subsequent line of the at least one line or be continued from a previous line of the at least one line.

Assignments (6)
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 21, 2016
From: BOUCHARD, GREGG A.; GOYAL, RAJAN; LUND, GREGORY E.
To: CAVIUM, INC.
Reel/Frame 038974/0918 →
Continuity (13)
Continuation 13565406 · Aug 2, 2012
Provisional Application 61514344 · Aug 2, 2011
Provisional Application 61514382 · Aug 2, 2011
Provisional Application 61514379 · Aug 2, 2011
Provisional Application 61514400 · Aug 2, 2011
Provisional Application 61514406 · Aug 2, 2011
Provisional Application 61514407 · Aug 2, 2011
Provisional Application 61514438 · Aug 2, 2011
Provisional Application 61514447 · Aug 2, 2011
Provisional Application 61514450 · Aug 2, 2011
Provisional Application 61514459 · Aug 2, 2011
Provisional Application 61514463 · Aug 2, 2011
Related Publication 20160248739A1 · Aug 25, 2016