Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ build*/
site/
bench-results/

# Benchmark plot generation (scripts/plot_rtx_pro_bench.py, plot_mq_payload_sweep.py)
bench-results/**/plots/
bench-results/**/*.svg
bench-results/**/*.png
bench-results/*.log
docs/images/rtx-pro-*.svg
docs/images/rtx-pro-*.png

# tune_system.py default output
pcie_schematic.png

Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ There is no unit test suite. Verification is done via the benchmark executables

| Executable | Source | Typical config |
|---|---|---|
| `daqiri_bench_raw_gpudirect` | `raw_gpudirect_bench.cpp` | `daqiri_bench_raw_tx_rx.yaml`, `daqiri_bench_raw_tx_rx_4q.yaml`, `daqiri_bench_raw_tx_rx_spark.yaml`, `daqiri_bench_raw_{tx,rx}_spark_xhost.yaml`, `daqiri_bench_raw_sw_loopback.yaml`, `daqiri_bench_raw_rx_multi_q.yaml`, `daqiri_bench_raw_tx_rx_vxlan.yaml`, `daqiri_bench_raw_tx_rx_vlan.yaml`, `daqiri_bench_raw_tx_rx_gre.yaml`, `daqiri_bench_raw_tx_rx_nvgre.yaml`, `daqiri_bench_raw_tx_rx_spark_mq.yaml` (mq base; `run_spark_mq_bench.sh` derives the 4 cells via `scripts/gen_spark_mq_config.py`), `daqiri_bench_raw_tx_rx_pacing.yaml` (per-queue `pacing_mbps`; DPDK engine only) |
| `daqiri_bench_raw_gpudirect` | `raw_gpudirect_bench.cpp` | `daqiri_bench_raw_tx_rx.yaml`, `daqiri_bench_raw_tx_rx_4q.yaml`, `daqiri_bench_raw_tx_rx_spark.yaml`, `daqiri_bench_raw_tx_rx_rtx_pro_6000.yaml`, `daqiri_bench_raw_tx_rx_rtx_pro_6000_nic.yaml`, `daqiri_bench_raw_tx_rx_rtx_pro_6000_nic_same_port.yaml`, `daqiri_bench_raw_{tx,rx}_spark_xhost.yaml`, `daqiri_bench_raw_sw_loopback.yaml`, `daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml`, `daqiri_bench_raw_rx_multi_q.yaml`, `daqiri_bench_raw_tx_rx_vxlan.yaml`, `daqiri_bench_raw_tx_rx_vlan.yaml`, `daqiri_bench_raw_tx_rx_gre.yaml`, `daqiri_bench_raw_tx_rx_nvgre.yaml`, `daqiri_bench_raw_tx_rx_spark_mq.yaml` (mq base; `run_spark_mq_bench.sh` derives the 4 cells via `scripts/gen_spark_mq_config.py`), `daqiri_bench_raw_tx_rx_pacing.yaml` (per-queue `pacing_mbps`; DPDK engine only) |
| `daqiri_example_dynamic_rx_flow` | `dynamic_rx_flow_example.cpp` | `daqiri_example_dynamic_rx_flow.yaml` — `flow_isolation: true` startup followed by runtime RX queue-steering and raw-engine decap/pop flow add/delete |
| `daqiri_bench_raw_hds` | `raw_hds_bench.cpp` | `daqiri_bench_raw_tx_rx_hds.yaml` |
| `daqiri_bench_raw_reorder_seq` | `raw_reorder_seq_bench.cpp` | `daqiri_bench_raw_tx_rx_reorder_seq_1024*.yaml`, `daqiri_bench_raw_rx_reorder_seq_*.yaml` |
Expand Down
20 changes: 20 additions & 0 deletions docs/benchmarks/raw_benchmarking.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,26 @@ docker run --rm -it --privileged \

The Spark configs also pin the benchmark application's `bench_tx.cpu_core` / `bench_rx.cpu_core` fields to the high-frequency Cortex-X925 cores. Keep both the DAQIRI queue cores and the application worker cores on cores 16-19 unless you intentionally want a lower-power core in the measurement.

!!! tip "RTX PRO 6000 Blackwell (x86_64 workstation / server)"

For discrete Blackwell RTX PRO 6000 systems, build with [`CMAKE_CUDA_ARCHITECTURES=120`](../tutorials/bare-metal-cmake-build.md) and use these configs:

- [`daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml) — software loopback, no NIC required. Validates the GPUDirect build path; throughput is not wire-rate. See measured numbers in [`examples/rtx_pro_6000_baseline.md`](https://github.com/nvidia/daqiri/blob/main/examples/rtx_pro_6000_baseline.md).
- [`daqiri_bench_raw_tx_rx_rtx_pro_6000_nic.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_rtx_pro_6000_nic.yaml) — prefilled dual-port NIC run (dev-box PCIe BDFs; fill `eth_dst_addr` from the rx_port MAC). Port 0 TX on GPU CUDA 0, port 1 RX on GPU CUDA 1. Requires an L2 link between the two ports (QSFP cable, passive loopback optic, or switch). `carrier=1` on both ports does not guarantee they are looped to each other.
- [`daqiri_bench_raw_tx_rx_rtx_pro_6000.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_rtx_pro_6000.yaml) — generic `<placeholder>` template for cross-card or custom topology (800 Gbps target once cabled).
- [`daqiri_bench_raw_tx_rx_rtx_pro_6000_nic_same_port.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_rtx_pro_6000_nic_same_port.yaml) — experimental same-port TX+RX; failed `daqiri_init` on the reference box.

Unlike DGX Spark, typical RTX Pro servers expose one PF per physical port — there is no on-chip eswitch shortcut between two PFs on the same port without a link. After a NIC run, confirm whether traffic crossed the wire using `tx_phy_packets` / `rx_phy_packets` in the DPDK extended stats (near zero = on-chip or no wire loop; rising with vport counts = over-the-wire). Full constraints and baseline results: [`rtx_pro_6000_baseline.md`](https://github.com/nvidia/daqiri/blob/main/examples/rtx_pro_6000_baseline.md).

```bash
sudo ./daqiri_bench_raw_gpudirect \
./examples/daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml --seconds 30

# Once p0 and p1 are cabled:
sudo ./daqiri_bench_raw_gpudirect \
./examples/daqiri_bench_raw_tx_rx_rtx_pro_6000_nic.yaml --seconds 30
```

#### Cross-host two-DGX-Spark loopback

If you have two DGX Sparks cross-cabled p0↔p0 instead of a chassis QSFP loop on one machine, use the `_xhost` configs. Each host runs only its own role, so the YAML on each side configures one port instead of two. Both hosts must already be set up per the [DGX Spark profile](../tutorials/system_configuration.md#dgx-spark-profile), with one adjustment: the `daqiri-tx` (`1.1.1.1/24`) and `daqiri-rx` (`2.2.2.2/24`) nmcli profiles are *split across* the two hosts — bring up `daqiri-tx` on the TX host's p0 and `daqiri-rx` on the RX host's p0, instead of both on one box.
Expand Down
8 changes: 8 additions & 0 deletions docs/tutorials/configuration-walkthrough.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ For a shorter selection guide, start with the [Benchmarking overview](../benchma
- **DGX Spark multi-queue core-scaling matrix** (prefilled) — one base config [`daqiri_bench_raw_tx_rx_spark_mq.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_spark_mq.yaml) (the balanced TX=2/RX=2 superset; cores TX → 16,17, RX → 18,19) from which `examples/run_spark_mq_bench.sh` (via `scripts/gen_spark_mq_config.py`) derives the four `(TX, RX)` cells — (1,1), (1,2) (RX scaling), (2,1) (TX scaling), (2,2) (balanced) — by pruning queues/flows. All run on `daqiri_bench_raw_gpudirect` at the native 8 KB shape.
- **DGX Spark cross-host** (prefilled, runs on two Sparks) — [`daqiri_bench_raw_tx_spark_xhost.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_spark_xhost.yaml) on the TX host and [`daqiri_bench_raw_rx_spark_xhost.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_rx_spark_xhost.yaml) on the RX host. Each host runs `daqiri_bench_raw_gpudirect` against its own half; cables connect p0↔p0 between the two boxes. Apply the [cross-host network setup](../tutorials/system_configuration.md#cross-host-variant-two-sparks) before running. See the [Cross-host two-DGX-Spark loopback](../benchmarks/raw_benchmarking.md#cross-host-two-dgx-spark-loopback) section for run details.
- **No physical NIC available** — [`daqiri_bench_raw_sw_loopback.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_sw_loopback.yaml). `loopback: "sw"`, no NIC required. Useful for first-time build verification, not representative of production performance.
- **RTX PRO 6000 Blackwell — no cable** — [`daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml). `kind: device`, `affinity: 0`; build with [`CMAKE_CUDA_ARCHITECTURES=120`](../tutorials/bare-metal-cmake-build.md). SW loopback smoke test only.
- **RTX PRO 6000 Blackwell — real NIC, dual-port on one card** (prefilled dev box) — [`daqiri_bench_raw_tx_rx_rtx_pro_6000_nic.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_rtx_pro_6000_nic.yaml). `61:00.0` p0 → `61:00.1` p1, GPU 0 TX / GPU 1 RX; needs L2 link between ports (not SW loopback). See [`rtx_pro_6000_baseline.md`](https://github.com/nvidia/daqiri/blob/main/examples/rtx_pro_6000_baseline.md) for hardware limits and measured baseline.
- **RTX PRO 6000 — same-PF NIC attempt** (experimental) — [`daqiri_bench_raw_tx_rx_rtx_pro_6000_nic_same_port.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_rtx_pro_6000_nic_same_port.yaml). Single port `61:00.0` TX+RX; failed `daqiri_init` on reference box — kept for follow-up.
- **RTX PRO 6000 Blackwell — dual-NIC loopback** (generic template) — [`daqiri_bench_raw_tx_rx_rtx_pro_6000.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_rtx_pro_6000.yaml). Placeholders for Cliff's 800 Gbps cross-card target; fill PCIe BDFs and MACs.
- **RTX PRO 6000 Blackwell — header-data split wire loopback** — [`daqiri_bench_raw_tx_rx_hds_rtx_pro_6000.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_hds_rtx_pro_6000.yaml). Runs on `daqiri_bench_raw_hds`; CPU header segment + GPU (`kind: device`) payload segment over the dual-port L2 link.
- **RTX PRO 6000 Blackwell — multi-queue core-scaling matrix** — one base config [`daqiri_bench_raw_tx_rx_rtx_pro_6000_mq.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_rx_rtx_pro_6000_mq.yaml) (the TX=2/RX=2 superset; GPU 0 TX / GPU 1 RX) from which `examples/run_rtx_pro_mq_bench.sh` (via `scripts/gen_rtx_pro_mq_config.py`) derives the four `(TX, RX)` cells — (1,1), (1,2), (2,1), (2,2) — by pruning queues/flows and sweeping payload sizes. All run on `daqiri_bench_raw_gpudirect`.
- **RTX PRO 6000 Blackwell — ibverbs (MPRQ) RX, paired DPDK TX** — the RX side uses [`daqiri_bench_raw_rx_ibverbs_rtx_pro_6000.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_rx_ibverbs_rtx_pro_6000.yaml) (`engine: ibverbs`, runs on `daqiri_bench_raw_gpudirect` built with `ibverbs`), fed by a DPDK TX sender from [`daqiri_bench_raw_tx_only_rtx_pro_6000_nic.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_raw_tx_only_rtx_pro_6000_nic.yaml) on the other port over the L2 link.

**Raw Ethernet hardware tunnel transforms** — run on `daqiri_bench_raw_gpudirect`; replace placeholders and use a raw DPDK or raw ibverbs build.

Expand All @@ -47,6 +54,7 @@ For a shorter selection guide, start with the [Benchmarking overview](../benchma
**Socket — RoCE (RDMA)** (`stream_type: "socket"`, `roce://` endpoints) — runs on `daqiri_bench_rdma` (use `--mode {tx,rx,both}`). Configs use `kind: host_pinned` regardless of platform.

- **Generic** (template — replace IPs) — [`daqiri_bench_rdma_tx_rx.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_rdma_tx_rx.yaml).
- **RTX PRO 6000 Blackwell** (prefilled dual-port RoCE) — [`daqiri_bench_rdma_tx_rx_rtx_pro_6000.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_rdma_tx_rx_rtx_pro_6000.yaml). Client/server on `10.100.0.1`/`10.100.0.2` across the two cabled ports; `examples/run_rtx_pro_bench.sh` auto-assigns the RoCE IPs and sysctls for a self-contained single-host loop.
- **DGX Spark** (prefilled) — [`daqiri_bench_rdma_tx_rx_spark.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_rdma_tx_rx_spark.yaml). See [Socket and RDMA Benchmarking](../benchmarks/socket_benchmarking.md#run-the-rdma-roce-benchmark) for namespace and wire-counter run details.
- **DGX Spark netns wire loopback** (prefilled, combined base) — [`daqiri_bench_rdma_tx_rx_spark_netns.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_rdma_tx_rx_spark_netns.yaml). Carries both roles; `examples/run_spark_bench.sh` (via `scripts/gen_spark_netns_config.py`) splits it per role and runs each in its own network namespace (`--mode server` / `--mode client`) so RDMA-CM resolves over the wire; see [Socket and RDMA Benchmarking](../benchmarks/socket_benchmarking.md#run-the-rdma-roce-benchmark).
- **DGX Spark cross-host** (prefilled, runs on two Sparks) — [`daqiri_bench_rdma_tx_rx_spark_xhost.yaml`](https://github.com/nvidia/daqiri/blob/main/examples/daqiri_bench_rdma_tx_rx_spark_xhost.yaml). Run with `--mode server` on the RX host and `--mode client` on the TX host. Apply the [cross-host network setup](../tutorials/system_configuration.md#cross-host-variant-two-sparks) before running. See the [Cross-host two-DGX-Spark loopback](../benchmarks/raw_benchmarking.md#cross-host-two-dgx-spark-loopback) section for run details.
Expand Down
10 changes: 9 additions & 1 deletion examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ set(DAQIRI_BENCH_CONFIGS
daqiri_bench_raw_tx_rx_4q.yaml
daqiri_bench_raw_tx_rx_pacing.yaml
daqiri_bench_raw_tx_rx_hds.yaml
daqiri_bench_raw_tx_rx_hds_rtx_pro_6000.yaml
daqiri_bench_raw_rx_ibverbs_rtx_pro_6000.yaml
daqiri_bench_raw_tx_rx_reorder_seq_1024.yaml
daqiri_bench_raw_tx_rx_reorder_seq_1024_cpu.yaml
daqiri_bench_raw_sw_loopback_reorder_seq_1024.yaml
Expand All @@ -49,12 +51,18 @@ set(DAQIRI_BENCH_CONFIGS
daqiri_bench_raw_rx_reorder_seq_batch.yaml
daqiri_bench_raw_rx_multi_q.yaml
daqiri_bench_raw_sw_loopback.yaml
daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml
daqiri_bench_raw_tx_rx_rtx_pro_6000.yaml
daqiri_bench_raw_tx_rx_rtx_pro_6000_nic.yaml
daqiri_bench_raw_tx_rx_rtx_pro_6000_nic_same_port.yaml
Comment thread
chloecrozier marked this conversation as resolved.
daqiri_bench_raw_tx_only_rtx_pro_6000_nic.yaml
daqiri_example_dynamic_rx_flow.yaml
daqiri_example_gds_write_sw_loopback.yaml
daqiri_example_gds_write_tx_rx.yaml
daqiri_example_pcap_writer_sw_loopback.yaml
daqiri_example_pcap_writer_tx_rx.yaml
daqiri_bench_rdma_tx_rx.yaml
daqiri_bench_rdma_tx_rx_rtx_pro_6000.yaml
daqiri_bench_socket_udp_tx_rx.yaml
daqiri_bench_socket_tcp_tx_rx.yaml
)
Expand All @@ -67,7 +75,7 @@ function(link_daqiri_bench target)
target_compile_features(${target} PRIVATE cxx_std_17)
if(NOT BUILD_SHARED_LIBS AND UNIX AND NOT APPLE)
set(DAQIRI_EXAMPLE_STATIC_LIBS daqiri::daqiri)
foreach(engine IN ITEMS dpdk socket rdma)
foreach(engine IN ITEMS dpdk socket rdma ibverbs)
if(TARGET daqiri_${engine})
list(APPEND DAQIRI_EXAMPLE_STATIC_LIBS daqiri_${engine})
endif()
Expand Down
54 changes: 54 additions & 0 deletions examples/daqiri_bench_raw_rx_ibverbs_rtx_pro_6000.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# RTX PRO 6000 Blackwell -- ibverbs MPRQ RX-only (host-staged).
#
# Selected via `engine: "ibverbs"` under `stream_type: "raw"`. Uses HOST hugepage
# memory (GPUDirect device registration is not yet available on this backend).
# FFT/GEMM workloads therefore include host->device staging cost -- label results
# as `host-staged` when comparing against DPDK HDS.
#
# RX-only: pair with a DPDK TX sender (run_rtx_pro_bench.sh ibverbs mode starts
# daqiri_bench_raw_gpudirect on tx_port in the background).
#
# Run (manual):
# sudo ./build/examples/daqiri_bench_raw_gpudirect \
# ./build/examples/daqiri_bench_raw_tx_rx_rtx_pro_6000_nic.yaml --seconds 30 &
# sudo ./build/examples/daqiri_bench_raw_gpudirect \
# ./build/examples/daqiri_bench_raw_rx_ibverbs_rtx_pro_6000.yaml \
# --seconds 30 --workload fft
#
%YAML 1.2
---
daqiri:
cfg:
version: 1
stream_type: "raw"
engine: "ibverbs"
master_core: 3
debug: false
log_level: "info"
loopback: ""

# affinity is the NUMA node for the huge-page RX region. Keep it on the RX
# port's node (discover with: cat /sys/class/net/<rx-iface>/device/numa_node).
memory_regions:
- name: "Data_RX_HOST"
kind: "huge"
affinity: 0
num_bufs: 4096
buf_size: 8064

interfaces:
- name: "rx_port"
address: 0000:61:00.1
rx:
queues:
- name: "rx_q_0"
id: 0
cpu_core: 9
batch_size: 1024
timeout_us: 2000
memory_regions:
- "Data_RX_HOST"

bench_rx:
interface_name: "rx_port"
cpu_core: 8
77 changes: 77 additions & 0 deletions examples/daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# RTX PRO 6000 Blackwell (discrete dGPU) software-loopback smoke test.
# No NIC or cable required — validates build + GPUDirect on one GPU.
# Not representative of wire-speed performance; use the hardware template
# (daqiri_bench_raw_tx_rx_rtx_pro_6000.yaml) once a QSFP loopback cable is installed.
#
# Build (native sm_120):
# cmake -S . -B build -DBUILD_SHARED_LIBS=ON -DDAQIRI_BUILD_PYTHON=OFF \
# -DDAQIRI_ENGINE="dpdk ibverbs" -DCMAKE_CUDA_ARCHITECTURES=120
# cmake --build build -j
#
# Run:
# ./build/examples/daqiri_bench_raw_gpudirect \
# ./build/examples/daqiri_bench_raw_sw_loopback_rtx_pro_6000.yaml --seconds 30
#
# memory_regions[].affinity is the CUDA device index (not nvidia-smi GPU id).
# Change affinity to target a different GPU, e.g. affinity: 1 for CUDA device 1.
#
%YAML 1.2
---
daqiri:
cfg:
version: 1
stream_type: "raw"
master_core: 3
debug: false
log_level: "info"
loopback: "sw"

memory_regions:
- name: "Data_TX_GPU"
kind: "device"
affinity: 0
num_bufs: 51200
buf_size: 8064
- name: "Data_RX_GPU"
kind: "device"
affinity: 0
num_bufs: 51200
buf_size: 8064

interfaces:
- name: "loopback_ports"
address: "loopback"
tx:
queues:
- name: "tx_q_0"
id: 0
batch_size: 10240
cpu_core: 11
timeout_us: 1000
memory_regions:
- "Data_TX_GPU"
offloads:
- "tx_eth_src"
rx:
queues:
- name: "rq_q_0"
id: 0
cpu_core: 9
timeout_us: 1000
batch_size: 10240
memory_regions:
- "Data_RX_GPU"

bench_rx:
interface_name: "loopback_ports"

bench_tx:
interface_name: "loopback_ports"
batch_size: 10240
payload_size: 8000
header_size: 64
eth_dst_addr: 00:00:00:00:00:00
ip_src_addr: 0.0.0.0
ip_dst_addr: 0.0.0.0
udp_src_port: 4096
udp_dst_port: 4096
46 changes: 46 additions & 0 deletions examples/daqiri_bench_raw_tx_only_rtx_pro_6000_nic.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# RTX PRO 6000 -- DPDK GPUDirect TX-only sender for ibverbs RX pairing.
# Binds a single TX port; the RX port stays kernel-bound for ibverbs MPRQ.
#
%YAML 1.2
---
daqiri:
cfg:
version: 1
stream_type: "raw"
master_core: 3
debug: false
log_level: "info"
loopback: ""

memory_regions:
- name: "Data_TX_GPU"
kind: "device"
affinity: 0
num_bufs: 51200
buf_size: 8064

interfaces:
- name: "tx_port"
address: 0000:61:00.0
tx:
queues:
- name: "tx_q_0"
id: 0
batch_size: 10240
cpu_core: 11
memory_regions:
- "Data_TX_GPU"
offloads:
- "tx_eth_src"

bench_tx:
interface_name: "tx_port"
cpu_core: 10
batch_size: 10240
payload_size: 8000
header_size: 64
eth_dst_addr: <00:00:00:00:00:00>
ip_src_addr: 1.2.3.4
ip_dst_addr: 5.6.7.8
udp_src_port: 4096
udp_dst_port: 4096
Loading
Loading