Find the packet rate of a link
The classic small-frame test. 64-byte frames are the hardest thing a NIC does, so this is the number that tells you what your hardware is really worth.This measures the send rate, which is what you want here. A single flow reaches line rate because Wireblast fans it out across every transmit queue, so one flow is enough to saturate the NIC. Flow diversity only matters on the receive side: RSS hashes a single flow onto one queue, so a receiver counting a single flow tops out at one core’s worth of packets. If you want to verify the rate end to end on a second box, add
--flows 100 --vary-dst-port so the receiver spreads across queues. See transmit and receive.Fill a link with big frames
The opposite end. Large frames are easy on packet rate, so this measures bits rather than packets.--bps is measured in L1, so --bps 10G means 10G line rate.
Run an IMIX test
A realistic mix of frame sizes rather than one artificial size. The classic 7:4:1 spread of 64, 594 and 1518-byte frames, averaging 362 bytes.avg frame 362B is the confirmation that the mix came out right.
To find the IMIX ceiling instead of running at a fixed rate, swap --pps 200k for --pps unlimited.
Replay a capture
Put real traffic back on the wire, frame for frame.--pps. To reproduce the capture’s own timing instead:
Exercise ECMP, LAG or RSS hashing
One flow only ever takes one path. To spread across a bundle, generate many flows.--vary-dst-port moves both ports per flow, which widens the hash space. --flow-order random scatters them so consecutive packets land on different tuples.
To spread destination addresses too, give a CIDR:
Stress a firewall or load balancer’s connection table
Stateless SYNs, many flows, no handshake.Test a switch’s VLAN handling
Send IPv6 traffic
Give Wireblast an IPv6 source and destination and it builds IPv6 frames. UDP, TCP SYN, IMIX, raw and PCAP all work over v6, and so do flows and CIDR cycling.cidr, generated-flow, keep-management, all) work for IPv6; the port filters (udp-port, tcp-port) are still IPv4 only.
Send raw Ethernet with no IP at all
For testing switches, tag handling, or anything that shouldn’t care what’s inside the frame.--dst-mac is required here. Raw frames carry no IP addresses, so there’s nothing to resolve a next hop from.
Count what arrives on a box
Turn a machine into a sink. This one does take packets from the kernel, so read transmit and receive first and use an interface you aren’t logged in over.Run it from a script
No wizard, no dashboard, plain text on stdout.Soak test a link overnight
kill on that PID gives you a clean summary rather than a truncated log, because Wireblast drains its rings and detaches before exiting.
Try any of this with no hardware
Every recipe above works across aveth pair, at whatever rate your CPU manages. Build one in about four commands with the namespace lab.
More examples
The repository ships a numbered set of runnable examples, each with its ownREADME and a run.sh you can execute directly, from a first run through line-rate tuning, IMIX, PCAP replay, VLAN tags and IPv6.
Examples on GitHub
001 through 023, including 022-ipv6-udp and 023-ipv6-flows for IPv6.