IP Library Granted Patent US 10,735,341
Granted Patent B2
US 10,735,341 · App. 15/963,504 · Granted Aug 4, 2020

Dynamic provisioning of multiple RSS engines

Inventors: Aditya G. Holla (Palo Alto, CA); Rajeev Nair (Palo Alto, CA); Shilpi Agarwal (Palo Alto, CA); Subbarao Narahari (Palo Alto, CA); Zongyun Lai (Beijing, CN); Wenyi Jiang (Palo Alto, CA); Srikar Tati (Palo Alto, CA)
Assignee: NICIRA, INC.
H04L47/6255H04L43/0894H04L45/023H04L45/7453
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,735,341
App. No.
15/963,504
Granted
Aug 4, 2020
Kind
B2
Abstract

An approach for a dynamic provisioning of multiple RSS engines is provided. In an embodiment, a method comprises monitoring a CPU usage of hardware queues implemented in a plurality of RSS pools, and determining whether a CPU usage of any hardware queue, implemented in a particular RSS pool of the plurality of RSS pools, has increased above a threshold value. In response to determining that a CPU usage of a particular hardware queue, implemented in the particular RSS pool, has increased above the threshold value, it is determined whether the particular RSS pool includes an unused hardware queue (a queue with light CPU usage). If such an unused hardware queue is presented, then an indirection table that is associated with the particular RSS pool is modified to remap one or more data flows from the particular hardware queue to the unused hardware queue.

Claims (117)

1. A method of dynamically provisioning multiple receive side scaling (RSS) pools, the method comprising:

receiving a data packet;

extracting a destination MAC address from the data packet;

determining whether a mapping between MAC addresses and logical queue identifiers includes an entry for the destination MAC address;

in response to determining that the mapping between the MAC addresses and the logical queue identifiers includes the entry for the destination MAC address:

retrieving, from the mapping, a particular logical queue identifier associated with the destination MAC address;

computing a hash value based on values of selected fields of the data packet;

accessing an indirection table that is associated with a logical queue, from one or more logical queues, that is identified using the particular logical queue identifier;

retrieving, from the indirection table, a particular hardware queue identifier that is associated with the hash value; and

queueing the data packet in a particular hardware queue that is identified using the particular hardware queue identifier;

monitoring a CPU usage of hardware queues implemented in a plurality of RSS pools;

determining whether a CPU usage of any of the hardware queues, implemented in a particular RSS pool of the plurality of RSS pools, has increased above a threshold value;

in response to determining that a CPU usage of a particular hardware queue, implemented in the particular RSS pool of the plurality of RSS pools, has increased above the threshold value:

determining whether the particular RSS pool includes an unused hardware queue; and

in response to determining that the particular RSS pool includes the unused hardware queue:

modifying the indirection table that is associated with the particular RSS pool to remap one or more data flows from the particular hardware queue in the particular RSS pool to the unused hardware queue in the particular RSS pool of the plurality of RSS pools.

2. The method of claim 1 , further comprising:

in response to determining that the particular RSS pool does not include an unused hardware queue:

determining whether another RSS pool, of the plurality of RSS pools, includes another unused hardware queue;

in response to determining that another RSS pool, of the plurality of RSS pools, includes another unused hardware queue:

resizing the particular RSS pool and another RSS pool to different counts of hardware queues; and

updating corresponding indirect tables to capture the different counts of hardware queues.

3. The method of claim 1 , further comprising:

in response to determining that a CPU usage of the particular hardware queue, implemented in the particular RSS pool of the plurality of RSS pools, has not increased above the threshold value:

determining whether the particular RSS pool, of the plurality of RSS pools, has an unused hardware queue;

in response to determining that the particular RSS pool, of the plurality of RSS pools, has an unused hardware queue:

resizing the particular RSS pool to have a small count of hardware queues;

releasing one or more free queues from the particular RSS pool;

assigning the one or more free queues to one or more other RSS pools of the plurality of RSS pools; and

updating corresponding indirection tables.

4. The method of claim 1 , further comprising:

in response to determining that the particular RSS pool, of the plurality of RSS pools, does not have an unused hardware queue, continuing monitoring of a CPU usage of the hardware queues implemented in the plurality of RSS pools.

5. The method of claim 1 , further comprising:

in response to determining that the mapping between the MAC addresses and the logical queue identifiers does not include an entry for the destination MAC address:

