IP Library Granted Patent US 9,172,557
Granted Patent B2
US 9,172,557 · App. 13/588,578 · Granted Oct 27, 2015

Load balancing overlay network traffic using a teamed set of network interface cards

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,172,557
App. No.
13/588,578
Granted
Oct 27, 2015
Kind
B2
Abstract

A system includes a server including: logic adapted for receiving traffic from a virtual machine (VM), the traffic including at least one packet, logic adapted for hashing at least a portion of the at least one packet according to a hashing algorithm to obtain a hash value, and logic adapted for selecting an uplink based on the hash value; at least one accelerated network interface card (NIC), each accelerated NIC including: network ports including multiple Peripheral Component Interconnect express (PCIe) ports adapted for communicating with the server and a network, each network port including an uplink, logic adapted for encapsulating the at least one packet into an overlay-encapsulated packet, logic adapted for storing a media access control (MAC) address corresponding to the selected uplink as a source MAC (SMAC) address in an outer header of the overlay-encapsulated packet, and logic adapted for sending the overlay-encapsulated packet via the selected uplink.

Claims (97)

1. A system, comprising:

a server, comprising:

logic configured to receive traffic from a virtual machine (VM), the traffic comprising at least one packet;

logic configured to hash at least a portion of the at least one packet according to a hashing algorithm to obtain a hash value; and

logic configured to select an uplink based on the hash value;

at least one accelerated network interface card (NIC), each accelerated NIC comprising:

a plurality of network ports including multiple Peripheral Component Interconnect express (PCIe) ports adapted for communicating with the server and a network, each network port comprising an uplink;

logic configured to encapsulate the at least one packet into an overlay-encapsulated packet using the accelerated NIC;

logic configured to store a media access control (MAC) address corresponding to the selected uplink as a source MAC (SMAC) address in an outer header of the overlay-encapsulated packet using the accelerated NIC; and

logic configured to send the overlay-encapsulated packet via the selected uplink using the accelerated NIC.

2. The system as recited in claim 1 , wherein the hashing algorithm is a perfect hashing algorithm selected to hash perfectly to a number of uplinks available to send traffic out to the network.

3. The system as recited in claim 1 , wherein a header of the at least one packet is hashed.

4. The system as recited in claim 1 , wherein a header of an inner packet of the at least one packet is hashed when the at least one packet is overlay-encapsulated.

5. The system as recited in claim 1 , wherein the hashing algorithm is based on one or more parameters, the one or more parameters comprising:

a virtual port corresponding to the VM;

an inner packet header SMAC address;

an inner packet header destination MAC (DMAC) address;

an inner source internet protocol (SIP) address; and

an inner destination internet protocol (DIP) address.

6. A method for load balancing on a receive side of a server, the method comprising:

receiving a broadcast address resolution protocol (ARP) request packet using a network interface card (NIC) of a server;

determining that a response is merited to the broadcast ARP request packet based on whether an address designated in the broadcast ARP request packet is hosted by the server;

hashing at least a portion of the broadcast ARP request packet according to a hashing algorithm to obtain a hash value using the NIC when a response is merited;

selecting an uplink based on the hash value from a plurality of uplinks available to send traffic out to a network, wherein each hash value corresponds to one of the plurality of uplinks;

storing a media access control (MAC) address corresponding to the selected uplink as a source MAC (SMAC) address in a response to the broadcast ARP request packet; and

sending the response back to a source of the broadcast ARP request packet with the MAC address corresponding to the selected uplink stored as the SMAC address,

wherein a SMAC from the broadcast ARP request packet is not learned and not stored by the NIC,

wherein a header of an inner packet of the broadcast ARP request packet is hashed when the broadcast ARP request packet is overlay-encapsulated, and

wherein the NIC is an accelerated NIC configured to provide overlay functionality.

7. The method as recited in claim 6 , wherein the hashing algorithm is a perfect hashing algorithm selected to hash perfectly to a number of uplinks available to send traffic out to the network.

8. The method as recited in claim 6 , wherein a header of the broadcast ARP request packet is hashed when the broadcast ARP request packet is not overlay-encapsulated.

9. The method as recited in claim 6 , wherein the hashing algorithm is based on one or more parameters, the one or more parameters comprising:

a virtual port corresponding to a virtual machine (VM) for which the broadcast ARP request packet was originated;

an inner packet header SMAC address;

an inner packet header destination MAC (DMAC) address;

an inner source internet protocol (SIP) address; and

an inner destination internet protocol (DIP) address.

10. The method as recited in claim 6 , further comprising:

generating a unicast ARP request packet and sending the unicast ARP request packet to a source of the broadcast ARP request packet via the selected uplink when a response is merited;

receiving a response from the source of the broadcast ARP request packet, the response comprising address information about the source of the broadcast ARP request packet; and

storing the address information about the source of the broadcast ARP request packet,

wherein when the response from the source of the broadcast ARP request packet is not received, address information is not learned from the broadcast ARP request packet and not stored.

11. A method for load balancing on a receive side of a server, the method comprising:

receiving a unicast address resolution protocol (ARP) request packet using a network interface card (NIC) of a server;

determining that a response is merited to the unicast ARP request packet using the NIC;

hashing at least a portion of the unicast ARP request packet according to a hashing algorithm to obtain a hash value;

selecting an uplink based on the hash value from a plurality of uplinks available to send traffic out to a network using the NIC;

