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

Eli Britstein elibr at nvidia.com
Thu Mar 25 09:21:55 UTC 2021


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%2F1&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=N%2B5G3EXiqvSwUiwCv%2F%2Ba4AT6CNBZGV%2F2SPhi1LuF83k%3D&reserved=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%2F756418552&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=naQh0J1BfXE62kUJ5lrsUGVZjA3hOT6hHIOwwnrypDk%3D&reserved=0
>>> v2: 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Felibritstein%2FOVS%2Fbuilds%2F758382963&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=h%2Fz8UbZgQOHAFUWed35AQ1HCkohzeKfhxnIVeN9zToQ%3D&reserved=0
>>> v3: 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Felibritstein%2FOVS%2Fbuilds%2F761089087&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=dL3iEXINyDjzOEpyQJ7PgGy03eJZQSJWvqHyfJpmREk%3D&reserved=0
>>> v4: 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Fgithub%2Felibritstein%2FOVS%2Fbuilds%2F763146966&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=b4Yd2RflTgRU76v5ntkkbpXJsAExFCGuZ3t4HMxnzlk%3D&reserved=0
>>>
>>> GitHub Actions:
>>> v1: 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Felibritstein%2FOVS%2Factions%2Fruns%2F515334647&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863267715%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=l0yDQvg%2B4LEpe7d%2BqLURSPwGIMhlzFg32t3oCIX7GPo%3D&reserved=0
>>> v2: 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Felibritstein%2FOVS%2Factions%2Fruns%2F554986007&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863277709%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=dVQdAazU2jE7s3UHYQX9kX90l7%2B6n%2BHkjSRTzWAQpdU%3D&reserved=0
>>> v3: 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Felibritstein%2FOVS%2Factions%2Fruns%2F613226225&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863277709%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=BNkOH%2Fk%2FlNiBfpawP5Ow3kxuxoQqIMr%2B%2ByeO%2Fb2mZFE%3D&reserved=0
>>> v4: 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Felibritstein%2FOVS%2Factions%2Fruns%2F658415274&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863277709%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=XYl2odF2ijsNyWg1UyaiAEZAUJpA8dfnIKUcnuYhAA0%3D&reserved=0
>>>
>>> [1] 
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmails.dpdk.org%2Farchives%2Fdev%2F2020-October%2F187314.html&data=04%7C01%7Celibr%40nvidia.com%7C4107e762202a4165d18008d8ef6ea88d%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637522605863277709%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=CS9Bn9I8RMxovIkGPuYe0sj6b9DTaEjvG5TdDidlVcY%3D&reserved=0
>>>
>>> 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


More information about the dev mailing list