IP Library › Granted Patent US 11,509,638
Granted Patent B2
US 11,509,638 · App. 16/714,838 · Granted Nov 22, 2022

Receive-side processing for encapsulated encrypted packets

Inventors: Yong Wang (San Jose, CA); Jochen Behrens (Santa Cruz, CA)
Assignee: VMWARE, INC.
H04L63/0485G06F9/45558G06F9/505G06F9/5077G06F2009/45595
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,509,638
App. No.
16/714,838
Granted
Nov 22, 2022
Kind
B2
Abstract

Example methods and computer systems for receive-side processing for encapsulated encrypted packets. One example may comprise: in response to receiving, over a tunnel, a first encapsulated encrypted packet that includes a first encrypted inner packet and a first outer header, generating a first decrypted inner packet by performing decryption and decapsulation; and based on content of the first decrypted inner packet, assigning the first decrypted inner packet to a first processing unit. The method may further comprise: in response to receiving, over the tunnel, a second encapsulated encrypted packet that includes a second encrypted inner packet and a second outer header, generating a second decrypted inner packet by performing decryption and decapsulation; and based on content of the second decrypted inner packet, assigning the second decrypted inner packet to a second processing unit, thereby distributing post-cryptography processing over multiple processing units.

Claims (71)

1. A method for a computer system to perform receive-side processing for encapsulated encrypted packets, the method comprising:

in response to receiving, over a tunnel, a first encapsulated encrypted packet that includes a first encrypted inner packet and a first outer header:

generating a first decrypted inner packet by performing decryption on the first encrypted inner packet and decapsulation to remove the first outer header; and

based on header content of the first decrypted inner packet, assigning the first decrypted inner packet to a first processing unit; and

in response to receiving, over the tunnel, a second encapsulated encrypted packet that includes a second encrypted inner packet and a second outer header:

generating a second decrypted inner packet by performing decryption on the second encrypted inner packet and decapsulation to remove the second outer header; and

based on header content of the second decrypted inner packet, assigning the second decrypted inner packet to a second processing unit, thereby distributing post-cryptography processing over multiple processing units that include the first processing unit and second processing unit,

wherein assigning the first decrypted inner packet to the first processing unit and assigning the second decrypted inner packet to the second processing unit, respectively based on the header contents of the first and second decrypted inner packets, comprise using a hash value associated with tuple information so that packets having same tuple information and belonging to a same transmission control protocol (TCP) flow between a source and a destination are assigned to a same processing unit.

2. The method of claim 1 , wherein generating the first decrypted inner packet comprises:

performing decryption on the first encrypted inner packet based on a security association (SA) associated with the tunnel and identified by the first outer header, wherein the second outer header identifies the same SA.

3. The method of claim 1 , wherein assigning the first decrypted inner packet to the first processing unit comprises:

selecting, by the computer system which comprises an edge, from the multiple processing units, the first processing unit based on the header content of the first decrypted inner packet.

4. The method of claim 3 , wherein assigning the first decrypted inner packet to the first processing unit comprises:

calculating the hash value based on the header content which includes one or more of: source address information, destination address information, source port number, destination port number, and protocol information; and

selecting the first processing unit based on the hash value.

5. The method of claim 3 , wherein assigning the first decrypted inner packet to the first processing unit further comprises:

selecting, from the multiple processing units, the first processing unit based on a load level associated with the first processing unit.

6. The method of claim 1 , wherein assigning the first decrypted inner packet and the second decrypted inner packet comprises:

assigning the first decrypted inner packet to the first processing unit running a first poll mode driver (PMD) thread for post-cryptography processing; and

assigning the second decrypted inner packet to the second processing unit running a second PMD thread for post-cryptography processing.

7. The method of claim 1 , further comprising:

performing, using the first processing unit, post-cryptography processing on the first decrypted inner packet to forward the first decrypted inner packet towards a first destination; and

performing, using the second processing unit, post-cryptography processing on the second decrypted inner packet to forward the second decrypted inner packet towards a second destination.

8. A non-transitory computer-readable storage medium that includes a set of instructions which, in response to execution by a processor of a network device, cause the processor to perform a method of receive-side processing for encapsulated encrypted packets, wherein the method comprises:

in response to receiving, over a tunnel, a first encapsulated encrypted packet that includes a first encrypted inner packet and a first outer header:

generating a first decrypted inner packet by performing decryption on the first encrypted inner packet and decapsulation to remove the first outer header; and

based on header content of the first decrypted inner packet, assigning the first decrypted inner packet to a first processing unit; and

in response to receiving, over the tunnel, a second encapsulated encrypted packet that includes a second encrypted inner packet and a second outer header:

generating a second decrypted inner packet by performing decryption on the second encrypted inner packet and decapsulation to remove the second outer header; and

based on header content of the second decrypted inner packet, assigning the second decrypted inner packet to a second processing unit, thereby distributing post-cryptography processing over multiple processing units that include the first processing unit and second processing unit,

wherein assigning the first decrypted inner packet to the first processing unit and assigning the second decrypted inner packet to the second processing unit, respectively based on the header contents of the first and second decrypted inner packets, comprise using a hash value associated with tuple information so that packets having same tuple information and belonging to a same transmission control protocol (TCP) flow between a source and a destination are assigned to a same processing unit.

