IP Library Granted Patent US 10,164,885
Granted Patent B2
US 10,164,885 · App. 14/956,716 · Granted Dec 25, 2018

Load balancing over multiple tunnel endpoints

Inventors: Jianjun Shen (Beijing, CN); Alexander Tessmer (Mountain View, CA); Mukesh Hira (Palo Alto, CA); Pankaj Thakkar (Cupertino, CA); Hua Wang (Beijing, CN)
Assignee: NICIRA, INC.
H04L47/125H04L45/72H04L45/7453H04L61/6022
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,164,885
App. No.
14/956,716
Granted
Dec 25, 2018
Kind
B2
Abstract

Some embodiments provide a method for a managed forwarding element (MFE). The method receives a packet from a data compute node for which the MFE performs first-hop processing. The data compute node is associated with multiple tunnel endpoints of the MFE. The method determines a destination tunnel endpoint for the packet. The method uses a load balancing algorithm to select one of the multiple tunnel endpoints of the MFE as a source tunnel endpoint for the packet. The method encapsulates the packet in a tunnel using the source and destination tunnel endpoints.

Claims (60)

1. For a first managed forwarding element (MFE), a method comprising:

receiving a packet from a data compute node for which the first MFE performs first-hop processing, wherein a first plurality of tunnel endpoints are associated with the first MFE;

determining, for the packet, a destination tunnel endpoint associated with a second MFE from a second plurality of tunnel endpoints associated with the second MFE;

using a load balancing algorithm to select a particular one of the first plurality of tunnel endpoints associated with the first MFE as a source tunnel endpoint for packets sent to and from the data compute node;

encapsulating the packet with a tunnel header using the source and destination tunnel endpoints; and

storing a mapping of a source address of the packet to the selected source tunnel endpoint, wherein a plurality of subsequent packets having the same source data compute node and a plurality of different destination data compute nodes are each encapsulated using (i) based on the stored mapping, the source tunnel endpoint selected for the source data compute node, and (ii) a destination tunnel endpoint associated with an MFE to which the destination data compute node for the packet connects, wherein different destination tunnel endpoints are used for different subsequent packets sent to different destination data compute nodes.

2. The method of claim 1 , wherein using the load balancing algorithm to select one of the first plurality of tunnel endpoints associated with the first MFE comprises:

calculating a hash of a set of packet header values of the packet; and

based on the hash, assigning the set of packet header values of the packet to the particular one of the first plurality of tunnel endpoints.

3. The method of claim 2 , wherein the set of packet header values comprises source and destination network layer addresses, source and destination transport layer port numbers, and a transport layer protocol.

4. The method of claim 2 , wherein the set of packet header values comprises a source MAC address.

5. The method of claim 1 , wherein using the load balancing algorithm to select the particular one of the first plurality of tunnel endpoints associated with the first MFE comprises:

assessing a current load on each tunnel endpoint of the first plurality of tunnel endpoints; and

assigning the packet to the particular one of the first plurality of tunnel endpoints based on the load assessment.

6. The method of claim 1 , wherein determining the destination tunnel endpoint for the packet from the second plurality of tunnel endpoints comprises mapping a destination address of the packet to a particular tunnel endpoint stored by the first MFE based on a source tunnel endpoint for a prior packet received from the particular tunnel endpoint.

7. The method of claim 1 , wherein determining the destination tunnel endpoint for the packet from the second plurality of tunnel endpoints comprises:

mapping a destination address of the packet to the second plurality of tunnel endpoints associated with the second WE; and

selecting one of the tunnel endpoints in the second plurality of tunnel endpoints as a destination tunnel endpoint for the packet.

8. The method of claim 7 , wherein the first MFE does not store a mapping of the destination address to the selected destination tunnel endpoint.

9. The method of claim 1 further comprising outputting the packet onto a physical network between the tunnel endpoints.

10. The method of claim 1 further comprising:

receiving a subsequent packet from the data compute node having the same source address; and

using the stored mapping to select the same source tunnel endpoint for the subsequent packet.

11. The method of claim 1 further comprising identifying a subset of the first plurality of tunnel endpoints associated with the first MFE based on the data compute node from which the packet is received, wherein the load balancing algorithm selects one of the tunnel endpoints in the subset.

12. The method of claim 11 , wherein different data compute nodes for which the first MFE performs first-hop processing are associated with different subsets of the first plurality of tunnel endpoints.

13. The method of claim 1 , wherein the packet is a first packet, the data compute node is a first data compute node, and the selected tunnel endpoint is a first tunnel endpoint, the method further comprising:

receiving a second packet from a second data compute node for which the first MFE performs first-hop processing;

determining, for the second packet, a second destination tunnel endpoint associated with a third MFE from the second plurality of tunnel endpoints associated with the third WE;

using the load balancing algorithm to select a second tunnel endpoint of the first plurality of tunnel endpoints associated with the first MFE as a second source tunnel endpoint for the second packet;

