IP Library › Granted Patent US 10,565,002
Granted Patent B2
US 10,565,002 · App. 15/904,236 · Granted Feb 18, 2020

Frameworks and interfaces for offload device-based packet processing

Inventors: Pradeep Vincent (Kenmore, WA); Matthew David Klein (Seattle, WA); Samuel James McKelvie (Seattle, WA)
Assignee: Amazon Technologies, Inc.
G06F9/45558H04L12/4633H04L41/082H04L45/74H04L63/0272H04L63/20G06F2009/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,565,002
App. No.
15/904,236
Granted
Feb 18, 2020
Kind
B2
Abstract

High-speed processing of packets to, and from, a virtualization environment can be provided while utilizing hardware-based segmentation offload and other such functionality. A hardware vendor such as a network interface card (NIC) manufacturer can enable the hardware to support open and proprietary stateless tunneling in conjunction with a protocol such as single root I/O virtualization (SR-IOV) in order to implement a virtualized overlay network. The hardware can utilize various rules, for example, that can be used by the NIC to perform certain actions, such as to encapsulate egress packets and decapsulate packets.

Claims (71)

1. A network adapter device, comprising:

a first hardware processor;

a network port;

a bus interface to enable communication between first hardware processor and a second hardware processor hosting a guest virtual machine; and

memory storing instructions that, when executed by the first hardware processor, cause the first hardware processor to:

receive a data packet;

determine, using hardware resources inaccessible by the guest virtual machine, that the data packet matches a rule; and

responsive to determining that the data packet matches the rule, perform one of:

forwarding the data packet to the guest virtual machine via the bus interface, or

forwarding the data packet via the network port.

2. The network adapter device of claim 1 ,

wherein the first hardware processor is configured to communicate, via the network port, with a mapping service to determine that the data packet matches the rule;

wherein the mapping service is inaccessible by the guest virtual machine via the network port.

3. The network adapter device of claim 1 , wherein the memory includes a first memory portion and a second memory portion, the second memory portion being inaccessible by the guest virtual machine; and

wherein the first hardware processor is configured to:

use the first memory portion to support the communication with the guest virtual machine via the bus; and

use the second memory portion to store data and instructions for determining whether the data packet matches the rule.

4. The network adapter device of claim 1 , wherein the data packet is received from the second hardware processor via the bus interface;

wherein the first hardware processor is configured to forward the data packet via the network port responsive to determining that the data packet matches the rule.

5. The network adapter device of claim 4 , wherein the rule specifies a pre-determined media control access (MAC) address comprising one of: a MAC address of the network adapter device or a MAC address of a host machine including the second hardware processor; and

wherein the data packet matching the rule includes a source address of the data packet matching the pre-determined MAC address.

6. The network adapter device of claim 4 , wherein the rule specifies a set of packet including a broadcast packet, an address resolution protocol (ARP) packet, or a multicast packet; and

wherein the data packet matching the rule includes the data packet not being part of the set of packets.

7. The network adapter device of claim 1 , wherein the first hardware processor is further configured to:

determine that a cap on a total size of forwarded data packets has not been met; and

responsive to determining that the cap has not been met, forward the data packet via the network port.

8. The network adapter device of claim 7 , wherein the cap is adjustable based on a capacity of the network adapter device.

9. The network adapter device of claim 4 , wherein the data packet is a first data packet; and

wherein the first hardware processor is configured to:

receive a second data packet from the second hardware processor via bus interface;

determine that the second data packet does not match the rule; and

responsive to determining that the second data packet does not match the rule, perform at least one of: dropping the second data packet or trapping the second data packet at a trusted domain.

10. The network adapter device of claim 4 , wherein the data packet is received at a virtual function assigned to the guest virtual machine.

11. The network adapter device of claim 1 , wherein the data packet is received via the network port;

wherein the first hardware processor is configured to forward the data packet to the second hardware processor via the bus interface responsive to determining that the data packet matches the rule.

12. The network adapter device of claim 1 , wherein the rule specifies a pre-determined encapsulation format; and

wherein the data packet matching the rule includes the data packet being encapsulated according to the pre-determined encapsulation format.

13. The network adapter device of claim 1 , wherein the first hardware processor is further configured to:

determine a virtual function of the network adapter device associated with the rule; and

forward the data packet to the guest virtual machine using the virtual function.

14. The network adapter device of claim 1 , wherein the memory is a first memory; and

wherein the network adapter device is configured to communicate, via the bus interface and a direct memory access (DMA)-capable input/output (I/O) bus, with a second memory accessible by the second hardware processor.

15. A method, comprising:

establishing a communication channel, between a network adapter device and a host hardware processor hosting a guest virtual machine, via a bus;

receiving a data packet;

determining, using hardware resources inaccessible by the guest virtual machine, that the data packet matches a rule; and

responsive to determining that the data packet matches the rule:

forwarding the data packet to the guest virtual machine via the communication channel, or

forwarding the data packet to a network.

16. The method of claim 15 , wherein the data packet is a first data packet; and

wherein the method further comprises:

receiving a second data packet from the host hardware processor via the communication channel;

determining that the second data packet does not match the rule; and

responsive to determining that the second data packet does not match the rule, dropping the second data packet or trapping the second data packet at a trusted domain.

17. The method of claim 15 , wherein the data packet is received at a virtual function assigned to the guest virtual machine.

18. The method of claim 15 , further comprising:

determining a virtual function of the network adapter device associated with the rule; and

forwarding the data packet to the guest virtual machine using the virtual function.

19. An apparatus, comprising:

means for establishing a communication channel with a host hardware processor hosting a guest virtual machine via a bus;

means for receiving a data packet;

means for determining, using hardware resources inaccessible by the guest virtual machine, that the data packet matches a rule; and

means for:

responsive to determining that the data packet matches the rule:

forwarding the data packet to the guest virtual machine via the communication channel, or

forwarding the data packet to a network.

20. The apparatus of claim 19 , wherein the data packet is a first data packet;

wherein the apparatus further comprises:

means for receiving a second data packet from the host hardware processor via the communication channel;

means for determining that the second data packet does not match the rule; and

means for, responsive to determining that the second data packet does not match the rule, dropping the second data packet or trapping the second data packet at a trusted domain.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2018
From: VINCENT, PRADEEP; KLEIN, MATTHEW D.; MCKELVIE, SAMUEL J.
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 045024/0989 →
Continuity (4)
Continuation 14923276 · Oct 26, 2015
Continuation 14321492 · Jul 1, 2014
Continuation 13076347 · Mar 30, 2011
Related Publication 20180181431A1 · Jun 28, 2018
Cited By (2)
US 12,210,896 US 12,689,594