IP Library Granted Patent US 8,719,331
Granted Patent B2
US 8,719,331 · App. 13/565,459 · Granted May 6, 2014

Work migration in a processor

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,719,331
App. No.
13/565,459
Granted
May 6, 2014
Kind
B2
Abstract

A packet processor provides for rule matching of packets in a network architecture. The packet processor includes a lookup cluster complex having a number of lookup engines and respective on-chip memory units. The on-chip memory stores rules for matching against packet data. Each of the lookup engines receives a key request associated with a packet and determines a subset of the rules to match against the packet data. A work product may be migrated between lookup engines to complete the rule matching process. As a result of the rule matching, the lookup engine returns a response message indicating whether a match is found.

Claims (39)

1. An apparatus for processing a packet comprising:

a plurality of clusters, each cluster including a plurality of processors for processing lookup requests and a local memory storing a set of rules; and

a front-end configured to forward the lookup requests to the plurality of clusters and receive response messages from the plurality of clusters;

each of the plurality of clusters being configured to:

receive a key request including a key and a table identifier (TID), the key including data extracted from a packet;

generate a work product associated with the key request, the work product corresponding to a process of rule-matching at least one field of the key;

determine whether to forward the work product to another of the plurality of clusters; and

based on the determination, forward the work product to another of the plurality of clusters.

2. The apparatus of claim 1 , wherein the front-end includes a table storing information on the rules at each of the plurality of clusters.

3. The apparatus of claim 2 , wherein the front-end is configured to forward the key request and a key identifier (KID) corresponding to the key to one of the plurality of clusters based on the table.

4. The apparatus of claim 2 , wherein the front-end is configured to forward the key to a subset of the plurality of clusters based on the table.

5. The apparatus of claim 4 , wherein the front-end refrains from forwarding the key request corresponding to the key to at least one of the subset of the plurality of clusters.

6. The apparatus of claim 4 , wherein the front-end selects the subset of the plurality of clusters based on a determination of whether each of the plurality of clusters is a potential candidate for at least one of generating and processing a work product for the key request associated with the key.

7. The apparatus of claim 1 , wherein each of the plurality of clusters further includes a first queue for storing local requests for work and a second queue for storing remote requests for work, the remote requests including requests from other of the plurality of clusters.

8. The apparatus of claim 1 , further comprising a crossbar connecting the front-end and each of the plurality of clusters.

9. The apparatus of claim 1 , wherein forwarding the work product to another of the plurality of clusters includes forwarding a key identifier (KID) corresponding to the key, the key being stored at the local memory of the other of the plurality of clusters.

10. The apparatus of claim 1 , wherein each of the plurality of clusters is further configured to determine whether to forward the work product based on the location of data stored at other clusters of the plurality of clusters.

11. The apparatus of claim 1 , wherein each of the plurality of clusters is further configured to remotely access data from another of the plurality of clusters, the data being processed to generate the work product at the cluster.

12. The apparatus of claim 1 , wherein each of the plurality of clusters is further configured to terminate generating the work product in response to forwarding the work product to the other of the plurality of clusters.

13. The apparatus of claim 1 , wherein each of the plurality of clusters is further configured to:

receive a migrated work product migrated from another of the plurality of clusters;

complete the migrated work product; and

forward a response corresponding to the migrated work to the front-end.

14. The apparatus of claim 1 , wherein the work product indicates a state of a tree walk engine generating the work product.

15. The apparatus of claim 1 , wherein the work product includes contents of a bucket indicating a set of rules.

16. The apparatus of claim 1 , wherein the work product includes pointers to a bucket indicating a set of rules.

17. An method of processing a packet comprising:

receiving, at one of a plurality of clusters, a key request including a key and a table identifier (TID), the key including data extracted from a packet, each cluster including a plurality of processors for processing lookup requests and a local memory storing a set of rules;

generating a work product associated with the key request, the work product corresponding to a process of rule-matching at least one field of the key;

determining whether to forward the work product to another of the plurality of clusters; and

based on the determination, forwarding the work product to another of the plurality of clusters.

18. The method of claim 17 , further comprising storing information on the rules at each of the plurality of clusters at a table.

19. The method of claim 18 , further comprising, at a front-end, forwarding the key request and a key identifier (KID) corresponding to the key to one of the plurality of clusters based on the table.

20. The method of claim 18 , further comprising, at the front-end, forwarding the key to a subset of the plurality of clusters based on the table.

21. The method of claim 17 , wherein forwarding the work product to another of the plurality of clusters includes forwarding a key identifier (KID) corresponding to the key, the key being stored at the local memory of the other of the plurality of clusters.

22. The method of claim 17 , further comprising determining whether to forward the work product based on the location of data stored at other clusters of the plurality of clusters.

23. The method of claim 17 , wherein the work product indicates a state of a tree walk engine generating the work product.

24. The method of claim 17 , wherein the work product includes contents of a bucket indicating a set of rules.

25. The method of claim 17 , wherein the work product includes pointers to a bucket indicating a set of rules.

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 Oct 10, 2012
From: GOYAL, RAJAN; BOUCHARD, GREGG A.
To: CAVIUM, INC.
Reel/Frame 029103/0186 →