Thread (91 messages) 91 messages, 9 authors, 2021-01-20

Re: [dpdk-dev] [dpdk-dev v2 1/2] ethdev: add new tunnel type for ecpri

From: Zhang, Qi Z <hidden>
Date: 2021-01-07 15:24:30

-----Original Message-----
From: Thomas Monjalon <redacted>
Sent: Thursday, January 7, 2021 9:34 PM
To: Guo, Jia <redacted>; Zhang, Qi Z <redacted>
Cc: Wu, Jingjing <redacted>; Yang, Qiming
[off-list ref]; Wang, Haiyue [off-list ref];
dev@dpdk.org; Yigit, Ferruh [off-list ref];
andrew.rybchenko@oktetlabs.ru; orika@nvidia.com; getelson@nvidia.com;
Dodji Seketeli [off-list ref]
Subject: Re: [dpdk-dev] [dpdk-dev v2 1/2] ethdev: add new tunnel type for ecpri

07/01/2021 13:47, Zhang, Qi Z:
quoted
quoted
-----Original Message-----
From: Thomas Monjalon <redacted>
Sent: Thursday, January 7, 2021 6:12 PM
To: Guo, Jia <redacted>
Cc: Zhang, Qi Z <redacted>; Wu, Jingjing
[off-list ref]; Yang, Qiming [off-list ref]; Wang,
Haiyue [off-list ref]; dev@dpdk.org; Yigit, Ferruh
[off-list ref]; andrew.rybchenko@oktetlabs.ru;
orika@nvidia.com; getelson@nvidia.com
Subject: Re: [dpdk-dev] [dpdk-dev v2 1/2] ethdev: add new tunnel
type for ecpri

07/01/2021 10:32, Guo, Jia:
quoted
From: Thomas Monjalon <redacted>
quoted
24/12/2020 07:59, Jeff Guo:
quoted
Add type of RTE_TUNNEL_TYPE_ECPRI into the enum of ethdev
tunnel
type.
quoted
Signed-off-by: Jeff Guo <redacted>
Reviewed-by: Qi Zhang <redacted>
[...]
quoted
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -1219,6 +1219,7 @@ enum rte_eth_tunnel_type {
 	RTE_TUNNEL_TYPE_IP_IN_GRE,
 	RTE_L2_TUNNEL_TYPE_E_TAG,
 	RTE_TUNNEL_TYPE_VXLAN_GPE,
+	RTE_TUNNEL_TYPE_ECPRI,
 	RTE_TUNNEL_TYPE_MAX,
 };
We tried to remove all these legacy API in DPDK 20.11.
Andrew decided to not remove this one because it is not yet
completely replaced by rte_flow in all drivers.
However, I am against continuing to update this API.
The opposite work should be done: migrate to rte_flow.
Agree but seems that the legacy api and driver legacy
implementation still keep in this release, and there is no a
general way to replace the legacy by rte_flow right now.
I think rte_flow is a complete replacement with more features.
Thomas, I may not agree with this.

Actually the "enum rte_eth_tunnel_type" is used by
rte_eth_dev_udp_tunnel_port_add A packet with specific dst udp port
will be recognized as a specific tunnel packet type (e.g. vxlan, vxlan-gpe,
ecpri...) In Intel NIC, the API actually changes the configuration of the packet
parser in HW but not add a filter rule and I guess all other devices may enable it
in a similar way.
quoted
so naturally it should be a device (port) level configuration but not a rte_flow
rule for match, encap, decap...

I don't understand how it helps to identify an UDP port if there is no rule for
this tunnel.
What is the usage?
Yes, in general It is a rule, it matches a udp packet's dst port and the action is "now the packet is identified as vxlan packet" then all other rte_flow rules that match for a vlxan as pattern will take effect.  but somehow, I think they are not rules in the same domain, just like we have dedicate API for mac/vlan filter, we'd better have a dedicate API for this also. ( RFC for Vxlan explains why we need this. https://tools.ietf.org/html/rfc7348).

"Destination Port: IANA has assigned the value 4789 for the
VXLAN UDP port, and this value SHOULD be used by default as the
destination UDP port.  Some early implementations of VXLAN have
used other values for the destination port.  To enable
interoperability with these implementations, the destination
port SHOULD be configurable."

Thanks
Qi
quoted
So I think it's not a good idea to replace the
rte_eth_dev_udp_tunnel_port_add with rte_flow config and also there is
no existing rte_flow_action can cover this requirement unless we
introduce some new one.
quoted
You can match, encap, decap.
There is even a new API to get tunnel infos after decap.
What is missing?
I still don't see which use case is missing.

quoted
quoted
quoted
quoted
Sorry, it is a nack.
BTW, it is probably breaking the ABI because of
RTE_TUNNEL_TYPE_MAX.
quoted
Yes that may break the ABI but fortunately the checking-abi-compatibility tool
shows negative :) , thanks Ferruh' s guide.
quoted
https://github.com/ferruhy/dpdk/actions/runs/468859673
That's very strange. An enum value is changed.
Why it is not flagged by libabigail?

quoted
quoted
quoted
Oh, the ABI break should be a problem.
quoted
PS: please Cc ethdev maintainers for such patch, thanks.
tip: use --cc-cmd devtools/get-maintainer.sh
Thanks for your helpful tip.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help