Methods / L4 / UDP-PPS
L4 · NetworkVolumetricUDPHigh-PPSSpoofable
UDP-PPS stress test
Hammers your target with small 8-byte randomized UDP packets at very high packet-per-second rates to validate the limits of packet processing, not just bandwidth.
How it works
Rather than chasing raw gigabits, this method maximizes the number of distinct packets per second using tiny 8-byte randomized payloads. High PPS stresses the parts of the stack that work per-packet: NIC interrupt handling, the kernel network path, firewall connection tables, and scrubbing-appliance lookups. It is the right test for confirming whether your forwarding plane and mitigation hardware can keep pace when the bottleneck is packet count rather than throughput.
Parameters
Packet rate600k ppsPrimary tunable, packets per second per thread
Payload bytes8 bytesSmall randomized payload to keep packets minimal
Threads1-16Parallel senders to scale aggregate PPS
Duration10-600 sTest window length
Run it from the CLI
retro-cli
$ retro run udp-pps --target 203.0.113.45 --port 443 --duration 120
UDP-PPS FAQ
How is a PPS flood different from a bandwidth flood?+
A bandwidth flood saturates the link with large packets, while a PPS flood overwhelms per-packet processing using many small packets. A device can have plenty of spare bandwidth and still collapse under high PPS because each packet costs CPU, interrupts, and table lookups.
Why does this method use 8-byte payloads?+
Tiny payloads keep each packet near the minimum size so more packets fit in the same bandwidth budget, pushing the PPS rate as high as possible. The goal is to test packet handling, not to fill the pipe.
What should I watch on the target during a PPS test?+
Track CPU on the network path, interrupt and softirq load, firewall state-table utilization, and any drops reported by the NIC or scrubbing layer. Those are the first resources to exhaust under high PPS.