[ovs-dev] [PATCH v9 0/7] OVS-DPDK flow offload with rte_flow

Shahaf Shuler shahafs at mellanox.com
Thu May 10 12:41:04 UTC 2018


Hi,

Friday, April 20, 2018 11:07 AM, Stokes, Ian:
> Subject: RE: [PATCH v9 0/7] OVS-DPDK flow offload with rte_flow
> 
> > > Hi,
> > >
> > > Here is a joint work from Mellanox and Napatech, to enable the flow
> > > hw offload with the DPDK generic flow interface (rte_flow).
> >
> > Hi folks, I feel Mellanox/Netronome have reached the point where HWOL
> > can be introduced to OVS DPDK pending performance review.
> 
> Apologies , Mellanox an Napatech.

Any progress with this series? 


> 
> Ian
> >
> > This has not been an easy path, but I will put one final request out
> > there for comments.
> >
> > If there are none then pending on Travis compilation and final
> > performance checks I'm thinking of introducing this to the code base.
> >
> > Keep in mind this feature is experimental, not only can it be changed
> > but it can also be removed pending future review if not maintained.
> >
> > I invite all to give opinions here as I think this is an important
> > feature.
> >
> > Sincere thanks to all involved.
> >
> > Regards
> > Ian
> >
> >
> > >
> > > The basic idea is to associate the flow with a mark id (a unit32_t
> > > number).
> > > Later, we then get the flow directly from the mark id, which could
> > > bypass some heavy CPU operations, including but not limiting to mini
> > > flow extract, emc lookup, dpcls lookup, etc.
> > >
> > > The association is done with CMAP in patch 1. The CPU workload
> > > bypassing is done in patch 2. The flow offload is done in patch 3,
> > > which mainly does two things:
> > >
> > > - translate the ovs match to DPDK rte flow patterns
> > > - bind those patterns with a RSS + MARK action.
> > >
> > > Patch 5 makes the offload work happen in another thread, for leaving
> > > the datapath as light as possible.
> > >
> > > A PHY-PHY forwarding with 1000 mega flows (udp,tp_src=1000-1999) and
> > > 1 million streams (tp_src=1000-1999, tp_dst=2000-2999) show more
> > > than 260% performance boost.
> > >
> > > Note that it's disabled by default, which can be enabled by:
> > >
> > >     $ ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
> > >
> > > v9: - introduced IP packet sanity checks in a seperate commit
> > >     - moved structs and enums definition to the begining of the file
> > >     - fixed sparse compilation error (error is assumed to be fixed,
> > issues
> > >       on Travis CI preventing from fully testing it.
> > >
> > > v8: - enhanced documentation with more details on supported protocols
> > >     - fixed VLOG to start with capital letter
> > >     - fixed compilation issues
> > >     - fixed coding style
> > >     - addressed the rest of Ian's comments
> > >
> > > v7: - fixed wrong hash for mark_to_flow that has been refactored in v6
> > >     - set the rss_conf for rss action to NULL, to workaround a mlx5
> > change
> > >       in DPDK v17.11. Note that it will obey the rss settings
> > > OVS-DPDK
> > has
> > >       set in the beginning. Thus, nothing should be effected.
> > >
> > > v6: - fixed a sparse warning
> > >     - added documentation
> > >     - used hash_int to compute mark to flow hash
> > >     - added more comments
> > >     - added lock for pot lookup
> > >     - rebased on top of the latest code
> > >
> > > v5: - fixed an issue that it took too long if we do flow add/remove
> > >       repeatedly.
> > >     - removed an unused mutex lock
> > >     - turned most of the log level to DBG
> > >     - rebased on top of the latest code
> > >
> > > v4: - use RSS action instead of QUEUE action with MARK
> > >     - make it work with multiple queue (see patch 1)
> > >     - rebased on top of latest code
> > >
> > > v3: - The mark and id association is done with array instead of CMAP.
> > >     - Added a thread to do hw offload operations
> > >     - Removed macros completely
> > >     - dropped the patch to set FDIR_CONF, which is a workround some
> > >       Intel NICs.
> > >     - Added a debug patch to show all flow patterns we have created.
> > >     - Misc fixes
> > >
> > > v2: - workaround the queue action issue
> > >     - fixed the tcp_flags being skipped issue, which also fixed the
> > >       build warnings
> > >     - fixed l2 patterns for Intel nic
> > >     - Converted some macros to functions
> > >     - did not hardcode the max number of flow/action
> > >     - rebased on top of the latest code
> > >
> > > Thanks.
> > >
> > > ---
> > >
> > > Finn Christensen (1):
> > >   netdev-dpdk: implement flow offload with rte flow
> > >
> > > Yuanhan Liu (6):
> > >   dpif-netdev: associate flow with a mark id
> > >   flow: Introduce IP packet sanity checks
> > >   dpif-netdev: retrieve flow directly from the flow mark
> > >   netdev-dpdk: add debug for rte flow patterns
> > >   dpif-netdev: do hw flow offload in a thread
> > >   Documentation: document ovs-dpdk flow offload
> > >
> > >  Documentation/howto/dpdk.rst |  22 ++
> > >  NEWS                         |   3 +-
> > >  lib/dp-packet.h              |  13 +
> > >  lib/dpif-netdev.c            | 497 ++++++++++++++++++++++++-
> > >  lib/flow.c                   | 155 ++++++--
> > >  lib/flow.h                   |   1 +
> > >  lib/netdev-dpdk.c            | 740
> > +++++++++++++++++++++++++++++++++++++-
> > >  lib/netdev.h                 |   6 +
> > >  8 files changed, 1397 insertions(+), 40 deletions(-)
> > >
> > > --
> > > 2.7.4
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> >
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fma
> i
> > l.openvswitch.org%2Fmailman%2Flistinfo%2Fovs-
> dev&data=02%7C01%7Cshahaf
> >
> s%40mellanox.com%7C59b2f2418c794d93ba9908d5a695aa3d%7Ca652971c7d
> 2e4d9b
> >
> a6a4d149256f461b%7C0%7C0%7C636598084097138936&sdata=JEcbQBd1CfpT
> H9xXyP
> > VyRkjauq6I0vBavdGmFvAaNU4%3D&reserved=0


More information about the dev mailing list