DPDK patches and discussions
 help / color / mirror / Atom feed
From: Reshma Pattan <reshma.pattan@intel.com>
To: dev@dpdk.org, marko.kovacevic@intel.com, john.mcnamara@intel.com
Cc: Jasvinder Singh <jasvinder.singh@intel.com>,
	Reshma Pattan <ershma.pattan@intel.com>
Subject: [dpdk-dev] [PATCH v2] doc: update softnic doc for flow and qos API support
Date: Thu, 18 Oct 2018 15:50:07 +0100	[thread overview]
Message-ID: <1539874207-538-1-git-send-email-reshma.pattan@intel.com> (raw)
In-Reply-To: <1539859449-8248-1-git-send-email-reshma.pattan@intel.com>

Update document with flow and qos api support in softnic PMD.

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Signed-off-by: Reshma Pattan <ershma.pattan@intel.com>
Reviewed-by: Marko Kovacevic <marko.kovacevic@intel.com>
---
v2: fixed the Note.
reworded the sentence.
---
 doc/guides/nics/softnic.rst | 120 ++++++++++++++++++++++++++++++++++++
 1 file changed, 120 insertions(+)

diff --git a/doc/guides/nics/softnic.rst b/doc/guides/nics/softnic.rst
index 6c2287a19..32a9cf22f 100644
--- a/doc/guides/nics/softnic.rst
+++ b/doc/guides/nics/softnic.rst
@@ -248,3 +248,123 @@ command description provided in `softnic/rte_eth_softnic_cli.c`.
 
         thread 1 pipeline RX enable        (Soft NIC rx pipeline enable on cpu thread id 1)
         thread 1 pipeline TX enable        (Soft NIC tx pipeline enable on cpu thread id 1)
