IP Library Granted Patent US 7,990,974
Granted Patent B1
US 7,990,974 · App. 12/240,892 · Granted Aug 2, 2011

Packet processing on a multi-core 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 7,990,974
App. No.
12/240,892
Granted
Aug 2, 2011
Kind
B1
Abstract

A method for packet processing on a multi-core processor. According to one embodiment of the invention, a first set of one or more processing cores are configured to include the capability to process packets belonging to a first set of one or more packet types, and a second set of one or more processing cores are configured to include the capability to process packets belonging to a second set of one or more packet types, where the second set of packet types is a subset of the first set of packet types. Packets belonging to the first set of packet types are processed at a processing core of either the first or second set of processing cores. Packets belonging to the second set of packet types are processed at a processing core of the first set of processing cores.

Claims (50)

1. A method for packet processing on a multi-core processor having a plurality of processing cores, the method comprising:

configuring a first set of one or more of the plurality of processing cores to include the capability to process packets belonging to a first set of one or more packet types;

configuring a second set of one or more of the plurality of processing cores to include the capability to process packets at least belonging to a second set of one or more packet types, the second set of packet types being a subset of the first set of packet types;

receiving a first packet;

determining that the first packet belongs to the second set of packet types and processing the first packet at one of the first or second set of processing cores;

receiving a second packet;

determining that the second packet does not belong to the second set of packet types and processing the second packet at one of the first set of processing cores, wherein each packet being processed includes a plurality of processing phases each identifiable by a phase identifier, and upon each processing phase being completed for a particular packet, associating the corresponding phase identifier with that packet;

receiving a third, fourth, and fifth packet, the third and fourth packet belonging to the same flow, wherein at least one of the processing phases of the processing of the third packet is required to be performed prior to one of the processing phases of the processing of the fourth packet;

assigning the third and fourth packets to different ones of the plurality of processing cores;

processing the at least one of the processing phases of the processing of the third packet and stalling the processing of the fourth packet;

upon determining that processing of the fourth packet is stalled, de-scheduling the processing of the fourth packet and allowing the processing core that was assigned to process the fourth packet to process the fifth packet; and

upon the completion of that at least one processing phase of the third packet, releasing the stalling of the processing of the fourth packet allowing one of the processing cores to process the fourth packet at the particular processing phase when de-scheduled.

2. The method of claim 1 , wherein the multi-core processor is included in a network element.

3. The method of claim 1 , wherein the multi-core processor is included in a secure router.

4. The method of claim 1 , wherein the first set of packet types includes all packets to be processed by the multi-core processor including control packets, data packets, and configuration packets.

5. The method of claim 1 , further comprising:

configuring a third set of one or more of the plurality of processing cores to include the capability to process packets at least belonging to a third set of one or more packet types, the third set of packet types being a subset of the first set of packet types and at least partially different than the second set of packet types.

6. The method of claim 1 , further comprising:

upon receiving the first and second packets, assigning the first and second packets to different ones of the processing cores based on the processing capability of those processing cores.

7. The method of claim 1 , further comprising:

upon receiving the first and second packets, assigning the first and second packets to different ones of the processing cores irrespective of the processing capability of those processing cores; and

wherein if the second packet is assigned to one of the second set of processing cores, redirecting the second packet to one of the first set of processing cores.

8. The method of claim 1 , wherein the first set of processing cores are each configured with a complete firmware image, and wherein the second set of processing cores are each configured with a subset of the complete firmware image, and wherein the second set of packet types excludes packets that require processing capabilities other than capabilities supported by the subset of the complete firmware image.

9. The method of claim 2 , wherein the first set of packet types includes control packets and packets related to network element configuration, and wherein the second set of packet types does not include control packets and packets related to network element configuration.

10. The method of claim 8 , wherein the complete firmware image includes an operating system, and wherein the subset of the complete firmware image does not include an operating system.

11. A non-transitory machine-readable storage medium that provides instructions that, if executed by a processor, will cause said processor to perform operations for packet processing on a multi-core processor having a plurality of processing cores, the operations comprising:

configuring a first set of one or more of the plurality of processing cores to include the capability to process packets belonging to a first set of one or more packet types;

configuring a second set of one or more of the plurality of processing cores to include the capability to process packets at least belonging to a second set of one or more packet types, the second set of packet types being a subset of the first set of packet types;

receiving a first packet;

determining that the first packet belongs to the second set of packet types and processing the first packet at one of the first or second set of processing cores;

receiving a second packet;

