[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