determining whether a ratio of a receiving packet rate over a transmitting packet rate for a type of the data packet reaches a threshold value, and whether an empty slot is available in a mapping table; and

in response to determining that the ratio reaches the threshold value, and the empty slot is available in the mapping table:

causing creating an entry in the mapping table, wherein the entry includes a mapping of the destination MAC address onto a certain logical queue from the one or more logical queues.

6. The method of claim 5 , further comprising:

in response to determining that the ratio does not reach the threshold value, or that no empty slot is available in the mapping table, continuing monitoring of a CPU usage of the hardware queues implemented in the plurality of RSS pools.

7. One or more non-transitory computer-readable storage media storing one or more computer instructions which, when executed by one or more processors, cause the one or more processors to perform:

receiving a data packet;

extracting a destination MAC address from the data packet;

determining whether a mapping between MAC addresses and logical queue identifiers includes an entry for the destination MAC address;

in response to determining that the mapping between the MAC addresses and the logical queue identifiers includes the entry for the destination MAC address:

retrieving, from the mapping, a particular logical queue identifier associated with the destination MAC address;

computing a hash value based on values of selected fields of the data packet;

accessing an indirection table that is associated with a logical queue, from one or more logical queues, that is identified using the particular logical queue identifier;

retrieving, from the indirection table, a particular hardware queue identifier that is associated with the hash value; and

queueing the data packet in a particular hardware queue that is identified using the particular hardware queue identifier;

monitoring a CPU usage of hardware queues implemented in a plurality of RSS pools;

determining whether a CPU usage of any hardware queue, implemented in a particular RSS pool of the plurality of RSS pools, has increased above a threshold value;

in response to determining that a CPU usage of a particular hardware queue, implemented in the particular RSS pool of the plurality of RSS pools, has increased above the threshold value:

determining whether the particular RSS pool includes a hardware queue that has a light CPU usage; and

in response to determining that the particular RSS pool includes the hardware queue that has a light CPU usage:

modifying the indirection table that is associated with the particular RSS pool to remap one or more data flows from the particular hardware queue in the particular RSS pool to the hardware queue in the particular RSS pool of the plurality of RSS pools.

8. The one or more non-transitory computer-readable storage media of claim 7 , storing additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that the particular RSS pool does not include a hardware queue that has a light CPU usage:

determining whether another RSS pool, of the plurality of RSS pools, includes another hardware queue with a light CPU usage;

in response to determining that another RSS pool, of the plurality of RSS pools, includes another hardware queue with a light CPU usage:

resizing the particular RSS pool and another RSS pool to different counts of hardware queues; and

updating corresponding indirect tables to capture the different counts of hardware queues.

9. The one or more non-transitory computer-readable storage media of claim 7 , storing additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that a CPU usage of the particular hardware queue, implemented in the particular RSS pool of the plurality of RSS pools, has not increased above the threshold value:

determining whether the particular RSS pool, of the plurality of RSS pools, has a hardware queue with a light CPU usage;

in response to determining that the particular RSS pool, of the plurality of RSS pools, has a hardware queue with a light CPU usage:

resizing the particular RSS pool to have a small count of hardware queues;

releasing one or more free queues from the particular RSS pool;

assigning the one or more free queues to one or more other RSS pools of the plurality of RSS pools; and

updating corresponding indirection tables.

10. The one or more non-transitory computer-readable storage media of claim 7 , storing additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that the particular RSS pool, of the plurality of RSS pools, does not have a hardware queue with a light CPU usage, continuing monitoring of a CPU usage of the hardware queues implemented in the plurality of RSS pools.

11. The one or more non-transitory computer-readable storage media of claim 7 , storing additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that the mapping between the MAC addresses and the logical queue identifiers does not include an entry for the destination MAC address:

determining whether a ratio of a receiving packet rate over a transmitting packet rate for a type of the data packet reaches a threshold value, and whether an empty slot is available in a mapping table; and

in response to determining that the ratio reaches the threshold value, and the empty slot is available in the mapping table:

causing creating an entry in the mapping table, wherein the entry includes a mapping of the destination MAC address onto a certain logical queue from one or more logical queues.

12. The one or more non-transitory computer-readable storage media of claim 11 , storing additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that the ratio does not reach the threshold value, or that no empty slot is available in the mapping table, continuing monitoring of a CPU usage of the hardware queues implemented in the plurality of RSS pools.

