[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