IP Library Granted Patent US 9,483,317
Granted Patent B1
US 9,483,317 · App. 14/828,351 · Granted Nov 1, 2016

Using multiple central processing unit cores for packet forwarding in virtualized networks

Inventors: Choung-Yaw Shieh (Palo Alto, CA); Marc Woolward (Santa Cruz, CA); Yi Sun (San Jose, CA)
Assignee: vArmour Networks, Inc.
G06F9/5083G06F9/45558G06F2009/45591
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,483,317
App. No.
14/828,351
Granted
Nov 1, 2016
Kind
B1
Abstract

Systems and methods for using a plurality of processing cores for packet processing in a virtualized network environment are described herein. An example system can comprise a scheduler operable to initiate a processing core of the plurality of processing cores. The processing core is operable to process a plurality of data packets. Based on the determination that the processing core exceeds a threshold processing capacity associated with the processing core, the scheduler sequentially initiates at least one subsequent processing core. The at least one subsequent processing core has a corresponding threshold processing capacity and is operable to process data packets of the plurality of data packets in excess of threshold processing capacities associated with preceding processing cores. Thus, the threshold processing capacities associated with the preceding processing cores are not exceeded.

Claims (46)

1. A system for using a plurality of processing cores for packet processing in a virtualized network environment, the system comprising:

a computer-implemented scheduler operable to:

initiate a processing core of the plurality of processing cores such that the processing core is operable to process a first plurality of data packets associated with a first virtual machine;

receive a first data packet associated with the first virtual machine;

determine that the processing core exceeds a first threshold processing capacity associated with the processing core;

based on the determining, initiate a subsequent processing core such that the subsequent processing core is operable to process data packets of the first plurality of data packets in excess of the first threshold processing capacity, the subsequent processing core having a first portion of a processing capacity associated with data packet forwarding and a second portion of the processing capacity associated with data packet processing such that a second threshold processing capacity associated with the subsequent processing core is less than the first threshold processing capacity;

forward the first data packet to a first queue associated with the subsequent processing core;

receive a second data packet associated with the first virtual machine;

ascertain that the processing core is below the first threshold processing capacity associated with the processing core;

based on the ascertaining, re-initiate the subsequent processing core such that the subsequent processing core is operable to process a second plurality of data packets associated with a second virtual machine; and

forward the second data packet to a second queue associated with the processing core.

2. The system of claim 1 , wherein the subsequent processing core is operable to process the second plurality of data packets until the subsequent processing core exceeds the second threshold processing capacity.

3. The system of claim 1 , wherein the computer-implemented scheduler is further operable to:

determine a number of data packets forwarded by the subsequent processing core per unit of time with respect to processing capacities to determine a current workload of the subsequent processing core, the subsequent processing core having a processing capacity.

4. The system of claim 1 , wherein the first threshold processing capacity constitutes a predetermined portion of a total capacity of the processing core.

5. The system of claim 1 , wherein data packets sent to the processing core and the subsequent processing core are placed into a plurality of packet queues, wherein each of the processing core and the subsequent processing core is associated with one of the plurality of packet queues.

6. The system of claim 5 , wherein the computer-implemented scheduler is further operable to monitor a number of the data packets in each of the plurality of packet queues.

7. The system of claim 6 , wherein the computer-implemented scheduler is further operable to ascertain that the number of the data packets in a packet queue associated with the processing core is less than a number of data packets placed into the packet queue per a unit of time, wherein the determining that the processing core exceeds the first threshold processing capacity is based on the ascertaining.

8. The system of claim 5 , wherein each of the processing core and the subsequent processing core is operable to pull the data packets from one of the plurality of packet queues.

9. A method for using a plurality of processing cores for packet processing in a virtualized network environment, the method comprising:

initiating a processing core of the plurality of processing cores such that the processing core is operable to process a first plurality of data packets associated with a first virtual machine;

receiving a first data packet associated with the first virtual machine;

determining that the processing core exceeds a first threshold processing capacity associated with the processing core;

