[dpdk-dev] [PATCH v2 2/2] doc: add bifurcated driver guide on i40e nic
Jingjing Wu
jingjing.wu at intel.com
Thu Jun 23 05:02:40 CEST 2016
This patch describes how bifurcated driver is done and
adds the user guide on i40e NICs.
Signed-off-by: Jingjing Wu <jingjing.wu at intel.com>
---
doc/guides/nics/i40e.rst | 140 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 140 insertions(+)
diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst
index 934eb02..9fdf0e0 100644
--- a/doc/guides/nics/i40e.rst
+++ b/doc/guides/nics/i40e.rst
@@ -366,3 +366,143 @@ Delete all flow director rules on a port:
testpmd> flush_flow_director 0
+
+Bifurcated driver guide on I40E
+-------------------------------
+
+The bifurcated driver is explained in :ref:`Bifurcated driver guide <bifurcated_driver>`.
+And on Intel® X710/XL710 series Ethernet Controllers, Bifurcated driver can be achieved
+by SR-IOV , cloud filter and L3 VEB switch. So the traffic can be directed to queues by
+cloud filter and L3 VEB switch's matching rule.
+
+* L3 VEB filter for non-tunnelled packets. It can direct a packet just by the
+ Destination IP address to a queue in a VF.
+
+* Cloud filters for tunnelled packets have following types.
+
+ * Inner mac
+
+ * Inner mac + VNI
+
+ * Outer mac + Inner mac + VNI
+
+ * Inner mac + Inner vlan + VNI
+
+ * Inner mac + Inner vlan
+
+The step procedure is as following:
+
+#. Boot system without iommu, or with “iommu=pt”.
+
+#. Build and insert 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 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 <dev_name>
+ ifconfig vxlan0 up
+ ip -d li show vxlan0
+
+ .. note::
+
+ Print “add vxlan port 8472, index 0 success” can be found in system log.
+
+#. Enable and set flow filters:
+
+ * L3 VEB filter, route whose dest IP = 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, route whose inner dest mac = 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, route whose inner dest mac = 0:0:0:0:9:0 and VNI = 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, route whose outer mac= 68:05:ca:24:03:8b, inner dest mac
+ = c2:1a:e1:53:bc:57, and VNI = 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, route whose inner dest mac = 00:00:00:00:20:00,
+ inner vlan = 10, and VNI = 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, route whose inner dest mac = 00:00:00:00:20:00,
+ and inner vlan = 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, filter on. For all these examples dst and src mac
+ address fields are overloaded dst == outer, src == inner.
+
+ * Filter will be directing a packet who matching the rule to a vf id
+ specified in the lower 32 bit of user-def to 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 and insert igb_uio or probe vfio-pci kernel modules as normal.
+
+#. Bind virtual function:
+
+ .. code-block:: console
+
+ modprobe vfio-pci
+ dpdk_nic_bind.py -b vfio-pci 01:10.0
+ dpdk_nic_bind.py -b vfio-pci 01:10.1
+
+#. run DPDK application on VFs:
+
+ .. code-block:: console
+
+ testpmd -c 0xff -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.
+
+ * Ethtool's version used in this example is 3.18. And the mask “ff” means not involved, while “00” or don’t set mask means involved.
+
+ * For more details of the configuration, can refer to the `cloud filter test plan <http://dpdk.org/browse/tools/dts/tree/test_plans/cloud_filter_test_plan.rst>`_
\ No newline at end of file
--
2.4.0
More information about the dev
mailing list