+
+QoS API Support:
+----------------
+
+SoftNIC PMD implements ethdev traffic management APIs ``rte_tm.h`` that
+allow building and committing traffic manager hierarchy, configuring hierarchy
+nodes of the Quality of Service (QoS) scheduler supported by DPDK librte_sched
+library. Furthermore, APIs for run-time update to the traffic manager hierarchy
+are supported by PMD.
+
+SoftNIC PMD also implements ethdev traffic metering and policing APIs
+``rte_mtr.h`` that enables metering and marking of the packets with the
+appropriate color (green, yellow or red), according to the traffic metering
+algorithm. For the meter output color, policer actions like
+`keep the packet color same`, `change the packet color` or `drop the packet`
+can be configured.
+
+.. Note::
+
+    The SoftNIC does not support the meter object shared by several flows,
+    thus only supports creating meter object private to the flow. Once meter
+    object is successfully created, it can be linked to the specific flow by
+    specifying the ``meter`` flow action in the flow rule.
+
+Flow API support:
+-----------------
+
+The SoftNIC PMD implements ethdev flow APIs ``rte_flow.h`` that allow validating
+flow rules, adding flow rules to the SoftNIC pipeline as table rules, deleting
+and querying the flow rules. The PMD provides new cli command for creating the
+flow group and their mapping to the SoftNIC pipeline and table. This cli should
+be configured as part of firmware file.
+
+    .. code-block:: console
+
+        flowapi map group <group_id> ingress | egress pipeline <pipeline_name> \
+            table <table_id>
+
+From the flow attributes of the flow, PMD uses the group id to get the mapped
+pipeline and table. PMD supports number of flow actions such as
+``JMP, QUEUE, RSS, DROP, COUNT, METER, VXLAN`` etc.
+
+.. Note::
+
+    The flow must have one terminating actions i.e.
+    ``JMP or RSS or QUEUE or DROP``. For the count and drop actions the
+    underlying PMD doesn't support the functionality yet. So it is not
+    recommended for use.
+
+The flow API can be tested with the help of testpmd application. The SoftNIC
+firmware specifies CLI commands for port configuration, pipeline creation,
+action profile creation and table creation. Once application gets initialized,
+the flow rules can be added through the testpmd CLI.
+The PMD will translate the flow rules to the SoftNIC pipeline tables rules.
+
+Example:
+~~~~~~~~
+Example demonstrates the flow queue action using the SoftNIC firmware and testpmd
+commands.
+
+* Prepare SoftNIC firmware
+
+    .. code-block:: console
+
+        link LINK0 dev 0000:83:00.0
+        link LINK1 dev 0000:81:00.0
+        pipeline RX period 10 offset_port_id 0
+        pipeline RX port in bsz 32 link LINK0 rxq 0
+        pipeline RX port in bsz 32 link LINK1 rxq 0
+        pipeline RX port out bsz 32 swq RXQ0
+        pipeline RX port out bsz 32 swq RXQ1
+        table action profile AP0 ipv4 offset 278 fwd
+        pipeline RX table match hash ext key 16 mask
+            00FF0000FFFFFFFFFFFFFFFFFFFFFFFF \
+            offset 278 buckets 16K size 65K action AP0
+        pipeline RX port in 0 table 0
+        pipeline RX port in 1 table 0
+        flowapi map group 0 ingress pipeline RX table 0
+        pipeline TX period 10 offset_port_id 0
+        pipeline TX port in bsz 32 swq TXQ0
+        pipeline TX port in bsz 32 swq TXQ1
+        pipeline TX port out bsz 32 link LINK0 txq 0
+        pipeline TX port out bsz 32 link LINK1 txq 0
+        pipeline TX table match hash ext key 16 mask
+            00FF0000FFFFFFFFFFFFFFFFFFFFFFFF \
+            offset 278 buckets 16K size 65K action AP0
+        pipeline TX port in 0 table 0
+        pipeline TX port in 1 table 0
+        pipeline TX table 0 rule add match hash ipv4_5tuple
+            1.10.11.12 2.20.21.22 100 200 6 action fwd port 0
+        pipeline TX table 0 rule add match hash ipv4_5tuple
+            1.10.11.13 2.20.21.23 100 200 6 action fwd port 1
+        thread 25 pipeline RX enable
+        thread 25 pipeline TX enable
+
+* Run testpmd:
+
+    .. code-block:: console
+
+        ./x86_64-native-linuxapp-gcc/app/testpmd -l 23-25  -n 4 \
+                                    --vdev 'net_softnic0, \
+                                    firmware=./drivers/net/softnic/ \
+                                        firmware.cli, \
+                                    cpu_id=1,conn_port=8086' -- \
+                                    -i --forward-mode=softnic --rxq=2, \
+                                    --txq=2, --disable-rss --portmask=0x4
+
+* Configure flow rules on softnic:
+
+    .. code-block:: console
+
+        flow create 2 group 0 ingress pattern eth / ipv4 proto mask 255 src \
+            mask 255.255.255.255 dst mask  255.255.255.255 src spec
+            1.10.11.12 dst spec 2.20.21.22 proto spec 6 / tcp src mask 65535 \
+            dst mask 65535 src spec 100 dst spec 200 / end actions queue \
+            index 0 / end
+        flow create 2 group 0 ingress pattern eth / ipv4 proto mask 255 src \
+            mask 255.255.255.255 dst mask  255.255.255.255 src spec 1.10.11.13 \
+            dst spec 2.20.21.23 proto spec 6 / tcp src mask 65535 dst mask \
+            65535 src spec 100 dst spec 200 / end actions queue index 1 / end
-- 
2.17.1

  parent reply	other threads:[~2018-10-18 14:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-18 10:44 [dpdk-dev] [PATCH] " Reshma Pattan
2018-10-18 12:24 ` Kovacevic, Marko
2018-10-18 14:50 ` Reshma Pattan [this message]
2018-10-18 14:54 ` [dpdk-dev] [PATCH v2] " Reshma Pattan
2018-10-26 11:08   ` Thomas Monjalon

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=1539874207-538-1-git-send-email-reshma.pattan@intel.com \
    --to=reshma.pattan@intel.com \
    --cc=dev@dpdk.org \
    --cc=ershma.pattan@intel.com \
    --cc=jasvinder.singh@intel.com \
    --cc=john.mcnamara@intel.com \
    --cc=marko.kovacevic@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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).