IP Library Granted Patent US 9,092,269
Granted Patent B2
US 9,092,269 · App. 13/529,747 · Granted Jul 28, 2015

Offloading virtual machine flows to physical queues

Inventors: Srikanth Kandula (Redmond, WA); Changhoon Kim (Bellevue, WA); Alireza Dabagh (Kirkland, WA); Deepak Bansal (Sammamish, WA); David A. Maltz (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F9/5077G06F9/45533H04L41/0893H04L45/38H04L45/586H04L49/70H04L49/90H04L49/9068
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,092,269
App. No.
13/529,747
Granted
Jul 28, 2015
Kind
B2
Abstract

The present invention extends to methods, systems, and computer program products for offloading virtual machine flows to physical queues. A computer system executes one or more virtual machines, and programs a physical network device with one or more rules that manage network traffic for the virtual machines. The computer system also programs the network device to manage network traffic using the rules. In particular, the network device is programmed to determine availability of one or more physical queues at the network device that are usable for processing network flows for the virtual machines. The network device is also programmed to identify network flows for the virtual machines, including identifying characteristics of each network flow. The network device is also programmed to, based on the characteristics of the network flows and based on the rules, assign one or more of the network flows to at least one of the physical queues.

Claims (38)

1. A virtualization host computer system that is configured to manage network traffic for one or more virtual machines that are executing at the virtualization host computer system, the virtualization host computer system comprising:

one or more processors;

one or more physical network devices; and

one or more hardware storage devices having stored thereon computer-executable instructions that, when executed by the one or more processors, cause the virtualization host computer system to execute a virtual switch, the virtual switch being configured for processing a plurality of network flows for the one or more virtual machines at one or more virtual queues, the virtual switch also being configured to program each of the one or more physical network devices with one or more corresponding rules for offloading network flows and to perform the following based on the one or more rules:

determine availability of one or more physical queues at the physical network device, each of the one or more physical queues being usable for offloading one or more of the plurality of network flows for the one or more virtual machines from the virtual switch at the virtualization host computer system;

identify a first subset of the plurality of network flows for the one or more virtual machines that are to be offloaded from the virtual switch at the virtualization host computer system to the one or more physical queues, based on one or more characteristics of each of the plurality of network flows, including determining that both a first and second flow of the first subset of network flows are to be concurrently offloaded to a first physical queue of the one or more physical queues based on the first and second flows each having a relatively low traffic level compared to a third flow of the subset of network flows, and determining that the third flow is to be uniquely offloaded to a second physical queue of the one or more physical queues based on the third flow having a relatively high traffic level compared to the first and second flows; and

offloading the first subset of the plurality of network flows to the one or more physical queues, including concurrently offloading the first and second flows to the first physical queue and uniquely offloading the third flow to the second physical queue, wherein a second subset of the plurality of network flows for the one or more virtual machines remain at the one or more virtual queues of the virtual switch at the virtualization host computer system.

2. The virtualization host computer system as recited in claim 1 , further comprising:

determining one or more flows that are assigned to the first subset and one or more flows that are assigned to the second subset based on one or more suggestions from at least one virtual machine.

3. The virtualization host computer system as recited in claim 1 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having similar rate limiting characteristics.

4. The virtualization host computer system as recited in claim 1 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows being associated with the same virtual machine.

5. The virtualization host computer system as recited in claim 1 , wherein the one or more physical network devices include a physical network interface card.

6. The virtualization host computer system as recited in claim 1 , wherein the one or more physical network devices include a physical switch.

7. The virtualization host computer system as recited in claim 1 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having the same priority.

8. The virtualization host computer system as recited in claim 1 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having the same Quality of Service (QoS).

9. A method, implemented at a computer system that includes one or more processors and one or more physical network devices, for managing network traffic, the method comprising:

executing one or more virtual machines;

executing a virtual switch, the virtual switch being configured for processing a plurality of network flows for the one or more virtual machines at one or more virtual queues;

programming a physical network device with one or more rules for offloading network flows, the one or more rules being configured to manage network traffic for the one or more virtual machines; and

programming the physical network device to manage network traffic, including the following:

determining availability of one or more physical queues at the physical network device, each of the one or more physical queues being usable for offloading one or more of the plurality of network flows for the one or more virtual machines from the virtual switch at the virtualization host computer system;

identifying a first subset of the plurality of network flows for the one or more virtual machines that are to be offloaded from the virtual switch at the virtualization host computer system to the one or more physical queues, based on one or more characteristics of each of the plurality of network flows, including determining that both a first and second flow of the first subset of network flows are to be concurrently offloaded to a first physical queue of the one or more physical queues based on the first and second flows each having a relatively low traffic level compared to a third flow of the subset of network flows, and determining that the third flow is to be uniquely offloaded to a second physical queue of the one or more physical queues based on the third flow having a relatively high traffic level compared to the first and second flows; and

offloading the first subset of the plurality of network flows to the one or more physical queues, including concurrently offloading the first and second flows to the first physical queue and uniquely offloading the third flow to the second physical queue, wherein a second subset of the plurality of network flows for the one or more virtual machines remain at the one or more virtual queues of the virtual switch at the virtualization host computer system.

10. The method as recited in claim 9 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having similar rate limiting characteristics.

11. The method as recited in claim 9 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows being associated with the same virtual machine.

12. The method as recited in claim 9 , wherein the one or more physical network devices include one or more of a physical network interface card or a physical switch.

13. The method as recited in claim 9 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having the same priority.

14. The method as recited in claim 9 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having the same Quality of Service (QoS).

15. One or more hardware storage devices having stored thereon computer-executable instructions that, when executed by one or more processors, cause a virtualization host computer system to execute a virtual switch, the virtual switch being configured for processing a plurality of network flows for the one or more virtual machines at one or more virtual queues, the virtual switch also configured to program one or more physical network devices with one or more corresponding rules for offloading network flows and to perform the following based on the one or more rules:

determine availability of one or more physical queues at the physical network device, each of the one or more physical queues being usable for offloading one or more of the plurality of network flows for the one or more virtual machines from the virtual switch at the virtualization host computer system;

identify a first subset of the plurality of network flows for the one or more virtual machines that are to be offloaded from the virtual switch at the virtualization host computer system to the one or more physical queues, based on one or more characteristics of each of the plurality of network flows, including determining that both a first and second flow of the first subset of network flows are to be concurrently offloaded to a first physical queue of the one or more physical queues based on the first and second flows each having a relatively low traffic level compared to a third flow of the subset of network flows, and determining that the third flow is to be uniquely offloaded to a second physical queue of the one or more physical queues based on the third flow having a relatively high traffic level compared to the first and second flows; and

offloading the first subset of the plurality of network flows to the one or more physical queues, including concurrently offloading the first and second flows to the first physical queue and uniquely offloading the third flow to the second physical queue, wherein a second subset of the plurality of network flows for the one or more virtual machines remain at the one or more virtual queues of the virtual switch at the virtualization host computer system.

16. The one or more hardware storage devices as recited in claim 15 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having similar rate limiting characteristics.

17. The one or more hardware storage devices as recited in claim 15 , further comprising:

determining one or more flows that are assigned to the first subset and one or more flows that are assigned to the second subset based on one or more suggestions from at least one virtual machine.

18. The one or more hardware storage devices as recited in claim 15 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows being associated with the same virtual machine.

19. The one or more hardware storage devices as recited in claim 15 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having the same priority.

20. The one or more hardware storage devices as recited in claim 15 , wherein the at least two of the first subset of network flows are concurrently offloaded to a single physical queue based on the at least two of the first subset of network flows having the same Quality of Service (QoS).

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2012
From: KANDULA, SRIKANTH; KIM, CHANGHOON; DABAGH, ALIREZA; BANSAL, DEEPAK; MALTZ, DAVID A.
To: MICROSOFT CORPORATION
Reel/Frame 028421/0846 →
Continuity (1)
Related Publication 20130343399A1 · Dec 26, 2013