Hi Olivier, > On Thu, Apr 08, 2021 at 01:47:18PM +0530, Tejasree Kondoj wrote: > > Adding new mbuf packet type for UDP encapsulated > > ESP packets. > > > > Signed-off-by: Tejasree Kondoj <ktejas...@marvell.com> > > --- > > doc/guides/rel_notes/release_21_05.rst | 5 +++++ > > lib/librte_mbuf/rte_mbuf_ptype.h | 21 +++++++++++++++++++++ > > 2 files changed, 26 insertions(+) > > > > diff --git a/doc/guides/rel_notes/release_21_05.rst > b/doc/guides/rel_notes/release_21_05.rst > > index 5565c7637c..c9e9e2ec22 100644 > > --- a/doc/guides/rel_notes/release_21_05.rst > > +++ b/doc/guides/rel_notes/release_21_05.rst > > @@ -55,6 +55,11 @@ New Features > > Also, make sure to start the actual text at the margin. > > ======================================================= > > > > +* **Added new packet type for UDP-ESP packets in mbuf.** > > + > > + Added new packet type ``RTE_PTYPE_TUNNEL_ESP_IN_UDP`` which can > be > > + used to identify UDP encapsulated ESP packets. > > + > > * **Enhanced ethdev representor syntax.** > > > > * Introduced representor type of VF, SF and PF. > > diff --git a/lib/librte_mbuf/rte_mbuf_ptype.h > b/lib/librte_mbuf/rte_mbuf_ptype.h > > index 17a2dd3576..bf92ce0c1a 100644 > > --- a/lib/librte_mbuf/rte_mbuf_ptype.h > > +++ b/lib/librte_mbuf/rte_mbuf_ptype.h > > @@ -491,6 +491,27 @@ extern "C" { > > * | 'destination port'=6635> > > */ > > #define RTE_PTYPE_TUNNEL_MPLS_IN_UDP 0x0000d000 > > +/** > > + * ESP-in-UDP tunneling packet type (RFC 3948). > > + * > > + * Packet format: > > + * <'ether type'=0x0800 > > + * | 'version'=4, 'protocol'=17 > > + * | 'destination port'=4500> > > + * or, > > + * <'ether type'=0x86DD > > + * | 'version'=6, 'next header'=17 > > + * | 'destination port'=4500> > > + * or, > > + * <'ether type'=0x0800 > > + * | 'version'=4, 'protocol'=17 > > + * | 'source port'=4500> > > + * or, > > + * <'ether type'=0x86DD > > + * | 'version'=6, 'next header'=17 > > + * | 'source port'=4500> > > + */ > > +#define RTE_PTYPE_TUNNEL_ESP_IN_UDP 0x0000e000 > > /** > > * Mask of tunneling packet types. > > */ > > We arrive at the end of the values in packet type tunnel types, > and there is another pending patch that needs another tunnel type. > > As there is already a RTE_PTYPE_TUNNEL_ESP, what would you think about > trying to reuse it, and differentiate IP/ESP from IP/UDP/ESP by using > the L4 layer type (unknown vs udp)? Or maybe add RTE_PTYPE_L4_NONE. > > It is sensible, because it can be considered as an API change for > current users of RTE_PTYPE_TUNNEL_ESP. I don't really know how this > type is used by applications.
It is OK to use combination of these two but with an assumption that a normal - IP-UDP packet when encrypted will be an IP-ESP packet And L4 types are reset from the mbuf->packet_type by the driver. @Konstantin Ananyev: Are you OK with this assumption? And, if we choose this path, then also we may need a macro in this file, So that application doesn't have to combine that explicitly for a standard use case. #define RTE_PTYPE_TUNNEL_ESP_IN_UDP RTE_PTYPE_TUNNEL_ESP | RTE_PTYPE_L4_UDP Will this be fine? > > I think it is time to start thinking about how the packet_type > mbuf API can evolve to solve this issue. > > By the way, the update of *rte_get_ptype_tunnel_name() is missing.