IP Library Granted Patent US 9,912,774
Granted Patent B2
US 9,912,774 · App. 14/977,810 · Granted Mar 6, 2018

Accelerated network packet processing

Inventors: Daniel Daly (Ann Arbor, MI); John Fastabend (Hillsboro, OR); Matthew Vick (Hillsboro, OR); Brian J. Skerry (Gilbert, AZ); Marco Varlese (Raheny, IE); Jing Mark Chen (Shanghai, CN); Danny Y. Zhou (Shanghai, CN)
Assignee: Intel Corporation
H04L67/2804H04L49/70H04L69/22H04L69/324
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,912,774
App. No.
14/977,810
Granted
Mar 6, 2018
Kind
B2
Abstract

Devices and techniques for accelerated packet processing are described herein. The device can match an action to a portion of a network data packet and accelerate the packet-processing pipeline for the network data packet through the machine by processing the action.

Claims (64)

1. A control device comprising:

a memory; and

a processor configured to:

match an action reference from a table to a portion of a data in a network data packet; and

process an action corresponding to the action reference in cooperation with the memory and accelerate a packet-processing pipeline for the network data packet by processing the action to one or more of: 1) offload processing of software-based resources to hardware-based resources, 2) reorganize processing of the software-based resources, and 3) reorganize how the software-based resources access the hardware-based resources;

wherein the processor is further configured to:

decapsulate an outer tunnel encapsulated header of the network data packet;

remove the outer tunnel encapsulated header from the network data packet; and

add metadata into a header for the network data packet that indicates the outer tunnel encapsulated header was removed from the network data packet.

2. The control device of claim 1 , wherein when the processor processes the action, the processing circuitry is further configured to perform a Ternary Content-Addressable Memory lookup on the portion of the data and insert results from the lookup into the network data packet as a pre-classification of the network data packet.

3. The control device of claim 1 , wherein when the processor processes the action, the processor is further configured to:

copy a packet payload from the network data packet; and

send the copied packet payload to an independent location, wherein the independent location is independent of locations, each location processes the packet-processing pipeline.

4. The control device of claim 1 , wherein when the processor processes the action, the processor is further configured to:

copy data packet forwarding rules from a virtual switch to a second virtual switch.

5. The control device of claim 1 , wherein when the processor is a physical function integrated into the control device.

6. The control device of claim 1 , wherein the processor is a virtualized function programmed into the control device.

7. The control device of claim 1 further includes:

a data plane interface configured to forward the network data packet to one of:

an Operating System (OS) kernel stack, a virtualized switch, and a driver.

8. The control device of claim 1 , wherein the control device is a network interface controller.

9. The control device of claim 8 , wherein the control device is interfaced and integrated into a multi-core hardware server.

10. A non-transitory machine-readable medium including instructions that, when executed on a machine cause the machine to perform operations including:

matching, within the machine, a portion of a network data packet to an action in a match-action table; and

accelerating processing of the network data packet through the machine by executing the action as part of a packet-processing pipeline for the network data packet through processing the action by one or more of: 1) offloading processing of software-based resources to hardware-based resources, 2) reorganizing processing of the software-based resources, and 3) reorganizing how the software-based resources access the hardware-based resources;

wherein accelerating further includes:

assigning the network data packet to a queue associated with a specific processing core of the machine

filtering the network data packet responsive to filtering rule;

setting a resource identifier on the network data packet that identifies a resource for processing against the network data packet when processing the network data packet through the packet-processing pipeline;

zero-copying rules for processing the network data packet into an aliased virtualized function;

processing a frame for the network data packet through a user-space pipeline of an Operating System (OS) and when finished pushing the frame into the aliased virtualized function; and

passing the network data packet through the user-space pipeline of the OS.

11. The non-transitory machine-readable medium of claim 10 , wherein the instructions to accelerate further include instructions to insert metadata into the network data. packet indicating a portion of the packet-processing pipeline was processed when the action was processed.

12. The non-transitory machine-readable medium of claim 10 , wherein instructions to accelerate further include instructions to:

copy a packet frame for the network data packet; and

send the copied packet frame to a location, where the location is independent of other locations associated with the packet-processing pipeline.

13. A system comprising:

a means for matching a portion of a network packet to an action;

a means for processing the action to accelerate a packet-processing pipeline associated with the network packet based on processing the action by processing the action to one or more of: offload processing of software-based resources to hardware-based resources, 2) reorganize processing of the software-based resources, and 3) reorganize how the software-based resources access the hardware-based resources;

wherein the means for processing the action to accelerate the packet-processing pipeline further includes processing to:

assign the network data packet to a queue associated with a specific processing core of the machine

filter the network data packet responsive to filtering rule;

set a resource identifier on the network data packet that identifies a resource for processing against the network data packet when processing the network data packet through the packet-processing pipeline;

zero-copy rules for processing the network data packet into an aliased virtualized function;

process a frame for the network data packet through a user-space pipeline of an Operating System(OS) and when finished pushing the frame into the aliased virtualized function; and

pass the network data packet through the user-space pipeline of the OS.

14. The system of claim 13 , wherein the network packet is sent from a first Virtual Machine (VM) to a second VM, and each of the VMs executing on a same multi-core server, wherein the same multi-core server executes the means for matching and the means for processing.

15. The system of claim 13 , the system further including a means for configuring the means for processing to custom-define the action.

16. The system of claim 13 , wherein the means for processing is one or more of:

a virtualized network switch, a hardware switch, a kernel process, a device driver, and virtualized interface.

17. A switch comprising:

ports for receiving network packets;

a control interface to communicate with a control device; and

a data plane interface to communicate with one or more data plane processors, wherein the switch is configured to evaluate, over the control interface, match-action rules for which network packets are designed to accelerated through a packet-processing pipeline for the network packets by custom-action processing performed by the switch to one or more of: 1) offloading processing of software-based resources to hardware-based resources, 2) reorganizing processing of the software-based resources, and 3) reorganizing how the software-based resources access the hardware-based resources;

wherein the switch is further configured to:

assign the network data packet to a queue associated with a specific processing core of the machine

filter the network data packet responsive to filtering rule;

set a resource identifier on the network data packet that identifies a resource for processing against the network data packet when processing the network data packet through the packet-processing pipeline;

zero-copy rules for processing the network data packet into an aliased virtualized function;

process a frame for the network data packet through a user-space pipeline of an Operating System (OS) and when finished pushing the frame into the aliased virtualized function; and

pass the network data packet through the user-space pipeline of the OS.

18. The switch of claim 17 , wherein the switch is one of:

a physical switch and a virtualized switch.

19. The switch of claim 17 , wherein the switch is to identify the network packets as packets being communicated between two different Virtual Machines (VMs) within a same hardware server.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2017
From: DALY, DANIEL; FASTABEND, JOHN; VICK, MATTHEW; SKERRY, BRIAN J.; VARLESE, MARCO; CHEN, JING MARK; ZHOU, DANNY Y.
To: INTEL CORPORATION
Reel/Frame 044159/0513 →
Continuity (1)
Related Publication 20170180273A1 · Jun 22, 2017