[ovs-dev] [PATCH V6 00/13] Netdev vxlan-decap offload

Ivan Malov Ivan.Malov at oktetlabs.ru
Tue Apr 6 07:42:54 UTC 2021


Hi Eli,

Thank you for improving the patch series gradually. May I clarify one 
extra aspect (and I'm sorry if it has been discussed already): will OvS 
always insert F1 first and then insert F2? I mean, yes, in the model, F2 
should process packets coming from F1, but is it *technically* possible 
for OvS to insert the rules in reverse order?

On 04/04/2021 12:54, Eli Britstein wrote:
> VXLAN decap in OVS-DPDK configuration consists of two flows:
> F1: in_port(ens1f0),eth(),ipv4(),udp(), actions:tnl_pop(vxlan_sys_4789)
> F2: tunnel(),in_port(vxlan_sys_4789),eth(),ipv4(), actions:ens1f0_0
> 
> F1 is a classification flow. It has outer headers matches and it
> classifies the packet as a VXLAN packet, and using tnl_pop action the
> packet continues processing in F2.
> F2 is a flow that has matches on tunnel metadata as well as on the inner
> packet headers (as any other flow).
> 
> In order to fully offload VXLAN decap path, both F1 and F2 should be
> offloaded. As there are more than one flow in HW, it is possible that
> F1 is done by HW but F2 is not. Packet is received by SW, and should be
> processed starting from F2 as F1 was already done by HW.
> Rte_flows are applicable only on physical port IDs. Keeping the original
> physical in port on which the packet is received on enables applying
> vport flows (e.g. F2) on that physical port.
> 
> This patch-set makes use of [1] introduced in DPDK 20.11, that adds API
> for tunnel offloads.
> 
> Note that MLX5 PMD has a bug that the tnl_pop private actions must be
> first. In OVS it is not.
> Fixing this issue is scheduled for 21.05 (and stable 20.11.2).
> Meanwhile, tests were done with a workaround for it [2].
> 
> v2-v1:
> - Tracking original in_port, and applying vport on that physical port instead of all PFs.
> v3-v2:
> - Traversing ports using a new API instead of flow_dump.
> - Refactor packet state recover logic, with bug fix for error pop_header.
> - One ref count for netdev in non-tunnel case.
> - Rename variables, comments, rebase.
> v4-v3:
> - Extract orig_in_port from physdev for flow modify.
> - Miss handling fixes.
> v5-v4:
> - Drop refactor offload rule creation commit.
> - Comment about setting in_port in restore.
> - Refactor vports flow offload commit.
> v6-v5:
> - Fixed duplicate netdev ref bug.
> 
> Travis:
> v1: https://travis-ci.org/github/elibritstein/OVS/builds/756418552
> v2: https://travis-ci.org/github/elibritstein/OVS/builds/758382963
> v3: https://travis-ci.org/github/elibritstein/OVS/builds/761089087
> v4: https://travis-ci.org/github/elibritstein/OVS/builds/763146966
> v5: https://travis-ci.org/github/elibritstein/OVS/builds/765271879
> v6: https://travis-ci.org/github/elibritstein/OVS/builds/765816800
> 
> GitHub Actions:
> v1: https://github.com/elibritstein/OVS/actions/runs/515334647
> v2: https://github.com/elibritstein/OVS/actions/runs/554986007
> v3: https://github.com/elibritstein/OVS/actions/runs/613226225
> v4: https://github.com/elibritstein/OVS/actions/runs/658415274
> v5: https://github.com/elibritstein/OVS/actions/runs/704357369
> v6: https://github.com/elibritstein/OVS/actions/runs/716304028
> 
> [1] https://mails.dpdk.org/archives/dev/2020-October/187314.html
> [2] https://github.com/elibritstein/dpdk-stable/pull/1
> 
> 
> Eli Britstein (10):
>    netdev-offload: Add HW miss packet state recover API
>    netdev-dpdk: Introduce DPDK tunnel APIs
>    netdev-offload: Introduce an API to traverse ports
>    netdev-dpdk: Add flow_api support for netdev vxlan vports
>    netdev-offload-dpdk: Implement HW miss packet recover for vport
>    dpif-netdev: Add HW miss packet state recover logic
>    netdev-offload-dpdk: Change log rate limits
>    netdev-offload-dpdk: Support tunnel pop action
>    netdev-offload-dpdk: Support vports flows offload
>    netdev-dpdk-offload: Add vxlan pattern matching function
> 
> Ilya Maximets (2):
>    netdev-offload: Allow offloading to netdev without ifindex.
>    netdev-offload: Disallow offloading to unrelated tunneling vports.
> 
> Sriharsha Basavapatna (1):
>    dpif-netdev: Provide orig_in_port in metadata for tunneled packets
> 
>   Documentation/howto/dpdk.rst  |   1 +
>   NEWS                          |   2 +
>   lib/dpif-netdev.c             |  97 +++--
>   lib/netdev-dpdk.c             | 118 ++++++
>   lib/netdev-dpdk.h             | 106 ++++-
>   lib/netdev-offload-dpdk.c     | 704 +++++++++++++++++++++++++++++++---
>   lib/netdev-offload-provider.h |   5 +
>   lib/netdev-offload-tc.c       |   8 +
>   lib/netdev-offload.c          |  47 ++-
>   lib/netdev-offload.h          |  10 +
>   lib/packets.h                 |   8 +-
>   11 files changed, 1022 insertions(+), 84 deletions(-)
> 

-- 
Ivan M


More information about the dev mailing list