[ovs-dev] [RFC PATCH] Pipeline packet processing in OVS using FVL flow director.
Sugesh Chandran
sugesh.chandran at intel.com
Thu Dec 1 18:23:55 UTC 2016
The RFC patch that uses the metadata information from the NIC to avoid/reduce the
packet processing overhead in OVS.
It uses the flow director feature in XL710 NICs to identify and report the
VxLAN tunneled packets. OVS-DPDK uses the reported information to bypass the
VxLAN tunnel processing in software.
The concept of pipeline packet processing in OVS is explained as below,
Every incoming packets go through following stages in OVS data-path
PKT-IN --> MF-EXTRACT --> LOOKUP --> ACTION --> PKT-OUT
The pipeline proposal defines separate MF-EXTRACT, ACTION stages per pipeline
than a common function for all the packets. A NIC pre-processed packets are handled
by a specific HW-MF-EXTRACT and HW-ACTION than the
default set of functions. It improves the performance
significantly, because of the light-weight extract and action functions.
However there is a slight overhead introduced to the default software path
due to the introduction of new pipeline handling.
Similar to the data-path changes, The FLOW-INSERT/DELETE stages are also
modified to perform a pipeline aware flow insert and delete.
The main advantage of the proposal are,
1) Very customizable and can define different pipelines based on different
NIC and port features.
2) Very little impact on existing packet processing stages.
3) Can work with P4
Sugesh Chandran (1):
Pipeline packet processing in OVS using FVL flow director.
include/openvswitch/flow.h | 9 +-
include/openvswitch/packets.h | 15 ++-
lib/automake.mk | 8 +-
lib/dpdk-i40e-ofld.c | 257 ++++++++++++++++++++++++++++++++++++++++++
lib/dpdk-i40e-ofld.h | 72 ++++++++++++
lib/dpif-netdev.c | 222 +++++++++++++++++++++++++++++++++---
lib/flow.c | 71 ++++++++++--
lib/hw-pipeline.c | 75 ++++++++++++
lib/hw-pipeline.h | 52 +++++++++
lib/match.c | 2 +-
lib/netdev-bsd.c | 1 +
lib/netdev-dpdk.c | 34 +++++-
lib/netdev-dummy.c | 1 +
lib/netdev-linux.c | 1 +
lib/netdev-native-tnl.c | 42 +++++++
lib/netdev-native-tnl.h | 2 +-
lib/netdev-provider.h | 6 +
lib/netdev-vport.c | 3 +-
lib/nx-match.c | 2 +-
lib/odp-util.h | 2 +-
lib/ofp-util.c | 2 +-
lib/packets.h | 8 ++
ofproto/ofproto-dpif-rid.h | 2 +-
ofproto/ofproto-dpif-xlate.c | 2 +-
24 files changed, 842 insertions(+), 49 deletions(-)
create mode 100644 lib/dpdk-i40e-ofld.c
create mode 100644 lib/dpdk-i40e-ofld.h
create mode 100644 lib/hw-pipeline.c
create mode 100644 lib/hw-pipeline.h
--
2.5.0
More information about the dev
mailing list