> ## Documentation Index
> Fetch the complete documentation index at: https://wireblast.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Traffic on the wire in about a minute. No spare NIC needed.

Run it with no arguments. That's the whole trick.

```bash theme={null}
sudo wireblast
```

A four-step wizard opens: pick an interface, pick a traffic pattern, fill in the settings, press enter. You can leave every field at its default and still get a sensible, safe run.

<Note>
  The defaults are deliberately cautious: **100 kpps**, not line rate, and **30 seconds**. An accidental run neither saturates a link nor runs forever.
</Note>

## No spare interface? Use a veth pair

You don't need two servers to try this. A `veth` pair and a network namespace give you a sender and a receiver on one machine, and nothing you do can touch your real network.

```bash theme={null}
sudo ip netns add wblab
sudo ip link add wb0 type veth peer name wb1
sudo ip link set wb1 netns wblab

sudo ip addr add 10.99.0.1/24 dev wb0
sudo ip link set wb0 up
sudo ip netns exec wblab ip addr add 10.99.0.2/24 dev wb1
sudo ip netns exec wblab ip link set wb1 up
```

Now send across it:

```bash theme={null}
sudo wireblast -i wb0 --dst-ip 10.99.0.2 --packet-size 512 --pps 100k -d 10s
```

And when you're done, `sudo ip netns del wblab` removes the whole thing.

The [namespace lab guide](/guides/namespace-lab) builds this out into a full sender and receiver, with the exact numbers to expect.

## The first attach takes a few seconds

On a physical NIC, the first thing you'll see is this:

```text theme={null}
attaching XDP to eno2 and waiting for the link...
link came back after 11.8s
```

It looks broken. It isn't. Attaching a native XDP program makes the driver reinitialise its queues, which drops carrier while the link renegotiates. On a 10G Intel NIC that's typically 8 to 11 seconds.

Two things soften it. The run clock doesn't start until the link is back, so a 30-second run gives you 30 seconds of traffic. And it only happens once: the XDP program stays attached, so pressing `r` to run again restarts in about two seconds.

Virtual interfaces like `veth` skip this entirely.

## Watching it run

The dashboard updates four times a second. Rates sit at the top of each column because they're what you actually watch. Totals sit below.

| Key       | What it does                                     |
| --------- | ------------------------------------------------ |
| `space`   | Pause and resume transmitting                    |
| `+` / `-` | Change the rate by 10%                           |
| `g`       | Cycle the graph: packets/sec, bits/sec, off      |
| `r`       | Zero the visible counters                        |
| `?`       | Every key, plus a short explanation of L1 and L2 |
| `q`       | Stop cleanly and quit                            |

When the run finishes you get a summary and a menu: `r` to run it again, `e` to edit settings, `p` to change pattern, `q` to quit. Wireblast also remembers what you ran, so the next `sudo wireblast` starts prefilled.

## The same run, as one command

Everything in the wizard is a flag:

```bash theme={null}
sudo wireblast -i eno2 --dst-ip 192.0.2.10 --packet-size 512 --pps 100k -d 10s
```

Add `--start` to skip the wizard but keep the dashboard, or `--no-tui` to skip both and print plain text for a script:

```text theme={null}
ran for 0:10
  tx: 1 M packets, 512.03 MB, 99.95 kpps, L1 425.38 Mbit/s, L2 409.39 Mbit/s, avg frame 512B
      udp 1 M, tcp 0, other 0
```

Two bit rates, both correct, measuring different things. [Reading the numbers](/concepts/numbers) explains which one you want.

## Next

<CardGroup cols={2}>
  <Card title="Common tasks" icon="list-check" href="/recipes">
    Benchmark a link, run IMIX, replay a capture, stress a firewall.
  </Card>

  <Card title="Two-box test" icon="right-left" href="/guides/two-box">
    Sender on one machine, receiver on the other, and how to tell they agree.
  </Card>

  <Card title="Receiving traffic" icon="shield-check" href="/concepts/receive">
    Wireblast transmits only by default. Here's how to turn receiving on safely.
  </Card>

  <Card title="Every flag" icon="list" href="/reference/cli">
    The complete command-line reference.
  </Card>
</CardGroup>
