[ovs-dev] [PATCH V4 00/14] Netdev vxlan-decap offload

Eli Britstein elibr at nvidia.com
Thu Mar 25 09:10:06 UTC 2021


Hello,

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.

See https://github.com/elibritstein/dpdk-stable/pull/1


Also, any other comments on this series?


Thanks,

Eli


On 3/17/2021 8:35 AM, 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.
>
> 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.
>
> 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
>
> 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
>
> [1] https://mails.dpdk.org/archives/dev/2020-October/187314.html
>
> Eli Britstein (11):
>    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: Refactor offload rule creation
>    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     | 782 ++++++++++++++++++++++++++++++----
>   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, 1052 insertions(+), 132 deletions(-)
>


More information about the dev mailing list