> -----Original Message-----
> From: Yuanhan Liu [mailto:[email protected]]
> Sent: Wednesday, December 20, 2017 2:45 PM
> To: [email protected]
> Cc: Finn Christensen <[email protected]>; Darrell Ball <[email protected]>;
> Chandran, Sugesh <[email protected]>; Simon Horman
> <[email protected]>; Stokes, Ian <[email protected]>; Yuanhan
> Liu <[email protected]>
> Subject: [PATCH v5 0/5] 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).
> 
> 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
> 
> 

Thanks Yuanhan,

There has been a lot of modification to the areas of the code this is touching 
over the last few weeks and the patchset is failing to apply from patch 2 
onwards.

Can you rebase for a v6 and include the documentation changes requested. I have 
some feedback for patch 1 of the series also that you can include that I will 
send separate to this.

Thanks
Ian


> 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.
> 
>     --yliu
> 
> 
> ---
> Finn Christensen (1):
>   netdev-dpdk: implement flow offload with rte flow
> 
> Yuanhan Liu (4):
>   dpif-netdev: associate flow with a mark id
>   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
> 
>  lib/dp-packet.h   |  13 +
>  lib/dpif-netdev.c | 473 ++++++++++++++++++++++++++++++++++-
>  lib/flow.c        | 155 +++++++++---
>  lib/flow.h        |   1 +
>  lib/netdev-dpdk.c | 732
> +++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  lib/netdev.h      |   6 +
>  6 files changed, 1341 insertions(+), 39 deletions(-)
> 
> --
> 2.7.4

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to