IP Library Granted Patent US 9,098,330
Granted Patent B2
US 9,098,330 · App. 14/079,308 · Granted Aug 4, 2015

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 9,098,330
App. No.
14/079,308
Filed
Nov 13, 2013
Granted
Aug 4, 2015
Kind
B2
Art Unit
2412
USPC
370/475
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 (74)

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

receiving a first packet at an input queue;

assigning a first processing phase identifier corresponding to a first processing phase of the first packet when the first packet has a plurality of processing phases;

assigning the first packet to a first processing core;

processing the first processing phase of the first packet on the first processing core;

assigning a second processing phase identifier corresponding to a second processing phase of the first packet when first packet has a second processing phase;

determining that the first processing core cannot process the second processing phase of the first packet because the first processing core enters a processing phase that locks the processing of the first packet;

storing the first packet in a de-schedule queue;

receiving a second packet at the input queue;

processing a processing phase of the second packet, wherein the processing of the processing phase of the second packet releases the lock on the processing of the first packet;

receiving one or more other packets at the input queue;

prioritizing the processing of the second phase of the first packet over the processing of the one or more other packets in the input queue, wherein the one or more other packets were received at a time after the first packet was received; and

processing the second processing phase of the first packet.

2. The method of claim 1 , further comprising:

assigning an incremental processing phase identifier corresponding to a next incremental processing phase of the first packet when the first packet has a next processing phase;

determining that the first processing core can process the next incremental processing phase of the first packet; and

processing the next incremental processing phase of the first packet on the first processing core.

3. The method of claim 1 , further comprising:

assigning an incremental processing phase identifier corresponding to a next incremental processing phase of the first packet when the first packet has a next processing phase;

determining that the first processing core cannot process the next incremental processing phase of the first packet because the firmware of the first processing core does not support the processing of the next incremental processing phase of the first packet;

redirecting the first packet to a second processing core; and

processing the next incremental processing phase of the first packet on the second processing core.

4. The method of claim 2 , further comprising:

assigning the first packet to a de-schedule queue when the first processing core cannot process the next incremental processing phase of the first packet because the first processing core enters a processing phase that locks the processing of the first packet;

storing the first packet in the de-schedule queue;

receiving a third packet;

processing a processing phase of the third packet, wherein the processing of the processing phase of the third packet releases the lock on the processing of the first packet;

prioritizing the processing of the next incremental phase of the first packet over the processing of packets received at a time after the first packet was received; and

processing the next incremental processing phase of the first packet.

5. The method of claim 1 , further comprising prior to processing the first processing phase of the first packet determining that the first processing core can process the first processing phase of the first packet.

6. The method of claim 5 , further comprising:

assigning an incremental processing phase identifier corresponding to a next incremental processing phase of the first packet when the first packet has a next processing phase;

determining that the first processing core can process the next incremental processing phase of the first packet; and

processing the next incremental processing phase of the first packet on the first processing core.

7. The method of claim 6 , further comprising:

redirecting the first packet to a second processing core when the first processing core cannot process the next incremental processing phase of the first packet because the firmware of the first processing core does not support the processing of the next incremental processing phase of the first packet; and

processing the next incremental processing phase of the first packet on the second processing core.

8. A non-transitory computer readable storage medium having embodied thereon a program executable to perform a method for packet processing on a multi-core processor, the method comprising:

receiving a first packet at an input queue;

assigning a first processing phase identifier corresponding to a first processing phase of the first packet when the first packet has a plurality of processing phases;

assigning the first packet to a first processing core;

processing the first processing phase of the first packet on the first processing core;

assigning a second processing phase identifier corresponding to a second processing phase of the first packet when first packet has a second processing phase;

determining that the first processing core cannot process the second processing phase of the first packet because the first processing core enters a processing phase that locks the processing of the first packet;

storing the first packet in a de-schedule queue;

receiving a second packet at the input queue;

processing a processing phase of the second packet, wherein the processing of the processing phase of the second packet releases the lock on the processing of the first packet;

receiving one or more other packets at the input queue;

prioritizing the processing of the second phase of the first packet over the processing of the one or more other packets in the input queue, wherein the one or more other packets were received at a time after the first packet was received; and

processing the second processing phase of the first packet.

9. The non-transitory computer readable storage medium of claim 8 , the program further executable to:

assign an incremental processing phase identifier corresponding to a next incremental processing phase of the first packet when the first packet has a next processing phase;

determine that the first processing core can process the next incremental processing phase of the first packet; and

process the next incremental processing phase of the first packet on the first processing core.

10. The non-transitory computer readable storage medium of claim 8 , the program further executable to:

assign an incremental processing phase identifier corresponding to a next incremental processing phase of the first packet when the first packet has a next processing phase;

determine that the first processing core cannot process the next incremental processing phase of the first packet because the firmware of the first processing core does not support the processing of the next incremental processing phase of the first packet;

redirect the first packet to a second processing core; and

process the next incremental processing phase of the first packet on the second processing core.

11. The non-transitory computer readable storage medium of claim 10 , the program further executable to:

assign the first packet to a de-schedule queue when the first processing core cannot process the next incremental processing phase of the first packet because the first processing core enters a processing phase that locks the processing of the first packet;

store the first packet in the de-schedule queue;

receive a third packet;

process a processing phase of the third packet, wherein the processing of the processing phase of the third packet releases the lock on the processing of the first packet;

prioritize the processing of the next incremental phase of the first packet over the processing of packets received at a time after the first packet was received; and

process the next incremental processing phase of the first packet.

12. The non-transitory computer readable storage medium of claim 8 , the program further executable to determine that the first processing core can process the first processing phase of the first packet prior to processing the first packet.

13. The non-transitory computer readable storage medium of claim 8 , the program further executable to:

assign an incremental processing phase identifier corresponding to a next incremental processing phase of the first packet when the first packet has a next processing phase;

determine that the first processing core can process the next incremental processing phase of the first packet; and

process the next incremental processing phase of the first packet on the first processing core.

14. The non-transitory computer readable storage medium of claim 13 , the program further executable to:

redirect the first packet to a second processing core when the first processing core cannot process the next incremental processing phase of the first packet because the firmware of the first processing core does not support the processing of the next incremental processing phase of the first packet; and

process the next incremental processing phase of the first packet on the second processing core.

Assignments (17)
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 →
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 →
RELEASE OF SECURITY INTEREST OF REEL 032809 FRAME 0930 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; CREDANT TECHNOLOGIES, INC.; COMPELLENT TECHNOLOGIES, INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
Reel/Frame 040045/0255 →
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 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 032809/0930 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032809/0887 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded May 1, 2014
From: COMPELLENT TECHNOLOGIES, INC.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; SECUREWORKS, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 032810/0206 →