encapsulating the second packet in a tunnel using the second source and second destination tunnel endpoints; and

storing a mapping of a source address of the second packet to the second source tunnel endpoint.

14. A non-transitory machine readable medium storing a first managed forwarding element (MFE) for execution by at least one processing unit, the first MFE comprising sets of instructions for:

receiving a packet from a data compute node for which the first MFE performs first-hop processing, wherein a first plurality of tunnel endpoints are associated with the first WE;

determining, for the packet, a destination tunnel endpoint associated with a second MFE from a second plurality of tunnel endpoints associated with the second WE;

using a load balancing algorithm to select a particular one of the first plurality of tunnel endpoints associated with the first MFE as a source tunnel endpoint for packets sent to and from the data compute node;

encapsulating the packet with a tunnel header using the source and destination tunnel endpoints; and

storing a mapping of a source address of the packet to the selected source tunnel endpoint, wherein a plurality of subsequent packets having the same source data compute node and a plurality of different destination data compute nodes are each encapsulated using (i) based on the stored mapping, the source tunnel endpoint selected for the source data compute node, and (ii) a destination tunnel endpoint associated with an MFE to which the destination data compute node for the packet connects, wherein different destination tunnel endpoints are used for different subsequent packets sent to different destination data compute nodes.

15. The non-transitory machine readable medium of claim 14 , wherein the set of instructions for using the load balancing algorithm to select one of the first plurality of tunnel endpoints associated with the first MFE comprises sets of instructions for:

calculating a hash of a set of packet header values of the packet; and

based on the hash, assigning the set of packet header values of the packet to the particular one of the first plurality of tunnel endpoints.

16. The non-transitory machine readable medium of claim 15 , wherein the set of packet header values comprises source and destination network layer addresses, source and destination transport layer port numbers, and a transport layer protocol.

17. The non-transitory machine readable medium of claim 15 , wherein the set of packet header values comprises a source MAC address.

18. The non-transitory machine readable medium of claim 14 , wherein the set of instructions for using the load balancing algorithm to select the particular one of the first plurality of tunnel endpoints associated with the first MFE comprises sets of instructions for:

assessing a current load on each tunnel endpoint of the first plurality of tunnel endpoints; and

assigning the packet to the particular one of the first plurality of tunnel endpoints based on the load assessment.

19. The non-transitory machine readable medium of claim 14 , wherein the set of instructions for determining the destination tunnel endpoint for the packet from the second plurality of tunnel endpoints comprises a set of instructions for mapping a destination address of the packet to a particular tunnel endpoint stored by the first MFE based on a source tunnel endpoint for a prior packet received from the particular tunnel endpoint.

20. The non-transitory machine readable medium of claim 14 , wherein the set of instructions for determining the destination tunnel endpoint for the packet from the second plurality of tunnel endpoints comprises sets of instructions for:

mapping a destination address of the packet to the second plurality of tunnel endpoints associated with the second WE; and

selecting one of the tunnel endpoints in the second plurality of tunnel endpoints as a destination tunnel endpoint for the packet.

21. The non-transitory machine readable medium of claim 14 , wherein the first MFE further comprises a set of instructions for outputting the packet onto a physical network between the tunnel endpoints.

22. The non-transitory machine readable medium of claim 14 , wherein the MFE further comprises sets of instructions for:

receiving a subsequent packet from the data compute node having the same source address; and

using the stored mapping to select the same source tunnel endpoint for the subsequent packet.

23. The non-transitory machine readable medium of claim 14 , wherein the packet is a first packet, the data compute node is a first data compute node, and the selected tunnel endpoint is a first tunnel endpoint, wherein the first MFE further comprises sets of instructions for:

receiving a second packet from a second data compute node for which the first MFE performs first-hop processing;

determining, for the second packet, a second destination tunnel endpoint associated with a third MFE from the second plurality of tunnel endpoints associated with the third WE;

using the load balancing algorithm to select a second tunnel endpoint of the first plurality of tunnel endpoints associated with the first MFE as a second source tunnel endpoint for the second packet;

encapsulating the second packet in a tunnel using the second source and second destination tunnel endpoints; and

storing a mapping of a source address of the second packet to the second source tunnel endpoint.

24. The non-transitory machine readable medium of claim 20 , wherein a mapping of the destination address of the packet to the selected destination tunnel endpoint from the second plurality of tunnel endpoints is not stored by the first MFE.

Assignments (2)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2015
From: SHEN, JIANJUN; TESSMER, ALEXANDER; HIRA, MUKESH; THAKKAR, PANKAJ; WANG, HUA
To: NICIRA, INC.
Reel/Frame 037188/0949 →
Continuity (1)
Related Publication 20170163536A1 · Jun 8, 2017
Cited By (2)
US 12,255,804 US 12,639,092