based on the determining, initiating a subsequent processing core such that the subsequent processing core is operable to process data packets of the first plurality of data packets in excess of the first threshold processing capacity, the subsequent processing core having a first portion of a processing capacity associated with data packet forwarding and a second portion of the processing capacity associated with data packet processing such that a second threshold processing capacity associated with the subsequent processing core is less than the first threshold processing capacity;

forwarding the first data packet to a first queue associated with the subsequent processing core;

receiving a second data packet associated with the first virtual machine;

ascertaining that the processing core is below the first threshold processing capacity associated with the processing core;

based on the ascertaining, re-initiating the subsequent processing core such that the subsequent processing core is operable to process a second plurality of data packets associated with a second virtual machine; and

forwarding the second data packet to a second queue associated with the processing core.

10. The method of claim 9 , wherein the subsequent processing core is operable to process the second plurality of data packets until the subsequent processing core exceeds the second threshold processing capacity.

11. The method of claim 9 , further comprising:

determining a number of data packets forwarded by the subsequent processing core per unit of time with respect to processing capacities to determine a current workload of the subsequent processing core, the subsequent processing core having a processing capacity.

12. The method of claim 9 , wherein the first threshold processing capacity constitutes a predetermined portion of a total capacity of the processing core.

13. The method of claim 9 , wherein data packets sent to the processing core and the subsequent processing core are placed into a plurality of packet queues, wherein each of the processing core and the subsequent processing core is associated with one of the plurality of packet queues.

14. The method of claim 13 , further comprising monitoring a number of the data packets in the each of the plurality of packet queues.

15. The method of claim 14 , further comprising ascertaining that the number of the data packets in a packet queue associated with the processing core decreases for a lesser number of data packets than a number of data packets placed into the packet queue per a unit of time, wherein the determining that the processing core exceeds the first threshold processing capacity is based on the ascertaining.

16. A non-transitory computer-readable storage medium having a program embodied thereon, the program being executable by a processor to perform a method for packet processing in a virtualized network environment, the method comprising:

initiate a processing core of a plurality of processing cores such that the processing core is operable to process a first plurality of data packets associated with a first virtual machine;

receive a first data packet associated with the first virtual machine;

determine that the processing core exceeds a first threshold processing capacity associated with the processing core;

based on the determining, initiate a subsequent processing core such that the subsequent processing core is operable to process data packets of the first plurality of data packets in excess of the first threshold processing capacity, the subsequent processing core having a first portion of a processing capacity associated with data packet forwarding and a second portion of the processing capacity associated with data packet processing such that a second threshold processing capacity associated with the subsequent processing core is less than the first threshold processing capacity;

forward the first data packet to a first queue associated with the subsequent processing core;

receive a second data packet associated with the first virtual machine;

ascertain that the processing core is below the first threshold processing capacity associated with the processing core;

based on the ascertaining, re-initiate the subsequent processing core such that the subsequent processing core is operable to process a second plurality of data packets associated with a second virtual machine; and

forward the second data packet to a second queue associated with the processing core.

Assignments (6)
PATENT SECURITY AGREEMENT Recorded Jul 18, 2025
From: GRYPHO5, LLC
To: EVP CREDIT SPV I LP
Reel/Frame 072053/0141 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2025
From: VARMOUR NETWORKS, INC.
To: GRYPHO5, LLC
Reel/Frame 070287/0007 →
SECURITY INTEREST Recorded Feb 22, 2024
From: VARMOUR NETWORKS, INC.
To: FIRST-CITIZENS BANK & TRUST COMPANY
Reel/Frame 066530/0399 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2018
From: SHIEH, CHOUNG-YAW
To: VARMOUR NETWORKS, INC.
Reel/Frame 045438/0098 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR'S NAME PREVIOUSLY RECORDED ON REEL 036728 FRAME 0002. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF ASSIGNORS INTEREST. Recorded Aug 26, 2016
From: SHIEH, CHOUNG-YAW; WOOLWARD, MARC; SUN, YI
To: VARMOUR NETWORKS, INC.
Reel/Frame 039844/0397 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2015
From: SHIEH, CHOUNG-YAW MICHAEL; WOOLWARD, MARC; SUN, YI
To: VARMOUR NETWORKS, INC
Reel/Frame 036728/0025 →