[RFC] ethdev: add async flow connection tracking configuration
Checks
Commit Message
In queue based async flow engine, in order to optimize the flow
insertion rate, PMD can use the hints from application to have
resources pre-allocate during initialization phase for actions
such as count/meter/aging.
This commit adds the connection tracking action hints.
Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
---
app/test-pmd/cmdline_flow.c | 10 ++++++++++
doc/guides/rel_notes/release_22_11.rst | 6 ++++++
lib/ethdev/rte_flow.h | 10 ++++++++++
3 files changed, 26 insertions(+)
Comments
> -----Original Message-----
> From: Suanming Mou <suanmingm@nvidia.com>
> Sent: Tuesday, 9 August 2022 16:26
> Subject: [RFC] ethdev: add async flow connection tracking configuration
>
> In queue based async flow engine, in order to optimize the flow
> insertion rate, PMD can use the hints from application to have
> resources pre-allocate during initialization phase for actions
> such as count/meter/aging.
>
> This commit adds the connection tracking action hints.
>
> Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
> ---
> app/test-pmd/cmdline_flow.c | 10 ++++++++++
> doc/guides/rel_notes/release_22_11.rst | 6 ++++++
> lib/ethdev/rte_flow.h | 10 ++++++++++
> 3 files changed, 26 insertions(+)
>
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index 7f50028eb7..c9cbf381c4 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -219,6 +219,7 @@ enum index {
> CONFIG_COUNTERS_NUMBER,
> CONFIG_AGING_OBJECTS_NUMBER,
> CONFIG_METERS_NUMBER,
> + CONFIG_CONN_TRACK_NUMBER,
>
> /* Indirect action arguments */
> INDIRECT_ACTION_CREATE,
> @@ -1081,6 +1082,7 @@ static const enum index next_config_attr[] = {
> CONFIG_COUNTERS_NUMBER,
> CONFIG_AGING_OBJECTS_NUMBER,
> CONFIG_METERS_NUMBER,
> + CONFIG_CONN_TRACK_NUMBER,
> END,
> ZERO,
> };
> @@ -2667,6 +2669,14 @@ static const struct token token_list[] = {
> .args = ARGS(ARGS_ENTRY(struct buffer,
>
> args.configure.port_attr.nb_meters)),
> },
> + [CONFIG_CONN_TRACK_NUMBER] = {
> + .name = "conn_tracks_number",
> + .help = "number of connection trackings",
> + .next = NEXT(next_config_attr,
> + NEXT_ENTRY(COMMON_UNSIGNED)),
> + .args = ARGS(ARGS_ENTRY(struct buffer,
> +
> args.configure.port_attr.nb_conn_tracks)),
> + },
> /* Top-level command. */
> [PATTERN_TEMPLATE] = {
> .name = "pattern_template",
> diff --git a/doc/guides/rel_notes/release_22_11.rst
> b/doc/guides/rel_notes/release_22_11.rst
> index 8c021cf050..c396bfca5f 100644
> --- a/doc/guides/rel_notes/release_22_11.rst
> +++ b/doc/guides/rel_notes/release_22_11.rst
> @@ -55,6 +55,12 @@ New Features
> Also, make sure to start the actual text at the margin.
> =======================================================
>
> +* **Added configuration for asynchronous flow connection tracking.**
> +
> + Added connection tracking action number hint to ``rte_flow_configure``
> + and ``rte_flow_info_get``.
> + PMD can prepare the connection tracking resources accroding to the hint.
> +
>
> Removed Items
> -------------
> diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h
> index a79f1e7ef0..c2747abc55 100644
> --- a/lib/ethdev/rte_flow.h
> +++ b/lib/ethdev/rte_flow.h
> @@ -4902,6 +4902,11 @@ struct rte_flow_port_info {
> * @see RTE_FLOW_ACTION_TYPE_METER
> */
> uint32_t max_nb_meters;
> + /**
> + * Maximum number connection trackings.
> + * @see RTE_FLOW_ACTION_TYPE_CONNTRACK
> + */
> + uint32_t max_nb_conn_tracks;
> };
>
> /**
> @@ -4971,6 +4976,11 @@ struct rte_flow_port_attr {
> * @see RTE_FLOW_ACTION_TYPE_METER
> */
> uint32_t nb_meters;
> + /**
> + * Number of connection trackings to configure.
> + * @see RTE_FLOW_ACTION_TYPE_CONNTRACK
> + */
> + uint32_t nb_conn_tracks;
> };
>
> /**
> --
> 2.25.1
Acked-by: Ori Kam <orika@nvidia.com>
Best,
Ori
Ping...
> -----Original Message-----
> From: Suanming Mou <suanmingm@nvidia.com>
> Sent: Tuesday, August 9, 2022 9:26 PM
> To: dev@dpdk.org
> Cc: Ori Kam <orika@nvidia.com>; Xiaoyun Li <xiaoyun.li@intel.com>; Aman
> Singh <aman.deep.singh@intel.com>; Yuying Zhang <yuying.zhang@intel.com>;
> NBU-Contact-Thomas Monjalon (EXTERNAL) <thomas@monjalon.net>; Ferruh
> Yigit <ferruh.yigit@xilinx.com>; Andrew Rybchenko
> <andrew.rybchenko@oktetlabs.ru>
> Subject: [RFC] ethdev: add async flow connection tracking configuration
>
> In queue based async flow engine, in order to optimize the flow insertion rate,
> PMD can use the hints from application to have resources pre-allocate during
> initialization phase for actions such as count/meter/aging.
>
> This commit adds the connection tracking action hints.
>
> Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
> ---
> app/test-pmd/cmdline_flow.c | 10 ++++++++++
> doc/guides/rel_notes/release_22_11.rst | 6 ++++++
> lib/ethdev/rte_flow.h | 10 ++++++++++
> 3 files changed, 26 insertions(+)
>
> diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index
> 7f50028eb7..c9cbf381c4 100644
> --- a/app/test-pmd/cmdline_flow.c
> +++ b/app/test-pmd/cmdline_flow.c
> @@ -219,6 +219,7 @@ enum index {
> CONFIG_COUNTERS_NUMBER,
> CONFIG_AGING_OBJECTS_NUMBER,
> CONFIG_METERS_NUMBER,
> + CONFIG_CONN_TRACK_NUMBER,
>
> /* Indirect action arguments */
> INDIRECT_ACTION_CREATE,
> @@ -1081,6 +1082,7 @@ static const enum index next_config_attr[] = {
> CONFIG_COUNTERS_NUMBER,
> CONFIG_AGING_OBJECTS_NUMBER,
> CONFIG_METERS_NUMBER,
> + CONFIG_CONN_TRACK_NUMBER,
> END,
> ZERO,
> };
> @@ -2667,6 +2669,14 @@ static const struct token token_list[] = {
> .args = ARGS(ARGS_ENTRY(struct buffer,
> args.configure.port_attr.nb_meters)),
> },
> + [CONFIG_CONN_TRACK_NUMBER] = {
> + .name = "conn_tracks_number",
> + .help = "number of connection trackings",
> + .next = NEXT(next_config_attr,
> + NEXT_ENTRY(COMMON_UNSIGNED)),
> + .args = ARGS(ARGS_ENTRY(struct buffer,
> +
> args.configure.port_attr.nb_conn_tracks)),
> + },
> /* Top-level command. */
> [PATTERN_TEMPLATE] = {
> .name = "pattern_template",
> diff --git a/doc/guides/rel_notes/release_22_11.rst
> b/doc/guides/rel_notes/release_22_11.rst
> index 8c021cf050..c396bfca5f 100644
> --- a/doc/guides/rel_notes/release_22_11.rst
> +++ b/doc/guides/rel_notes/release_22_11.rst
> @@ -55,6 +55,12 @@ New Features
> Also, make sure to start the actual text at the margin.
> =======================================================
>
> +* **Added configuration for asynchronous flow connection tracking.**
> +
> + Added connection tracking action number hint to
> + ``rte_flow_configure`` and ``rte_flow_info_get``.
> + PMD can prepare the connection tracking resources accroding to the hint.
> +
>
> Removed Items
> -------------
> diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index
> a79f1e7ef0..c2747abc55 100644
> --- a/lib/ethdev/rte_flow.h
> +++ b/lib/ethdev/rte_flow.h
> @@ -4902,6 +4902,11 @@ struct rte_flow_port_info {
> * @see RTE_FLOW_ACTION_TYPE_METER
> */
> uint32_t max_nb_meters;
> + /**
> + * Maximum number connection trackings.
> + * @see RTE_FLOW_ACTION_TYPE_CONNTRACK
> + */
> + uint32_t max_nb_conn_tracks;
> };
>
> /**
> @@ -4971,6 +4976,11 @@ struct rte_flow_port_attr {
> * @see RTE_FLOW_ACTION_TYPE_METER
> */
> uint32_t nb_meters;
> + /**
> + * Number of connection trackings to configure.
> + * @see RTE_FLOW_ACTION_TYPE_CONNTRACK
> + */
> + uint32_t nb_conn_tracks;
> };
>
> /**
> --
> 2.25.1
Hi Suanming
> -----Original Message-----
> From: Suanming Mou <suanmingm@nvidia.com>
> Cc: dev@dpdk.org; Ori Kam <orika@nvidia.com>
> Subject: RE: [RFC] ethdev: add async flow connection tracking configuration
>
> Ping...
>
> > -----Original Message-----
> > From: Suanming Mou <suanmingm@nvidia.com>
> > Sent: Tuesday, August 9, 2022 9:26 PM
> > To: dev@dpdk.org
> > Cc: Ori Kam <orika@nvidia.com>; Xiaoyun Li <xiaoyun.li@intel.com>; Aman
> > Singh <aman.deep.singh@intel.com>; Yuying Zhang
> <yuying.zhang@intel.com>;
> > NBU-Contact-Thomas Monjalon (EXTERNAL) <thomas@monjalon.net>;
> Ferruh
> > Yigit <ferruh.yigit@xilinx.com>; Andrew Rybchenko
> > <andrew.rybchenko@oktetlabs.ru>
> > Subject: [RFC] ethdev: add async flow connection tracking configuration
> >
> > In queue based async flow engine, in order to optimize the flow insertion
> rate,
> > PMD can use the hints from application to have resources pre-allocate
> during
> > initialization phase for actions such as count/meter/aging.
> >
> > This commit adds the connection tracking action hints.
> >
> > Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
> > ---
> > app/test-pmd/cmdline_flow.c | 10 ++++++++++
> > doc/guides/rel_notes/release_22_11.rst | 6 ++++++
> > lib/ethdev/rte_flow.h | 10 ++++++++++
> > 3 files changed, 26 insertions(+)
> >
> > diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> index
> > 7f50028eb7..c9cbf381c4 100644
> > --- a/app/test-pmd/cmdline_flow.c
> > +++ b/app/test-pmd/cmdline_flow.c
> > @@ -219,6 +219,7 @@ enum index {
> > CONFIG_COUNTERS_NUMBER,
> > CONFIG_AGING_OBJECTS_NUMBER,
> > CONFIG_METERS_NUMBER,
> > + CONFIG_CONN_TRACK_NUMBER,
> >
> > /* Indirect action arguments */
> > INDIRECT_ACTION_CREATE,
> > @@ -1081,6 +1082,7 @@ static const enum index next_config_attr[] = {
> > CONFIG_COUNTERS_NUMBER,
> > CONFIG_AGING_OBJECTS_NUMBER,
> > CONFIG_METERS_NUMBER,
> > + CONFIG_CONN_TRACK_NUMBER,
> > END,
> > ZERO,
> > };
> > @@ -2667,6 +2669,14 @@ static const struct token token_list[] = {
> > .args = ARGS(ARGS_ENTRY(struct buffer,
> > args.configure.port_attr.nb_meters)),
> > },
> > + [CONFIG_CONN_TRACK_NUMBER] = {
> > + .name = "conn_tracks_number",
> > + .help = "number of connection trackings",
> > + .next = NEXT(next_config_attr,
> > + NEXT_ENTRY(COMMON_UNSIGNED)),
> > + .args = ARGS(ARGS_ENTRY(struct buffer,
> > +
> > args.configure.port_attr.nb_conn_tracks)),
> > + },
> > /* Top-level command. */
> > [PATTERN_TEMPLATE] = {
> > .name = "pattern_template",
> > diff --git a/doc/guides/rel_notes/release_22_11.rst
> > b/doc/guides/rel_notes/release_22_11.rst
> > index 8c021cf050..c396bfca5f 100644
> > --- a/doc/guides/rel_notes/release_22_11.rst
> > +++ b/doc/guides/rel_notes/release_22_11.rst
> > @@ -55,6 +55,12 @@ New Features
> > Also, make sure to start the actual text at the margin.
> > =======================================================
> >
> > +* **Added configuration for asynchronous flow connection tracking.**
> > +
> > + Added connection tracking action number hint to
> > + ``rte_flow_configure`` and ``rte_flow_info_get``.
> > + PMD can prepare the connection tracking resources accroding to the
> hint.
> > +
> >
> > Removed Items
> > -------------
> > diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index
> > a79f1e7ef0..c2747abc55 100644
> > --- a/lib/ethdev/rte_flow.h
> > +++ b/lib/ethdev/rte_flow.h
> > @@ -4902,6 +4902,11 @@ struct rte_flow_port_info {
> > * @see RTE_FLOW_ACTION_TYPE_METER
> > */
> > uint32_t max_nb_meters;
> > + /**
> > + * Maximum number connection trackings.
> > + * @see RTE_FLOW_ACTION_TYPE_CONNTRACK
> > + */
> > + uint32_t max_nb_conn_tracks;
> > };
> >
> > /**
> > @@ -4971,6 +4976,11 @@ struct rte_flow_port_attr {
> > * @see RTE_FLOW_ACTION_TYPE_METER
> > */
> > uint32_t nb_meters;
> > + /**
> > + * Number of connection trackings to configure.
> > + * @see RTE_FLOW_ACTION_TYPE_CONNTRACK
> > + */
> > + uint32_t nb_conn_tracks;
> > };
> >
> > /**
> > --
> > 2.25.1
Acked-by: Ori Kam <orika@nvidia.com>
Thanks,
Ori
@@ -219,6 +219,7 @@ enum index {
CONFIG_COUNTERS_NUMBER,
CONFIG_AGING_OBJECTS_NUMBER,
CONFIG_METERS_NUMBER,
+ CONFIG_CONN_TRACK_NUMBER,
/* Indirect action arguments */
INDIRECT_ACTION_CREATE,
@@ -1081,6 +1082,7 @@ static const enum index next_config_attr[] = {
CONFIG_COUNTERS_NUMBER,
CONFIG_AGING_OBJECTS_NUMBER,
CONFIG_METERS_NUMBER,
+ CONFIG_CONN_TRACK_NUMBER,
END,
ZERO,
};
@@ -2667,6 +2669,14 @@ static const struct token token_list[] = {
.args = ARGS(ARGS_ENTRY(struct buffer,
args.configure.port_attr.nb_meters)),
},
+ [CONFIG_CONN_TRACK_NUMBER] = {
+ .name = "conn_tracks_number",
+ .help = "number of connection trackings",
+ .next = NEXT(next_config_attr,
+ NEXT_ENTRY(COMMON_UNSIGNED)),
+ .args = ARGS(ARGS_ENTRY(struct buffer,
+ args.configure.port_attr.nb_conn_tracks)),
+ },
/* Top-level command. */
[PATTERN_TEMPLATE] = {
.name = "pattern_template",
@@ -55,6 +55,12 @@ New Features
Also, make sure to start the actual text at the margin.
=======================================================
+* **Added configuration for asynchronous flow connection tracking.**
+
+ Added connection tracking action number hint to ``rte_flow_configure``
+ and ``rte_flow_info_get``.
+ PMD can prepare the connection tracking resources accroding to the hint.
+
Removed Items
-------------
@@ -4902,6 +4902,11 @@ struct rte_flow_port_info {
* @see RTE_FLOW_ACTION_TYPE_METER
*/
uint32_t max_nb_meters;
+ /**
+ * Maximum number connection trackings.
+ * @see RTE_FLOW_ACTION_TYPE_CONNTRACK
+ */
+ uint32_t max_nb_conn_tracks;
};
/**
@@ -4971,6 +4976,11 @@ struct rte_flow_port_attr {
* @see RTE_FLOW_ACTION_TYPE_METER
*/
uint32_t nb_meters;
+ /**
+ * Number of connection trackings to configure.
+ * @see RTE_FLOW_ACTION_TYPE_CONNTRACK
+ */
+ uint32_t nb_conn_tracks;
};
/**