Getting going
Do I need special hardware?
Do I need special hardware?
veth pair with no NIC at all.You get the best performance on a driver with native XDP support (Intel ixgbe, i40e, ice, Mellanox mlx5, AWS ena), but everything works in generic mode too. It’s just slower.Can I try it without a spare interface?
Can I try it without a spare interface?
veth pair and a network namespace give you a sender and a receiver on one machine, and nothing you do there can touch your real network. About four commands: see the namespace lab.Does it need root?
Does it need root?
Will it break my SSH session?
Will it break my SSH session?
--rx-mode all needs both a flag and a typed confirmation. Details in transmit and receive.Separately, attaching to a physical NIC drops carrier for several seconds, so don’t do it on the interface you’re logged in over.Can I capture everything except SSH and DNS?
Can I capture everything except SSH and DNS?
--rx-mode keep-management. It redirects everything on the interface to Wireblast but leaves SSH, DNS, and ARP/ND with the kernel, so you can capture broadly on the same NIC you’re logged in over without losing your session. No --allow-match-all needed, because it can’t strand the box.See transmit and receive.Will it change anything on my machine?
Will it change anything on my machine?
ip link set eno2 mtu 3000) and leaves the change to you.It does temporarily tune the interface’s NAPI settings (napi_defer_hard_irqs, gro_flush_timeout) on a native-XDP NIC, because that is a large receive-side performance win, and it puts them back when it exits. The dashboard shows what it tuned, and you can opt out if something else owns that interface’s tuning.The one thing it writes to disk is ~/.wireblast/, which remembers your settings between runs. Clear it with --forget.While running
Why did my link go down for ten seconds?
Why did my link go down for ten seconds?
r to run again reuses the attachment and restarts in about two seconds.Which bit rate should I use, L1 or L2?
Which bit rate should I use, L1 or L2?
--packet-size bytes of it.--bps is measured in L1, so --bps 10G means 10G line rate. Full explanation.Why does bwm-ng show a lower number than Wireblast?
Why does bwm-ng show a lower number than Wireblast?
Is --packet-size the frame or the payload?
Is --packet-size the frame or the payload?
--packet-size 64 is the classic 64-byte frame. Wireblast writes 60 bytes and the NIC appends the FCS.This is the single definition that trips people up most.Is --pps per queue or in total?
Is --pps per queue or in total?
--pps 1M is a million packets per second aggregate, whether Wireblast is using one queue or twelve. Measured across 1, 4 and 12 queues on the same NIC: 999.34, 999.35 and 999.44 kpps.Why can't I use --packet-size 64 with a VLAN tag?
Why can't I use --packet-size 64 with a VLAN tag?
Capabilities
Does it measure latency?
Does it measure latency?
Does it support IPv6?
Does it support IPv6?
cidr, generated-flow, keep-management, all) work for IPv6; the udp-port and tcp-port filters are still IPv4 only. There are runnable IPv6 examples in the repo.Is the TCP mode a real TCP session?
Is the TCP mode a real TCP session?
Can it replay a pcap?
Can it replay a pcap?
.pcap or .pcapng. You choose between the capture’s original timing and a rate you set. See PCAP replay.It doesn’t rewrite addresses or recompute checksums unless you explicitly override the MACs.Can I generate from several interfaces at once?
Can I generate from several interfaces at once?
Is there JSON output?
Is there JSON output?
--no-tui prints plain text, and the ran for summary block is the stable thing to parse.Is there a config file?
Is there a config file?
~/.wireblast/ so you don’t have to retype them.Troubleshooting
It says the locked-memory limit is too low
It says the locked-memory limit is too low
--queues 3, which needs no host changes at all. Wireblast prints the exact numbers for your run.It says an XDP program is already attached
It says an XDP program is already attached
pgrep -a wireblast), or a previous one died without cleaning up. Clear it:It won't resolve the destination MAC
It won't resolve the destination MAC
--dst-mac directly if you’re deliberately sending at something that won’t answer ARP. The decision tree covers each failure.I picked my VLAN interface and it refused
I picked my VLAN interface and it refused
--interface eno2 --vlan 100 and Wireblast builds the tag itself.The receiver counts fewer packets than the sender sent
The receiver counts fewer packets than the sender sent
Drops/errors on the receiver. Climbing means its rings filled up, so try more queues or a lower rate. Clean but short means the loss is in the path between them.Project
What's it built on?
What's it built on?
Does it use libpcap or DPDK?
Does it use libpcap or DPDK?
CGO_ENABLED=0, so you get one static binary with no runtime dependencies. PCAP files are read with a pure-Go parser.Does it run on macOS or Windows?
Does it run on macOS or Windows?