IP Library Granted Patent US 12,218,924
Granted Patent B2
US 12,218,924 · App. 18/450,345 · Granted Feb 4, 2025

Segmentation of encrypted segments in networks

Inventors: Wenyi Jiang (Palo Alto, CA); Daniel G. Wing (Palo Alto, CA); Bin Qian (San Jose, CA); Dexiang Wang (Sunnyvale, CA)
Assignee: NICIRA, INC.
H04L63/0485H04L47/36H04L63/029H04L69/22H04L69/324
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 12,218,924
App. No.
18/450,345
Granted
Feb 4, 2025
Kind
B2
Abstract

A first host receives a packet from a first compute node for a second compute node of a second host. The payload is larger than a maximum transmission unit size. The first packet is encapsulated with an outer header. The first host analyzes a length of at least a portion of the outer header in determining a size of an encrypted segment of the payload. Then, the first host forms a plurality of packets where each packet in the packets includes an encrypted segment of the payload, a respective encryption header, and a respective authentication value. The payload of the first packet is segmented to form a plurality of encrypted segments based on the size. The first host sends the packets to the second host and receives an indication that a packet was not received. A second packet including the encrypted segment is sent to the second compute node.

Claims (91)

1. A method comprising:

receiving, at a first host, a first packet from a first compute node that is being sent to a second compute node of a second host, the first packet including a first header and a payload, wherein the payload is larger than a maximum transmission unit size for sending packets to the second compute node;

encapsulating the first packet with an outer header;

analyzing a length of at least a portion of the outer header in determining a size of an encrypted segment of the payload to include in a plurality of packets;

forming the plurality of packets, wherein each packet in the plurality of packets includes an encrypted segment of the payload, a respective encryption header for the respective encrypted segment, and a respective authentication value for the respective encrypted segment, wherein the payload of the first packet is segmented to form a plurality of encrypted segments based on the size of the encrypted segment;

sending the plurality of packets to the second host using the outer header;

receiving an indication that one of the plurality of packets was not received by the second compute node; and

sending a second packet including the encrypted segment that was not received in the one of the plurality of the packets to the second compute node.

2. The method of claim 1 , wherein segments other than the encrypted segment that was not received are not resent to the second compute node.

3. The method of claim 1 , wherein analyzing comprises:

calculating a maximum segment size based on the maximum transmission unit, the first header, and the at least the portion of the outer header; and

calculating the size of the encrypted segment based on the maximum segment size, a size of the encryption header for the encrypted segment, and a size of the authentication value for the encrypted segment.

4. The method of claim 3 , further comprising:

encrypting segments of the payload in the first packet based on the size of the encrypted segment to include in the plurality of packets;

inserting the respective encryption header and the respective authentication value for the respective encrypted segment in the payload of the first packet; and

segmenting the payload of the first packet based on the maximum segment size to form a plurality of payloads for the plurality of packets.

5. The method of claim 1 , wherein:

the first compute node is a virtualized computing instance (VCI) supported by virtualization software running on the first host.

6. The method of claim 1 , further comprising:

executing, with the first host, a hypervisor comprising a virtual switch;

creating, with the virtual switch, a software-defined logical overlay network on which the compute node resides, the overlay network comprising:

a first tunnel endpoint corresponding to the first compute node and having a first address; and

a second tunnel endpoint corresponding to the second compute node and having a second address;

identifying the first address and the second address with the outer header.

7. The method of claim 6 , wherein:

forming the plurality of packets comprises:

generating a plurality of payload segments by segmenting the payload of the first packet;

encrypting, by an encryption engine of the hypervisor, each of the plurality of payload segments;

adding, by the encryption engine, associated encryption headers and authentication values for the plurality of payload segments;

generating, with a segmentation engine of the hypervisor, the plurality of packets from the plurality of payload segments and associated encryption headers and authentication values.

8. A non-transitory computer-readable storage medium containing instructions, that when executed, control a computer system to be configured for:

receiving, at a first host, a first packet from a first compute node that is being sent to a second compute node of a second host, the first packet including a first header and a payload, wherein the payload is larger than a maximum transmission unit size for sending packets to the second compute node;

encapsulating the first packet with an outer header;

analyzing a length of at least a portion of the outer header in determining a size of an encrypted segment of the payload to include in a plurality of packets;

forming the plurality of packets, wherein each packet in the plurality of packets includes an encrypted segment of the payload, a respective encryption header for the respective encrypted segment, and a respective authentication value for the respective encrypted segment, wherein the payload of the first packet is segmented to form a plurality of encrypted segments based on the size of the encrypted segment;

sending the plurality of packets to the second host using the outer header;

receiving an indication that one of the plurality of packets was not received by the second compute node; and

sending a second packet including the encrypted segment that was not received in the one of the plurality of the packets to the second compute node.

9. The non-transitory computer-readable storage medium of claim 8 , wherein segments other than the encrypted segment that was not received are not resent to the second compute node.

10. The non-transitory computer-readable storage medium of claim 8 , wherein analyzing comprises:

calculating a maximum segment size based on the maximum transmission unit, the first header, and the at least the portion of the outer header; and

calculating the size of the encrypted segment based on the maximum segment size, a size of the encryption header for the encrypted segment, and a size of the authentication value for the encrypted segment.

11. The non-transitory computer-readable storage medium of claim 10 , further comprising:

