Detailed TRex configurations, host tuning, and measured peak rates for generating 64-byte line-rate traffic on commodity hardware. Two generators are documented:
| Generator | CPU | NIC | Peak (64 B) |
|---|---|---|---|
| flame1 | AMD Ryzen 7 5800X (8C/16T) | ConnectX-5 Ex, dual-port 100 G | 142 Mpps single-port (100 % line rate) |
| lava1 | AMD Ryzen 9 9950X (16C/32T, Zen 5) | ConnectX-7, dual-port 200 G (run at 100 G) | 147 Mpps single-port · ~278 Mpps dual-port |
Our builders emit 64 B before FCS → 68 B on the wire, so 100 GbE line rate is 142.05 Mpps (not 148.8, which needs 64 B including FCS). See METHODOLOGY.md for the arithmetic.
Generator and device-under-test are cabled back-to-back (no switch). One port sends the flood; the other is an RX sink for whatever the DUT forwards.
flowchart LR
subgraph GEN["Generator (lava1 / flame1)"]
P0["NIC port 0 — TX"]
P1["NIC port 1 — RX sink"]
end
subgraph DUT["Device under test"]
IN["ingress"]
OUT["egress"]
end
P0 == "100 GbE · 64 B flood" ==> IN
OUT == "forwarded / dropped" ==> P1
For the dual-port measurement both generator ports transmit (two TRex instances), so the aggregate is TX-only capability — see lava1.md.
- A single fast core does ~35 Mpps of TX; ~4–5 cores per 100 G port reaches line rate.
- Clock beats core count — the 5.7 GHz Ryzen with 14 threads hits line rate where a 2.1 GHz dual-Xeon with 36 threads tops out ~135 Mpps.
- One dual-port NIC never doubles at 64 B. Both ports share one packet engine: ConnectX-5 tops ~197 Mpps aggregate, ConnectX-7 ~278 Mpps — regardless of host.
- One TRex instance cannot dedicate cores per port. With both ports in one instance every core services two TX rings and the aggregate stalls near 185 Mpps. The fix is two TRex instances, each owning one real port with disjoint cores — see lava1.md.
Reports & tuning
flame1.md— Ryzen 5800X + ConnectX-5, single-port 100 G line rate.lava1.md— Ryzen 9950X + ConnectX-7, single- and dual-port; the split-core two-instance setup for ~278 Mpps.tuning-checklist.md— host + NIC tweaks and BIOS settings common to both.METHODOLOGY.md— what we measure, the 64 B frame convention, how a run is taken, determinism.results.csv— all measured rates in machine-readable form.
TRex platform configs — the ready-to-use /etc/trex_cfg.yaml for each machine is
shown inline in flame1.md and lava1.md (single- and dual-instance).
# 1. install a platform config — copy the YAML from lava1.md / flame1.md
# to /etc/trex_cfg.yaml
# 2. host/NIC tuning — see tuning-checklist.md
# 3. start TRex
cd /opt/trex && ./t-rex-64 -i --iom 0 --no-scapy-server --no-ofed-check -c 30
# 4. drive a 64-byte profile at line rate from your TRex STL client