From: Dekel Peled <dekelp@nvidia.com> To: Ajit Khaparde <ajit.khaparde@broadcom.com> Cc: Ori Kam <orika@nvidia.com>, NBU-Contact-Thomas Monjalon <thomas@monjalon.net>, Ferruh Yigit <ferruh.yigit@intel.com>, "Andrew Rybchenko" <arybchenko@solarflare.com>, "Ananyev, Konstantin" <konstantin.ananyev@intel.com>, Olivier Matz <olivier.matz@6wind.com>, Wenzhuo Lu <wenzhuo.lu@intel.com>, Beilei Xing <beilei.xing@intel.com>, "Iremonger, Bernard" <bernard.iremonger@intel.com>, Matan Azrad <matan@nvidia.com>, Shahaf Shuler <shahafs@nvidia.com>, Slava Ovsiienko <viacheslavo@nvidia.com>, dpdk-dev <dev@dpdk.org> Subject: Re: [dpdk-dev] [PATCH v3 01/11] ethdev: add extensions attributes to IPv6 item Date: Wed, 7 Oct 2020 06:59:41 +0000 Message-ID: <MN2PR12MB4375E378E1632C3EBA73A114BB0A0@MN2PR12MB4375.namprd12.prod.outlook.com> (raw) In-Reply-To: <CACZ4nhu1-2SjxRb1+NiCHC8Ud6R=9B-nGHYLkvmjhrsKzsb-ag@mail.gmail.com> Thanks, PSB. > -----Original Message----- > From: Ajit Khaparde <ajit.khaparde@broadcom.com> > Sent: Wednesday, October 7, 2020 2:44 AM > To: Dekel Peled <dekelp@nvidia.com> > Cc: Ori Kam <orika@nvidia.com>; NBU-Contact-Thomas Monjalon > <thomas@monjalon.net>; Ferruh Yigit <ferruh.yigit@intel.com>; Andrew > Rybchenko <arybchenko@solarflare.com>; Ananyev, Konstantin > <konstantin.ananyev@intel.com>; Olivier Matz <olivier.matz@6wind.com>; > Wenzhuo Lu <wenzhuo.lu@intel.com>; Beilei Xing <beilei.xing@intel.com>; > Iremonger, Bernard <bernard.iremonger@intel.com>; Matan Azrad > <matan@nvidia.com>; Shahaf Shuler <shahafs@nvidia.com>; Slava > Ovsiienko <viacheslavo@nvidia.com>; dpdk-dev <dev@dpdk.org> > Subject: Re: [dpdk-dev] [PATCH v3 01/11] ethdev: add extensions attributes > to IPv6 item > > On Mon, Oct 5, 2020 at 1:37 AM Dekel Peled <dekelp@nvidia.com> wrote: > > > > Using the current implementation of DPDK, an application cannot match on > > IPv6 packets, based on the existing extension headers, in a simple way. > > > > Field 'Next Header' in IPv6 header indicates type of the first extension > > header only. Following extension headers can't be identified by > > inspecting the IPv6 header. > > As a result, the existence or absence of specific extension headers > > can't be used for packet matching. > > > > For example, fragmented IPv6 packets contain a dedicated extension > header > > (which is implemented in a later patch of this series). > > Non-fragmented packets don't contain the fragment extension header. > > For an application to match on non-fragmented IPv6 packets, the current > > implementation doesn't provide a suitable solution. > > Matching on the Next Header field is not sufficient, since additional > > extension headers might be present in the same packet. > > To match on fragmented IPv6 packets, the same difficulty exists. > > > > This patch implements the update as detailed in RFC [1]. > > A set of additional values will be added to IPv6 header struct. > > These values will indicate the existence of every defined extension > > header type, providing simple means for identification of existing > > extensions in the packet header. > > Continuing the above example, fragmented packets can be identified using > > the specific value indicating existence of fragment extension header. > > > > [1] https://mails.dpdk.org/archives/dev/2020-August/177257.html > > > > Signed-off-by: Dekel Peled <dekelp@nvidia.com> > > Acked-by: Ori Kam <orika@nvidia.com> > > --- > > doc/guides/prog_guide/rte_flow.rst | 16 +++++++++++++--- > > lib/librte_ethdev/rte_flow.h | 25 +++++++++++++++++++++++-- > > 2 files changed, 36 insertions(+), 5 deletions(-) > > > > diff --git a/doc/guides/prog_guide/rte_flow.rst > b/doc/guides/prog_guide/rte_flow.rst > > index 119b128..0b476da 100644 > > --- a/doc/guides/prog_guide/rte_flow.rst > > +++ b/doc/guides/prog_guide/rte_flow.rst > > @@ -946,11 +946,21 @@ Item: ``IPV6`` > > > > Matches an IPv6 header. > > > > -Note: IPv6 options are handled by dedicated pattern items, see `Item: > > -IPV6_EXT`_. > > +Dedicated flags indicate existence of specific extension headers. > > +Every type of extension header can use a dedicated pattern item, or > > +the generic `Item: IPV6_EXT`_. > > Can you add how the PMD should interpret if these flags are not set > by the application. > There is a mention of some of that in the testpmd commit log. > I think it is good to spell it out here. Agree, I will add it in the git log for next version. > > > > > - ``hdr``: IPv6 header definition (``rte_ip.h``). > > -- Default ``mask`` matches source and destination addresses only. > > +- ``hop_ext_exist``: Hop-by-Hop Options extension header exists. > > +- ``rout_ext_exist``: Routing extension header exists. > > +- ``frag_ext_exist``: Fragment extension header exists. > > +- ``auth_ext_exist``: Authentication extension header exists. > > +- ``esp_ext_exist``: Encapsulation Security Payload extension header > exists. > > +- ``dest_ext_exist``: Destination Options extension header exists. > > +- ``mobil_ext_exist``: Mobility extension header exists. > > +- ``hip_ext_exist``: Host Identity Protocol extension header exists. > > +- ``shim6_ext_exist``: Shim6 Protocol extension header exists. > > +- Default ``mask`` matches ``hdr`` source and destination addresses only. > > > > Item: ``ICMP`` > > ^^^^^^^^^^^^^^ > > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h > > index da8bfa5..5b5bed2 100644 > > --- a/lib/librte_ethdev/rte_flow.h > > +++ b/lib/librte_ethdev/rte_flow.h > > @@ -792,11 +792,32 @@ struct rte_flow_item_ipv4 { > > * > > * Matches an IPv6 header. > > * > > - * Note: IPv6 options are handled by dedicated pattern items, see > > - * RTE_FLOW_ITEM_TYPE_IPV6_EXT. > > + * Dedicated flags indicate existence of specific extension headers. > > + * Every type of extension header can use a dedicated pattern item, or > > + * the generic item RTE_FLOW_ITEM_TYPE_IPV6_EXT. > > */ > > struct rte_flow_item_ipv6 { > > struct rte_ipv6_hdr hdr; /**< IPv6 header definition. */ > > + uint32_t hop_ext_exist:1; > > + /**< Hop-by-Hop Options extension header exists. */ > > + uint32_t rout_ext_exist:1; > > + /**< Routing extension header exists. */ > > + uint32_t frag_ext_exist:1; > > + /**< Fragment extension header exists. */ > > + uint32_t auth_ext_exist:1; > > + /**< Authentication extension header exists. */ > > + uint32_t esp_ext_exist:1; > > + /**< Encapsulation Security Payload extension header exists. */ > > + uint32_t dest_ext_exist:1; > > + /**< Destination Options extension header exists. */ > > + uint32_t mobil_ext_exist:1; > > + /**< Mobility extension header exists. */ > > + uint32_t hip_ext_exist:1; > > + /**< Host Identity Protocol extension header exists. */ > > + uint32_t shim6_ext_exist:1; > > + /**< Shim6 Protocol extension header exists. */ > > + uint32_t reserved:23; > > + /**< Reserved for future extension headers, must be zero. */ > > }; > > > > /** Default mask for RTE_FLOW_ITEM_TYPE_IPV6. */ > > -- > > 1.8.3.1 > >
next prev parent reply other threads:[~2020-10-07 6:59 UTC|newest] Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-30 14:10 [dpdk-dev] [PATCH 00/10] support match on L3 fragmented packets Dekel Peled 2020-09-30 14:10 ` [dpdk-dev] [PATCH 01/10] ethdev: add extensions attributes to IPv6 item Dekel Peled 2020-09-30 14:54 ` Ori Kam 2020-09-30 14:10 ` [dpdk-dev] [PATCH 02/10] ethdev: add IPv6 fragment extension header item Dekel Peled 2020-09-30 14:55 ` Ori Kam 2020-09-30 14:10 ` [dpdk-dev] [PATCH 03/10] app/testpmd: support IPv4 fragments Dekel Peled 2020-09-30 14:54 ` Ori Kam 2020-09-30 14:10 ` [dpdk-dev] [PATCH 04/10] app/testpmd: support IPv6 fragments Dekel Peled 2020-09-30 14:10 ` [dpdk-dev] [PATCH 05/10] app/testpmd: support IPv6 fragment extension item Dekel Peled 2020-09-30 14:56 ` Ori Kam 2020-09-30 14:10 ` [dpdk-dev] [PATCH 06/10] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled 2020-09-30 14:10 ` [dpdk-dev] [PATCH 07/10] net/mlx5: support match on IPv4 fragment packets Dekel Peled 2020-09-30 14:10 ` [dpdk-dev] [PATCH 08/10] net/mlx5: support match on IPv6 " Dekel Peled 2020-09-30 14:10 ` [dpdk-dev] [PATCH 09/10] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled 2020-09-30 14:10 ` [dpdk-dev] [PATCH 10/10] doc: update release notes for MLX5 L3 frag support Dekel Peled 2020-10-01 21:14 ` [dpdk-dev] [PATCH v2 00/11] support match on L3 fragmented packets Dekel Peled 2020-10-01 21:14 ` [dpdk-dev] [PATCH v2 01/11] ethdev: add extensions attributes to IPv6 item Dekel Peled 2020-10-04 13:45 ` Ori Kam 2020-10-01 21:14 ` [dpdk-dev] [PATCH v2 02/11] ethdev: add IPv6 fragment extension header item Dekel Peled 2020-10-01 21:27 ` Stephen Hemminger 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 03/11] app/testpmd: support IPv4 fragments Dekel Peled 2020-10-04 13:47 ` Ori Kam 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 04/11] app/testpmd: support IPv6 fragments Dekel Peled 2020-10-04 13:49 ` Ori Kam 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 05/11] app/testpmd: support IPv6 fragment extension item Dekel Peled 2020-10-04 13:47 ` Ori Kam 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 06/11] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled 2020-10-04 13:49 ` Ori Kam 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 07/11] net/mlx5: support match on IPv4 fragment packets Dekel Peled 2020-10-04 13:48 ` Ori Kam 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 08/11] net/mlx5: support match on IPv6 " Dekel Peled 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 09/11] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled 2020-10-04 13:51 ` Ori Kam 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 10/11] doc: update release notes for MLX5 L3 frag support Dekel Peled 2020-10-04 13:55 ` Ori Kam 2020-10-01 21:15 ` [dpdk-dev] [PATCH v2 11/11] net/mlx5: enforce limitation on IPv6 next proto Dekel Peled 2020-10-04 13:55 ` Ori Kam 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 00/11] support match on L3 fragmented packets Dekel Peled 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 01/11] ethdev: add extensions attributes to IPv6 item Dekel Peled 2020-10-06 23:43 ` Ajit Khaparde 2020-10-07 6:59 ` Dekel Peled [this message] 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 02/11] ethdev: add IPv6 fragment extension header item Dekel Peled 2020-10-05 8:50 ` Ori Kam 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 03/11] app/testpmd: support IPv4 fragments Dekel Peled 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 04/11] app/testpmd: support IPv6 fragments Dekel Peled 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 05/11] app/testpmd: support IPv6 fragment extension item Dekel Peled 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 06/11] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 07/11] net/mlx5: support match on IPv4 fragment packets Dekel Peled 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 08/11] net/mlx5: support match on IPv6 " Dekel Peled 2020-10-05 8:51 ` Ori Kam 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 09/11] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 10/11] doc: update release notes for MLX5 L3 frag support Dekel Peled 2020-10-05 8:35 ` [dpdk-dev] [PATCH v3 11/11] net/mlx5: enforce limitation on IPv6 next proto Dekel Peled 2020-10-07 10:53 ` [dpdk-dev] [PATCH v4 00/11] support match on L3 fragmented packets Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 01/11] ethdev: add extensions attributes to IPv6 item Dekel Peled 2020-10-08 3:14 ` Ajit Khaparde 2020-10-08 7:03 ` Dekel Peled 2020-10-08 18:28 ` Ajit Khaparde 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 02/11] ethdev: add IPv6 fragment extension header item Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 03/11] app/testpmd: support IPv4 fragments Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 04/11] app/testpmd: support IPv6 fragments Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 05/11] app/testpmd: support IPv6 fragment extension item Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 06/11] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 07/11] net/mlx5: support match on IPv4 fragment packets Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 08/11] net/mlx5: support match on IPv6 " Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 09/11] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 10/11] doc: update release notes for MLX5 L3 frag support Dekel Peled 2020-10-07 10:54 ` [dpdk-dev] [PATCH v4 11/11] net/mlx5: enforce limitation on IPv6 next proto Dekel Peled 2020-10-07 11:15 ` [dpdk-dev] [PATCH v4 00/11] support match on L3 fragmented packets Ori Kam 2020-10-12 10:42 ` [dpdk-dev] [PATCH v5 " Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 01/11] ethdev: add extensions attributes to IPv6 item Dekel Peled 2020-10-12 20:41 ` Thomas Monjalon 2020-10-13 8:22 ` Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 02/11] ethdev: add IPv6 fragment extension header item Dekel Peled 2020-10-12 20:50 ` Thomas Monjalon 2020-10-13 8:11 ` Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 03/11] app/testpmd: support IPv4 fragments Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 04/11] app/testpmd: support IPv6 fragments Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 05/11] app/testpmd: support IPv6 fragment extension item Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 06/11] net/mlx5: remove handling of ICMP fragmented packets Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 07/11] net/mlx5: support match on IPv4 fragment packets Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 08/11] net/mlx5: support match on IPv6 " Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 09/11] net/mlx5: support match on IPv6 fragment ext. item Dekel Peled 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 10/11] doc: update release notes for MLX5 L3 frag support Dekel Peled 2020-10-12 19:29 ` Thomas Monjalon 2020-10-12 10:43 ` [dpdk-dev] [PATCH v5 11/11] net/mlx5: enforce limitation on IPv6 next proto Dekel Peled 2020-10-13 13:32 ` [dpdk-dev] [PATCH v6 0/5] support match on L3 fragmented packets Dekel Peled 2020-10-13 13:32 ` [dpdk-dev] [PATCH v6 1/5] ethdev: add extensions attributes to IPv6 item Dekel Peled 2020-10-14 10:36 ` Thomas Monjalon 2020-10-13 13:32 ` [dpdk-dev] [PATCH v6 2/5] ethdev: add IPv6 fragment extension header item Dekel Peled 2020-10-14 10:37 ` Thomas Monjalon 2020-10-13 13:32 ` [dpdk-dev] [PATCH v6 3/5] app/testpmd: support IPv4 fragments Dekel Peled 2020-10-13 13:32 ` [dpdk-dev] [PATCH v6 4/5] app/testpmd: support IPv6 fragments Dekel Peled 2020-10-13 13:32 ` [dpdk-dev] [PATCH v6 5/5] app/testpmd: support IPv6 fragment extension item Dekel Peled 2020-10-14 16:35 ` [dpdk-dev] [PATCH v7 0/5] support match on L3 fragmented packets Dekel Peled 2020-10-14 16:35 ` [dpdk-dev] [PATCH v7 1/5] ethdev: add extensions attributes to IPv6 item Dekel Peled 2020-10-14 16:35 ` [dpdk-dev] [PATCH v7 2/5] ethdev: add IPv6 fragment extension header item Dekel Peled 2020-10-14 16:35 ` [dpdk-dev] [PATCH v7 3/5] app/testpmd: support IPv4 fragments Dekel Peled 2020-10-14 16:35 ` [dpdk-dev] [PATCH v7 4/5] app/testpmd: support IPv6 fragments Dekel Peled 2020-10-14 16:35 ` [dpdk-dev] [PATCH v7 5/5] app/testpmd: support IPv6 fragment extension item Dekel Peled 2020-10-14 17:18 ` [dpdk-dev] [PATCH v7 0/5] support match on L3 fragmented packets Ferruh Yigit
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=MN2PR12MB4375E378E1632C3EBA73A114BB0A0@MN2PR12MB4375.namprd12.prod.outlook.com \ --to=dekelp@nvidia.com \ --cc=ajit.khaparde@broadcom.com \ --cc=arybchenko@solarflare.com \ --cc=beilei.xing@intel.com \ --cc=bernard.iremonger@intel.com \ --cc=dev@dpdk.org \ --cc=ferruh.yigit@intel.com \ --cc=konstantin.ananyev@intel.com \ --cc=matan@nvidia.com \ --cc=olivier.matz@6wind.com \ --cc=orika@nvidia.com \ --cc=shahafs@nvidia.com \ --cc=thomas@monjalon.net \ --cc=viacheslavo@nvidia.com \ --cc=wenzhuo.lu@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git