determining that the second packet does not belong to the second set of packet types and processing the second packet at one of the first set of processing cores, wherein each packet being processed includes a plurality of processing phases each identifiable by a phase identifier, and upon each processing phase being completed for a particular packet, associating the corresponding phase identifier with that packet;

receiving a third, fourth, and fifth packet, the third and fourth packet belonging to the same flow, wherein at least one of the processing phases of the processing of the third packet is required to be performed prior to one of the processing phases of the processing of the fourth packet;

assigning the third and fourth packets to different ones of the plurality of processing cores;

processing the at least one of the processing phases of the processing of the third packet and stalling the processing of the fourth packet;

upon determining that processing of the fourth packet is stalled, de-scheduling the processing of the fourth packet and allowing the processing core that was assigned to process the fourth packet to process the fifth packet; and

upon the completion of that at least one processing phase of the third packet, releasing the stalling of the processing of the fourth packet allowing one of the processing cores to process the fourth packet at the particular processing phase when de-scheduled.

12. The non-transitory machine-readable storage medium of claim 11 , wherein the multi-core processor is included in a network element.

13. The non-transitory machine-readable storage medium of claim 11 , wherein the multi-core processor is included in a secure router.

14. The non-transitory machine-readable storage medium of claim 11 , wherein the first set of packet types includes all packets to be processed by the multi-core processor including control packets, data packets, and configuration packets.

15. The non-transitory machine-readable storage medium of claim 11 , further comprising:

configuring a third set of one or more of the plurality of processing cores to include the capability to process packets at least belonging to a third set of one or more packet types, the third set of packet types being a subset of the first set of packet types and at least partially different than the second set of packet types.

16. The non-transitory machine-readable storage medium of claim 11 , further comprising:

upon receiving the first and second packets, assigning the first and second packets to different ones of the processing cores based on the processing capability of those processing cores.

17. The non-transitory machine-readable storage medium of claim 11 , further comprising:

upon receiving the first and second packets, assigning the first and second packets to different ones of the processing cores irrespective of the processing capability of those processing cores; and

wherein if the second packet is assigned to one of the second set of processing cores, redirecting the second packet to one of the first set of processing cores.

18. The non-transitory machine-readable storage medium of claim 11 , wherein the first set of processing cores are each configured with a complete firmware image, and wherein the second set of processing cores are each configured with a subset of the complete firmware image, and wherein the second set of packet types excludes packets that require processing capabilities other than capabilities supported by the subset of the complete firmware image.

19. The non-transitory machine-readable storage medium of claim 12 , wherein the first set of packet types includes control packets and packets related to network element configuration, and wherein the second set of packet types does not include control packets and packets related to network element configuration.

20. The non-transitory machine-readable storage medium of claim 18 , wherein the complete firmware image includes an operating system, and wherein the subset of the complete firmware image does not include an operating system.

Assignments (25)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071777/0641 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Apr 30, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 046040/0277 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 041073 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE INTELLECTUAL PROPERTY ASSIGNMENT.. Recorded Apr 5, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 042168/0114 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 23, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS, INC.
Reel/Frame 041073/0001 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 5TH INVENTOR'S NAME PREVIOUSLY RECORDED AT REEL: 021949 FRAME: 054. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jul 7, 2016
From: GMUENDER, JOHN E.; HARUTYUNOV, IOSIF; MINKIN, ILYA; NGUYEN, HUY MINH; MATHUR, MANISH
To: SONICWALL, INC.
Reel/Frame 039439/0741 →
MERGER Recorded Dec 14, 2015
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 037286/0619 →
CONVERSION AND NAME CHANGE Recorded Dec 14, 2015
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 037289/0403 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED ON REEL/FRAME 024776/0337 Recorded May 8, 2012
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; SONICWALL, INC.
Reel/Frame 028177/0115 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED ON REEL/FRAME 024823/0280 Recorded May 8, 2012
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; SONICWALL, INC.
Reel/Frame 028177/0126 →
PATENT SECURITY AGREEMENT (SECOND LIEN) Recorded Aug 3, 2010
From: AVENTAIL LLC; SONICWALL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 024823/0280 →
SECURITY AGREEMENT Recorded Aug 3, 2010
From: AVENTAIL LLC; SONICWALL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 024776/0337 →
MERGER Recorded Jul 28, 2010
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC.
Reel/Frame 024755/0083 →
CHANGE OF NAME Recorded Jul 28, 2010
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 024755/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2008
From: GMUENDER, JOHN E.; HARUTYUNOV, IOSIF; MARTHUR, MANISH; MINKIN, ILYA; NGUYEN, HUY MINH
To: SONICWALL, INC.
Reel/Frame 021949/0545 →