storing a media access control (MAC) address corresponding to the selected uplink as a source MAC (SMAC) address in a response to the unicast ARP request packet using the NIC; and

sending the response back to a source of the unicast ARP request packet with the MAC address corresponding to the selected uplink stored as the SMAC address using the NIC,

wherein a header of an inner packet of the unicast ARP request packet is hashed when the unicast ARP request packet is overlay-encapsulated.

12. The method as recited in claim 11 , wherein the hashing algorithm is a perfect hashing algorithm selected to hash perfectly to a number of uplinks available to send traffic out to the network.

13. The method as recited in claim 11 , wherein a header of the unicast ARP request packet is hashed when the unicast ARP request packet is not overlay-encapsulated.

14. The method as recited in claim 11 , wherein the hashing algorithm is based on one or more parameters, the one or more parameters comprising:

a virtual port corresponding to a virtual machine (VM) for which the unicast ARP request packet was originated;

an inner packet header SMAC address;

an inner packet header destination MAC (DMAC) address;

an inner source internet protocol (SIP) address; and

an inner destination internet protocol (DIP) address.

15. The method as recited in claim 11 , wherein when it is determined that a response to the unicast ARP request packet is not merited, address information is not learned from the unicast ARP request packet and not stored.

16. A method for load balancing traffic on a plurality of uplinks, the method comprising:

receiving traffic from a virtual machine (VM), the traffic comprising at least one packet;

hashing at least a portion of the at least one packet according to a hashing algorithm to obtain a hash value using an accelerated network interface card (NIC) of a server, the accelerated NIC being configured to provide overlay functionality;

selecting an uplink based on the hash value from a plurality of uplinks available to send traffic out to a network using the accelerated NIC;

encapsulating the at least one packet into an overlay-encapsulated packet;

storing a media access control (MAC) address corresponding to the selected uplink as a source MAC (SMAC) address in an outer header of the overlay-encapsulated packet; and

sending the overlay-encapsulated packet via the selected uplink.

17. The method as recited in claim 16 , wherein the hashing algorithm is selected to correspond to a number of uplinks available to send traffic out to the network, and wherein a header of the at least one packet is hashed.

18. The method as recited in claim 16 , wherein the hashing algorithm is based on one or more parameters, the one or more parameters comprising:

a virtual port corresponding to the VM;

an inner packet header SMAC address;

an inner packet header destination MAC (DMAC) address;

an inner source internet protocol (SIP) address; and

an inner destination internet protocol (DIP) address.

19. A system for load balancing traffic on a plurality of uplinks, the system comprising:

a processor implemented in hardware, the processor being adapted for executing logic;

logic configured to receive an address resolution protocol (ARP) request packet using a network interface card (NIC) of a server;

logic configured to hash at least a portion of the ARP request packet according to a hashing algorithm to obtain a hash value using the NIC;

logic configured to select an uplink based on the hash value from a plurality of uplinks available to send traffic out to a network using the NIC;

logic configured to store a media access control (MAC) address corresponding to the selected uplink as a source MAC (SMAC) address in a response to the ARP request packet; and

logic configured to send the response back to a source of the ARP request packet with the MAC address corresponding to the selected uplink stored as the SMAC address,

wherein a header of the ARP request packet is hashed to obtain the hash value when the ARP request packet is not overlay-encapsulated, and

wherein a header of an inner packet of the ARP request packet is hashed to obtain the hash value when the ARP request packet is overlay-encapsulated.

20. The system as recited in claim 19 ,

wherein when the ARP request packet is unicast, address information about the source of the unicast ARP request packet is learned from the unicast ARP request packet and stored for subsequent communication with the source, and

wherein when the ARP request packet is broadcast, the system further comprises:

logic configured to generate a unicast ARP request packet and sending the unicast ARP request packet to the source of the broadcast ARP request packet;

logic configured to receive a response from the source of the broadcast ARP request packet, the response comprising address information about the source of the broadcast ARP request packet; and

logic configured to learn and store the address information about the source of the broadcast ARP request packet,

wherein when the response from the from the source of the broadcast ARP request packet is not received, address information is not learned from the broadcast ARP request packet and not stored.

21. The method as recited in claim 11 ,

wherein the hashing algorithm is a perfect hashing algorithm selected to hash perfectly to a number of uplinks available to send traffic out to the network,

wherein when it is determined that a response to the unicast ARP request packet is not merited, address information is not learned from the unicast ARP request packet and not stored, and

wherein the hashing algorithm is based on a virtual port corresponding to a virtual machine (VM) for which the unicast ARP request packet was originated and one or more parameters, the one or more parameters comprising:

an inner packet header SMAC address;

an inner packet header destination MAC (DMAC) address;

an inner source internet protocol (SIP) address; and

an inner destination internet protocol (DIP) address.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: KYNDRYL, INC.
Reel/Frame 057885/0644 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INVENTOR'S NAME PREVIOUSLY RECORDED ON REEL 029084 FRAME 0765. ASSIGNOR(S) HEREBY CONFIRMS THE INVENTOR'S NAME SHOULD BE CHANGED FROM LAST NAME GANGFIRST NAME TANG, TO LAST NAME TANG FIRST NAME GANG. Recorded Oct 18, 2019
From: TANG, GANG
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 051681/0734 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2012
From: BISWAS, AMITABHA; KIDAMBI, JAYAKRISHNA; RAJAGOPALAN, SANTOSH; GANG, TANG
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 029084/0765 →