* [dpdk-dev] [PATCH] doc: remove intel PMD examples in flow bifurcation guide
@ 2020-04-29 2:29 Xiaolong Ye
2020-04-29 12:54 ` Thomas Monjalon
2020-05-08 8:48 ` [dpdk-dev] [PATCH v2] doc: remove Intel " Xiaolong Ye
0 siblings, 2 replies; 7+ messages in thread
From: Xiaolong Ye @ 2020-04-29 2:29 UTC (permalink / raw)
To: John McNamara, Marko Kovacevic; +Cc: dev, thomas, jingjing.wu, Xiaolong Ye
Now this feature is no longer supported by kernel side, so remove the
intel PMD examples to avoid confusion.
Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
doc/guides/howto/flow_bifurcation.rst | 227 ------------------
doc/guides/howto/img/ixgbe_bifu_queue_idx.svg | 101 --------
2 files changed, 328 deletions(-)
delete mode 100644 doc/guides/howto/img/ixgbe_bifu_queue_idx.svg
diff --git a/doc/guides/howto/flow_bifurcation.rst b/doc/guides/howto/flow_bifurcation.rst
index a36126472c..7ba66b9003 100644
--- a/doc/guides/howto/flow_bifurcation.rst
+++ b/doc/guides/howto/flow_bifurcation.rst
@@ -68,230 +68,3 @@ while all other packets go to the kernel:
testpmd> flow isolate 0 true
testpmd> flow create 0 ingress pattern eth / ipv4 / udp / vxlan vni is 42 / end \
actions rss queues 0 1 2 3 end / end
-
-
-Using Flow Bifurcation on IXGBE in Linux
-----------------------------------------
-
-On Intel 82599 10 Gigabit Ethernet Controller series NICs Flow Bifurcation can
-be achieved by SR-IOV and Intel Flow Director technologies. Traffic can be
-directed to queues by the Flow Director capability, typically by matching
-5-tuple of UDP/TCP packets.
-
-The typical procedure to achieve this is as follows:
-
-#. Boot the system without iommu, or with ``iommu=pt``.
-
-#. Create Virtual Functions:
-
- .. code-block:: console
-
- echo 2 > /sys/bus/pci/devices/0000:01:00.0/sriov_numvfs
-
-#. Enable and set flow filters:
-
- .. code-block:: console
-
- ethtool -K eth1 ntuple on
- ethtool -N eth1 flow-type udp4 src-ip 192.0.2.2 dst-ip 198.51.100.2 \
- action $queue_index_in_VF0
- ethtool -N eth1 flow-type udp4 src-ip 198.51.100.2 dst-ip 192.0.2.2 \
- action $queue_index_in_VF1
-
- Where:
-
- * ``$queue_index_in_VFn``: Bits 39:32 of the variable defines VF id + 1; the lower 32 bits indicates the queue index of the VF. Thus:
-
- * ``$queue_index_in_VF0`` = ``(0x1 & 0xFF) << 32 + [queue index]``.
-
- * ``$queue_index_in_VF1`` = ``(0x2 & 0xFF) << 32 + [queue index]``.
-
- .. _figure_ixgbe_bifu_queue_idx:
-
- .. figure:: img/ixgbe_bifu_queue_idx.*
-
-#. Compile the DPDK application and insert ``igb_uio`` or probe the ``vfio-pci`` kernel modules as normal.
-
-#. Bind the virtual functions:
-
- .. code-block:: console
-
- modprobe vfio-pci
- dpdk-devbind.py -b vfio-pci 01:10.0
- dpdk-devbind.py -b vfio-pci 01:10.1
-
-#. Run a DPDK application on the VFs:
-
- .. code-block:: console
-
- testpmd -l 0-7 -n 4 -- -i -w 01:10.0 -w 01:10.1 --forward-mode=mac
-
-In this example, traffic matching the rules will go through the VF by matching
-the filter rule. All other traffic, not matching the rules, will go through
-the default queue or scaling on queues in the PF. That is to say UDP packets
-with the specified IP source and destination addresses will go through the
-DPDK application. All other traffic, with different hosts or different
-protocols, will go through the Linux networking stack.
-
-.. note::
-
- * The above steps work on the Linux kernel v4.2.
-
- * The Flow Bifurcation is implemented in Linux kernel and ixgbe kernel driver using the following patches:
-
- * `ethtool: Add helper routines to pass vf to rx_flow_spec <https://patchwork.ozlabs.org/patch/476511/>`_
-
- * `ixgbe: Allow flow director to use entire queue space <https://patchwork.ozlabs.org/patch/476516/>`_
-
- * The Ethtool version used in this example is 3.18.
-
-
-Using Flow Bifurcation on I40E in Linux
----------------------------------------
-
-On Intel X710/XL710 series Ethernet Controllers Flow Bifurcation can be
-achieved by SR-IOV, Cloud Filter and L3 VEB switch. The traffic can be
-directed to queues by the Cloud Filter and L3 VEB switch's matching rule.
-
-* L3 VEB filters work for non-tunneled packets. It can direct a packet just by
- the Destination IP address to a queue in a VF.
-
-* Cloud filters work for the following types of tunneled packets.
-
- * Inner mac.
-
- * Inner mac + VNI.
-
- * Outer mac + Inner mac + VNI.
-
- * Inner mac + Inner vlan + VNI.
-
- * Inner mac + Inner vlan.
-
-The typical procedure to achieve this is as follows:
-
-#. Boot the system without iommu, or with ``iommu=pt``.
-
-#. Build and insert the ``i40e.ko`` module.
-
-#. Create Virtual Functions:
-
- .. code-block:: console
-
- echo 2 > /sys/bus/pci/devices/0000:01:00.0/sriov_numvfs
-
-#. Add udp port offload to the NIC if using cloud filter:
-
- .. code-block:: console
-
- ip li add vxlan0 type vxlan id 42 group 239.1.1.1 local 10.16.43.214 dev <name>
- ifconfig vxlan0 up
- ip -d li show vxlan0
-
- .. note::
-
- Output such as ``add vxlan port 8472, index 0 success`` should be
- found in the system log.
-
-#. Examples of enabling and setting flow filters:
-
- * L3 VEB filter, for a route whose destination IP is 192.168.50.108 to VF
- 0's queue 2.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ip4 dst-ip 192.168.50.108 \
- user-def 0xffffffff00000000 action 2 loc 8
-
- * Inner mac, for a route whose inner destination mac is 0:0:0:0:9:0 to
- PF's queue 6.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 00:00:00:00:00:00 \
- m ff:ff:ff:ff:ff:ff src 00:00:00:00:09:00 m 00:00:00:00:00:00 \
- user-def 0xffffffff00000003 action 6 loc 1
-
- * Inner mac + VNI, for a route whose inner destination mac is 0:0:0:0:9:0
- and VNI is 8 to PF's queue 4.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 00:00:00:00:00:00 \
- m ff:ff:ff:ff:ff:ff src 00:00:00:00:09:00 m 00:00:00:00:00:00 \
- user-def 0x800000003 action 4 loc 4
-
- * Outer mac + Inner mac + VNI, for a route whose outer mac is
- 68:05:ca:24:03:8b, inner destination mac is c2:1a:e1:53:bc:57, and VNI
- is 8 to PF's queue 2.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 68:05:ca:24:03:8b \
- m 00:00:00:00:00:00 src c2:1a:e1:53:bc:57 m 00:00:00:00:00:00 \
- user-def 0x800000003 action 2 loc 2
-
- * Inner mac + Inner vlan + VNI, for a route whose inner destination mac is
- 00:00:00:00:20:00, inner vlan is 10, and VNI is 8 to VF 0's queue 1.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 00:00:00:00:01:00 \
- m ff:ff:ff:ff:ff:ff src 00:00:00:00:20:00 m 00:00:00:00:00:00 \
- vlan 10 user-def 0x800000000 action 1 loc 5
-
- * Inner mac + Inner vlan, for a route whose inner destination mac is
- 00:00:00:00:20:00, and inner vlan is 10 to VF 0's queue 1.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 00:00:00:00:01:00 \
- m ff:ff:ff:ff:ff:ff src 00:00:00:00:20:00 m 00:00:00:00:00:00 \
- vlan 10 user-def 0xffffffff00000000 action 1 loc 5
-
- .. note::
-
- * If the upper 32 bits of 'user-def' are ``0xffffffff``, then the
- filter can be used for programming an L3 VEB filter, otherwise the
- upper 32 bits of 'user-def' can carry the tenant ID/VNI if
- specified/required.
-
- * Cloud filters can be defined with inner mac, outer mac, inner ip,
- inner vlan and VNI as part of the cloud tuple. It is always the
- destination (not source) mac/ip that these filters use. For all
- these examples dst and src mac address fields are overloaded dst ==
- outer, src == inner.
-
- * The filter will direct a packet matching the rule to a vf id
- specified in the lower 32 bit of user-def to the queue specified by
- 'action'.
-
- * If the vf id specified by the lower 32 bit of user-def is greater
- than or equal to ``max_vfs``, then the filter is for the PF queues.
-
-#. Compile the DPDK application and insert ``igb_uio`` or probe the ``vfio-pci``
- kernel modules as normal.
-
-#. Bind the virtual function:
-
- .. code-block:: console
-
- modprobe vfio-pci
- dpdk-devbind.py -b vfio-pci 01:10.0
- dpdk-devbind.py -b vfio-pci 01:10.1
-
-#. run DPDK application on VFs:
-
- .. code-block:: console
-
- testpmd -l 0-7 -n 4 -- -i -w 01:10.0 -w 01:10.1 --forward-mode=mac
-
-.. note::
-
- * The above steps work on the i40e Linux kernel driver v1.5.16.
-
- * The Ethtool version used in this example is 3.18. The mask ``ff`` means
- 'not involved', while ``00`` or no mask means 'involved'.
-
- * For more details of the configuration, refer to the
- `cloud filter test plan <http://git.dpdk.org/tools/dts/tree/test_plans/cloud_filter_test_plan.rst>`_
diff --git a/doc/guides/howto/img/ixgbe_bifu_queue_idx.svg b/doc/guides/howto/img/ixgbe_bifu_queue_idx.svg
deleted file mode 100644
index f7e2bd80e3..0000000000
--- a/doc/guides/howto/img/ixgbe_bifu_queue_idx.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by Microsoft Visio, SVG Export ixgbe_bifu_queue_idx.svg Page-1 -->
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
- xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.59375in" height="0.535375in"
- viewBox="0 0 330.75 38.547" xml:space="preserve" color-interpolation-filters="sRGB" class="st8">
- <v:documentProperties v:langID="1033" v:viewMarkup="false"/>
-
- <style type="text/css">
- <![CDATA[
- .st1 {visibility:visible}
- .st2 {fill:#5b9bd5;fill-opacity:0.22;filter:url(#filter_2);stroke:#5b9bd5;stroke-opacity:0.22}
- .st3 {fill:#ffffff;stroke:#c7c8c8;stroke-width:0.25}
- .st4 {fill:#000000;font-family:Calibri;font-size:0.833336em}
- .st5 {fill:#c5e0b3;stroke:#c7c8c8;stroke-width:0.25}
- .st6 {fill:#f4b183;stroke:#c7c8c8;stroke-width:0.25}
- .st7 {fill:none;stroke:none;stroke-width:0.25}
- .st8 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
- ]]>
- </style>
-
- <defs id="Filters">
- <filter id="filter_2">
- <feGaussianBlur stdDeviation="2"/>
- </filter>
- </defs>
- <g v:mID="0" v:index="1" v:groupContext="foregroundPage">
- <title>Page-1</title>
- <v:pageProperties v:drawingScale="1" v:pageScale="1" v:drawingUnits="0" v:shadowOffsetX="9" v:shadowOffsetY="-9"/>
- <g id="shape1-1" v:mID="1" v:groupContext="shape" transform="translate(3.0294,-5.34781)">
- <title>Rectangle</title>
- <desc>0x000000</desc>
- <v:userDefs>
- <v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
- </v:userDefs>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="52.1695" cy="30.3097" width="104.34" height="16.4746"/>
- <g id="shadow1-2" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
- transform="matrix(1,0,0,1,0.345598,1.97279)" class="st1">
- <rect x="0" y="22.0724" width="104.339" height="16.4746" class="st2"/>
- </g>
- <rect x="0" y="22.0724" width="104.339" height="16.4746" class="st3"/>
- <text x="32.27" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>0x000000</text> </g>
- <g id="shape2-7" v:mID="2" v:groupContext="shape" transform="translate(107.368,-5.34781)">
- <title>Rectangle.2</title>
- <desc>VF ID + 1</desc>
- <v:userDefs>
- <v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
- </v:userDefs>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="30.2034" cy="30.3097" width="60.41" height="16.4746"/>
- <g id="shadow2-8" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
- transform="matrix(1,0,0,1,0.345598,1.97279)" class="st1">
- <rect x="0" y="22.0724" width="60.4068" height="16.4746" class="st2"/>
- </g>
- <rect x="0" y="22.0724" width="60.4068" height="16.4746" class="st5"/>
- <text x="12.32" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>VF ID + 1</text> </g>
- <g id="shape3-13" v:mID="3" v:groupContext="shape" transform="translate(167.775,-5.34781)">
- <title>Rectangle.3</title>
- <desc>Queue Index</desc>
- <v:userDefs>
- <v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
- </v:userDefs>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="79.6271" cy="30.3097" width="159.26" height="16.4746"/>
- <g id="shadow3-14" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
- transform="matrix(1,0,0,1,0.345598,1.97279)" class="st1">
- <rect x="0" y="22.0724" width="159.254" height="16.4746" class="st2"/>
- </g>
- <rect x="0" y="22.0724" width="159.254" height="16.4746" class="st6"/>
- <text x="53.74" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Queue Index</text> </g>
- <g id="shape4-19" v:mID="4" v:groupContext="shape" transform="translate(305.063,-21.8224)">
- <title>Sheet.4</title>
- <desc>0</desc>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="10.9831" cy="30.3097" width="21.97" height="16.4746"/>
- <rect x="0" y="22.0724" width="21.9661" height="16.4746" class="st7"/>
- <text x="8.45" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>0</text> </g>
- <g id="shape6-22" v:mID="6" v:groupContext="shape" transform="translate(165.029,-21.8224)">
- <title>Sheet.6</title>
- <desc>31</desc>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="10.9831" cy="30.3097" width="21.97" height="16.4746"/>
- <rect x="0" y="22.0724" width="21.9661" height="16.4746" class="st7"/>
- <text x="5.91" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>31</text> </g>
- <g id="shape7-25" v:mID="7" v:groupContext="shape" transform="translate(104.623,-21.8224)">
- <title>Sheet.7</title>
- <desc>39</desc>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="10.9831" cy="30.3097" width="21.97" height="16.4746"/>
- <rect x="0" y="22.0724" width="21.9661" height="16.4746" class="st7"/>
- <text x="5.91" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>39</text> </g>
- <g id="shape8-28" v:mID="8" v:groupContext="shape" transform="translate(3.0294,-21.8224)">
- <title>Sheet.8</title>
- <desc>63</desc>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="10.9831" cy="30.3097" width="21.97" height="16.4746"/>
- <rect x="0" y="22.0724" width="21.9661" height="16.4746" class="st7"/>
- <text x="5.91" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>63</text> </g>
- </g>
-</svg>
--
2.17.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH] doc: remove intel PMD examples in flow bifurcation guide
2020-04-29 2:29 [dpdk-dev] [PATCH] doc: remove intel PMD examples in flow bifurcation guide Xiaolong Ye
@ 2020-04-29 12:54 ` Thomas Monjalon
2020-05-07 7:59 ` Ye Xiaolong
2020-05-08 8:48 ` [dpdk-dev] [PATCH v2] doc: remove Intel " Xiaolong Ye
1 sibling, 1 reply; 7+ messages in thread
From: Thomas Monjalon @ 2020-04-29 12:54 UTC (permalink / raw)
To: Xiaolong Ye; +Cc: John McNamara, Marko Kovacevic, dev, jingjing.wu
29/04/2020 04:29, Xiaolong Ye:
> Now this feature is no longer supported by kernel side, so remove the
> intel PMD examples to avoid confusion.
Please could you add a link to the commit removing
this support in the kernel code?
PS: please use capital letter for "Intel".
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH] doc: remove intel PMD examples in flow bifurcation guide
2020-04-29 12:54 ` Thomas Monjalon
@ 2020-05-07 7:59 ` Ye Xiaolong
2020-05-07 10:24 ` Thomas Monjalon
0 siblings, 1 reply; 7+ messages in thread
From: Ye Xiaolong @ 2020-05-07 7:59 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: John McNamara, Marko Kovacevic, dev, jingjing.wu
On 04/29, Thomas Monjalon wrote:
>29/04/2020 04:29, Xiaolong Ye:
>> Now this feature is no longer supported by kernel side, so remove the
>> intel PMD examples to avoid confusion.
>
>Please could you add a link to the commit removing
>this support in the kernel code?
Currently we are not sure which kernel commit removes this support, but we know
from i40e driver version 2.3.2, this feature stops working, I can mention it
in the commit log.
>
>PS: please use capital letter for "Intel".
Got it.
Thanks,
Xiaolong
>
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH] doc: remove intel PMD examples in flow bifurcation guide
2020-05-07 7:59 ` Ye Xiaolong
@ 2020-05-07 10:24 ` Thomas Monjalon
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Monjalon @ 2020-05-07 10:24 UTC (permalink / raw)
To: Ye Xiaolong; +Cc: John McNamara, Marko Kovacevic, dev, jingjing.wu
07/05/2020 09:59, Ye Xiaolong:
> On 04/29, Thomas Monjalon wrote:
> >29/04/2020 04:29, Xiaolong Ye:
> >> Now this feature is no longer supported by kernel side, so remove the
> >> intel PMD examples to avoid confusion.
> >
> >Please could you add a link to the commit removing
> >this support in the kernel code?
>
> Currently we are not sure which kernel commit removes this support, but we know
> from i40e driver version 2.3.2, this feature stops working, I can mention it
> in the commit log.
OK thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dpdk-dev] [PATCH v2] doc: remove Intel PMD examples in flow bifurcation guide
2020-04-29 2:29 [dpdk-dev] [PATCH] doc: remove intel PMD examples in flow bifurcation guide Xiaolong Ye
2020-04-29 12:54 ` Thomas Monjalon
@ 2020-05-08 8:48 ` Xiaolong Ye
2020-05-08 14:54 ` Stephen Hemminger
1 sibling, 1 reply; 7+ messages in thread
From: Xiaolong Ye @ 2020-05-08 8:48 UTC (permalink / raw)
To: John McNamara, Marko Kovacevic; +Cc: dev, thomas, jingjing.wu, Xiaolong Ye
Now this feature is no longer supported by kernel side, (i40e kernel
driver doesn't support it from v2.3.2 and ixgbe kernel driver isn't
guaranteed to support this feature as well in the future), so remove the
Intel PMD examples to avoid confusion.
Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
doc/guides/howto/flow_bifurcation.rst | 227 ------------------
doc/guides/howto/img/ixgbe_bifu_queue_idx.svg | 101 --------
2 files changed, 328 deletions(-)
delete mode 100644 doc/guides/howto/img/ixgbe_bifu_queue_idx.svg
diff --git a/doc/guides/howto/flow_bifurcation.rst b/doc/guides/howto/flow_bifurcation.rst
index a36126472c..7ba66b9003 100644
--- a/doc/guides/howto/flow_bifurcation.rst
+++ b/doc/guides/howto/flow_bifurcation.rst
@@ -68,230 +68,3 @@ while all other packets go to the kernel:
testpmd> flow isolate 0 true
testpmd> flow create 0 ingress pattern eth / ipv4 / udp / vxlan vni is 42 / end \
actions rss queues 0 1 2 3 end / end
-
-
-Using Flow Bifurcation on IXGBE in Linux
-----------------------------------------
-
-On Intel 82599 10 Gigabit Ethernet Controller series NICs Flow Bifurcation can
-be achieved by SR-IOV and Intel Flow Director technologies. Traffic can be
-directed to queues by the Flow Director capability, typically by matching
-5-tuple of UDP/TCP packets.
-
-The typical procedure to achieve this is as follows:
-
-#. Boot the system without iommu, or with ``iommu=pt``.
-
-#. Create Virtual Functions:
-
- .. code-block:: console
-
- echo 2 > /sys/bus/pci/devices/0000:01:00.0/sriov_numvfs
-
-#. Enable and set flow filters:
-
- .. code-block:: console
-
- ethtool -K eth1 ntuple on
- ethtool -N eth1 flow-type udp4 src-ip 192.0.2.2 dst-ip 198.51.100.2 \
- action $queue_index_in_VF0
- ethtool -N eth1 flow-type udp4 src-ip 198.51.100.2 dst-ip 192.0.2.2 \
- action $queue_index_in_VF1
-
- Where:
-
- * ``$queue_index_in_VFn``: Bits 39:32 of the variable defines VF id + 1; the lower 32 bits indicates the queue index of the VF. Thus:
-
- * ``$queue_index_in_VF0`` = ``(0x1 & 0xFF) << 32 + [queue index]``.
-
- * ``$queue_index_in_VF1`` = ``(0x2 & 0xFF) << 32 + [queue index]``.
-
- .. _figure_ixgbe_bifu_queue_idx:
-
- .. figure:: img/ixgbe_bifu_queue_idx.*
-
-#. Compile the DPDK application and insert ``igb_uio`` or probe the ``vfio-pci`` kernel modules as normal.
-
-#. Bind the virtual functions:
-
- .. code-block:: console
-
- modprobe vfio-pci
- dpdk-devbind.py -b vfio-pci 01:10.0
- dpdk-devbind.py -b vfio-pci 01:10.1
-
-#. Run a DPDK application on the VFs:
-
- .. code-block:: console
-
- testpmd -l 0-7 -n 4 -- -i -w 01:10.0 -w 01:10.1 --forward-mode=mac
-
-In this example, traffic matching the rules will go through the VF by matching
-the filter rule. All other traffic, not matching the rules, will go through
-the default queue or scaling on queues in the PF. That is to say UDP packets
-with the specified IP source and destination addresses will go through the
-DPDK application. All other traffic, with different hosts or different
-protocols, will go through the Linux networking stack.
-
-.. note::
-
- * The above steps work on the Linux kernel v4.2.
-
- * The Flow Bifurcation is implemented in Linux kernel and ixgbe kernel driver using the following patches:
-
- * `ethtool: Add helper routines to pass vf to rx_flow_spec <https://patchwork.ozlabs.org/patch/476511/>`_
-
- * `ixgbe: Allow flow director to use entire queue space <https://patchwork.ozlabs.org/patch/476516/>`_
-
- * The Ethtool version used in this example is 3.18.
-
-
-Using Flow Bifurcation on I40E in Linux
----------------------------------------
-
-On Intel X710/XL710 series Ethernet Controllers Flow Bifurcation can be
-achieved by SR-IOV, Cloud Filter and L3 VEB switch. The traffic can be
-directed to queues by the Cloud Filter and L3 VEB switch's matching rule.
-
-* L3 VEB filters work for non-tunneled packets. It can direct a packet just by
- the Destination IP address to a queue in a VF.
-
-* Cloud filters work for the following types of tunneled packets.
-
- * Inner mac.
-
- * Inner mac + VNI.
-
- * Outer mac + Inner mac + VNI.
-
- * Inner mac + Inner vlan + VNI.
-
- * Inner mac + Inner vlan.
-
-The typical procedure to achieve this is as follows:
-
-#. Boot the system without iommu, or with ``iommu=pt``.
-
-#. Build and insert the ``i40e.ko`` module.
-
-#. Create Virtual Functions:
-
- .. code-block:: console
-
- echo 2 > /sys/bus/pci/devices/0000:01:00.0/sriov_numvfs
-
-#. Add udp port offload to the NIC if using cloud filter:
-
- .. code-block:: console
-
- ip li add vxlan0 type vxlan id 42 group 239.1.1.1 local 10.16.43.214 dev <name>
- ifconfig vxlan0 up
- ip -d li show vxlan0
-
- .. note::
-
- Output such as ``add vxlan port 8472, index 0 success`` should be
- found in the system log.
-
-#. Examples of enabling and setting flow filters:
-
- * L3 VEB filter, for a route whose destination IP is 192.168.50.108 to VF
- 0's queue 2.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ip4 dst-ip 192.168.50.108 \
- user-def 0xffffffff00000000 action 2 loc 8
-
- * Inner mac, for a route whose inner destination mac is 0:0:0:0:9:0 to
- PF's queue 6.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 00:00:00:00:00:00 \
- m ff:ff:ff:ff:ff:ff src 00:00:00:00:09:00 m 00:00:00:00:00:00 \
- user-def 0xffffffff00000003 action 6 loc 1
-
- * Inner mac + VNI, for a route whose inner destination mac is 0:0:0:0:9:0
- and VNI is 8 to PF's queue 4.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 00:00:00:00:00:00 \
- m ff:ff:ff:ff:ff:ff src 00:00:00:00:09:00 m 00:00:00:00:00:00 \
- user-def 0x800000003 action 4 loc 4
-
- * Outer mac + Inner mac + VNI, for a route whose outer mac is
- 68:05:ca:24:03:8b, inner destination mac is c2:1a:e1:53:bc:57, and VNI
- is 8 to PF's queue 2.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 68:05:ca:24:03:8b \
- m 00:00:00:00:00:00 src c2:1a:e1:53:bc:57 m 00:00:00:00:00:00 \
- user-def 0x800000003 action 2 loc 2
-
- * Inner mac + Inner vlan + VNI, for a route whose inner destination mac is
- 00:00:00:00:20:00, inner vlan is 10, and VNI is 8 to VF 0's queue 1.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 00:00:00:00:01:00 \
- m ff:ff:ff:ff:ff:ff src 00:00:00:00:20:00 m 00:00:00:00:00:00 \
- vlan 10 user-def 0x800000000 action 1 loc 5
-
- * Inner mac + Inner vlan, for a route whose inner destination mac is
- 00:00:00:00:20:00, and inner vlan is 10 to VF 0's queue 1.
-
- .. code-block:: console
-
- ethtool -N <dev_name> flow-type ether dst 00:00:00:00:01:00 \
- m ff:ff:ff:ff:ff:ff src 00:00:00:00:20:00 m 00:00:00:00:00:00 \
- vlan 10 user-def 0xffffffff00000000 action 1 loc 5
-
- .. note::
-
- * If the upper 32 bits of 'user-def' are ``0xffffffff``, then the
- filter can be used for programming an L3 VEB filter, otherwise the
- upper 32 bits of 'user-def' can carry the tenant ID/VNI if
- specified/required.
-
- * Cloud filters can be defined with inner mac, outer mac, inner ip,
- inner vlan and VNI as part of the cloud tuple. It is always the
- destination (not source) mac/ip that these filters use. For all
- these examples dst and src mac address fields are overloaded dst ==
- outer, src == inner.
-
- * The filter will direct a packet matching the rule to a vf id
- specified in the lower 32 bit of user-def to the queue specified by
- 'action'.
-
- * If the vf id specified by the lower 32 bit of user-def is greater
- than or equal to ``max_vfs``, then the filter is for the PF queues.
-
-#. Compile the DPDK application and insert ``igb_uio`` or probe the ``vfio-pci``
- kernel modules as normal.
-
-#. Bind the virtual function:
-
- .. code-block:: console
-
- modprobe vfio-pci
- dpdk-devbind.py -b vfio-pci 01:10.0
- dpdk-devbind.py -b vfio-pci 01:10.1
-
-#. run DPDK application on VFs:
-
- .. code-block:: console
-
- testpmd -l 0-7 -n 4 -- -i -w 01:10.0 -w 01:10.1 --forward-mode=mac
-
-.. note::
-
- * The above steps work on the i40e Linux kernel driver v1.5.16.
-
- * The Ethtool version used in this example is 3.18. The mask ``ff`` means
- 'not involved', while ``00`` or no mask means 'involved'.
-
- * For more details of the configuration, refer to the
- `cloud filter test plan <http://git.dpdk.org/tools/dts/tree/test_plans/cloud_filter_test_plan.rst>`_
diff --git a/doc/guides/howto/img/ixgbe_bifu_queue_idx.svg b/doc/guides/howto/img/ixgbe_bifu_queue_idx.svg
deleted file mode 100644
index f7e2bd80e3..0000000000
--- a/doc/guides/howto/img/ixgbe_bifu_queue_idx.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by Microsoft Visio, SVG Export ixgbe_bifu_queue_idx.svg Page-1 -->
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
- xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.59375in" height="0.535375in"
- viewBox="0 0 330.75 38.547" xml:space="preserve" color-interpolation-filters="sRGB" class="st8">
- <v:documentProperties v:langID="1033" v:viewMarkup="false"/>
-
- <style type="text/css">
- <![CDATA[
- .st1 {visibility:visible}
- .st2 {fill:#5b9bd5;fill-opacity:0.22;filter:url(#filter_2);stroke:#5b9bd5;stroke-opacity:0.22}
- .st3 {fill:#ffffff;stroke:#c7c8c8;stroke-width:0.25}
- .st4 {fill:#000000;font-family:Calibri;font-size:0.833336em}
- .st5 {fill:#c5e0b3;stroke:#c7c8c8;stroke-width:0.25}
- .st6 {fill:#f4b183;stroke:#c7c8c8;stroke-width:0.25}
- .st7 {fill:none;stroke:none;stroke-width:0.25}
- .st8 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
- ]]>
- </style>
-
- <defs id="Filters">
- <filter id="filter_2">
- <feGaussianBlur stdDeviation="2"/>
- </filter>
- </defs>
- <g v:mID="0" v:index="1" v:groupContext="foregroundPage">
- <title>Page-1</title>
- <v:pageProperties v:drawingScale="1" v:pageScale="1" v:drawingUnits="0" v:shadowOffsetX="9" v:shadowOffsetY="-9"/>
- <g id="shape1-1" v:mID="1" v:groupContext="shape" transform="translate(3.0294,-5.34781)">
- <title>Rectangle</title>
- <desc>0x000000</desc>
- <v:userDefs>
- <v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
- </v:userDefs>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="52.1695" cy="30.3097" width="104.34" height="16.4746"/>
- <g id="shadow1-2" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
- transform="matrix(1,0,0,1,0.345598,1.97279)" class="st1">
- <rect x="0" y="22.0724" width="104.339" height="16.4746" class="st2"/>
- </g>
- <rect x="0" y="22.0724" width="104.339" height="16.4746" class="st3"/>
- <text x="32.27" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>0x000000</text> </g>
- <g id="shape2-7" v:mID="2" v:groupContext="shape" transform="translate(107.368,-5.34781)">
- <title>Rectangle.2</title>
- <desc>VF ID + 1</desc>
- <v:userDefs>
- <v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
- </v:userDefs>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="30.2034" cy="30.3097" width="60.41" height="16.4746"/>
- <g id="shadow2-8" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
- transform="matrix(1,0,0,1,0.345598,1.97279)" class="st1">
- <rect x="0" y="22.0724" width="60.4068" height="16.4746" class="st2"/>
- </g>
- <rect x="0" y="22.0724" width="60.4068" height="16.4746" class="st5"/>
- <text x="12.32" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>VF ID + 1</text> </g>
- <g id="shape3-13" v:mID="3" v:groupContext="shape" transform="translate(167.775,-5.34781)">
- <title>Rectangle.3</title>
- <desc>Queue Index</desc>
- <v:userDefs>
- <v:ud v:nameU="visVersion" v:val="VT0(15):26"/>
- </v:userDefs>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="79.6271" cy="30.3097" width="159.26" height="16.4746"/>
- <g id="shadow3-14" v:groupContext="shadow" v:shadowOffsetX="0.345598" v:shadowOffsetY="-1.97279" v:shadowType="1"
- transform="matrix(1,0,0,1,0.345598,1.97279)" class="st1">
- <rect x="0" y="22.0724" width="159.254" height="16.4746" class="st2"/>
- </g>
- <rect x="0" y="22.0724" width="159.254" height="16.4746" class="st6"/>
- <text x="53.74" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>Queue Index</text> </g>
- <g id="shape4-19" v:mID="4" v:groupContext="shape" transform="translate(305.063,-21.8224)">
- <title>Sheet.4</title>
- <desc>0</desc>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="10.9831" cy="30.3097" width="21.97" height="16.4746"/>
- <rect x="0" y="22.0724" width="21.9661" height="16.4746" class="st7"/>
- <text x="8.45" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>0</text> </g>
- <g id="shape6-22" v:mID="6" v:groupContext="shape" transform="translate(165.029,-21.8224)">
- <title>Sheet.6</title>
- <desc>31</desc>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="10.9831" cy="30.3097" width="21.97" height="16.4746"/>
- <rect x="0" y="22.0724" width="21.9661" height="16.4746" class="st7"/>
- <text x="5.91" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>31</text> </g>
- <g id="shape7-25" v:mID="7" v:groupContext="shape" transform="translate(104.623,-21.8224)">
- <title>Sheet.7</title>
- <desc>39</desc>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="10.9831" cy="30.3097" width="21.97" height="16.4746"/>
- <rect x="0" y="22.0724" width="21.9661" height="16.4746" class="st7"/>
- <text x="5.91" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>39</text> </g>
- <g id="shape8-28" v:mID="8" v:groupContext="shape" transform="translate(3.0294,-21.8224)">
- <title>Sheet.8</title>
- <desc>63</desc>
- <v:textBlock v:margins="rect(4,4,4,4)"/>
- <v:textRect cx="10.9831" cy="30.3097" width="21.97" height="16.4746"/>
- <rect x="0" y="22.0724" width="21.9661" height="16.4746" class="st7"/>
- <text x="5.91" y="33.31" class="st4" v:langID="2052"><v:paragraph v:horizAlign="1"/><v:tabList/>63</text> </g>
- </g>
-</svg>
--
2.17.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH v2] doc: remove Intel PMD examples in flow bifurcation guide
2020-05-08 8:48 ` [dpdk-dev] [PATCH v2] doc: remove Intel " Xiaolong Ye
@ 2020-05-08 14:54 ` Stephen Hemminger
2020-05-11 16:55 ` Ferruh Yigit
0 siblings, 1 reply; 7+ messages in thread
From: Stephen Hemminger @ 2020-05-08 14:54 UTC (permalink / raw)
To: Xiaolong Ye; +Cc: John McNamara, Marko Kovacevic, dev, thomas, jingjing.wu
On Fri, 8 May 2020 16:48:23 +0800
Xiaolong Ye <xiaolong.ye@intel.com> wrote:
> Now this feature is no longer supported by kernel side, (i40e kernel
> driver doesn't support it from v2.3.2 and ixgbe kernel driver isn't
> guaranteed to support this feature as well in the future), so remove the
> Intel PMD examples to avoid confusion.
>
> Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [dpdk-dev] [PATCH v2] doc: remove Intel PMD examples in flow bifurcation guide
2020-05-08 14:54 ` Stephen Hemminger
@ 2020-05-11 16:55 ` Ferruh Yigit
0 siblings, 0 replies; 7+ messages in thread
From: Ferruh Yigit @ 2020-05-11 16:55 UTC (permalink / raw)
To: Stephen Hemminger, Xiaolong Ye
Cc: John McNamara, Marko Kovacevic, dev, thomas, jingjing.wu
On 5/8/2020 3:54 PM, Stephen Hemminger wrote:
> On Fri, 8 May 2020 16:48:23 +0800
> Xiaolong Ye <xiaolong.ye@intel.com> wrote:
>
>> Now this feature is no longer supported by kernel side, (i40e kernel
>> driver doesn't support it from v2.3.2 and ixgbe kernel driver isn't
>> guaranteed to support this feature as well in the future), so remove the
>> Intel PMD examples to avoid confusion.
>>
>> Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
>
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Applied to dpdk-next-net/master, thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-05-11 16:55 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-29 2:29 [dpdk-dev] [PATCH] doc: remove intel PMD examples in flow bifurcation guide Xiaolong Ye
2020-04-29 12:54 ` Thomas Monjalon
2020-05-07 7:59 ` Ye Xiaolong
2020-05-07 10:24 ` Thomas Monjalon
2020-05-08 8:48 ` [dpdk-dev] [PATCH v2] doc: remove Intel " Xiaolong Ye
2020-05-08 14:54 ` Stephen Hemminger
2020-05-11 16:55 ` Ferruh Yigit
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).