From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A3E4EA0519; Fri, 3 Jul 2020 08:39:58 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C06BA1D5F3; Fri, 3 Jul 2020 08:39:57 +0200 (CEST) Received: from mail-io1-f68.google.com (mail-io1-f68.google.com [209.85.166.68]) by dpdk.org (Postfix) with ESMTP id 4CB601D5E0 for ; Fri, 3 Jul 2020 08:39:56 +0200 (CEST) Received: by mail-io1-f68.google.com with SMTP id v8so31361330iox.2 for ; Thu, 02 Jul 2020 23:39:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IT1WL2UNXs91wqg7PTt5pWvpY9mLzpMershQ9hq5YDE=; b=utCUs3eyJbLG2fkNGeUIR/yBaQJgmQrUqLOAx5xty6AkPBp6aSMm5Ojw1J9NBe5Cju iWMf2XgcaK/zjtrx4Zf7khW9aetuqcJfJmkqe8QlzEumFBzdA7bF4+RkWLsnXZlCYoY1 ZRw3SeyPnKfeDR21okRc3VdPM3txJK7sFyb1V9I3C/dHyEHGrn4uwqgCvZT8TnfmXnmd MbD0/BuUlqty0dzaNvOAmZ/5DqV0EkXTGnu3mf9Qj2Psv7OYiuXecbiPKTiUwWwXv6Zq myxmELmzQbjMsP9vBlW+Fmaf619lm51IHxnvkL+SHlFp0QtbnZ5QDT9/8StHD0ToZtpz M4aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IT1WL2UNXs91wqg7PTt5pWvpY9mLzpMershQ9hq5YDE=; b=QQjqrv8vEnNHafVB/VcohXbYIm44CHx+B4PnJO2bQiRF65K40tQskvEOSKdq6cgJrW G13bDZf+xHEO3gIlFIQ104cAbI+HU8g31YTd6vvG+NOF214Gu0dJrv6kMkl4v/lYouKG wIQoQpBYr5/6jqeLkYdmJoma+Sl+t7xYFzt6OQhWMxWshnTfGQCMH91aYjqiKwaSCoTD jCgo0xnUMGX5UaLg/mfQUxj0oPBT6gUg0E0iOBkgFFVtW9+qwSYCcqH1oLlVObf4D3rd iCjHX1Q9UxxYA5hxaGtvbKg0erEsV6G5WH7R5cQiGQxmZzdjm99mM+W7UVwGY24a0gxC LP8w== X-Gm-Message-State: AOAM532x60SToPX+Y34xvLXmdzVupMDR0ZyEDAUuT56iSDFckYDo76vU hxzHafyP/tah2sCesO7GkoCM/Pidi4UGm7ZQH+M= X-Google-Smtp-Source: ABdhPJwMF73bFzB9PT3ErOALMIVd8lvyCqjC6a7/EJA0quda4rbTbo4M4USK+HVA0KyecjD8yYJO04Sjw/01TJagN9E= X-Received: by 2002:a02:3501:: with SMTP id k1mr37141051jaa.133.1593758395312; Thu, 02 Jul 2020 23:39:55 -0700 (PDT) MIME-Version: 1.0 References: <1593102379-400132-1-git-send-email-jiaweiw@mellanox.com> <1593715390-83047-1-git-send-email-jiaweiw@mellanox.com> <1593715390-83047-2-git-send-email-jiaweiw@mellanox.com> In-Reply-To: <1593715390-83047-2-git-send-email-jiaweiw@mellanox.com> From: Jerin Jacob Date: Fri, 3 Jul 2020 12:09:39 +0530 Message-ID: To: Jiawei Wang Cc: Ori Kam , Slava Ovsiienko , Matan Azrad , dpdk-dev , Thomas Monjalon , Raslan Darawsheh , ian.stokes@intel.com, fbl@redhat.com Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH v2 1/7] ethdev: introduce sample action for rte flow X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Fri, Jul 3, 2020 at 12:13 AM Jiawei Wang wrote: > > When using full offload, all traffic will be handled by the HW, and > directed to the requested vf or wire, the control application loses > visibility on the traffic. > So there's a need for an action that will enable the control application > some visibility. > > The solution is introduced a new action that will sample the incoming > traffic and send a duplicated traffic in some predefined ratio to the > application, while the original packet will continue to the target > destination. > > The packets sampled equals is '1/ratio', if the ratio value be set to 1 > , means that the packets would be completely mirrored. The sample packet > can be assigned with different set of actions from the original packet. > > In order to support the sample packet in rte_flow, new rte_flow action > definition RTE_FLOW_ACTION_TYPE_SAMPLE and structure rte_flow_action_sample > will be introduced. > > Signed-off-by: Jiawei Wang > Acked-by: Ori Kam When adding overlapping API(rte_eth_mirror_rule_set()) in the same library(ethdev). Please depreciate the old API. We should not have two separate paths for the same function in the same ethdev library. It is pain for app and driver developers. With the above deprecation notice, Acked-by: Jerin Jacob > --- > doc/guides/prog_guide/rte_flow.rst | 25 +++++++++++++++++++++++++ > doc/guides/rel_notes/release_20_08.rst | 6 ++++++ > lib/librte_ethdev/rte_flow.c | 1 + > lib/librte_ethdev/rte_flow.h | 28 ++++++++++++++++++++++++++++ > 4 files changed, 60 insertions(+) > > diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst > index d5dd18c..50dfe1f 100644 > --- a/doc/guides/prog_guide/rte_flow.rst > +++ b/doc/guides/prog_guide/rte_flow.rst > @@ -2645,6 +2645,31 @@ timeout passed without any matching on the flow. > | ``context`` | user input flow context | > +--------------+---------------------------------+ > > +Action: ``SAMPLE`` > +^^^^^^^^^^^^^^^^^^ > + > +Adds a sample action to a matched flow. > + > +The matching packets will be duplicated to a special queue or vport > +with the predefined ``ratio``, the packets sampled equals is '1/ratio'. > +All the packets continues to the target destination. > + > +When the ``ratio`` is set to 1 then the packets will be 100% mirrored. > +``actions`` represent the different set of actions for the sampled or mirrored > +packets. > + > +.. _table_rte_flow_action_sample: > + > +.. table:: SAMPLE > + > + +--------------+---------------------------------+ > + | Field | Value | > + +==============+=================================+ > + | ``ratio`` | 32 bits sample ratio value | > + +--------------+---------------------------------+ > + | ``actions`` | sub-action list for sampling | > + +--------------+---------------------------------+ > + > Negative types > ~~~~~~~~~~~~~~ > > diff --git a/doc/guides/rel_notes/release_20_08.rst b/doc/guides/rel_notes/release_20_08.rst > index 5cbc4ce..313e8d3 100644 > --- a/doc/guides/rel_notes/release_20_08.rst > +++ b/doc/guides/rel_notes/release_20_08.rst > @@ -81,6 +81,12 @@ New Features > * Added support for virtio queue statistics. > * Added support for MTU update. > > +* **Added flow-based traffic sampling support.** > + > + Added new action: ``RTE_FLOW_ACTION_TYPE_SAMPLE`` to duplicate the matching > + packets with given ratio and redirects to vport or queue. The sampled packets > + also can be assigned with an additional optional actions. > + > * **Updated Marvell octeontx2 ethdev PMD.** > > Updated Marvell octeontx2 driver with cn98xx support. > diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c > index 1685be5..733871d 100644 > --- a/lib/librte_ethdev/rte_flow.c > +++ b/lib/librte_ethdev/rte_flow.c > @@ -173,6 +173,7 @@ struct rte_flow_desc_data { > MK_FLOW_ACTION(SET_IPV4_DSCP, sizeof(struct rte_flow_action_set_dscp)), > MK_FLOW_ACTION(SET_IPV6_DSCP, sizeof(struct rte_flow_action_set_dscp)), > MK_FLOW_ACTION(AGE, sizeof(struct rte_flow_action_age)), > + MK_FLOW_ACTION(SAMPLE, sizeof(struct rte_flow_action_sample)), > }; > > int > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h > index b0e4199..c9cd80d 100644 > --- a/lib/librte_ethdev/rte_flow.h > +++ b/lib/librte_ethdev/rte_flow.h > @@ -2099,6 +2099,13 @@ enum rte_flow_action_type { > * see enum RTE_ETH_EVENT_FLOW_AGED > */ > RTE_FLOW_ACTION_TYPE_AGE, > + > + /** > + * Redirects specific ratio of packets to vport or queue. > + * > + * See struct rte_flow_action_sample. > + */ > + RTE_FLOW_ACTION_TYPE_SAMPLE, > }; > > /** > @@ -2709,6 +2716,27 @@ struct rte_flow_action { > struct rte_flow; > > /** > + * @warning > + * @b EXPERIMENTAL: this structure may change without prior notice > + * > + * RTE_FLOW_ACTION_TYPE_SAMPLE > + * > + * Adds a sample action to a matched flow. > + * > + * The matching packets will be duplicated to a special queue or vport > + * in the predefined probabiilty, All the packets continues processing > + * on the default flow path. > + * > + * When the sample ratio is set to 1 then the packets will be 100% mirrored. > + * Additional action list be supported to add for sampled or mirrored packets. > + */ > +struct rte_flow_action_sample { > + const uint32_t ratio; /**< packets sampled equals to '1/ratio'. */ > + const struct rte_flow_action *actions; > + /**< sub-action list specific for the sampling hit cases. */ > +}; > + > +/** > * Verbose error types. > * > * Most of them provide the type of the object referenced by struct > -- > 1.8.3.1 >