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 B9DC4A00BE; Wed, 29 Apr 2020 04:36:44 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7F2251D716; Wed, 29 Apr 2020 04:36:43 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 0B7C31D715 for ; Wed, 29 Apr 2020 04:36:41 +0200 (CEST) IronPort-SDR: T2Ac/Lj5D4Uvt8i+rPTqp8gCWwdl23perDV0zlXayIo424bEkHm6q2rmBHr/J1KjGBK5FNsq0b tRLxJU/SZy8g== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Apr 2020 19:36:40 -0700 IronPort-SDR: ziNe0Sv4W8a3KWF2ltGZAiLnKHUQIbfte0IPlmouRCQJgVhXBbS9kuACVRyiA52W87kL2cqqUz 5AUubXhKA32w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,329,1583222400"; d="scan'208";a="432401717" Received: from yexl-server.sh.intel.com ([10.67.116.183]) by orsmga005.jf.intel.com with ESMTP; 28 Apr 2020 19:36:38 -0700 From: Xiaolong Ye To: John McNamara , Marko Kovacevic Cc: dev@dpdk.org, thomas@monjalon.net, jingjing.wu@intel.com, Xiaolong Ye Date: Wed, 29 Apr 2020 10:29:16 +0800 Message-Id: <20200429022916.8871-1-xiaolong.ye@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [dpdk-dev] [PATCH] doc: remove intel PMD examples in flow bifurcation guide 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" Now this feature is no longer supported by kernel side, so remove the intel PMD examples to avoid confusion. Signed-off-by: Xiaolong Ye --- 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 `_ - - * `ixgbe: Allow flow director to use entire queue space `_ - - * 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 - 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 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 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 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 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 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 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 `_ 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 @@ - - - - - - - - - - - - - - - Page-1 - - - Rectangle - 0x000000 - - - - - - - - - - 0x000000 - - Rectangle.2 - VF ID + 1 - - - - - - - - - - VF ID + 1 - - Rectangle.3 - Queue Index - - - - - - - - - - Queue Index - - Sheet.4 - 0 - - - - 0 - - Sheet.6 - 31 - - - - 31 - - Sheet.7 - 39 - - - - 39 - - Sheet.8 - 63 - - - - 63 - - -- 2.17.1