.. SPDX-License-Identifier: BSD-3-Clause Copyright(c) 2013-2017 Intel Corporation =================== IP Reassembly Tests =================== This document provides a test plan for benchmarking of the IP Reassembly sample application. This is a simple example app featuring packet processing using IntelĀ® Data Plane Development Kit (IntelĀ® DPDK) that show-cases the use of IP fragmented packets reassembly. Prerequisites ============= If using vfio the kernel must be >= 3.6+ and VT-d must be enabled in bios.When using vfio, use the following commands to load the vfio driver and bind it to the device under test:: modprobe vfio modprobe vfio-pci usertools/dpdk-devbind.py --bind=vfio-pci device_bus_id 1x 82599 NICs (1x 10GbE full duplex optical ports per NIC) plugged into the available PCIe Gen2 8-lane slots. Build dpdk and examples=ip_reassembly: CC=gcc meson -Denable_kmods=True -Dlibdir=lib --default-library=static ninja -C meson configure -Dexamples=ip_reassembly ninja -C Test Case: Send 1K packets, 4 fragments each and 1K maxflows ============================================================ Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=1024 --flowttl=10s Sends 1K packets split in 4 fragments each with a ``maxflows`` of 1K. It expects: - 4K IP packets to be sent to the DUT. - 1K TCP packets being forwarded back to the TESTER. - 1K packets with a valid TCP checksum. Test Case: Send 2K packets, 4 fragments each and 1K maxflows ============================================================ Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=1024 --flowttl=10s Sends 2K packets split in 4 fragments each with a ``maxflows`` of 1K. It expects: - 8K IP packets to be sent to the DUT. - 1K TCP packets being forwarded back to the TESTER. - 1K packets with a valid TCP checksum. Test Case: Send 4K packets, 7 fragments each and 4K maxflows ============================================================ Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=4096 --flowttl=10s Modifies the sample app source code to enable up to 7 fragments per packet, and it need set the "RTE_LIBRTE_IP_FRAG_MAX_FRAG=7" in ./config/rte_config.h and re-build DPDK. Sends 4K packets split in 7 fragments each with a ``maxflows`` of 4K. It expects: - 28K IP packets to be sent to the DUT. - 4K TCP packets being forwarded back to the TESTER. - 4K packets with a valid TCP checksum. Test Case: Send +1K packets and ttl 3s; wait +ttl; send 1K packets ================================================================== Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=1024 --flowttl=3s Sends 1100 packets split in 4 fragments each. It expects: - 4400 IP packets to be sent to the DUT. - 1K TCP packets being forwarded back to the TESTER. - 1K packets with a valid TCP checksum. Then waits until the ``flowttl`` timeout and sends 1K packets. It expects: - 4K IP packets to be sent to the DUT. - 1K TCP packets being forwarded back to the TESTER. - 1K packets with a valid TCP checksum. Test Case: Send more packets than maxflows; only maxflows packets are forwarded back ==================================================================================== Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=1023 --flowttl=5s Sends 1K packets with ``maxflows`` equal to 1023. It expects: - 4092 IP packets to be sent to the DUT. - 1023 TCP packets being forwarded back to the TESTER. - 1023 packets with a valid TCP checksum. Then sends 1023 packets. It expects: - 4092 IP packets to be sent to the DUT. - 1023 TCP packets being forwarded back to the TESTER. - 1023 packets with a valid TCP checksum. Finally waits until the ``flowttl`` timeout and re-send 1K packets. It expects: - 4092 IP packets to be sent to the DUT. - 1023 TCP packets being forwarded back to the TESTER. - 1023 packets with a valid TCP checksum. Test Case: Send more fragments than supported ============================================= Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=1024 --flowttl=10s Sends 1 frame split in into maximum fragments + 1 fragment, the packet can't be forwarded back. It expects: - (maximum fragments + 1 fragment) IP packets to be sent to the DUT. - 0 TCP packets being forwarded back to the TESTER. - 0 packets with a valid TCP checksum. Test Case: Send 3 frames and delay the 4th; no frames are forwarded back ======================================================================== Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=1024 --flowttl=3s Creates 1 packet split in 4 fragments. Sends the first 3 fragments and waits until the ``flowttl`` timeout. Then sends the 4th fragment. It expects: - 4 IP packets to be sent to the DUT. - 0 TCP packets being forwarded back to the TESTER. - 0 packets with a valid TCP checksum. Test Case: Send jumbo frames ============================ Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=1024 --flowttl=10s --enable-jumbo --max-pkt-len=9500 Sets the NIC MTU to 9000 and sends 1K packets of 8900B split in 4 fragments of 2500B at the most. The reassembled packet size will not be bigger than the MTU previously defined. It expects: - 4K IP packets to be sent to the DUT. - 1K TCP packets being forwarded back to the TESTER. - 1K packets with a valid TCP checksum. Test Case: Send jumbo frames without enable them in the app =========================================================== Sample command:: .//examples/dpdk-ip_reassembly -c 0x2 -n 4 -- \ -P -p 0x2 --config "(1,0,1)" --maxflows=1024 --flowttl=10s Sends jumbo packets in the same way the previous test case does but without enabling support within the sample app. It expects: - 4K IP packets to be sent to the DUT. - 0 TCP packets being forwarded back to the TESTER. - 0 packets with a valid TCP checksum.