> On 4/7/2021 12:10 PM, Sriharsha Basavapatna wrote: > > > > On Sun, Apr 4, 2021 at 3:25 PM Eli Britstein <el...@nvidia.com > > <mailto:el...@nvidia.com>> 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. > > > > > > Can you provide some info on this bug ? and what changes were done to > > fix this ? > > With v5, the 2 netdevs sent to ufid_to_rte_flow_associate are always > non-NULL (was not like this previously), and there was this line: > > + data->netdev = vport ? netdev_ref(vport) : physdev; > > As the "vport" was always non-null, even for non-tunnels, it took > another ref of it, but in disassociate, only one close was done. > > With v6 it is like this (changed arguments names a bit) > > + data->physdev = netdev != physdev ? netdev_ref(physdev) : physdev; > > Checking the netdevs are different, not non-NULL. > > > Thanks, > > -Harsha > > > > > > Travis: > > v1: https://travis-ci.org/github/elibritstein/OVS/builds/756418552 > > v2 > > <https://travis-ci.org/github/elibritstein/OVS/builds/756418552v2>: > > https://travis-ci.org/github/elibritstein/OVS/builds/758382963 > > v3 > > <https://travis-ci.org/github/elibritstein/OVS/builds/758382963v3>: > > https://travis-ci.org/github/elibritstein/OVS/builds/761089087 > > v4 > > <https://travis-ci.org/github/elibritstein/OVS/builds/761089087v4>: > > https://travis-ci.org/github/elibritstein/OVS/builds/763146966 > > v5 > > <https://travis-ci.org/github/elibritstein/OVS/builds/763146966v5>: > > https://travis-ci.org/github/elibritstein/OVS/builds/765271879 > > v6 > > <https://travis-ci.org/github/elibritstein/OVS/builds/765271879v6>: > > https://travis-ci.org/github/elibritstein/OVS/builds/765816800 > > <https://travis-ci.org/github/elibritstein/OVS/builds/765816800> > > > > GitHub Actions: > > v1: https://github.com/elibritstein/OVS/actions/runs/515334647 > > <https://github.com/elibritstein/OVS/actions/runs/515334647> > > v2: https://github.com/elibritstein/OVS/actions/runs/554986007 > > <https://github.com/elibritstein/OVS/actions/runs/554986007> > > v3: https://github.com/elibritstein/OVS/actions/runs/613226225 > > <https://github.com/elibritstein/OVS/actions/runs/613226225> > > v4: https://github.com/elibritstein/OVS/actions/runs/658415274 > > <https://github.com/elibritstein/OVS/actions/runs/658415274> > > v5: https://github.com/elibritstein/OVS/actions/runs/704357369 > > <https://github.com/elibritstein/OVS/actions/runs/704357369> > > v6: https://github.com/elibritstein/OVS/actions/runs/716304028 > > <https://github.com/elibritstein/OVS/actions/runs/716304028> > > > > [1] https://mails.dpdk.org/archives/dev/2020-October/187314.html > > <https://mails.dpdk.org/archives/dev/2020-October/187314.html> > > [2] https://github.com/elibritstein/dpdk-stable/pull/1 > > <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(-) > > > > -- > > 2.28.0.2311.g225365fb51 > > > > > > This electronic communication and the information and any files > > transmitted with it, or attached to it, are confidential and are > > intended solely for the use of the individual or entity to whom it is > > addressed and may contain information that is confidential, legally > > privileged, protected by privacy laws, or otherwise restricted from > > disclosure to anyone else. If you are not the intended recipient or > > the person responsible for delivering the e-mail to the intended > > recipient, you are hereby notified that any use, copying, > > distributing, dissemination, forwarding, printing, or copying of this > > e-mail is strictly prohibited. If you received this e-mail in error, > > please return the e-mail to the sender, delete it from your computer, > > and destroy any printed copy of it. > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
Tested with burst and scatter traffic profiles on the 32vm setup I have and seen no performance drops. For burst little bit of a perf gain & with scatter I seen about 1% to 1.6 % in perf gain Tested-by: Marko Kovacevic <marko.kovace...@intel.com> _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev