IP Library › Granted Patent US 10,162,654
Granted Patent B2
US 10,162,654 · App. 14/968,625 · Granted Dec 25, 2018

Network policy implementation with multiple interfaces

Inventors: Matthew D. Klein (Seattle, WA); Michael David Marr (Monroe, WA); Samuel J. McKelvie (Seattle, WA)
Assignee: Amazon Technologies, Inc.
G06F9/45533G06F9/45558G06F2009/45575G06F2009/45595
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,162,654
App. No.
14/968,625
Granted
Dec 25, 2018
Kind
B2
Abstract

The transmission of data on computer networks according to one or more policies is disclosed. A policy may specify, among other things, various parameters which are to be followed when transmitting initiating network traffic. Multiple network interfaces may be installed on a server to enable transmission of data from the single server according a number of discrete configuration settings implicated by the various policies. The multiple network interfaces may correspond to separate physical components, with each component configured independently to implement a feature of a policy. The multiple network interfaces may also correspond to a single physical component that exposes multiple network interfaces, both to the network and to the server on which it is installed.

Claims (58)

1. A computing device comprising:

a first network hardware queue associated with a first network configuration setting;

a second network hardware queue associated with a second network configuration setting, wherein the first network configuration setting is distinct from the second configuration setting;

a memory configured to store processor-executable instructions; and

a processor configured with the processor-executable instructions to perform operations comprising:

determining that a virtual machine executing on the computing device has initiated transmission of a data packet;

in response to determining that the virtual machine has initiated transmission of the data packet:

determining a network policy associated with the data packet;

selecting a network hardware queue from one of the first network hardware queue or the second network hardware queue based at least partly on a configuration setting that satisfies the determined network policy; and

causing the selected network hardware queue to transmit the data packet.

2. The computing device of claim 1 , wherein the processor is configured with the processor-executable instructions to perform operations such that the network policy associated with the data packet comprises at least one of a desired bandwidth, a desired latency, a maximum transmission unit of network packets, an indication regarding enablement of interrupt coalescing, an indication regarding an extent to which bandwidth throttling is utilized, quality of service parameters, a size of the data packet, or a destination of the data packet.

3. The computing device of claim 1 , wherein the processor is configured with the processor-executable instructions to perform operations further comprising modifying a configuration setting of a software queue associated with the first network hardware queue.

4. The computing device of claim 1 , wherein the computing device further comprises:

a first network interface card that comprises the first network hardware queue; and

a second network interface card that comprises the second network hardware queue.

5. The computing device of claim 1 , wherein the computing device comprises a network interface device comprising the first network hardware queue and the second network hardware queue.

6. The computing device of claim 5 , wherein:

the network interface device is a single root input/output virtualization (SR-IOV) device;

the first network hardware queue corresponds to a physical function of the SR-IOV device; and

the second network hardware queue corresponds to a virtual function of the SR-IOV device.

7. A method implemented on a computing device, comprising:

determining that a virtual machine has initiated transmission of a data packet; and

in response to determining that the virtual machine operating on the computing device has initiated transmission of a data packet:

determining a network policy associated with the data packet;

selecting a network hardware queue from a first network hardware queue and a second network hardware queue based on matching a configuration setting with the determined network policy, wherein the first network hardware queue is associated with a first network configuration setting and wherein the second network hardware queue is associated with a second network configuration setting distinct from the first network configuration; and

causing the selected network hardware queue to transmit the data packet.

8. The method of claim 7 , wherein determining a network policy associated with the data packet comprises determining, by a hypervisor operating on the computing device, the network policy associated with the data packet.

9. The method of claim 7 , wherein determining a network policy associated with the data packet comprises:

receiving configuration information from the virtual machine; and

selecting, from among a plurality of network configurations, the network policy associated with the data packet based at least in part on the configuration information received from the virtual machine.

10. The method of claim 7 , wherein selecting the network hardware queue from the first network hardware queue and the second network hardware queue further comprises:

determining that the first network hardware queue is associated with a configuration setting that satisfies the determined network policy; and

determining that the second network hardware queue is associated with a configuration setting that does not satisfy the determined network policy.

11. The method of claim 7 further comprising associating the selected network hardware queue with the virtual machine.

12. The method of claim 7 , wherein the computing device further comprises:

a first network interface card that includes the first network hardware queue; and

a second network interface card that includes the second network hardware queue.

13. The method of claim 7 , wherein the computing device comprises a network interface device comprising the first network hardware queue and the second network hardware queue.

14. The method of claim 7 , wherein:

the network interface device is a single root input/output virtualization (SR-IOV) device;

the first network hardware queue corresponds to a physical function of the SR-IOV device; and

the second network hardware queue corresponds to a virtual function of the SR-IOV device.

15. A non-transitory, computer-readable medium having stored thereon computer-executable software instructions configured to cause a processor of a computing device to perform operations comprising:

determining that a virtual machine has initiated transmission of a data packet; and

in response to determining that the virtual machine operating on the computing device has initiated transmission of a data packet:

determining a network policy associated with the data packet;

selecting a network hardware queue from a first network hardware queue and a second network hardware queue based on a configuration setting that satisfies the determined network policy, wherein the first network hardware queue is associated with a first network configuration setting and the second network hardware queue is associated with a configuration setting distinct from the first network configuration; and

causing the selected network hardware queue to transmit the data packet.

16. The non-transitory, computer-readable medium of claim 15 , wherein the network policy associated with the data packet comprises at least one of a desired bandwidth, a desired latency, a maximum transmission unit of network packets, an indication regarding enablement of interrupt coalescing, an indication of an extent to which bandwidth throttling is utilized, quality of service parameters, a size of the data packet, or a destination of the data packet.

17. The non-transitory, computer-readable medium of claim 15 , wherein the processor is configured with the processor-executable instructions to perform operations further comprising modifying a configuration setting of a software queue associated with the first network hardware queue.

18. The non-transitory, computer-readable medium of claim 15 , wherein the computer-executable software instructions are configured to cause a processor of a computing device to perform operations such that determining a network policy associated with the data packet comprises:

receiving configuration information from the virtual machine; and

selecting, from among a plurality of network configurations, the network policy associated with the data packet based at least in part on the configuration information received from the virtual machine.

19. The non-transitory, computer-readable medium of claim 15 , wherein:

the configuration setting of the selected network hardware queue comprises one or more performance values;

the network policy associated with the data comprises a desired network performance characteristic; and

the one or more performance values satisfy the desired performance characteristic.

20. The non-transitory, computer-readable medium of claim 19 , wherein the desired network performance characteristic relates to at least one of latency or bandwidth.

Continuity (2)
Continuation 13536006 · Jun 28, 2012
Related Publication 20160170782A1 · Jun 16, 2016