From: Marvin Liu <yong.liu@intel.com>
To: dts@dpdk.org
Cc: Marvin Liu <yong.liu@intel.com>
Subject: [dts] [PATCH v1 1/4] test_plans: add test plan for cloud filter feature
Date: Fri, 22 Apr 2016 09:31:58 +0800 [thread overview]
Message-ID: <1461288721-25049-2-git-send-email-yong.liu@intel.com> (raw)
In-Reply-To: <1461288721-25049-1-git-send-email-yong.liu@intel.com>
Cloud filter feature allow XL710 support classify VxLan/Geneve packets
and put those into a specified queue in VF for further processing from
virtual switch.
Signed-off-by: Marvin Liu <yong.liu@intel.com>
diff --git a/test_plans/cloud_filter_test_plan.rst b/test_plans/cloud_filter_test_plan.rst
new file mode 100644
index 0000000..14db87b
--- /dev/null
+++ b/test_plans/cloud_filter_test_plan.rst
@@ -0,0 +1,291 @@
+.. Copyright (c) <2016> Intel Corporation
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of Intel Corporation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=====================================
+ Cloud filter support through Ethtool
+=====================================
+This feature based on X710 to classify VxLan/Geneve packets and put those into
+a specified queue in VF for further processing from virtual switch.
+
+Prerequisites
+=============
+Cloud filter feature based on latest i40e out of tree driver. Should also
+update ethtool and XL710 firmware.
+ Ethtool version: 3.18
+ i40e driver: i40e-1.5.13_rc1
+ Kernel version: 4.2.2
+ Xl710 DA2 firmware: 5.02 0x80002282
+
+BIOS setting:
+ Enable VT-d and VT-x
+Kernel command line:
+ Enable Intel IOMMU with below arguments
+ intel_iommu=on iommu=pt
+
+Create two VFs from kernel driver:
+ echo 2 > /sys/bus/pci/devices/0000\:82\:00.0/sriov_numvfs
+ ifconfig $PF_INTF up
+
+Add vxlan network interface based on PF device:
+ ip li add vxlan0 type vxlan id 1 group 239.1.1.1 local 127.0.0.1 dev $PF_INTF
+ ifconfig vxlan0 up
+
+Allocate hugepage for dpdk:
+ echo 4096 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
+
+Bound vf device to igb_uio driver and start testpmd with multiple queues:
+ cd dpdk
+ modprobe uio
+ insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
+ ./tools/dpdk_nic_bind.py --bind=igb_uio 82:02.0 82:02.1
+ ./x86_64-native-linuxapp-gcc/app/testpmd -c ffff -n 4 -- -i --rxq=4 --txq=4 --disable-rss
+ testpmd> set nbcore 8
+ testpmd> set fwd rxonly
+ testpmd> set verbose 1
+ testpmd> start
+
+
+Test case: cloud filter rule(inner ip)
+---------------------------------------
+1. Add cloud filter with inner ip address rule.
+Flow type ip4 mean this rule only match inner destination ip address.
+User define field higher 32bit is all 0xf mean vni id is not in the rule.
+Lower 32bit is 1 mean packet will be forwarded to VF1.
+Action 3 mean packet will be redirected to queue 3.
+
+ ethtool -N $PF_INTF flow-type ip4 dst-ip 192.168.1.1 user-def 0xffffffff00000001 action 3 loc 1
+
+2. Send vxlan packet with inner mac matched rule
+ Ether()/IP()/UDP()/Vxlan()/Ether()/IP(dst="192.168.1.1")/UDP()/Raw('x' * 20)
+
+3. verify packet received by queue3 of VF1, verify packet type is correct
+
+ testpmd> port 1/queue 3: received 1 packets
+ src=00:00:00:00:00:00 - dst=00:00:00:00:09:00 - type=0x0800 - length=106 - nb_segs=1
+ - (outer) L2 type: ETHER - (outer) L3 type: IPV4_EXT_UNKNOWN - (outer) L4 type: Unknown
+ - Tunnel type: GRENAT - Inner L2 type: ETHER - Inner L3 type: IPV4_EXT_UNKNOWN - Inner L4 type: UDP
+ - VXLAN packet: packet type =24721, Destination UDP port =8472, VNI = 1 - Receive queue=0x3
+
+Test case: cloud filter rule(inner mac)
+---------------------------------------
+1. Add cloud filter with Inner mac rule.
+Dst mac mask ff:ff:ff:ff:ff:ff mean outer mac address is not in the rule.
+Src mac mask 00:00:00:00:00:00 mean inner mac address is in the rule.
+User define field higher 32bit is all 0xf mean vni id is not in the rule.
+Lower 32bit is 1 mean packet will be forwarded to VF1.
+Action 3 mean packet will be redirected to queue 3.
+
+ ethtool -N $PF_INTF 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 0xffffffff00000001 action 3 loc 1
+
+2. Send vxlan packet with inner mac matched rule
+ Ether()/IP()/UDP()/Vxlan()/Ether(dst="00:00:00:00:09:00")/IP()/TCP()/Raw('x' * 20)
+
+3. verify packet received by queue3 of VF1, verify packet type is correct
+
+ testpmd> port 1/queue 3: received 1 packets
+ src=00:00:00:00:00:00 - dst=00:00:00:00:09:00 - type=0x0800 - length=120 - nb_segs=1
+ - (outer) L2 type: ETHER - (outer) L3 type: IPV4_EXT_UNKNOWN - (outer) L4 type: Unknown
+ - Tunnel type: GRENAT - Inner L2 type: ETHER - Inner L3 type: IPV4_EXT_UNKNOWN - Inner L4 type: TCP
+ - VXLAN packet: packet type =24721, Destination UDP port =8472, VNI = 0 - Receive queue=0x3
+
+Test case: cloud filter rule(inner mac + outer mac + vni)
+---------------------------------------------------------
+1. Add cloud filter with Inner mac + outer mac + vni rule.
+Dst mac mask 00:00:00:00:00:00 mean outer mac address is in the rule.
+Src mac mask 00:00:00:00:00:00 mean inner mac address is in the rule.
+User define field higher 32bit is 0x1 mean vni match 1 is in the rule.
+Lower 32bit is 1 mean packet will be forwarded to VF1.
+Action 3 mean packet will be redirected to queue 3.
+
+ ethtool -N $PF_INTF flow-type ether dst 00:00:00:00:10:00 m \
+ 00:00:00:00:00:00 src 00:00:00:00:09:00 m 00:00:00:00:00:00 \
+ user-def 0x100000001 action 3 loc 1
+
+2. Send vxlan packet with inner mac match rule
+ Ether(dst="00:00:00:00:10:00")/IP()/UDP()/Vxlan(vni=1)/Ether(dst="00:00:00:00:09:00")/IP()/TCP()/Raw('x' * 20)
+
+3. verify packet received by queue3 of VF1, verify packet type is correct
+
+ testpmd> port 1/queue 3: received 1 packets
+ src=00:00:00:00:00:00 - dst=00:00:00:00:09:00 - type=0x0800 - length=120 - nb_segs=1
+ - (outer) L2 type: ETHER - (outer) L3 type: IPV4_EXT_UNKNOWN - (outer) L4 type: Unknown
+ - Tunnel type: GRENAT - Inner L2 type: ETHER - Inner L3 type: IPV4_EXT_UNKNOWN - Inner L4 type: TCP
+ - VXLAN packet: packet type =24721, Destination UDP port =8472, VNI = 0 - Receive queue=0x3
+
+Test case: cloud filter rule(inner mac + inner vlan + vni)
+---------------------------------------------------------
+1. Add cloud filter with Inner mac + inner vlan + vni rule.
+Dst mac mask ff:ff:ff:ff:ff:ff mean outer mac address is not in the rule.
+Src mac mask 00:00:00:00:00:00 mean inner mac address is in the rule.
+Vlan 1 mean vlan match is in the rule.
+User define field higher 32bit is 0x1 mean vni match 1 is in the rule.
+Lower 32bit is 1 mean packet will be forwarded to VF1.
+Action 3 mean packet will be redirected to queue 3.
+
+ ethtool -N $PF_INTF 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 \
+ vlan 1 user-def 0x100000001 action 3 loc 1
+
+2. Send vxlan packet with inner mac match rule
+ Ether()/IP()/UDP()/Vxlan(vni=1)/Ether(dst="00:00:00:00:09:00")/Dot1Q(vlan=1)/IP()/TCP()/Raw('x' * 20)
+
+3. verify packet received by queue3 of VF1, verify packet type is correct
+
+ testpmd> port 1/queue 3: received 1 packets
+ src=00:00:00:00:00:00 - dst=00:00:00:00:09:00 - type=0x0800 - length=124 - nb_segs=1
+ - (outer) L2 type: ETHER - (outer) L3 type: IPV4_EXT_UNKNOWN - (outer) L4 type: Unknown
+ - Tunnel type: GRENAT - Inner L2 type: ETHER_VLAN - Inner L3 type: IPV4_EXT_UNKNOWN - Inner L4 type: TCP
+ - VXLAN packet: packet type =24721, Destination UDP port =8472, VNI = 1 - Receive queue=0x3
+
+Test case: cloud filter rule(inner mac + inner vlan)
+---------------------------------------------------------
+1. Add cloud filter with Inner mac + inner vlan rule.
+Dst mac mask ff:ff:ff:ff:ff:ff mean outer mac address is not in the rule.
+Src mac mask 00:00:00:00:00:00 mean inner mac address is in the rule.
+Vlan 1 mean vlan match is in the rule.
+User define field higher 32bit is all 0xf mean vni id is not in the rule.
+Lower 32bit is 1 mean packet will be forwarded to VF1.
+Action 3 mean packet will be redirected to queue 3.
+
+ ethtool -N $PF_INTF 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 \
+ vlan 1 user-def 0xffffffff00000001 action 3 loc 1
+
+2. Send vxlan packet with inner mac match rule
+ Ether()/IP()/UDP()/Vxlan(vni=1)/Ether(dst="00:00:00:00:09:00")/Dot1Q(vlan=1)/IP()/TCP()/Raw('x' * 20)
+
+3. verify packet received by queue3 of VF1, verify packet type is correct
+
+ testpmd> port 1/queue 3: received 1 packets
+ src=00:00:00:00:00:00 - dst=00:00:00:00:09:00 - type=0x0800 - length=124 - nb_segs=1
+ - (outer) L2 type: ETHER - (outer) L3 type: IPV4_EXT_UNKNOWN - (outer) L4 type: Unknown
+ - Tunnel type: GRENAT - Inner L2 type: ETHER_VLAN - Inner L3 type: IPV4_EXT_UNKNOWN - Inner L4 type: TCP
+ - VXLAN packet: packet type =24721, Destination UDP port =8472, VNI = 1 - Receive queue=0x3
+
+Test case: Remove cloud filter rule
+-----------------------------------
+Remove cloud filter rule in location 1.
+ ethtool -N $PF_INTF delete 1
+Dump rule and check there's no rule listed.
+ ethtool -n $PF_INTF
+ Total 0 rules
+Send packet match last rule.
+ Ether(dst not match PF&VF)/IP()/UDP()/Vxlan(vni=1)/Ether(dst="00:00:00:00:09:00")/Dot1Q(vlan=1)/IP()/TCP()/Raw('x' * 20)
+Check packet only received on PF device.
+
+Test case: Multiple cloud filter rules
+--------------------------------------
+1. Add cloud filter with Inner mac + inner vlan rule.
+Dst mac mask ff:ff:ff:ff:ff:ff mean outer mac address is not in the rule.
+Src mac mask 00:00:00:00:00:00 mean inner mac address is in the rule.
+Vlan 1 mean vlan match is in the rule.
+User define field higher 32bit is all 0xf mean vni id is not in the rule.
+Lower 32bit is 1 mean packet will be forwarded to VF1.
+Action 3 mean packet will be redirected to queue 3.
+
+ ethtool -N $PF_INTF 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 \
+ vlan 1 user-def 0xffffffff00000001 action 3 loc 1
+
+2. Add another cloud filter with Inner mac + inner vlan rule.
+Dst mac mask ff:ff:ff:ff:ff:ff mean outer mac address is not in the rule.
+Src mac mask 00:00:00:00:00:00 mean inner mac address is in the rule.
+Vlan 2 mean vlan match is in the rule.
+User define field higher 32bit is all 0xf mean vni id is not in the rule.
+Lower 32bit is 0 mean packet will be forwarded to VF0.
+Action 3 mean packet will be redirected to queue 3.
+Locate 2 mean this rule will be added to index 2.
+
+ ethtool -N $PF_INTF flow-type ether dst 00:00:00:00:00:00 m \
+ ff:ff:ff:ff:ff:ff src 00:00:00:00:10:00 m 00:00:00:00:00:00 \
+ vlan 2 user-def 0xffffffff00000000 action 0 loc 2
+
+3. Dump cloud filter rules
+ ethtool -n $PF_INTF
+ 64 RX rings available
+ Total 2 rules
+
+4. Send packet match rule 1
+ Ether()/IP()/UDP()/Vxlan(vni=1)/Ether(dst="00:00:00:00:09:00")/Dot1Q(vlan=1)/IP()/TCP()/Raw('x' * 20)
+
+5. verify packet received by queue3 of VF1, verify packet type is correct
+ testpmd> port 1/queue 3: received 1 packets
+ src=00:00:00:00:00:00 - dst=00:00:00:00:09:00 - type=0x0800 - length=124 - nb_segs=1
+ - (outer) L2 type: ETHER - (outer) L3 type: IPV4_EXT_UNKNOWN - (outer) L4 type: Unknown
+ - Tunnel type: GRENAT - Inner L2 type: ETHER_VLAN - Inner L3 type: IPV4_EXT_UNKNOWN - Inner L4 type: TCP
+ - VXLAN packet: packet type =24721, Destination UDP port =8472, VNI = 1 - Receive queue=0x3
+
+6. Send packet match rule 2
+ Ether()/IP()/UDP()/Vxlan(vni=1)/Ether(dst="00:00:00:00:10:00")/Dot1Q(vlan=2)/IP()/TCP()/Raw('x' * 20)
+
+7. verify packet received by queue3 of VF0, verify packet type is correct
+ testpmd> port 0/queue 3: received 1 packets
+ src=00:00:00:00:00:00 - dst=00:00:00:00:09:00 - type=0x0800 - length=124 - nb_segs=1
+ - (outer) L2 type: ETHER - (outer) L3 type: IPV4_EXT_UNKNOWN - (outer) L4 type: Unknown - Tunnel type: GRENAT
+ - Inner L2 type: ETHER_VLAN - Inner L3 type: IPV4_EXT_UNKNOWN - Inner L4 type: TCP
+ - VXLAN packet: packet type =24721, Destination UDP port =8472, VNI = 1 - Receive queue=0x3
+
+Test case: Bifurcated between kernel VF and dpdk VF
+---------------------------------------------------
+1. Add cloud filter with inner ip address rule.
+Flow type ip4 mean this rule only match inner destination ip address.
+User define field higher 32bit is all 0xf mean vni id is not in the rule.
+Lower 32bit is 1 mean packet will be forwarded to VF1.
+Action 3 mean packet will be redirected to queue 3.
+
+ ethtool -N $PF_INTF flow-type ip4 dst-ip 192.168.1.1 user-def 0xffffffff00000001 action 3 loc 1
+
+2. Add cloud filter with inner ip address rule.
+Flow type ip4 mean this rule only match inner destination ip address.
+User define field higher 32bit is all 0xf mean vni id is not in the rule.
+Lower 32bit is 0 mean packet will be forwarded to VF0.
+Action 0 mean packet will be redirected to queue 0.
+
+ ethtool -N $PF_INTF flow-type ip4 dst-ip 192.168.2.1 user-def 0xffffffff00000000 action 0 loc 2
+
+3. Send vxlan packet which matched first rule
+ Ether()/IP()/UDP()/Vxlan()/Ether()/IP(dst="192.168.1.1")/UDP()/Raw('x' * 20)
+
+4. verify packet received by queue3 of VF1, verify packet type is correct
+
+ testpmd> port 1/queue 3: received 1 packets
+ src=00:00:00:00:00:00 - dst=00:00:00:00:09:00 - type=0x0800 - length=106 - nb_segs=1
+ - (outer) L2 type: ETHER - (outer) L3 type: IPV4_EXT_UNKNOWN - (outer) L4 type: Unknown
+ - Tunnel type: GRENAT - Inner L2 type: ETHER - Inner L3 type: IPV4_EXT_UNKNOWN - Inner L4 type: UDP
+ - VXLAN packet: packet type =24721, Destination UDP port =8472, VNI = 1 - Receive queue=0x3
+
+5. Send vxlan packet which matched second rule
+ Ether()/IP()/UDP()/Vxlan()/Ether()/IP(dst="192.168.2.1")/UDP()/Raw('x' * 20)
+
+6. verify packet received by VF0, verify packet content is correct
--
1.9.3
next prev parent reply other threads:[~2016-04-22 1:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-22 1:31 [dts] [PATCH v1 0/4] add cloud filter suite Marvin Liu
2016-04-22 1:31 ` Marvin Liu [this message]
2016-04-22 1:31 ` [dts] [PATCH v1 2/4] dep vxlan: add variable for vxlan port Marvin Liu
2016-04-22 1:32 ` [dts] [PATCH v1 3/4] framework pmd_output: add function to retrieve testpmd output Marvin Liu
2016-04-22 1:32 ` [dts] [PATCH v1 4/4] tests cloud filter: add test suite for cloud filter Marvin Liu
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=1461288721-25049-2-git-send-email-yong.liu@intel.com \
--to=yong.liu@intel.com \
--cc=dts@dpdk.org \
/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).