IP Library Granted Patent US 10,394,679
Granted Patent B2
US 10,394,679 · App. 15/143,409 · Granted Aug 27, 2019

Locality-aware scheduling for NIC teaming

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,394,679
App. No.
15/143,409
Granted
Aug 27, 2019
Kind
B2
Abstract

Some embodiments provide a method for distributing packets processed at multiple sockets across a team of network interface controllers (NICs) in a processing system. The method of some embodiments uses existing distribution (or selection) algorithms for distributing traffic across NICs of a NIC team (across several sockets), but augments the method to prioritize local NICs over remote NICs. When active NICs local to a socket associated with a packet are available, the method of some embodiments uses the selection algorithm to select from an array of the active local NICs. When active NICs local to the socket are not available, the method of some embodiments uses the selection algorithm to select from an array of the active NICs of other NICs on the NIC team.

Claims (41)

1. A non-transitory machine readable medium storing a program which when executed by a set of processing units distributes packets processed at a plurality of sockets, wherein each socket of the plurality of sockets is associated with a corresponding set of network interface controllers (NICs) local to the socket, wherein at least two NICs local to at least two different sockets are grouped as a NIC team, the program comprising sets of instructions for:

identifying a socket associated with a packet;

identifying a NIC team over which to distribute packets associated with the identified socket, at least one NIC of the NIC team local to the identified socket;

determining whether at least one NIC of the NIC team local to the identified socket is active;

selecting a particular NIC of the set of teamed NICs by:

when at least one NIC of the NIC team local to the identified socket is active, retrieving a list of active NICs local to the identified socket from a data structure for the NIC team and selecting the particular NIC from the retrieved list of active local NICs; and

when none of the NICs of the NIC team local to the identified socket are active, retrieving a list of active NICs local to sockets other than the identified socket from a data structure for the NIC team and selecting the particular NIC from the retrieved list of active NICs local to other sockets; and

sending the packet to the selected particular NIC.

2. The non-transitory machine readable medium of claim 1 , wherein the set of instructions for identifying the socket comprises a set of instructions for determining that the packet is processed by a processing core of the socket.

3. The non-transitory machine readable medium of claim 1 , wherein the set of instructions for identifying the socket comprises a set of instructions for determining that the packet is stored in a memory local to the socket.

4. The non-transitory machine readable medium of claim 1 , wherein the set of instructions for determining whether at least one NIC of the NIC team local to the identified socket is active comprises a set of instructions for accessing the data structure for the NIC team, wherein the data structure stores a number of active NICs for each socket.

5. The non-transitory machine readable medium of claim 4 , wherein the program further comprises sets of instructions for:

for each socket of the plurality of sockets:

detecting a status for each NIC local to the socket; and

storing an identifier and a list of active NICs local to the socket in the data structure.

6. The non-transitory machine readable medium of claim 5 , wherein the set of instructions for detecting the status for a specific NIC comprises a set of instructions for determining whether the specific NIC is connected to a network.

7. The non-transitory machine readable medium of claim 1 , wherein the data structure stores an identifier for each socket and a list of active NICs local to each socket.

8. The non-transitory machine readable medium of claim 1 , wherein the set of instructions for selecting the particular NIC comprises a set of instructions for using a load balancing algorithm to select the particular NIC from the retrieved list of active NICs.

9. The non-transitory machine readable medium of claim 1 , wherein the set of instructions for selecting the particular NIC comprises sets of instructions for:

generating a hash from a portion of the packet; and

using the generated hash to select the particular NIC from the retrieved list of active NICs.

10. The non-transitory machine readable medium of claim 1 , wherein the identified socket is a first socket and the selected particular NIC is local to a second socket, wherein the set of instructions for sending the packet to the selected particular NIC comprises a set of instructions for sending the packet along a set of inter-socket connections to the second socket.

11. A method for distributing packets processed at a plurality of sockets, wherein each socket of the plurality of sockets is associated with a corresponding set of network interface controllers (NICs) local to the socket, wherein at least two NICs local to at least two different sockets are grouped as a NIC team, the method comprising:

identifying a socket associated with a packet;

identifying a NIC team over which to distribute packets associated with the identified socket, at least one NIC of the NIC team local to the identified socket;

determining whether at least one NIC of the NIC team local to the identified socket is active;

selecting a particular NIC of the set of teamed NICs by:

when at least one NIC of the NIC team local to the identified socket is active, retrieving a list of active NICs local to the identified socket from a data structure for the NIC team and selecting the particular NIC from the retrieved list of active local NICs; and

when none of the NICs of the NIC team local to the identified socket are active, retrieving a list of active NICs local to sockets other than the identified socket from a data structure for the NIC team and selecting the particular NIC from the retrieved list of active NICs local to other sockets; and

sending the packet to the selected particular NIC.

12. The method of claim 11 , wherein identifying the socket comprises determining that the packet is processed by a processing core of the socket.

13. The method of claim 11 further comprising:

for each socket of the plurality of sockets:

detecting a status for each NIC local to the socket; and

storing an identifier and a list of active NICs local to the socket in the data structure.

14. The method of claim 11 , wherein the data structure stores an identifier for each socket and a list of active NICs local to each socket.

15. The method of claim 11 , wherein selecting the particular NIC comprises using a load balancing algorithm to select the particular NIC from the retrieved list of active NICs.

16. The method of claim 11 , wherein selecting the particular NIC comprises:

generating a hash from a portion of the packet; and

using the generated hash to select the particular NIC from the retrieved list of active NICs.

17. The method of claim 11 , wherein the identified socket is a first socket and the selected particular NIC is local to a second socket, wherein sending the packet to the selected particular NIC comprises sending the packet along a set of inter-socket connections to the second socket.

Assignments (2)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2016
From: YU, JIA; WANG, YONG; ZHANG, RONGHUA
To: NICIRA, INC.
Reel/Frame 038426/0676 →