Large receive offload for virtual machines
First Claim
Patent Images
1. A computing device serving as a host machine for a plurality of virtual machines, the computing device comprising:
- a physical network interface controller (PNIC), including at least a first queue and a second queue, wherein the first queue is associated with a first set of the plurality of the virtual machines, the second queue is associated with a second set of the plurality of the virtual machines, and the first queue and the second queue are associated with respective first rule and second rule in a set of rules that are specified by an application programming interface (API) for the PNIC; and
wherein the PNIC is for receiving first data packets and second data packets from a network, for enabling packet aggregation at the first queue based on first header content of the first data packets and the first rule, and for disabling packet aggregation at the second queue based on second header content of the second data packets and the second rule; and
a virtualization machine monitor (VMM) for forwarding aggregated first data packets from the first queue to the first set of the plurality of virtual machines and for forwarding non-aggregated second data packets from the second queue to the second set of the plurality of the virtual machines, wherein the VMM uses the API for the PNIC to specify the set of rules.
2 Assignments
0 Petitions
Accused Products
Abstract
A network interface controller (NIC) that includes a set of receive NIC queues capable of performing large receive offload (LRO) operations by aggregating incoming receive packets is provided. Each NIC queue turns on or off its LRO operation based a set of LRO enabling rules or parameters, whereby only packets that meet the set of rules or parameters will be aggregated in the NIC queue. Each NIC queue is controlled by its own set of LRO enabling rules such that the LRO operations of the different NIC queues can be individually controlled.
53 Citations
28 Claims
-
1. A computing device serving as a host machine for a plurality of virtual machines, the computing device comprising:
-
a physical network interface controller (PNIC), including at least a first queue and a second queue, wherein the first queue is associated with a first set of the plurality of the virtual machines, the second queue is associated with a second set of the plurality of the virtual machines, and the first queue and the second queue are associated with respective first rule and second rule in a set of rules that are specified by an application programming interface (API) for the PNIC; and wherein the PNIC is for receiving first data packets and second data packets from a network, for enabling packet aggregation at the first queue based on first header content of the first data packets and the first rule, and for disabling packet aggregation at the second queue based on second header content of the second data packets and the second rule; and a virtualization machine monitor (VMM) for forwarding aggregated first data packets from the first queue to the first set of the plurality of virtual machines and for forwarding non-aggregated second data packets from the second queue to the second set of the plurality of the virtual machines, wherein the VMM uses the API for the PNIC to specify the set of rules. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computing device serving as host machine for a plurality of virtual machines, the computing device comprising a set of processing units and a computer readable medium storing a computer program, the computer program executing on one or more processing units, said computer program comprising sets of instructions for:
-
providing a set of packet aggregation rules to a physical network interface controller (PNIC), the PNIC comprising a plurality of queues for providing data received from a network to the plurality of virtual machines, wherein a first queue from the plurality of queues is associated with a first virtual machine, a second queue from the plurality of queues is associated with a second virtual machine, a first rule in the set of packet aggregation rules is for enabling packet aggregation at the first queue based on first header content of first data packets from the network, and a second rule in the set of packet aggregation rules is for disabling packet aggregation at the second queue based on second header content of second data packets from the network; and forwarding aggregated first data packets from the first queue in the PNIC to the first virtual machine and non-aggregated second data packets from the second queue in the PNIC to the second virtual machine. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A non-transitory computer readable storage medium storing a program for execution on one or more processors, the program comprising sets of instructions for:
-
operating a plurality of virtual machines; setting a plurality of packet aggregation rules for a plurality of queues in a physical network interface controller (PNIC) by using an application programming interface (API) of the PNIC, wherein a first queue from the plurality of queues is associated with a first virtual machine, a second queue from the plurality of queues is associated with a second virtual machine, a first rule of the plurality of packet aggregation rules is for enabling packet aggregation at the first queue based on first header content of first data packets from the network, and a second rule of the plurality of packet aggregation rules is for disabling packet aggregation at the second queue based on second header content of second data packets from the network; and retrieving aggregated first data packets from the first queue and non-aggregated second data packets from the second queue. - View Dependent Claims (22, 23, 24, 25, 26)
-
-
27. A method for operating a host machine in a virtualized network environment, the host machine hosting a plurality of virtual machines, the method comprising:
-
identifying a first queue in a physical network interface controller (PNIC) that is buffering first data packets received by the PNIC from a network and destined for a first virtual machine that consumes first data packets; identifying a second queue in the PNIC that is buffering second data packets received by the PNIC from the network and destined for a second virtual machine that forwards second data packets; enabling packet aggregation on the first data packets in the first queue based on first header content of the first data packets and a first packet aggregation rule; and disabling packet aggregation on the second data packets in the second queue based on second header content of the second data packets and of second packet aggregation rule. - View Dependent Claims (28)
-
Specification