IP Library Granted Patent US 10,459,777
Granted Patent B2
US 10,459,777 · App. 15/900,706 · Granted Oct 29, 2019

Packet processing on a multi-core processor

Inventors: John E. Gmuender (Sunnyvale, CA); Iosif Harutyunov (Cupertino, CA); Manish Mathur (Sunnyvale, CA); Ilya Minkin (Los Altos, CA); Huy Minh Nguyen (Fountain Valley, CA)
Assignee: SONICWALL INC.
G06F9/546G06F9/466G06F9/4881G06F9/5044H04L45/60
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 10,459,777
App. No.
15/900,706
Granted
Oct 29, 2019
Kind
B2
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 (49)

1. A method for processing data packets at a plurality of processing cores, the method comprising:

receiving a first data packet;

assigning the first data packet to a first processing core of the plurality of processing cores based on the first processing core comprising a local memory that stores program code executable to process at least a first processing phase of the first data packet;

processing the at least the first processing phase of the first data packet at the first processing core;

receiving a second data packet;

assigning the second data packet to a second processing core of the plurality of processing cores based on the second processing core comprising a local memory that stores instructions executable to process a first processing phase of the second data packet, wherein the program code stored in the local memory of the first processing core does not include corresponding instructions for processing the first processing phase of the second data packet; and

processing the first processing phase of the second data packet at the second processing core.

2. The method of claim 1 , further comprising:

locking the first data packet after processing the at least the first processing phase of the first data packet;

storing the first data packet in a de-schedule queue;

identifying that the lock on the first data packet has been released; and

assigning the first data packet to be further processed at the second processing core based on program code stored in the local memory of the second processing core comprising instructions for processing at least a next processing phase of the first data packet.

3. The method of claim 1 , wherein the program code stored in the local memory of the first processing core includes a subset of the instructions stored in the local memory of the second processing core.

4. The method of claim 1 , further comprising sending the first data packet from the first processing core to the second processing core for processing a next processing phase of the first data packet based on the program code stored in the local memory of the first processing core not supporting a next processing phase of the first data packet.

5. The method of claim 1 , further comprising:

storing the program code in the local memory of the first processing core before the first processing core processes at least the first processing phase of the first data packet; and

storing the instructions in the local memory of the second processing core before the second processing core processes the first processing phase of the second data packet.

6. The method of claim 1 , wherein the instructions stored in the local memory of the second processing core are executable to process a plurality of packet processing phases associated with a configuration function, a management function, and a control function.

7. The method of claim 6 , wherein the program code stored in the local memory of the first processing core is executable to process at least one of the processing phases associated with the configuration function, the management function, or the control function.

8. A non-transitory computer-readable storage medium having embodied thereon a program executable by a processor for performing a method for processing data packets at a plurality of processing cores, the method comprising:

receiving a first data packet;

assigning the first data packet to a first processing core of the plurality of processing cores based on the first processing core comprising a local memory that stores program code executable to process at least a first processing phase of the first data packet;

processing the at least the first processing phase of the first data packet at the first processing core;

receiving a second data packet;

assigning the second data packet to a second processing core of the plurality of processing cores based on the second processing core comprising a local memory that stores instructions executable to process a first processing phase of the second data packet, wherein the program code stored in the local memory of the first processing core does not include corresponding instructions for processing the first processing phase of the second data packet; and

processing the first processing phase of the second data packet at the second processing core.

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

lock the first data packet after processing the at least the first processing phase of the first data packet;

store the first data packet in a de-schedule queue;

identify that the lock on the first data packet has been released; and

assign the first data packet to be further processed at the second processing core based on program code stored in the local memory of the second processing core comprising instructions for processing at least a next processing phase of the first data packet.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the program code stored in the local memory of the first processing core includes a subset of the instructions stored in the local memory of the second processing core.

11. The non-transitory computer-readable storage medium of claim 8 , wherein the program further comprises instructions executable to send the first data packet from the first processing core to the second processing core for processing a next processing phase of the first data packet based on the program code stored in the local memory of the first processing core not supporting a next processing phase of the first data packet.

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

store the program code in the local memory of the first processing core before the first processing core processes at least the first processing phase of the first data packet; and

store the instructions in the local memory of the second processing core before the second processing core processes the first processing phase of the second data packet.

13. The non-transitory computer-readable storage medium of claim 8 , wherein the instructions stored in the local memory of the second processing core are executable to process a plurality of packet processing phases associated with a configuration function, a management function, and a control function.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the program code stored in the local memory of the first processing core is executable to process at least one of the processing phases associated with the configuration function, the management function, or the control function.

15. An apparatus for processing data packets, the apparatus comprising:

a network interface that receives a first data packet;

a plurality of processing cores comprising at least a first processing core and a second processing core; and

an assignment unit executable by a processor to:

assign the first data packet to the first processing core based on the first processing core comprising a local memory that stores program code executable to process at least a first processing phase of the first data packet; wherein the first processing core processes the at least the first processing phase of the first data packet; and

assign a second data packet to the second processing core based on the second processing core comprising instructions stored in a local memory and executable to process a first processing phase of the second data packet, wherein the program code stored in the local memory of the first processing core does not include corresponding instructions for processing the first processing phase of the second data packet; and wherein the second processing core processes the first processing phase of the second data packet.

16. The apparatus of claim 15 , further comprising a de-schedule queue in memory that stores the first data packet after at least the first processing phase of the first data packet has been processed, the first data packet having been locked after at least the first processing phase, wherein the lock on the first data packet is identified as having been released, and the first data packet is assigned to be processed at the second processing core based on program code stored in the local memory of the second processing core comprising instructions for processing at least a next processing phase of the first data packet.

17. The apparatus of claim 15 , wherein the program code stored in the local memory of the first processing core includes a subset of the instructions stored in the local memory of the second processing core.

18. The apparatus of claim 15 , wherein the first processing core sends the first data packet to the second processing core for processing a next processing phase of the first data packet based on the program code stored in the local memory of the first processing core not supporting a next processing phase of the first data packet.

19. The apparatus of claim 15 , wherein the local memory of the first processing core stores the program code before the first processing core processes at least the first processing phase of the first data packet, and wherein the local memory of the second processing core stores the instructions before the second processing core processes the first processing phase of the second data packet.

20. The apparatus of claim 15 , wherein the instructions stored in the memory local to the second processing core are executable to process a plurality of packet processing phases associated with a configuration function, a management function, and a control function.

Assignments (11)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2018
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 045681/0625 →
MERGER Recorded Mar 23, 2018
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
Reel/Frame 045326/0454 →
CHANGE OF NAME Recorded Mar 23, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 045688/0501 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2018
From: GMUENDER, JOHN E.; HARUTYUNOV, IOSIF; MINKIN, ILYA; NGUYEN, HUY MINH; MATHUR, MANISH
To: SONICWALL, INC.
Reel/Frame 045688/0468 →
CHANGE OF NAME Recorded Mar 23, 2018
From: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
To: SONICWALL, INC.
Reel/Frame 045326/0602 →
MERGER Recorded Mar 23, 2018
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 045327/0018 →
CONVERSION AND NAME CHANGE Recorded Mar 23, 2018
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 045681/0271 →
Continuity (6)
Continuation 15397363 · Jan 3, 2017
Continuation 14818218 · Aug 4, 2015
Continuation 14079308 · Nov 13, 2013
Continuation 13196454 · Aug 2, 2011
Continuation 12240892 · Sep 29, 2008
Related Publication 20180181453A1 · Jun 28, 2018