IP Library Granted Patent US 11,336,629
Granted Patent B2
US 11,336,629 · App. 16/802,580 · Granted May 17, 2022

Deterministic load balancing of IPSec packet processing

Inventors: Yong Wang (Palo Alto, CA); Awan Kumar Sharma (Pune, IN); Manmeet Khurana (Pune, IN); Shailesh Urhekar (Pune, IN); Sourabh Bhattacharya (Pune, IN)
Assignee: VMWARE, INC.
H04L63/0485H04L45/74H04L63/029H04L63/0272H04L63/164H04L69/22
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 11,336,629
App. No.
16/802,580
Granted
May 17, 2022
Kind
B2
Abstract

Certain embodiments described herein are generally directed to systems and methods for deterministic load balancing of processing encapsulated encrypted data packets at a destination tunnel endpoint. For example, certain embodiments described herein relate to configuring a destination tunnel endpoint (TEP) with an encapsulating security payload (ESP) receive side scaling (RSS) mode to assign each incoming packet, received from a certain source endpoint (EP), to a certain RSS queue based on an identifier that is encoded in an SPI value included the packet.

Claims (65)

1. A method for deterministic load balancing of processing received encapsulated encrypted data packets at a destination tunnel endpoint (TEP), comprising:

engaging in a tunnel creation according to a security protocol with a source TEP for encrypting data packets communicated between a source endpoint and a destination endpoint;

selecting a central processing unit (CPU) from a plurality of CPUs of the destination TEP using a CPU selection function, the selected CPU being selected to process packets communicated over the tunnel from the source TEP to the destination TEP;

determining a receive side scaling (RSS) queue number associated with an RSS queue associated with a CPU core identifier (ID) of the selected CPU;

generating a security parameter index (SPI) value including the RSS queue number;

indicating the SPI value to the source TEP;

establishing an in-bound security association with the source TEP using the SPI value;

receiving an encrypted packet from the source TEP, wherein:

the encrypted packet is encrypted by the source TEP based on the in-bound security association; and

the encrypted packet includes the SPI value;

retrieving the encrypted packet from the RSS queue having the RSS queue number; and

processing the encrypted packet using the selected CPU.

2. The method of claim 1 , wherein the CPU selection function uses a CPU utilization level of each of the plurality of CPUs as input.

3. The method of claim 1 , wherein the CPU selection function uses a security association count of each of the plurality of CPUs as input.

4. The method of claim 1 , wherein the CPU selection function uses a round-robin algorithm.

5. The method of claim 1 , wherein the RSS queue number is a first number of bits of the SPI value, and wherein remaining bits of the SPI value represent a value.

6. The method of claim 1 , wherein generating the SPI value further comprises:

generating a second SPI value; and

replacing a number of bits in the second SPI value with bits of the RSS queue number to generate the SPI value.

7. The method of claim 1 , wherein receiving the encrypted packet from the source TEP comprises:

receiving the encrypted packet using a virtual network interface card (VNIC), the encrypted data packet comprising a first header and an encrypted payload, the first header comprising a source IP address of the source TEP, a destination IP address of the destination TEP, and the SPI value corresponding to the in-bound security association, the encrypted payload comprising a second header comprising a source IP address of the source endpoint and a destination IP address of the destination endpoint;

determining, at the VNIC, that the encrypted packet is an encapsulating security payload (ESP) encrypted packet;

determining, at the VNIC, that the encrypted packet is associated with the RSS queue based on the RSS queue number identifier; and

using, at the VNIC, an ESP RSS mode of the VNIC to store the encrypted packet in the RSS queue based on the RSS queue number.

8. A computer system, comprising:

a memory comprising executable instructions; and

a processor in data communication with the memory and configured to execute the instructions to cause the computer system to perform operations including:

engaging in a tunnel creation according to a security protocol with a source tunnel endpoint (TEP) for encrypting data packets communicated between a source endpoint and a destination endpoint;

selecting a central processing unit (CPU) from a plurality of CPUs of a destination TEP using a CPU selection function, the selected CPU being selected to process packets communicated over the tunnel from the source TEP to the destination TEP;

