test suite reviews and discussions
 help / color / mirror / Atom feed
From: "xu,huilong" <huilongx.xu@intel.com>
To: dts@dpdk.org
Cc: "xu,huilong" <huilongx.xu@intel.com>
Subject: [dts] [PATCH V1 1/2] add qinq filter test plan
Date: Thu, 22 Jun 2017 10:12:39 +0800	[thread overview]
Message-ID: <1498097560-14858-1-git-send-email-huilongx.xu@intel.com> (raw)

qinq filter is a new feature from dpdk17.05. it only support fortville
NIC. Detaile info in rst doc.

Signed-off-by: xu,huilong <huilongx.xu@intel.com>
---
 test_plans/qinq_filter_test_plan.rst | 146 +++++++++++++++++++++++++++++++++++
 1 file changed, 146 insertions(+)
 create mode 100644 test_plans/qinq_filter_test_plan.rst

diff --git a/test_plans/qinq_filter_test_plan.rst b/test_plans/qinq_filter_test_plan.rst
new file mode 100644
index 0000000..553665e
--- /dev/null
+++ b/test_plans/qinq_filter_test_plan.rst
@@ -0,0 +1,146 @@
+Cloud filters for QinQ steering
+===============================
+
+Prerequisites
+=============
+1.Hardware:
+   Fortville
+   HarborChannel_DP_OEMGEN_8MB_J24798-001_0.65_80002DA4 
+   firmware-version: 5.70 0x80002da4 1.3908.0(fortville 25G) or 6.0.0+
+   
+2.Software: 
+  dpdk: http://dpdk.org/git/dpdk
+  scapy: http://www.secdev.org/projects/scapy/
+  disable vector mode when build dpdk
+
+Test Case 1: test qinq packet type
+==================================
+1. start testpmd, enable QinQ, start in rxonly mode,
+
+./x86_64-native-linuxapp-gcc/app/testpmd -c 0x1f -n 4 -- -i --rxq=4 --txq=4 --txqflags=0x0  --disable-rss
+testpmd> vlan set qinq on 0
+testpmd> set fwd rxonly
+testpmd> set verbose 1
+testpmd> start
+
+2. send dual vlan packet with scapy, verify it can be recognized as qinq packet.
+sendp([Ether(dst="3C:FD:FE:A3:A0:AE")/Dot1Q(type=0x8100,vlan=2)/Dot1Q(type=0x8100,vlan=3)/IP(src="192.168.0.1", dst="192.168.0.2")/Raw('x' * 20)], iface="eth17")
+
+Test Case 2: qinq packet filter to PF queues
+============================================
+1. start testpmd, enable QinQ, start in rxonly mode,
+
+./x86_64-native-linuxapp-gcc/app/testpmd -c 0x1f -n 4 -- -i --rxq=4 --txq=4 --txqflags=0x0
+testpmd> vlan set qinq on 0
+testpmd> set fwd rxonly
+testpmd> set verbose 1
+testpmd> start
+
+2. create filter rules
+testpmd> flow create 0 ingress pattern eth / vlan tci is 1 / vlan tci is 4093 / end actions pf / queue index 1 / end
+testpmd> flow create 0 ingress pattern eth / vlan tci is 2 / vlan tci is 4094 / end actions pf / queue index 2 / end
+
+/***issue
+testpmd> flow create 0 ingress pattern eth / vlan tci is 2 / vlan tci is 4094 / ipv4 / udp / end actions pf / queue index 2 / end
+***/
+
+3. send qinq packet with traffic generator, verify packets can filter to queues.
+
+Test Case 3: qinq packet filter to VF queues
+============================================
+1. create VFs 
+
+./usertools/dpdk-devbind.py -b igb_uio 0000:81:00.0
+
+echo 2 > /sys/bus/pci/devices/0000:81:00.0/max_vfs
+
+./usertools/dpdk-devbind.py --st
+
+0000:81:02.0 'XL710/X710 Virtual Function' if= drv=i40evf unused=igb_uio
+0000:81:02.1 'XL710/X710 Virtual Function' if= drv=i40evf unused=igb_uio 
+
+2. start testpmd on PF, enable QinQ, start in rxonly mode, create filter rules,
+
+./x86_64-native-linuxapp-gcc/app/testpmd -c 0x1f -n 4 --socket-mem=1024,1024 --file-prefix=pf -w 81:00.0 -- -i --rxq=4 --txq=4 --txqflags=0x0
+testpmd> vlan set qinq on 0
+testpmd> set fwd rxonly
+testpmd> set verbose 1
+testpmd> start
+
+testpmd> flow create 0 ingress pattern eth / vlan tci is 1 / vlan tci is 4093 / end actions vf id 0 / queue index 2 / end
+
+testpmd> flow create 0 ingress pattern eth / vlan tci is 2 / vlan tci is 4094 / end actions vf id 1 / queue index 3 / end
+
+testpmd> flow create 0 ingress pattern eth / vlan tci is 3 / vlan tci is 4094 / end actions pf / queue index 1 / end
+
+3. start testpmd on VF0
+./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3e0 -n 4 --socket-mem=1024,1024 --file-prefix=vf0 -w 81:02.0 -- -i --rxq=4 --txq=4 --rss-udp
+testpmd>set fwd txonly
+testpmd>set verbose 1
+testpmd>start
+
+4. start testpmd on VF1
+./x86_64-native-linuxapp-gcc/app/testpmd -c 0x7c00 -n 4 --socket-mem=1024,1024 --file-prefix=vf1 -w 81:02.1 -- -i --rxq=4 --txq=4 --crc-strip --rss-udp
+testpmd>set fwd txonly
+testpmd>set verbose 1
+testpmd>start
+
+5. send qinq packet with traffic generator, verify packets can filter to the corresponding PF and VF queues.
+
+
+Test Case 4: qinq packet filter with diffierent tpid
+====================================================
+1. create VFs 
+
+./usertools/dpdk-devbind.py -b igb_uio 0000:81:00.0
+
+echo 2 > /sys/bus/pci/devices/0000:81:00.0/max_vfs
+
+./usertools/dpdk-devbind.py --st
+
+0000:81:02.0 'XL710/X710 Virtual Function' if= drv=i40evf unused=igb_uio
+0000:81:02.1 'XL710/X710 Virtual Function' if= drv=i40evf unused=igb_uio 
+
+2. start testpmd on PF, enable QinQ, start in rxonly mode,
+
+./x86_64-native-linuxapp-gcc/app/testpmd -c 0x1f -n 4 -m 1024 --file-prefix=pf -w 81:00.0 -- -i --rxq=4 --txq=4 --txqflags=0x0
+testpmd> vlan set qinq on 0
+testpmd> set fwd rxonly
+testpmd> set verbose 1
+testpmd> start
+
+3. change S-Tag+C-Tag VLAN TPIDs to 0x88A8 + 0x8100,
+
+testpmd> vlan set outer tpid 0x88a8 0
+
+4. create filter rules,
+
+testpmd> flow create 0 ingress pattern eth / vlan tci is 1 / vlan tci is 4092 / end actions vf id 0 / queue index 2 / end
+
+testpmd> flow create 0 ingress pattern eth / vlan tci is 2 / vlan tci is 4093 / end actions vf id 1 / queue index 3 / end
+
+testpmd> flow create 0 ingress pattern eth / vlan tci is 3 / vlan tci is 4094 / end actions pf / queue index 1 / end
+
+5. start testpmd on VF0
+./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3e0 -n 4 -m 1024 --file-prefix=vf0 -w 81:02.0 -- -i --rxq=4 --txq=4 --crc-strip --rss-udp
+testpmd>set fwd txonly
+testpmd>set verbose 1
+testpmd>start
+
+6. start testpmd on VF1
+./x86_64-native-linuxapp-gcc/app/testpmd -c 0x7c00 -n 4 -m 1024 --file-prefix=vf1 -w 81:02.1 -- -i --rxq=4 --txq=4 --crc-strip --rss-udp
+testpmd>set fwd txonly
+testpmd>set verbose 1
+testpmd>start
+
+7. send qinq packet with traffic generator, verify packets can filter to the corresponding VF queues.
+
+Note:
+Q: How to send qinq packet with scapy?
+A: sendp([Ether(dst="3C:FD:FE:A3:A0:AE")/Dot1Q(type=0x8100,vlan=2)/Dot1Q(type=0x8100,vlan=4094)/IP(src="192.168.0.1", dst="192.168.0.2")/Raw('x' * 20)], iface="eth17")
+
+Q: How to send packet with specific TPID with scapy?
+A:
+1. wrpcap("qinq.pcap",[Ether(dst="3C:FD:FE:A3:A0:AE")/Dot1Q(type=0x8100,vlan=1)/Dot1Q(type=0x8100,vlan=4092)/IP(src="192.168.0.1", dst="192.168.0.2")/Raw('x' * 20)]).
+2. hexedit qinq.pcap; change tpid field, "ctrl+w" to save, "ctrl+x" to exit.
+3. sendp(rdpcap("qinq.pcap"), iface="eth17").
-- 
1.9.3

             reply	other threads:[~2017-06-22  2:11 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-22  2:12 xu,huilong [this message]
2017-06-22  2:12 ` [dts] [PATCH V1 2/2] add qinq test suite xu,huilong
2017-06-23 17:08 ` [dts] [PATCH V1 1/2] add qinq filter test plan Liu, Yong

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=1498097560-14858-1-git-send-email-huilongx.xu@intel.com \
    --to=huilongx.xu@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).