IP Library Granted Patent US 8,594,131
Granted Patent B1
US 8,594,131 · App. 13/196,454 · Granted Nov 26, 2013

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 8,594,131
App. No.
13/196,454
Granted
Nov 26, 2013
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 (67)

1. A method for packet processing on a multi-core processor having a plurality of processing cores wherein each packet being processed includes a plurality of processing phases each identifiable by a phase identifier, the method comprising:

processing a first set of one or more packet types by 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;

processing a second set of one or more packet types by a second set of one or more of the plurality of processing, 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,

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 third packet is performed prior to at least one of the processing phases of the fourth packet;

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

processing the at least one of the processing phases 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;

upon the completion of the at least one processing phases of the third packet, releasing the stalling of the processing of the fourth packet allowing one of the sets of processing cores to resume processing of the fourth packet at the particular processing phase previously de-scheduled; and

upon each processing phase being completed for a particular packet, associating the corresponding phase identifier with that particular packet.

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 processing on a third set of one or more of the plurality of processing cores packets 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 , wherein the first set of processing cores contain a complete firmware image, and wherein the second set of processing cores contain a subset of the complete firmware image, and wherein the second set of packet types does not include packets that require processing capabilities not included in the subset of the complete firmware image.

7. 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.

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

9. A network element, comprising:

an interface;

a memory;

a packet work assignment unit;

a first set of one or more processing cores; and

a second set of one or more processing cores,

wherein a first set of one or more packet types are processed by the first set of one or more of the plurality of processing cores,

wherein a second set of one or more packet types are processed by a second set of one or more of the plurality of processing cores, the second set of packet types being a subset of the first set of packet types,

wherein the packet work assignment unit receives a first packet, a second packet, a third packet, a fourth packet, and a fifth packet,

wherein the packet work assignment unit assigns packets to the first set of one or more packet types or to the second set of one or more packet types corresponding to the packet type supported by the first set of one or more processing cores and the second set of one or more processing cores,

wherein the third and fourth packet belonging to the same flow,

wherein at least one of the processing phases of the third packet is performed prior to at least one of the processing phases of the fourth packet;

wherein the third and fourth packets are assigned to different sets of the plurality of processing cores;

wherein the at least one of the processing phases of the third packet stalls the processing of the fourth packet by one of the sets of the plurality of processing cores;

wherein the stalling of the fourth packet is detected by one of the sets of the plurality of processing cores that processing core 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;

wherein one of the sets of the plurality of processing cores completes the at least one processing phases of the third packet, releases the stalled of the processing of the fourth packet allowing one of the sets of processing cores to resume processing of the fourth packet at the particular processing phase previously de-scheduled; and

upon each processing phase being completed for a particular packet, associating the corresponding phase identifier with that particular packet.

10. The network element of claim 9 , wherein the first set of the one or more processing cores processes the first set of packet types that includes all packets that are assigned by the packet work assignment unit including control packets, data packets, and configuration packets types, and wherein the second set of one or more processing cores processes a subset of the first set of packet types.

11. The network element of claim 9 , wherein the first set of processing cores each contain a complete firmware image, and wherein the second set of processing cores each contain a subset of the complete firmware image.

12. The network element of claim 9 , further comprising one or more non-network packet processing modules processing control packets and packets related to configuration of the network element.

13. The network element of claim 9 , further comprising a processing type determination module determining the type of assigned packets in the second set of processing cores.

14. The network element of claim 9 , wherein the plurality of processing cores further comprising:

a first set of one or more network packet processing modules processing a first set of one or more packet types on the first set of one or more processing cores;

a second set of one or more network packet processing modules processing a second set of one or more packet types on the second set of one or more processing cores, the second set of packet types being a subset of the first set of packet types;

a third set of one or more processing cores;

a third set of one or more network packet processing modules processing a third set of the one or more packet types on the third set of one or more processing cores, the third set of packet types being a subset of the first set of packet types.

15. A non-transitory computer readable storage medium having embodied thereon a program executable by a processor to perform operations for packet processing on a multi-core processor having a plurality of processing cores, wherein each packet being processed includes a plurality of processing phases each identifiable by a phase identifier, the operations comprising:

processing a first set of one or more packet types by 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;

processing a second set of one or more packet types by a second set of one or more of the plurality of processing, 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,

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 third packet is performed prior to at least one of the processing phases of the fourth packet;

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

processing the at least one of the processing phases 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;

upon the completion of the at least one processing phases of the third packet, releasing the stalling of the processing of the fourth packet allowing one of the sets of processing cores to resume processing of the fourth packet at the particular processing phase previously de-scheduled; and

upon each processing phase being completed for a particular packet, associating the corresponding phase identifier with that particular packet.

16. The non-transitory computer readable storage medium of claim 15 , wherein the multi-core processor is included in a network element.

17. The non-transitory computer readable storage medium of claim 15 , wherein the multi-core processor is included in a secure router.

18. The non-transitory computer readable storage medium of claim 15 , wherein the first set of packet types includes all packets processed by the multi-core processor including control packets, data packets, and configuration packets.

19. The non-transitory computer readable storage medium of claim 15 , 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.

20. The non-transitory computer readable storage medium of claim 15 , 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.

21. The non-transitory computer readable storage medium of claim 15 , wherein the first set of processing cores contain a complete firmware image, and wherein the second set of processing cores contain a subset of the complete firmware image, and wherein the second set of packet types does not include packets that require processing capabilities not included in the subset of the complete firmware image.

22. The non-transitory computer readable storage medium of claim 16 , 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.

23. The non-transitory computer readable storage medium of claim 21 , 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 (21)
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 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 →
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 →
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 SPELLING OF 3RD INVENTOR'S NAME PREVIOUSLY RECORDED AT REEL: 031142 FRAME: 0767. 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 039375/0674 →
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 →
MERGER Recorded Sep 5, 2013
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
Reel/Frame 031142/0840 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2013
From: GMUENDER, JOHN E.; HARUTYUNOV, IOSIF; MARTHUR, MANISH; MINKIN, ILYA; NGUYEN, HUY MINH
To: SONICWALL, INC.
Reel/Frame 031142/0767 →
CHANGE OF NAME Recorded Sep 5, 2013
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 031142/0927 →