doc: update softnic guide for flow and QoS support

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 <reshma.pattan@intel.com>
Reviewed-by: Marko Kovacevic <marko.kovacevic@intel.com>
This commit is contained in:
Reshma Pattan 2018-10-18 15:54:13 +01:00 committed by Thomas Monjalon
parent c7eb0972e7
commit 13e23e637b
2 changed files with 125 additions and 0 deletions

View File

@ -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

View File

@ -146,6 +146,11 @@ New Features
A new devarg ``phy_mac`` was introduced to allow users to use physical
MAC address of the selected PCAP interface.
* **Added classification and metering support to SoftNIC PMD.**
Added support for flow classification (rte_flow API), and metering and
policing (rte_mtr API) to the SoftNIC PMD.
* **Added support for GEN3 devices to Intel QAT driver .**
Added support for the third generation of Intel QuickAssist devices.