13. A system configured to dynamically provision multiple receive side scaling (RSS) engines, the system comprising:

one or more processors;

one or more memory units; and

one or more non-transitory computer-readable storage media storing one or more computer instructions which, when executed by the one or more processors, cause the one or more processors to perform:

receiving a data packet;

extracting a destination MAC address from the data packet;

determining whether a mapping between MAC addresses and logical queue identifiers includes an entry for the destination MAC address;

in response to determining that the mapping between the MAC addresses and the logical queue identifiers includes the entry for the destination MAC address:

retrieving, from the mapping, a particular logical queue identifier associated with the destination MAC address;

computing a hash value based on values of selected fields of the data packet;

accessing an indirection table that is associated with a logical queue, from one or more logical queues, that is identified using the particular logical queue identifier;

retrieving, from the indirection table, a particular hardware queue identifier that is associated with the hash value; and

queueing the data packet in a particular hardware queue that is identified using the particular hardware queue identifier;

monitoring a CPU usage of hardware queues implemented in a plurality of RSS pools;

determining whether a CPU usage of any hardware queue, implemented in a particular RSS pool of the plurality of RSS pools, has increased above a threshold value;

in response to determining that a CPU usage of a particular hardware queue, implemented in the particular RSS pool of the plurality of RSS pools, has increased above the threshold value:

determining whether the particular RSS pool includes an unused hardware queue; and

in response to determining that the particular RSS pool includes the unused hardware queue:

modifying the indirection table that is associated with the particular RSS pool to remap one or more data flows from the particular hardware queue in the particular RSS pool to the unused hardware queue in the particular RSS pool of the plurality of RSS pools.

14. The system of claim 13 , wherein the one or more non-transitory computer-readable storage media store additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that the particular RSS pool does not include an unused hardware queue that has a light CPU usage:

determining whether another RSS pool, of the plurality of RSS pools, includes another hardware queue with a light CPU usage;

in response to determining that another RSS pool, of the plurality of RSS pools, includes another hardware queue with a light CPU usage:

resizing the particular RSS pool and another RSS pool to different counts of hardware queues; and

updating corresponding indirect tables to capture the different counts of hardware queues.

15. The system of claim 13 , wherein the one or more non-transitory computer-readable storage media store additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that a CPU usage of the particular hardware queue, implemented in the particular RSS pool of the plurality of RSS pools, has not increased above the threshold value:

determining whether the particular RSS pool, of the plurality of RSS pools, has a hardware queue with a light CPU usage;

in response to determining that the particular RSS pool, of the plurality of RSS pools, has a hardware queue with a light CPU usage:

resizing the particular RSS pool to have a small count of hardware queues;

releasing one or more free queues from the particular RSS pool;

assigning the one or more free queues to one or more other RSS pools of the plurality of RSS pools; and updating corresponding indirection tables.

16. The system of claim 13 , wherein the one or more non-transitory computer-readable storage media store additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that the particular RSS pool, of the plurality of RSS pools, does not have a hardware queue with a light CPU usage, continuing monitoring of a CPU usage of the hardware queues implemented in the plurality of RSS pools.

17. The system of claim 13 , wherein the one or more non-transitory computer-readable storage media store additional instructions which, when executed by the one or more processors, cause the one or more processors to perform:

in response to determining that the mapping between the MAC addresses and the logical queue identifiers does not include an entry for the destination MAC address:

determining whether a ratio of a receiving packet rate over a transmitting packet rate for a type of the data packet reaches a threshold value, and whether an empty slot is available in a mapping table; and

in response to determining that the ratio reaches the threshold value, and the empty slot is available in the mapping table:

causing creating an entry in the mapping table, wherein the entry includes a mapping of the destination MAC address onto a certain logical queue from one or more logical queues.

Assignments (2)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2018
From: HOLLA, ADITYA G.; NAIR, RAJEEV; AGARWAL, SHILPI; NARAHARI, SUBBARAO; LAI, ZONGYUN; JIANG, WENYI; TATI, SRIKAR
To: NICIRA, INC.
Reel/Frame 045649/0967 →
Continuity (1)
Related Publication 20190334829A1 · Oct 31, 2019
Cited By (1)
US 12,381,831