determining a receive side scaling (RSS) queue number associated with an RSS queue associated with a CPU core identifier (ID) of the selected CPU;

generating a security parameter index (SPI) value including the RSS queue number;

indicating the SPI value to the source TEP;

establishing an in-bound security association with the source TEP using the SPI value;

receiving an encrypted packet from the source TEP, wherein:

the encrypted packet is encrypted by the source TEP based on the in-bound security association; and

the encrypted packet includes the SPI value;

retrieving the encrypted packet from the RSS queue having the RSS queue number; and

processing the encrypted packet using the selected CPU.

9. The computer system of claim 8 , wherein the CPU selection function uses a CPU utilization level of each of the plurality of CPUs as input.

10. The computer system of claim 8 , wherein the CPU selection function uses a security association count of each of the plurality of CPUs as input.

11. The computer system of claim 8 , wherein the CPU selection function uses a round-robin algorithm.

12. The computer system of claim 8 , wherein the RSS queue number is a first number of bits of the SPI value, and wherein remaining bits of the SPI value represent a value.

13. The computer system of claim 8 , wherein generating the SPI value further comprises:

generating a second SPI value; and

replacing a number of bits in the second SPI value with bits of the RSS queue number to generate the SPI value.

14. The computer system of claim 8 , wherein receiving the encrypted packet from the source TEP comprises:

receiving, at the destination TEP, the encrypted packet using a virtual network interface card (VNIC), the encrypted data packet comprising a first header and an encrypted payload, the first header comprising a source IP address of the source TEP, a destination IP address of the destination TEP, and the SPI value corresponding to the in-bound security association, the encrypted payload comprising a second header comprising a source IP address of the source endpoint and a destination IP address of the destination endpoint;

determining, at the VNIC of the destination TEP, that the encrypted packet is an encapsulating security payload (ESP) encrypted packet;

determining, at the VNIC of the destination TEP, that the encrypted packet is associated with the RSS queue based on the RSS queue number; and

using, at the VNIC, an ESP RSS mode of the VNIC to store the encrypted packet in the RSS queue based on the RSS queue number.

15. A non-transitory computer readable medium having instructions stored thereon that, when executed by a computer system, cause the computer system to perform operations comprising:

engaging in a tunnel creation according to a security protocol with a source tunnel endpoint (TEP) for encrypting data packets communicated between a source endpoint and a destination endpoint;

selecting a central processing unit (CPU) from a plurality of CPUs of a destination TEP using a CPU selection function, the selected CPU being selected to process packets communicated over the tunnel from the source TEP to the destination TEP;

determining a receive side scaling (RSS) queue number associated with an RSS queue associated with a CPU core identifier (ID) of the selected CPU;

generating a security parameter index (SPI) value including the RSS queue number;

indicating the SPI value to the source TEP;

establishing an in-bound security association with the source TEP using the SPI value;

receiving an encrypted packet from the source TEP, wherein:

the encrypted packet is encrypted by the source TEP based on the in-bound security association; and

the encrypted packet includes the SPI value;

retrieving the encrypted packet from the RSS queue having the RSS queue number; and

processing the encrypted packet using the selected CPU.

16. The non-transitory computer readable medium of claim 15 , wherein the CPU selection function uses a CPU utilization level of each of the plurality of CPUs as input.

17. The non-transitory computer readable medium of claim 15 , wherein the CPU selection function uses a security association count of each of the plurality of CPUs as input.

18. The non-transitory computer readable medium of claim 15 , wherein the CPU selection function uses a round-robin algorithm.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2020
From: WANG, YONG; SHARMA, AWAN KUMAR; KHURANA, MANMEET; URHEKAR, SHAILESH; BHATTACHARYA, SOURABH
To: VMWARE, INC.
Reel/Frame 051943/0347 →
Priority Claims (1)
IN 201941044901 · Nov 5, 2019 · national
Continuity (1)
Related Publication 20210136049A1 · May 6, 2021