9. The non-transitory computer-readable storage medium of claim 8 , wherein generating the first decrypted inner packet comprises:

performing decryption on the first encrypted inner packet based on a security association (SA) associated with the tunnel and identified by the first outer header, wherein the second outer header identifies the same SA.

10. The non-transitory computer-readable storage medium of claim 8 , wherein assigning the first decrypted inner packet to the first processing unit comprises:

selecting, by the network device which comprises an edge, from the multiple processing units, the first processing unit based on the header content of the first decrypted inner packet.

11. The non-transitory computer-readable storage medium of claim 10 , wherein assigning the first decrypted inner packet to the first processing unit comprises:

calculating the hash value based on the header content which includes one or more of: source address information, destination address information, source port number, destination port number, and protocol information; and

selecting the first processing unit based on the hash value.

12. The non-transitory computer-readable storage medium of claim 10 , wherein assigning the first decrypted inner packet to the first processing unit further comprises:

selecting, from the multiple processing units, the first processing unit based on a load level associated with the first processing unit.

13. The non-transitory computer-readable storage medium of claim 8 , wherein assigning the first decrypted inner packet and the second decrypted inner packet comprises:

assigning the first decrypted inner packet to the first processing unit running a first poll mode driver (PMD) thread for post-cryptography processing; and

assigning the second decrypted inner packet to the second processing unit running a second PMD thread for post-cryptography processing.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the method further comprises:

performing, using the first processing unit, post-cryptography processing on the first decrypted inner packet to forward the first decrypted inner packet towards a first destination; and

performing, using the second processing unit, post-cryptography processing on the second decrypted inner packet to forward the second decrypted inner packet towards a second destination.

15. A computer system configured to perform receive-side processing for encapsulated encrypted packets, the computer system comprising:

a processor that supports multiple processing units; and

a non-transitory computer-readable medium having stored thereon instructions that, in response to execution by the processor, cause the processor to:

in response to receiving, over a tunnel, a first encapsulated encrypted packet that includes a first encrypted inner packet and a first outer header:

generate a first decrypted inner packet by performing decryption on the first encrypted inner packet and decapsulation to remove the first outer header; and

based on header content of the first decrypted inner packet, assign the first decrypted inner packet to a first processing unit; and

in response to receiving, over the tunnel, a second encapsulated encrypted packet that includes a second encrypted inner packet and a second outer header:

generate a second decrypted inner packet by performing decryption on the second encrypted inner packet and decapsulation to remove the second outer header; and

based on header content of the second decrypted inner packet, assign the second decrypted inner packet to a second processing unit, thereby distributing post-cryptography processing over multiple processing units that include the first processing unit and second processing unit,

wherein the instructions that cause the processor to assign the first decrypted inner packet to the first processing unit and to assign the second decrypted inner packet to the second processing unit, respectively based on the header contents of the first and second decrypted inner packets, comprise instructions that cause the processor to use a hash value associated with tuple information so that packets having same tuple information and belonging to a same transmission control protocol (TCP) flow between a source and a destination are assigned to a same processing unit.

16. The computer system of claim 15 , wherein the instructions that cause the processor to generate the first decrypted inner packet cause the processor to:

perform decryption on the first encrypted inner packet based on a security association (SA) associated with the tunnel and identified by the first outer header, wherein the second outer header identifies the same SA.

17. The computer system of claim 15 , wherein the instructions that cause the processor to assign the first decrypted inner packet to the first processing unit cause the processor to:

select, by the computer system which comprises an edge, from the multiple processing units, the first processing unit based on the header content of the first decrypted inner packet.

18. The computer system of claim 17 , wherein the instructions that cause the processor to assign the first decrypted inner packet to the first processing unit cause the processor to:

calculate the hash value based on the header content which includes one or more of: source address information, destination address information, source port number, destination port number, and protocol information; and

select the first processing unit based on the hash value.

19. The computer system of claim 17 , wherein the instructions that cause the processor to assign the first decrypted inner packet to the first processing unit further cause the processor to:

select, from the multiple processing units, the first processing unit based on a load level associated with the first processing unit.

20. The computer system of claim 15 , wherein the instructions that cause the processor to assign the first decrypted inner packet and the second decrypted inner packet cause the processor to:

assign the first decrypted inner packet to the first processing unit running a first poll mode driver (PMD) thread for post-cryptography processing; and

assign the second decrypted inner packet to the second processing unit running a second PMD thread for post-cryptography processing.

21. The computer system of claim 15 , wherein the instructions further cause the processor to:

perform, using the first processing unit, post-cryptography processing on the first decrypted inner packet to forward the first decrypted inner packet towards a first destination; and

perform, using the second processing unit, post-cryptography processing on the second decrypted inner packet to forward the second decrypted inner packet towards a second destination.

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 Dec 16, 2019
From: WANG, YONG; BEHRENS, JOCHEN
To: VMWARE, INC.
Reel/Frame 051287/0308 →
Continuity (1)
Related Publication 20210185025A1 · Jun 17, 2021