[dts] [PATCH] VF daemon DPDK PF+DPDK VF test plan

Lin, Xueqin xueqin.lin at intel.com
Thu Feb 23 06:31:53 CET 2017


OK, I will fix it soon and send it again, thanks.

Best regards,
Xueqin

-----Original Message-----
From: Liu, Yong 
Sent: Thursday, February 23, 2017 1:05 PM
To: Lin, Xueqin <xueqin.lin at intel.com>; dts at dpdk.org
Subject: Re: [dts] [PATCH] VF daemon DPDK PF+DPDK VF test plan

Hi Xueqin,
Please make sure each line in test plan is less than 79 characters.
You can remove some descriptions which everyone known about like "x86_64-native-linuxapp-gcc/app/".

Thanks,
Marvin

On 02/22/2017 09:17 AM, Xueqin Lin wrote:
> From: "Lin,Xueqin" <xueqin.lin at intel.com>
>
> ---
>   test_plans/vf_daemon_test_plan.rst | 446 +++++++++++++++++++++++++++++++++++++
>   1 file changed, 446 insertions(+)
>   create mode 100644 test_plans/vf_daemon_test_plan.rst
>
> diff --git a/test_plans/vf_daemon_test_plan.rst 
> b/test_plans/vf_daemon_test_plan.rst
> new file mode 100644
> index 0000000..986610a
> --- /dev/null
> +++ b/test_plans/vf_daemon_test_plan.rst
> @@ -0,0 +1,446 @@
> +.. 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.
> +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.
> +
> +Multiple purposes:
> +1) set VF MAC anti-spoofing
> +2) set VF VLAN anti-spoofing
> +3) set TX loopback
> +4) set VF unicast promiscuous mode
> +5) set VF multicast promiscuous mode
> +6) set VF MTU
> +7) get/reset VF stats
> +8) set VF MAC address
> +9) set VF VLAN stripping
> +10) VF VLAN insertion
> +12) set VF broadcast mode
> +12) set VF VLAN tag
> +13) set VF VLAN filter
> +14) Set/reset the queue drop enable bit for all pools(only ixgbe 
> +support)
> +15) Set/reset the enable drop bit in the split receive control 
> +register(only ixgbe support) VFD also includes VF to PF mailbox 
> +message management by APP. When PF receives mailbox messages from VF, 
> +PF should call the callback provided by APP to know if they're permitted to be processed.
> +
> +Prerequisites
> +=============
> +1. Get the pci device id of DUT,take Niantic for example::
> +   ./tools/dpdk-devbind.py --st
> +   0000:81:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' 
> +if=ens259f0 drv=ixgbe unused=igb_uio
> +
> +2. Host PF in DPDK driver. Create 2 VF from 1 PF with dpdk driver::
> +   ./tools/dpdk-devbind.py -b igb_uio 81:00.0
> +   echo 2 >/sys/bus/pci/devices/0000:81:00.0/max_vfs
> +   0000:81:10.0 '82599 Ethernet Controller Virtual Function' if=eth0 drv=ixgbevf unused=igb_uio
> +   0000:81:10.2 '82599 Ethernet Controller Virtual Function' if=eth1 
> +drv=ixgbevf unused=igb_uio
> +
> +3. Detach VFs from the host::
> +   rmmod ixgbevf
> +   =====================
> +   0000:81:10.0 '82599 Ethernet Controller Virtual Function' unused=ixgbevf,igb_uio
> +   0000:81:10.2 '82599 Ethernet Controller Virtual Function' 
> +unused=ixgbevf,igb_uio
> +
> +4. Passthrough VF 81:10.0 to vm0 and passthrough VF 81:10.2 to vm1, 
> +start vm0 and vm1
> +
> +5. Login vm0 and vm1, then bind VF0 device to igb_uio driver.
> +
> +   ./tools/dpdk_nic_bind.py --bind=igb_uio 00:03.0
> +
> +6. Start testpmd on host and vm0 in chained port topology::
> +   host: ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -- -i --port-topology=chained --txqflags=0
> +   vm0:  ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -- -i 
> +--port-topology=chained --txqflags=0
> +
> +Test Case 1: Set VLAN insert for VF from PF 
> +===========================================
> +1. Disable vlan insert for VF0 from PF::
> +	testpmd> set vf vlan insert 0 0 0
> +
> +2. Start testpmd on VF0, set it in mac forwarding mode and enable verbose output::
> +	testpmd> set fwd mac
> +	testpmd> set verbose 1
> +	testpmd> start
> +
> +3. Send packet from tester to VF0 without vlan id
> +
> +4. Stop VF0 testpmd and check VF0 can receive packet without any vlan 
> +id
> +
> +5. Enable vlan insert and insert random vlan id (1~4095) for VF0 from PF::
> +	testpmd> set vf vlan insert 0 0 id
> +
> +6. Start VF0 testpmd
> +
> +7. Send packet from tester to VF0 without vlan id
> +
> +8. Stop VF0 testpmd and check VF0 can receive packet with configured 
> +vlan id
> +
> +
> +Test Case 2: Set VLAN strip for VF from PF 
> +==========================================
> +1. Disable VLAN strip for all queues for VF0 from PF::
> +	testpmd> set vf vlan stripq 0 0 off
> +
> +2. Start VF0 testpmd, add rx vlan id as random 1~4095, set it in mac forwarding mode and enable verbose output::
> +	testpmd> rx_vlan add id 0
> +	testpmd> set fwd mac
> +	testpmd> set verbose 1
> +	testpmd> start
> +
> +3. Send packet from tester to VF0 with configured vlan id
> +
> +4. Stop VF0 testpmd and check VF0 can receive packet with configured 
> +vlan id
> +
> +5. Enable VLAN strip for all queues for VF0 from PF::
> +	testpmd> set vf vlan stripq 0 0 on
> +
> +6. Start VF0 testpmd
> +
> +7. Send packet from tester to VF0 with configured vlan id
> +
> +8. Stop VF0 testpmd and check VF0 can receive packet without any vlan 
> +id
> +
> +9. Remove vlan id on VF0::
> +	testpmd> rx_vlan rm id 0
> +
> +
> +Test Case 3: Set VLAN antispoof for VF from PF 
> +==============================================
> +1. Disable vlan filter and strip from PF::
> +	testpmd> vlan set filter off 0
> +	testpmd> vlan set strip off 0
> +
> +2. Add a random 1~4095 vlan id to set filter from PF for VF::
> +	testpmd> rx_vlan add id port 0 vf 1
> +
> +3. Disable vlan antispoof for VF from PF::
> +	testpmd> set vf vlan antispoof 0 0 off
> +
> +4. Disable vlan filter and strip on VF0::
> +	testpmd> vlan set filter off 0
> +	testpmd> vlan set strip off 0
> +		
> +5. Start testpmd on VF0, set it in mac forwarding mode and enable verbose output::
> +	testpmd> set fwd mac
> +	testpmd> set verbose 1
> +	testpmd> start
> +
> +6. Send packets with matching/non-matching/no vlan id on tester port
> +
> +7. Stop VF0 testpmd and check VF0 can receive and transmit packets 
> +with matching/non-matching/no vlan id
> +
> +8. Enable mac antispoof and vlan antispoof for vf from PF::
> +	testpmd> set vf mac antispoof 0 0 on
> +	testpmd> set vf vlan antispoof 0 0 on
> +
> +9. Start VF0 testpmd
> +
> +10. Send packets with matching/non-matching/no vlan id on tester port
> +
> +11. Stop VF0 testpmd and check VF0 can receive all but only transmit 
> +packet with matching vlan id
> +
> +
> +Test Case 4: Set mac antispoof for VF from PF 
> +===============================================
> +1. Add fake mac and use fake mac instead of transmitted mac in the macswap mode, so default is non-matching SA::
> +	.addr_bytes = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55}
> +
> +2. Disable VF0 mac antispoof from PF::
> +	testpmd> set vf mac antispoof 0 0 off
> +
> +3. Start testpmd on VF0, set it in macswap forwarding mode and enable verbose output::
> +	testpmd> set fwd macswap
> +	testpmd> set verbose 1
> +	testpmd> start
> +
> +4. Send packet from tester to VF0 with correct SA, but code has 
> +changed to use fake SA
> +
> +5. Stop VF0 testpmd and check VF0 can receive then transmit packet
> +
> +6. Enable VF0 mac antispoof from PF::
> +	testpmd> set vf mac antispoof 0 0 on
> +
> +7. Start VF0 testpmd
> +
> +8. Send packet from tester to VF0 with correct SA, but code has 
> +changed to use fake SA
> +
> +9. Stop VF0 testpmd and check VF0 can receive packet but can't 
> +transmit packet
> +
> +10. Recover original code
> +
> +
> +Test Case 5: Set the MAC address for VF from PF 
> +===============================================
> +1. Set VF0 different MAC address from PF, such as A2:22:33:44:55:66::
> +	testpmd> set vf mac addr 0 0 A2:22:33:44:55:66
> +
> +2. Stop VF0 testpmd and restart VF0 testpmd, check VF0 address is 
> +configured address A2:22:33:44:55:66
> +
> +3. Set testpmd in mac forwarding mode and enable verbose output::
> +	testpmd> set fwd mac
> +	testpmd> set verbose 1
> +	testpmd> start
> +
> +4. Send packet from tester to VF0 configured address
> +
> +5. Stop VF0 testpmd and check VF0 can receive packet
> +
> +
> +Test Case 6: Enable/disable tx loopback 
> +=======================================
> +1. Disable tx loopback for VF0 from PF::
> +	testpmd> set tx loopback 0 off
> +
> +2. Set VF0 in rxonly forwarding mode and start testpmd::
> +	testpmd> set fwd rxonly
> +	testpmd> start
> +
> +3. tcpdump on the tester port
> +
> +4. Send 10 packets from VF1 to VF0
> +
> +5. Stop VF0 testpmd, check VF0 can't receive any packet but tester 
> +port could capture packet
> +
> +6. Enable tx loopback for VF0 from PF::
> +	testpmd> set tx loopback 0 on
> +
> +7. Start VF0 testpmd
> +
> +8. Send packet from VF1 to VF0
> +
> +9. Stop VF0 testpmd, check VF0 can receive packet,but tester port 
> +can't capture packet
> +
> +
> +Test Case 7: Set drop enable bit for all queues 
> +===============================================
> +1. Bind VF1 device to igb_uio driver and start testpmd in chained port topology::
> +	./tools/dpdk_nic_bind.py --bind=igb_uio 00:03.0
> +	./x86_64-native-linuxapp-gcc/app/testpmd -c 3f -l 1-5 -n 4 -- -i 
> +--port-topology=chained --txqflags=0
> +
> +2. Disable drop enable bit for all queues from PF::
> +	testpmd> set all queues drop 0 off
> +
> +3. Only start VF1 to capture packet, set it in rxonly forwarding mode and enable verbose output::
> +	testpmd> set fwd rxonly
> +	testpmd> set verbose 1
> +	testpmd> start
> +
> +4. Send 200 packets to VF0, make VF0 queue full of packets
> +
> +5. Send 20 packets to VF1
> +
> +6. Stop VF1 testpmd and check VF1 can't receive packet
> +
> +7. Enable drop enable bit for all queues from PF::
> +	testpmd> set all queues drop 0 on
> +
> +8. Start VF1 testpmd
> +
> +9. Stop VF1 testpmd and check VF1 can receive original queue buffer 
> +20 packets
> +
> +10. Start VF1 testpmd
> +
> +11. Send 20 packets to VF1
> +
> +12. Stop VF1 testpmd and check VF1 can receive 20 packets
> +
> +Note: i40e unsupports this feature.
> +
> +
> +Test Case 8: Set split drop enable bit for VF from PF 
> +=====================================================
> +1. Disable split drop enable bit for VF0 from PF::
> +	testpmd> set vf split drop 0 0 off
> +
> +2. Set VF0 and host in rxonly forwarding mode and start testpmd::
> +	testpmd> set fwd rxonly
> +	testpmd> start
> +	
> +3. Send a burst of 20000 packets to VF0 and check PF and VF0 can 
> +receive all packets
> +
> +4. Enable split drop enable bit for VF0 from PF::
> +	testpmd> set vf split drop 0 0 on
> +
> +5. Send a burst of 20000 packets to VF0 and check some packets 
> +dropped on PF and VF0
> +
> +Note: i40e unsupports this feature.
> +
> +
> +Test Case 9: Get/Reset stats for VF from PF 
> +===========================================
> +1. Add testpmd code to test this feature
> +
> +2. Get stats for VF0 from PF, and check RX/TX packets is 0::
> +	testpmd> get vf stats 0 0
> +		
> +        ################## NIC statistics for port 0  ################
> +        RX-packets: 0           RX-errors:  0           RX-bytes:  0
> +        TX-packets: 0           TX-errors:  0           TX-bytes:  0
> +	###############################################################
> +		
> +3. Set VF0 in mac forwarding mode and start testpmd::
> +	testpmd> set fwd mac
> +	testpmd> start
> +4. Send 10 packets to VF0 and check VF0 can receive 10 packets	
> +
> +5. Get stats for VF0 from PF, and check RX/TX packets is 10::
> +	testpmd> get vf stats 0 0
> +
> +        ################## NIC statistics for port 0  ################
> +        RX-packets: 10           RX-errors:  0         RX-bytes:  10
> +        TX-packets: 10           TX-errors:  0         TX-bytes:  10
> +	###############################################################
> +
> +6. Reset stats for VF0 from PF, and check PF and VF0 RX/TX packets is 0::
> +	testpmd> reset vf stats 0 0
> +	testpmd> get vf stats 0 0
> +
> +        ################## NIC statistics for port 0  ################
> +        RX-packets: 0           RX-errors:  0           RX-bytes:  0
> +        TX-packets: 0           TX-errors:  0           TX-bytes:  0
> +	###############################################################
> +
> +
> +Test Case 10: enhancement to identify VF MTU change 
> +===================================================
> +1. Set VF0 in mac forwarding mode and start testpmd::
> +	testpmd> set fwd mac
> +    testpmd> start
> +2. Default mtu size is 1500, send one packet with length bigger than 
> +default mtu size, such as 2000 from tester,check VF0 can receive but 
> +can't transmit packet
> +
> +3. Set VF0 mtu size as 3000, but need to stop then restart port to active mtu::
> +	testpmd> port stop all
> +	testpmd> port config mtu 0 3000
> +	testpmd> port start all
> +	testpmd> start
> +4. Send one packet with length 2000 from tester,check VF0 can receive 
> +and transmit packet
> +
> +5. Send one packet with length bigger than configured mtu size, such 
> +as 5000 from tester, check VF0 can receive but can't transmit packet
> +
> +
> +Test Case 11: Enable/disable vlan tag forwarding to VSIs 
> +========================================================
> +1. Disable VLAN tag for VF0 from PF::
> +	testpmd> set vf vlan tag 0 0 off
> +
> +2. Start VF0 testpmd, add rx vlan id as random 1~4095, set it in mac forwarding mode and enable verbose output::
> +	testpmd> rx_vlan add id 0
> +	testpmd> set fwd mac
> +	testpmd> set verbose 1
> +	testpmd> start
> +
> +3. Send packet from tester to VF0 with vlan tag(vlan id should same 
> +as rx_vlan)
> +
> +4. Stop VF0 testpmd and check VF0 can't receive vlan tag packet
> +
> +5. Enable VLAN tag for VF0 from PF::
> +	testpmd> set vf vlan tag 0 0 on
> +
> +6. Start VF0 testpmd
> +
> +7. Send packet from tester to VF0 with vlan tag(vlan id should same 
> +as rx_vlan)
> +
> +8. Stop VF0 testpmd and check VF0 can receive vlan tag packet
> +
> +9. Remove vlan id on VF0::
> +	testpmd> rx_vlan rm id 0
> +
> +
> +Test Case 12: Broadcast mode
> +============================
> +1. Start testpmd on VF0, set it in rxonly mode and enable verbose output::
> +        testpmd> set fwd rxonly
> +        testpmd> set verbose 1
> +        testpmd> start
> +
> +2. Disable broadcast mode for VF from PF::
> +        testpmd>set vf broadcast 0 0 off
> +
> +3. Send packets from tester with broadcast address,ff:ff:ff:ff:ff:ff, 
> +and check VF0 can not receive the packet
> +
> +4. Enable broadcast mode for VF from PF::
> +        testpmd>set vf broadcast 0 0 on
> +
> +5. Send packets from tester with broadcast address,ff:ff:ff:ff:ff:ff, 
> +and check VF0 can receive the packet
> +
> +
> +Test Case 13: Multicast mode
> +====================================
> +1. Start testpmd on VF0, set it in rxonly mode and enable verbose output::
> +        testpmd> set fwd rxonly
> +        testpmd> set verbose 1
> +        testpmd> start
> +
> +2. Disable promisc and multicast mode for VF from PF::
> +        testpmd>set vf promisc 0 0 off
> +        testpmd>set vf allmulti 0 0 off
> +
> +3. Send packet from tester to VF0 with multicast MAC, and check VF0 
> +can not receive the packet
> +
> +4. Enable multicast mode for VF from PF::
> +        testpmd>set vf allmulti 0 0 on
> +
> +5. Send packet from tester to VF0 with multicast MAC, and check VF0 
> +can receive the packet
> +
> +
> +
> +Test Case 14: Promisc mode
> +==================================
> +1. Start testpmd on VF0, set it in rxonly mode and enable verbose output::
> +        testpmd> set fwd rxonly
> +        testpmd> set verbose 1
> +        testpmd> start
> +
> +2. Disable promisc mode for VF from PF::
> +        testpmd>set vf promisc 0 0 off
> +
> +3. Send packet from tester to VF0 with random MAC, and check VF0 can 
> +not receive the packet
> +
> +4. Send packet from tester to VF0 with correct MAC, and check VF0 can 
> +receive the packet
> +
> +5. Enable promisc mode for VF from PF::
> +        testpmd>set vf promisc 0 0 on
> +
> +6. Send packet from tester to VF0 with random MAC, and the packet can 
> +be received by VF0
> +
> +7. Send packet from tester to VF0 with correct MAC, and the packet 
> +can be received by VF0
> +
> +
> +



More information about the dts mailing list