encrypting segments of the payload in the first packet based on the size of the encrypted segment to include in the plurality of packets;

inserting the respective encryption header and the respective authentication value for the respective encrypted segment in the payload of the first packet; and

segmenting the payload of the first packet based on the maximum segment size to form a plurality of payloads for the plurality of packets.

12. The non-transitory computer-readable storage medium of claim 8 , wherein:

the first compute node is a virtualized computing instance (VCI) supported by virtualization software running on the first host.

13. The non-transitory computer-readable storage medium of claim 8 , further comprising:

executing, with the first host, a hypervisor comprising a virtual switch;

creating, with the virtual switch, a software-defined logical overlay network on which the compute node resides, the overlay network comprising:

a first tunnel endpoint corresponding to the first compute node and having a first address; and

a second tunnel endpoint corresponding to the second compute node and having a second address;

identifying the first address and the second address with the outer header.

14. The non-transitory computer-readable storage medium of claim 13 , wherein:

forming the plurality of packets comprises:

generating a plurality of payload segments by segmenting the payload of the first packet;

encrypting, by an encryption engine of the hypervisor, each of the plurality of payload segments;

adding, by the encryption engine, associated encryption headers and authentication values for the plurality of payload segments;

generating, with a segmentation engine of the hypervisor, the plurality of packets from the plurality of payload segments and associated encryption headers and authentication values.

15. A first host comprising:

one or more computer processors; and

a non-transitory computer-readable storage medium comprising instructions, that when executed, control the one or more computer processors to be configured for:

receiving a first packet from a first compute node that is being sent to a second compute node of a second host, the first packet including a first header and a payload, wherein the payload is larger than a maximum transmission unit size for sending packets to the second compute node;

encapsulating the first packet with an outer header;

analyzing a length of at least a portion of the outer header in determining a size of an encrypted segment of the payload to include in a plurality of packets;

forming the plurality of packets, wherein each packet in the plurality of packets includes an encrypted segment of the payload, a respective encryption header for the respective encrypted segment, and a respective authentication value for the respective encrypted segment, wherein the payload of the first packet is segmented to form a plurality of encrypted segments based on the size of the encrypted segment;

sending the plurality of packets to the second host using the outer header;

receiving an indication that one of the plurality of packets was not received by the second compute node; and

sending a second packet including the encrypted segment that was not received in the one of the plurality of the packets to the second compute node.

16. The apparatus of claim 15 , wherein segments other than the encrypted segment that was not received are not resent to the second compute node.

17. The apparatus of claim 15 , wherein analyzing comprises:

calculating a maximum segment size based on the maximum transmission unit, the first header, and the at least the portion of the outer header; and

calculating the size of the encrypted segment based on the maximum segment size, a size of the encryption header for the encrypted segment, and a size of the authentication value for the encrypted segment.

18. The apparatus of claim 17 , further configured for:

encrypting segments of the payload in the first packet based on the size of the encrypted segment to include in the plurality of packets;

inserting the respective encryption header and the respective authentication value for the respective encrypted segment in the payload of the first packet; and

segmenting the payload of the first packet based on the maximum segment size to form a plurality of payloads for the plurality of packets.

19. The apparatus of claim 15 , wherein the first compute node is a virtualized computing instance (VCI) supported by virtualization software running on the first host.

20. The apparatus of claim 15 , further comprising:

executing, with the first host, a hypervisor comprising a virtual switch;

creating, with the virtual switch, a software-defined logical overlay network on which the compute node resides, the overlay network comprising:

a first tunnel endpoint corresponding to the first compute node and having a first address; and

a second tunnel endpoint corresponding to the second compute node and having a second address;

identifying the first address and the second address with the outer header.

21. The apparatus of claim 20 , wherein:

forming the plurality of packets comprises:

generating a plurality of payload segments by segmenting the payload of the first packet;

encrypting, by an encryption engine of the hypervisor, each of the plurality of payload segments;

adding, by the encryption engine, associated encryption headers and authentication values for the plurality of payload segments;

generating, with a segmentation engine of the hypervisor, the plurality of packets from the plurality of payload segments and associated encryption headers and authentication values.

Assignments (3)
MERGER Recorded Jan 29, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070048/0430 →
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2024
From: JIANG, WENYI; WING, DANIEL G.; QIAN, BIN; WANG, DEXIANG
To: NICIRA, INC.
Reel/Frame 069692/0426 →
Continuity (3)
Continuation 17458969 · Aug 27, 2021
Continuation 15796656 · Oct 27, 2017
Related Publication 20230396598A1 · Dec 7, 2023
References Cited (10)
US 6263396B1 · Cottle · 2001 [cited by examiner]
US 20030142823A1 · Swander · 2003 [cited by examiner]
US 20040205336A1 · Kessler · 2004 [cited by examiner]
US 20050135419A1 · Pullen · 2005 [cited by examiner]
US 20060029102A1 · Abe · 2006 [cited by examiner]
US 20070098007A1 · Prodan · 2007 [cited by examiner]
US 20070223472A1 · Tachibana · 2007 [cited by examiner]
US 20080310452A1 · Vedantham · 2008 [cited by examiner]
US 20130329557A1 · Petry · 2013 [cited by examiner]
US 20160127520A1 · Tewari · 2016 [cited by examiner]