83. 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.
83.1. 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 <build_target> ninja -C <build_target>
meson configure -Dexamples=ip_reassembly <build_target> ninja -C <build_target>
83.2. Test Case: Send 1K packets, 4 fragments each and 1K maxflows¶
Sample command:
./<build_target>/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.
83.3. Test Case: Send 2K packets, 4 fragments each and 1K maxflows¶
Sample command:
./<build_target>/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.
83.4. Test Case: Send 4K packets, 7 fragments each and 4K maxflows¶
Sample command:
./<build_target>/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.
83.5. Test Case: Send +1K packets and ttl 3s; wait +ttl; send 1K packets¶
Sample command:
./<build_target>/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.
83.6. Test Case: Send more packets than maxflows; only maxflows packets are forwarded back¶
Sample command:
./<build_target>/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.
83.7. Test Case: Send more fragments than supported¶
Sample command:
./<build_target>/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.
83.8. Test Case: Send 3 frames and delay the 4th; no frames are forwarded back¶
Sample command:
./<build_target>/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.
83.9. Test Case: Send jumbo frames¶
Sample command:
./<build_target>/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.
83.10. Test Case: Send jumbo frames without enable them in the app¶
Sample command:
./<build_target>/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.