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

2021-03-30 Thread Sriharsha Basavapatna via dev
On Thu, Mar 25, 2021 at 2:40 PM Eli Britstein  wrote:
>
> 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(-)
> >

Looks good overall;  couple of minor comments in patches 5 and 13.
Thanks,
-Harsha

-- 
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 

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

2021-03-25 Thread Eli Britstein


On 3/25/2021 11:16 AM, Ivan Malov wrote:

External email: Use caution opening links or attachments


Hello,

You know, now you mention it, will action COUNT always go before any
other actions in OvS ("tunnel set" and "tunnel match" flows)? If this is
the case, then the byte count in the counter of "tunnel set" flow should
be "*before* decapsulation" and the byte count in the counter of "tunnel
match" flow should be "*after* decapsulation". Is my understanding right?


Specifically for MLX5 PMD it doesn't matter (this WA won't defect the 
stats), but your understanding is correct, and this is how it is done in 
this series.




On 25/03/2021 12:10, Eli Britstein wrote:

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://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Felibritstein%2Fdpdk-stable%2Fpull%2F1data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=N%2B5G3EXiqvSwUiwCv%2F%2Ba4AT6CNBZGV%2F2SPhi1LuF83k%3Dreserved=0



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://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Felibritstein%2FOVS%2Fbuilds%2F756418552data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=naQh0J1BfXE62kUJ5lrsUGVZjA3hOT6hHIOwwnrypDk%3Dreserved=0
v2: 
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Felibritstein%2FOVS%2Fbuilds%2F758382963data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=h%2Fz8UbZgQOHAFUWed35AQ1HCkohzeKfhxnIVeN9zToQ%3Dreserved=0
v3: 
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Felibritstein%2FOVS%2Fbuilds%2F761089087data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=dL3iEXINyDjzOEpyQJ7PgGy03eJZQSJWvqHyfJpmREk%3Dreserved=0
v4: 
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Felibritstein%2FOVS%2Fbuilds%2F763146966data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000sdata=b4Yd2RflTgRU76v5ntkkbpXJsAExFCGuZ3t4HMxnzlk%3Dreserved=0


GitHub Actions:
v1: 

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

2021-03-25 Thread Ivan Malov

Hello,

You know, now you mention it, will action COUNT always go before any 
other actions in OvS ("tunnel set" and "tunnel match" flows)? If this is 
the case, then the byte count in the counter of "tunnel set" flow should 
be "*before* decapsulation" and the byte count in the counter of "tunnel 
match" flow should be "*after* decapsulation". Is my understanding right?


On 25/03/2021 12:10, Eli Britstein wrote:

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(-)



--
Ivan M
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


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

2021-03-25 Thread Eli Britstein

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(-)


___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


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

2021-03-17 Thread Eli Britstein
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(-)

-- 
2.28.0.2311.g225365fb51

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev