Skip to content

FastNetMon/trex-reports

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TRex Line-Rate Traffic Generation — Lab Reports

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

What "line rate" means at 64 B

Our builders emit 64 B before FCS68 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.

Test topology

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
Loading

For the dual-port measurement both generator ports transmit (two TRex instances), so the aggregate is TX-only capability — see lava1.md.

Key findings

  • 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.

Repository layout

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).

Quick start

# 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

About

Trex performance reports

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors