IP Library Granted Patent US 9,276,846
Granted Patent B2
US 9,276,846 · App. 13/843,308 · Granted Mar 1, 2016

Packet extraction optimization in a network 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 9,276,846
App. No.
13/843,308
Granted
Mar 1, 2016
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. A lookup front-end receives lookup requests from a host, and processes these lookup requests to generate key requests for forwarding to the lookup engines. Based on information in the packet, the lookup front-end can optimize start times for sending key requests as a continuous stream with minimal delay. As a result of the rule matching, the lookup engine returns a response message indicating whether a match is found.

Claims (53)

1. A method of processing a packet comprising:

receiving a first segment of a packet;

determining, based on the first segment, beats of a second segment of the packet containing portions of a key;

determining a start time at which the key may begin to be forwarded as a continuous stream, the start time being based on a prediction of when the portions of the key in the second segment will be received; and

initiating forwarding the key at the start time to a processing cluster configured to operate rule matching for the packet; and

completing forwarding the key at an end time occurring after receipt of all of the portions of the key in the second segment.

2. The method of claim 1 , wherein the key is a first key, and further comprising:

determining, based on the first segment, beats of a second segment of the packet containing portions of a second key;

determining a start time at which the second key may begin to be forwarded as a continuous stream, the start time being based on a prediction of when the portions of the second key in the second segment will be received; and

initiating forwarding the second key at the start time to a processing cluster configured to operate rule matching for the packet.

3. The method of claim 2 , wherein the first and second keys are forwarded independent of one another.

4. The method of claim 2 , wherein the first and second keys are forwarded serially to the respective processing clusters.

5. The method of claim 4 , wherein the start time of the second key is based on a prediction of when forwarding the first key will be complete.

6. The method of claim 5 , wherein the start time of the second key is determined to minimize delay between forwarding the first key and forwarding the second key.

7. The method of claim 2 , further comprising:

determining portions of the packet that are common to both the first and second keys; and

ordering the packet such that the portions of the packet that are common are received prior to portions of the packet that are uncommon to the first and second keys.

8. The method of claim 1 , further comprising determining an entry in a packet header table (PHT) for the packet, the entry indicating rules for extracting data from the packet to generate the key.

9. The method of claim 8 , wherein the entry further indicates portions of the packet for generating the key.

10. The method of claim 9 , wherein the start time is determined based on the entry.

11. The method of claim 1 , wherein the first segment of the packet includes a group identifier (GID), and further comprising:

comparing the GID against a global definition table to determine at least one table identifier (TID);

determining, based on the TID, a subset of processing clusters that are capable of operating rule matching for the packet; and

selecting the processing cluster of the subset based on availability.

12. The method of claim 11 , further comprising comparing the GID against a global definition table to determine a packet header index (PHIDX).

13. The method of claim 12 , wherein the key is generated according to the PHIDX.

14. The method of claim 13 , wherein the PHIDX indexes an entry in a packet header table (PHT), the entry indicating rules for extracting data from the packet to generate the key.

15. The method of claim 14 , wherein the entry includes a mapping of the packet to the key.

16. The method of claim 11 , further comprising comparing the GID against a global definition table to determine a key format table index (KFTIDX).

17. The method of claim 16 , wherein the KFTIDX indexes an entry in a key format table, the entry indicating instructions for extracting fields from the key at the processing cluster.

18. The method of claim 16 , wherein the key request further includes the KFTIDX.

19. The method of claim 1 , wherein the start time is further determined based on a prediction of when an error code is received, the error code indicating whether the packet includes an error.

20. The method of claim 1 , wherein the first segment includes a control word, and wherein the second segment includes a packet header.

21. An apparatus for processing a packet comprising:

a register configured to receive a first segment of a packet of a packet;

a packet header extractor (PHE) configured to:

determine, based on the first segment, the beats of a second segment of the packet containing portions of a key, and

determine a start time at which the key may begin to be forwarded as a continuous stream, the start time being based on a prediction of when all of the portions of the key in the second segment will be received; and

a scheduler output manager configured to initiate forwarding the key at the start time to a processing cluster configured to operate rule matching for the packet, the scheduler output manager being further configured to complete forwarding the key at an end time occurring after receipt of all of the portions of the key in the second segment.

22. The apparatus of claim 21 , wherein the key is a first key, and wherein the PHE is further configured to:

determine, based on the first segment, beats of a second segment of the packet containing portions of a second key; and

determine a start time at which the second key may begin to be forwarded as a continuous stream, the start time being based on a prediction of when the portions of the second key in the second segment will be received;

and wherein the scheduler output manager is further configured to initiate forwarding the second key at the start time to a processing cluster configured to operate rule matching for the packet.

23. The apparatus of claim 22 , wherein the scheduler output manager forwards the first and second keys independent of one another.

24. The apparatus of claim 22 , wherein the scheduler output manager forwards the first and second keys serially to the respective processing clusters.

25. The apparatus of claim 24 , wherein the start time of the second key is based on a prediction of when forwarding the first key will be complete.

26. The apparatus of claim 25 , wherein the start time of the second key is determined to minimize delay between forwarding the first key and forwarding the second key.

27. The apparatus of claim 22 , wherein a host forwarding the packet to the register is configured to:

determine portions of the packet that are common to both the first and second keys; and

order the packet such that the portions of the packet that are common are received prior to portions of the packet that are uncommon to the first and second keys.

28. The apparatus of claim 21 , wherein the PHE is further configured to determine an entry in a packet header table (PHT) for the packet, the entry indicating rules for extracting data from the packet to generate the key.

29. The apparatus of claim 28 , wherein the entry further indicates portions of the packet for generating the key.

30. The apparatus of claim 29 , wherein the PHE is further configured to determine the start time based on the entry.

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 Apr 10, 2013
From: GOYAL, RAJAN; BOUCHARD, GREGG A.; SZYPULSKI, KAREN A.; SPACKMAN, CHARLES D.
To: CAVIUM, INC.
Reel/Frame 030187/0808 →