* [dts] [PATCH] test plan: add vf daemon DPDK PF+kernel VF test plan
@ 2017-02-24 0:04 Xueqin Lin
0 siblings, 0 replies; only message in thread
From: Xueqin Lin @ 2017-02-24 0:04 UTC (permalink / raw)
To: dts; +Cc: Xueqin Lin
---
test_plans/vf_daemon_kernelVF_test_plan.rst | 400 ++++++++++++++++++++++++++++
1 file changed, 400 insertions(+)
create mode 100644 test_plans/vf_daemon_kernelVF_test_plan.rst
diff --git a/test_plans/vf_daemon_kernelVF_test_plan.rst b/test_plans/vf_daemon_kernelVF_test_plan.rst
new file mode 100644
index 0000000..7043591
--- /dev/null
+++ b/test_plans/vf_daemon_kernelVF_test_plan.rst
@@ -0,0 +1,400 @@
+.. Copyright (c) <2017>, 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.
+
+============================
+VFD as SRIOV Policy Manager
+============================
+
+VFD is SRIOV Policy Manager (daemon) running on the host allowing
+configuration not supported by kernel NIC driver, supports ixgbe and
+i40e NIC. Run on the host for policy decisions w.r.t. what a VF can and
+cannot do to the PF. Only the DPDK PF would provide a callback to implement
+these features, the normal kernel drivers would not have the callback so
+would not support the features. Allow passing information to application
+controlling PF when VF message box event received such as those listed below,
+so action could be taken based on host policy. Stop VM1 from asking for
+something that compromises VM2. Use DPDK DPDK PF + kernel VF mode to verify
+below features.
+
+Case 1: Set up environment and load driver
+============================================
+1. Get the pci device id of DUT, load ixgbe driver to required version,
+ take Niantic for example::
+ rmmod ixgbe
+ insmod ixgbe.ko
+
+2. Host PF in DPDK driver. Create VFs from PF with dpdk driver::
+ ./tools/dpdk-devbind.py -b igb_uio 05:00.0
+ echo 2 >/sys/bus/pci/devices/0000\:05\:00.0/max_vfs
+
+3. Check ixgbevf version and update ixgbevf to required version::
+
+4. Detach VFs from the host::
+ rmmod ixgbevf
+
+5. Pass through VF 05:10.0 and 05:10.2 to VM0,start and login VM0
+
+6. Check ixgbevf version in VM and update to required version
+
+
+Case 2 : Link
+==========================================
+Pre-environment::
+ (1)Host one DPDK PF and create two VFs, pass through VF0 and VF1 to VM0,
+ start VM0
+ (2)Load host DPDK driver and VM0 kernel driver
+
+Steps:
+
+1. Enable multi-queues to start DPDK PF::
+ ./testpmd -c f -n 4 -- -i --rxq=4 --txq=4
+
+2. Link up kernel VF and expect VF link up
+
+3. Link down kernel VF and expect VF link down
+
+4. Repeat above 2~3 for 100 times, expect no crash or core dump issues.
+
+
+
+Test Case 3: ping
+===========================================
+Pre-environment::
+ (1)Establish link with link partner.
+ (2)Host one DPDK PF and create two VFs, pass through VF0 and VF1 to VM0,
+ start VM0
+ (3)Load host DPDK driver and VM0 kernel driver
+
+Steps:
+
+1. Ifconfig IP on VF0 and VF1
+
+2. Ifconfig IP on link partner PF, name as tester PF
+
+3. Start inbound and outbound pings, check ping successfully.
+
+4. Link down the devx, stop the pings, link up the devx then restart the
+ pings, check port could ping successfully.
+
+5. Repeat step 3~4 for 5 times
+
+
+Test Case 4: reset
+==========================================
+Pre-environment::
+ (1)Establish link with link partner.
+ (2)Host one DPDK PF and create two VFs, pass through VF0 to VM0 and VF1 to
+ VM1, start VM0 and VM1
+ (3)Load host DPDK driver and VM kernel driver
+
+Steps:
+
+1. Check host testpmd and PF at link up status
+
+2. Link up VF0 in VM0 and VF1 in VM1
+
+3. Link down VF1 in VM1 and check no impact on VF0 status
+
+4. Unload VF1 kernel driver and expect no impact on VF0
+
+5. Use tcpdump to dump packet on VF0
+
+6. Send packets to VF0 using IXIA or scapy tool, expect RX successfully
+
+7. Link down and up DPDK PF, ensure that the VF recovers and continues to
+ receive packet.
+
+8. Load VF1 kernel driver and expect no impact on VF0
+
+9. Send packets to VF0 using IXIA or scapy tool, expect RX successfully
+
+
+Test Case 5: add/delete IP/MAC address
+==========================================
+Pre-environment::
+ (1)Establish link with link partner.
+ (2)Host one DPDK PF and create one VF, pass through VF0 to VM0, start VM0
+ (3)Load host DPDK driver and VM0 kernel drive
+
+Steps:
+
+1. Ifconfig IP on kernel VF0
+
+2. Ifconfig IP on link partner PF, name as tester PF
+
+3. Kernel VF0 ping tester PF, tester PF ping kernel VF0
+
+4. Add IPv6 on kernel VF0(e.g: ens3)::
+ ifconfig ens3 add efdd::9fc8:6a6d:c232:f1c0
+
+5. Delete IPv6 on kernel VF::
+ ifconfig ens3 del efdd::9fc8:6a6d:c232:f1c0
+
+6. Modify MAC address on kernel VF::
+ ifconfig ens3 hw ether 00:AA:BB:CC:dd:EE
+
+7. Send packet to modified MAC, expect VF can receive packet successfully
+
+
+Test Case 6: add/delete vlan
+==========================================
+Pre-environment::
+ (1)Establish link with link partner.
+ (2)Host one DPDK PF and create one VF, pass through VF0 to VM0, start VM0
+ (3)Load host DPDK driver and VM0 kernel driver
+
+Steps:
+
+1. Add random vlan id(0~4095) on kernel VF0(e.g: ens3), take vlan id 51
+ for example::
+ modprobe 8021q
+ vconfig add ens3 51
+
+2. Check add vlan id successfully, expect to have ens3.51 device::
+ ls /proc/net/vlan
+
+3. Send packet from tester to VF MAC with not-matching vlan id, check the
+ packet can't be received at the vlan device
+
+4. Send packet from tester to VF MAC with matching vlan id, check the
+ packet can be received at the vlan device.
+
+5. Delete configured vlan device::
+ vconfig rem ens3.51
+
+6. Check delete vlan id 51 successfully
+
+7. Send packet from tester to VF MAC with vlan id(51), check that the
+ packet can’t be received at the VF.
+
+
+Test Case 7: Get packet statistic
+==========================================
+Pre-environment::
+ (1)Establish link with link partner.
+ (2)Host one DPDK PF and create one VF, pass through VF0 to VM0, start VM0
+ (3)Load host DPDK driver and VM0 kernel driver
+
+Steps:
+
+1. Send packet to kernel VF0 mac
+
+2. Check packet statistic could increase correctly::
+ ethtool -S ens3
+
+
+Test Case 8: MTU
+==========================================
+Pre-environment::
+ (1)Establish link with link partner.
+ (2)Host one DPDK PF and create one VF, pass through VF0 to VM0, start VM0
+ (3)Load host DPDK driver and VM0 kernel driver
+
+Steps:
+
+1. Check DPDK PF and kernel VF mtu, normal as 1500
+
+2. Use scapy to send one packet with length as 2000 with DPDK PF MAC as
+ DST MAC, check that DPDK PF can't receive packet
+
+3. Use scapy to send one packet with length as 2000 with kernel VF MAC as
+ DST MAC, check that Kernel VF can't receive packet
+
+4. Change DPDK PF mtu as 3000,check no confusion/crash on kernel VF::
+ Testpmd > port stop all
+ Testpmd > port config mtu 0 3000
+ Testpmd > port start all
+
+5. Use scapy to send one packet with length as 2000 with DPDK PF MAC as
+ DST MAC, check that DPDK PF can receive packet
+
+6. Change kernel VF mtu as 3000, check no confusion/crash on DPDK PF::
+ ifconfig eth0 mtu 3000
+
+7. Use scapy to send one packet with length as 2000 with kernel VF MAC
+ as DST MAC, check Kernel VF can receive packet
+
+Note:
+HW limitation on 82599, need add “--max-pkt-len=<length>” on testpmd to
+set mtu value, all the VFs and PF share same MTU, the largest one takes
+effect.
+
+
+Test Case 9: Enable/disable promisc mode
+=========================================
+Pre-environment::
+ (1)Establish link with link partner.
+ (2)Host one DPDK PF and create one VF, pass through VF0 to VM0, start VM0
+ (3)Load host DPDK driver and VM0 kernel driver
+
+Steps:
+
+1. Start DPDK PF, enable promisc mode, set rxonly forwarding
+
+2. Set up kernel VF tcpdump without -p parameter, without/with -p parameter
+ could enable/disable promisc mode::
+ sudo tcpdump -i ens3 -n -e -vv
+
+3. Send packet from tester with random DST MAC, check the packet can be
+ received by DPDK PF and kernel VF
+
+4. Disable DPDK PF promisc mode
+
+5. Set up kernel VF tcpdump with -p parameter, which means disable promisc
+ mode::
+ sudo tcpdump -i ens3 -n -e –vv -p
+
+6. Send packet from tester with random DST MAC, check the packet can't be
+ received by DPDK PF and kernel VF
+
+7. Send packet from tester to VF with correct DST MAC, check the packet
+ can be received by kernel VF
+
+8. Send packet from tester to PF with correct DST MAC, check the packet
+ can be received by DPDK PF
+
+Note:
+Niantic NIC un-supports this case.
+
+
+Test Case 10: RSS
+=========================================
+Pre-environment::
+ (1)Establish link with link partner.
+ (2)Host one DPDK PF and create one VF, pass through VF0 to VM0, start VM0
+ (3)Load host DPDK driver and VM0 kernel driver
+
+Steps:
+
+1. Verify kernel VF RSS using ethtool -"l" (lower case L) <devx> that the
+ default RSS setting is equal to the number of CPUs in the system and
+ that the maximum number of RSS queues displayed is correct for the DUT
+
+2. Run "ethtool -S <devx> | grep rx_bytes | column" to see the current
+ queue count and verify that it is correct to step 1
+
+3. Send multi-threaded traffics to the DUT with a number of threads
+
+4. Check kernel VF each queue can receive packets
+
+Note:
+Niantic NIC un-supports this case.
+
+
+Test Case 11: DPDK PF + kernel VF + DPDK VF
+============================================
+Pre-environment::
+ (1)Establish link with IXIA.
+ (2)Host one DPDK PF and create two VFs, pass through VF0 and VF1 to VM0,
+ start VM0
+ (3)Load host DPDK driver, VM0 DPDK driver and kernel driver
+
+Steps:
+
+1. Check DPDK testpmd and PF at link up status
+
+2. Bind kernel VF0 to igb_uio
+
+3. Link up DPDK VF0
+
+4. Link up kernel VF1
+
+5. Start DPDK VF0, enable promisc mode and set rxonly forwarding
+
+6. Set up kernel VF1 tcpdump without -p parameter on promisc mode
+
+7. Create 2 streams on IXIA, set DST MAC as each VF MAC, transmit these 2
+ streams at the same time, check DPDK VF0 and kernel VF1 can receive packet
+ successfully
+
+8. Check DPDK VF0 and kernel VF1 don't impact each other and no performance
+ drop for 10 minutes
+
+
+Test Case 12: DPDK PF + 2kernel VFs + 2DPDK VFs + 2VMs
+======================================================
+Pre-environment::
+ (1)Establish link with IXIA.
+ (2)Host one DPDK PF and create 6 VFs, pass through VF0, VF1, VF2 and VF3
+ to VM0, pass through VF4, VF5 to VM1, start VM0 and VM1
+ (3)Load host DPDK driver, VM DPDK driver and kernel driver
+
+Steps:
+
+1. Check DPDK testpmd and PF at link up status
+
+2. Bind kernel VF0, VF1 to igb_uio in VM0, bind kernel VF4 to igb_uio in VM1
+
+3. Link up DPDK VF0,VF1 in VM0, link up DPDK VF4 in VM1
+
+4. Link up kernel VF2, VF3 in VM0, link up kernel VF5 in VM1
+
+5. Start DPDK VF0, VF1 in VM0 and VF4 in VM1, enable promisc mode and set
+ rxonly forwarding
+
+6. Set up kernel VF2, VF3 in VM0 and VF5 in VM1 tcpdump without -p parameter
+ on promisc mode
+
+7. Create 6 streams on IXIA, set DST MAC as each VF MAC, transmit 6 streams
+ at the same time, expect RX successfully
+
+8. Link down DPDK VF0 and expect no impact on other VFs
+
+9. Link down kernel VF2 and expect no impact on other VFs
+
+10. Quit VF4 DPDK testpmd and expect no impact on other VFs
+
+11. Unload VF5 kernel driver and expect no impact on other VFs
+
+12. Reboot VM1 and expect no impact on VM0’s VFs
+
+
+Test Case 13: Load kernel driver stress
+======================================================
+Pre-environment::
+ (1)Host one DPDK PF and create one VF, pass through VF0 to VM0, start VM0
+ (2)Load host DPDK driver and VM0 kernel driver
+
+Steps:
+
+1. Check DPDK testpmd and PF at link up status
+
+2. Build kernel VF0 driver
+
+3. Unload kernel VF0 driver
+
+4. Load kernel VF0 driver
+
+5. Write script to repeat step 3 and step 4 for 100 times stress test
+
+6. Check no error/crash and system work normally
+
--
2.5.5
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-02-24 6:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-24 0:04 [dts] [PATCH] test plan: add vf daemon DPDK PF+kernel VF test plan Xueqin Lin
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).