Skip to content

cleanup: honest benchmarks, matching echo apps, fix baseline - #27

Merged
gspivey merged 8 commits into
mainfrom
claude/cleanup-udp-prototype-z4UUD
Mar 26, 2026
Merged

gspivey merged 8 commits into
mainfrom
claude/cleanup-udp-prototype-z4UUD

Conversation

@gspivey

@gspivey gspivey commented Mar 25, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Rewrote echo app (282→65 lines) to be structurally identical to plain-echo — only the import differs (dpdk_udp::UdpSocket vs std::net::UdpSocket), demonstrating the drop-in replacement story
  • Fixed README performance claims: was "10-100x", now accurately reports ~2x throughput advantage at 700K PPS based on multiple benchmark runs
  • Fixed baseline bug: rust-stdlib perf config was running our abstraction layer in kernel-fallback mode, not clean std::net. Now uses plain-echo for honest comparison
  • Reverted plain-echo to original tight loop: Removed signal handling/timeout added during this PR — baseline should be simplest possible std::net
  • Removed multicore from defaults: broken since topology simplification in PR simplify topology: single rx_queues knob replaces rx_queues × workers_per_queue #26
  • Removed echo/dpdk feature flag: dpdk-udp is now a non-optional dependency, simplifying the build

Benchmark Results (Run #6 — 23567309410)

700K PPS rust-dpdk RX plain-rust RX DPDK Advantage
64B 678,563 (3.1% drop) 342,265 (51.1% drop) 2.0x
512B 638,416 (8.8% drop) 324,749 (53.6% drop) 2.0x
1400B 447,693 (36.0% drop) 309,586 (55.8% drop) 1.4x

At 350K PPS, DPDK delivers near-zero drops across all packet sizes while kernel drops 6-19%.

Test plan

https://claude.ai/code/session_013kEK2d9wyTRWwmoAB4VBco

…m defaults

- README: replace "10-100x" claim with actual measured ~2x PPS improvement,
  remove multi-core pipeline section (experimental), fix stale --dpdk flag
- echo app: rewrite to mirror plain-echo (65 lines vs 282), demonstrating
  the drop-in replacement story (only difference is the import line)
- plain-echo: add signal handling and read timeout to match echo structure
- perf-test-log: add Run #4 entry for topology simplification PR #26
- perf-tests: remove rust-dpdk-multicore from default configs (experimental)

https://claude.ai/code/session_013kEK2d9wyTRWwmoAB4VBco
@github-actions

Copy link
Copy Markdown

Integration Test Failure (Run 23536907061)

Branch: 27/merge | Commit: ac0e079b854b3e1bacaecb19d301e227a88cb442

failure-summary.json

{
  "failed_step": "deploy_infrastructure",
  "error": "Infrastructure deployment failed",
  "exit_code": 2,
  "timestamp": "2026-03-25T10:48:49.559120Z",
  "sender_instance_id": "",
  "receiver_instance_id": "",
  "commit": "ac0e079b854b3e1bacaecb19d301e227a88cb442",
  "run_url": "https://github.com/gspivey/dpdk-stdlib-rust/actions/runs/23536907061"
}```

### instance-0-user-data.log (5003 bytes, last 80 lines)

Dependencies resolved.
Nothing to do.
Complete!
which unzip: /usr/bin/unzip
which cargo: MISSING
which clang: /usr/bin/clang
DPDK libs: 656 found
=== Configuring DPDK runtime ===
SSM agent status: active
=== Binding secondary ENI to DPDK ===
Attempt 1: waiting for secondary ENI...
Attempt 2: waiting for secondary ENI...
Attempt 3: waiting for secondary ENI...
Attempt 4: waiting for secondary ENI...
Attempt 5: waiting for secondary ENI...
Attempt 6: waiting for secondary ENI...
Attempt 7: waiting for secondary ENI...
Attempt 8: waiting for secondary ENI...
Attempt 9: waiting for secondary ENI...
Attempt 10: waiting for secondary ENI...
Attempt 11: waiting for secondary ENI...
Attempt 12: waiting for secondary ENI...
Attempt 13: waiting for secondary ENI...
Attempt 14: waiting for secondary ENI...
Attempt 15: waiting for secondary ENI...
Attempt 16: waiting for secondary ENI...
Attempt 17: waiting for secondary ENI...
Attempt 18: waiting for secondary ENI...
Attempt 19: waiting for secondary ENI...
Attempt 20: waiting for secondary ENI...
Attempt 21: waiting for secondary ENI...
Attempt 22: waiting for secondary ENI...
Attempt 23: waiting for secondary ENI...
Attempt 24: waiting for secondary ENI...
Attempt 25: waiting for secondary ENI...
Attempt 26: waiting for secondary ENI...
Attempt 27: waiting for secondary ENI...
Attempt 28: waiting for secondary ENI...
Attempt 29: waiting for secondary ENI...
Attempt 30: waiting for secondary ENI...
Attempt 31: waiting for secondary ENI...
Attempt 32: waiting for secondary ENI...
Attempt 33: waiting for secondary ENI...
Attempt 34: waiting for secondary ENI...
Attempt 35: waiting for secondary ENI...
Attempt 36: waiting for secondary ENI...
Attempt 37: waiting for secondary ENI...
Attempt 38: waiting for secondary ENI...
Attempt 39: waiting for secondary ENI...
Attempt 40: waiting for secondary ENI...
Attempt 41: waiting for secondary ENI...
Attempt 42: waiting for secondary ENI...
Attempt 43: waiting for secondary ENI...
Attempt 44: waiting for secondary ENI...
Attempt 45: waiting for secondary ENI...
Attempt 46: waiting for secondary ENI...
Attempt 47: waiting for secondary ENI...
Attempt 48: waiting for secondary ENI...
Attempt 49: waiting for secondary ENI...
Attempt 50: waiting for secondary ENI...
Attempt 51: waiting for secondary ENI...
Attempt 52: waiting for secondary ENI...
Attempt 53: waiting for secondary ENI...
Attempt 54: waiting for secondary ENI...
Attempt 55: waiting for secondary ENI...
Attempt 56: waiting for secondary ENI...
Attempt 57: waiting for secondary ENI...
Attempt 58: waiting for secondary ENI...
Attempt 59: waiting for secondary ENI...
Attempt 60: waiting for secondary ENI...
=== Downloading DPDK-STDLIB project ===
Completed 256.0 KiB/4.2 MiB (2.7 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/4.2 MiB (5.3 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/4.2 MiB (7.8 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/4.2 MiB (10.2 MiB/s) with 1 file(s) remaining
Completed 1.2 MiB/4.2 MiB (12.6 MiB/s) with 1 file(s) remaining
Completed 1.5 MiB/4.2 MiB (14.9 MiB/s) with 1 file(s) remaining
Completed 1.8 MiB/4.2 MiB (17.1 MiB/s) with 1 file(s) remaining
Completed 2.0 MiB/4.2 MiB (19.3 MiB/s) with 1 file(s) remaining
Completed 2.2 MiB/4.2 MiB (21.4 MiB/s) with 1 file(s) remaining
Completed 2.5 MiB/4.2 MiB (23.6 MiB/s) with 1 file(s) remaining
Completed 2.8 MiB/4.2 MiB (25.7 MiB/s) with 1 file(s) remaining
Completed 3.0 MiB/4.2 MiB (27.7 MiB/s) with 1 file(s) remaining
Completed 3.2 MiB/4.2 MiB (29.7 MiB/s) with 1 file(s) remaining
Completed 3.5 MiB/4.2 MiB (31.7 MiB/s) with 1 file(s) remaining
Completed 3.8 MiB/4.2 MiB (33.6 MiB/s) with 1 file(s) remaining
Completed 4.0 MiB/4.2 MiB (35.5 MiB/s) with 1 file(s) remaining
Completed 4.2 MiB/4.2 MiB (36.7 MiB/s) with 1 file(s) remaining
download: s3://cdk-hnb659fds-assets-121490076680-us-east-1/88577ea9afdacec8f928217dea4dfbf7ae2bc133791bb320c2a77666f0cc298a.zip to tmp/dpdk-stdlib.zip
=== Building project ===
cargo version: cargo 1.94.0 (85eff7c80 2026-01-15)
rustc version: rustc 1.94.0 (4a4ef493e 2026-03-02)
Checking pkg-config for libdpdk...
22.11.6
DPDK found: 22.11.6
error: none of the selected packages contains this feature: echo/dpdk
selected packages: dpdk-sys, dpdk, dpdk-udp, dpdk-tokio, echo, test-client, tokio-echo, plain-echo


### instance-1-user-data.log (5003 bytes, last 80 lines)

Dependencies resolved.
Nothing to do.
Complete!
which unzip: /usr/bin/unzip
which cargo: MISSING
which clang: /usr/bin/clang
DPDK libs: 656 found
=== Configuring DPDK runtime ===
SSM agent status: active
=== Binding secondary ENI to DPDK ===
Attempt 1: waiting for secondary ENI...
Attempt 2: waiting for secondary ENI...
Attempt 3: waiting for secondary ENI...
Attempt 4: waiting for secondary ENI...
Attempt 5: waiting for secondary ENI...
Attempt 6: waiting for secondary ENI...
Attempt 7: waiting for secondary ENI...
Attempt 8: waiting for secondary ENI...
Attempt 9: waiting for secondary ENI...
Attempt 10: waiting for secondary ENI...
Attempt 11: waiting for secondary ENI...
Attempt 12: waiting for secondary ENI...
Attempt 13: waiting for secondary ENI...
Attempt 14: waiting for secondary ENI...
Attempt 15: waiting for secondary ENI...
Attempt 16: waiting for secondary ENI...
Attempt 17: waiting for secondary ENI...
Attempt 18: waiting for secondary ENI...
Attempt 19: waiting for secondary ENI...
Attempt 20: waiting for secondary ENI...
Attempt 21: waiting for secondary ENI...
Attempt 22: waiting for secondary ENI...
Attempt 23: waiting for secondary ENI...
Attempt 24: waiting for secondary ENI...
Attempt 25: waiting for secondary ENI...
Attempt 26: waiting for secondary ENI...
Attempt 27: waiting for secondary ENI...
Attempt 28: waiting for secondary ENI...
Attempt 29: waiting for secondary ENI...
Attempt 30: waiting for secondary ENI...
Attempt 31: waiting for secondary ENI...
Attempt 32: waiting for secondary ENI...
Attempt 33: waiting for secondary ENI...
Attempt 34: waiting for secondary ENI...
Attempt 35: waiting for secondary ENI...
Attempt 36: waiting for secondary ENI...
Attempt 37: waiting for secondary ENI...
Attempt 38: waiting for secondary ENI...
Attempt 39: waiting for secondary ENI...
Attempt 40: waiting for secondary ENI...
Attempt 41: waiting for secondary ENI...
Attempt 42: waiting for secondary ENI...
Attempt 43: waiting for secondary ENI...
Attempt 44: waiting for secondary ENI...
Attempt 45: waiting for secondary ENI...
Attempt 46: waiting for secondary ENI...
Attempt 47: waiting for secondary ENI...
Attempt 48: waiting for secondary ENI...
Attempt 49: waiting for secondary ENI...
Attempt 50: waiting for secondary ENI...
Attempt 51: waiting for secondary ENI...
Attempt 52: waiting for secondary ENI...
Attempt 53: waiting for secondary ENI...
Attempt 54: waiting for secondary ENI...
Attempt 55: waiting for secondary ENI...
Attempt 56: waiting for secondary ENI...
Attempt 57: waiting for secondary ENI...
Attempt 58: waiting for secondary ENI...
Attempt 59: waiting for secondary ENI...
Attempt 60: waiting for secondary ENI...
=== Downloading DPDK-STDLIB project ===
Completed 256.0 KiB/4.2 MiB (1.2 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/4.2 MiB (2.5 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/4.2 MiB (3.7 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/4.2 MiB (4.9 MiB/s) with 1 file(s) remaining
Completed 1.2 MiB/4.2 MiB (6.1 MiB/s) with 1 file(s) remaining
Completed 1.5 MiB/4.2 MiB (7.2 MiB/s) with 1 file(s) remaining
Completed 1.8 MiB/4.2 MiB (8.4 MiB/s) with 1 file(s) remaining
Completed 2.0 MiB/4.2 MiB (9.5 MiB/s) with 1 file(s) remaining
Completed 2.2 MiB/4.2 MiB (8.9 MiB/s) with 1 file(s) remaining
Completed 2.5 MiB/4.2 MiB (9.7 MiB/s) with 1 file(s) remaining
Completed 2.8 MiB/4.2 MiB (10.7 MiB/s) with 1 file(s) remaining
Completed 3.0 MiB/4.2 MiB (11.6 MiB/s) with 1 file(s) remaining
Completed 3.2 MiB/4.2 MiB (12.5 MiB/s) with 1 file(s) remaining
Completed 3.5 MiB/4.2 MiB (13.4 MiB/s) with 1 file(s) remaining
Completed 3.8 MiB/4.2 MiB (14.3 MiB/s) with 1 file(s) remaining
Completed 4.0 MiB/4.2 MiB (15.2 MiB/s) with 1 file(s) remaining
Completed 4.2 MiB/4.2 MiB (15.8 MiB/s) with 1 file(s) remaining
download: s3://cdk-hnb659fds-assets-121490076680-us-east-1/88577ea9afdacec8f928217dea4dfbf7ae2bc133791bb320c2a77666f0cc298a.zip to tmp/dpdk-stdlib.zip
=== Building project ===
cargo version: cargo 1.94.0 (85eff7c80 2026-01-15)
rustc version: rustc 1.94.0 (4a4ef493e 2026-03-02)
Checking pkg-config for libdpdk...
22.11.6
DPDK found: 22.11.6
error: none of the selected packages contains this feature: echo/dpdk
selected packages: dpdk-sys, dpdk, dpdk-udp, dpdk-tokio, echo, test-client, tokio-echo, plain-echo


### instance-0-console-output.log (14395 bytes, last 80 lines)

[ 60.408931] cloud-init[1729]: === Using pre-built DPDK AMI ===
[ 60.410499] cloud-init[1729]: === Ensuring SSM agent is installed and running ===
[ 67.638339] zram_generator::config[2016]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 67.814134] cloud-init[1729]: SSM agent status: active
[ 68.293815] cloud-init[1729]: Last metadata expiration check: 0:00:10 ago on Wed Mar 25 10:46:25 2026.
[ 68.342704] cloud-init[1729]: Package clang-devel-15.0.7-3.amzn2023.0.4.x86_64 is already installed.
[ 68.346002] cloud-init[1729]: Package unzip-6.0-68.amzn2023.0.1.x86_64 is already installed.
[ 68.451921] cloud-init[1729]: Dependencies resolved.
[ 68.513982] cloud-init[1729]: Nothing to do.
[ 68.515366] cloud-init[1729]: Complete!
[ 68.622500] cloud-init[1729]: which unzip: /usr/bin/unzip
[ 68.625515] cloud-init[1729]: which cargo: MISSING
[ 68.628774] cloud-init[1729]: which clang: /usr/bin/clang
[ 68.712540] cloud-init[1729]: DPDK libs: 656 found
[ 68.713839] cloud-init[1729]: === Configuring DPDK runtime ===
[ 68.731210] cloud-init[1729]: SSM agent status: active
[ 68.732599] cloud-init[1729]: === Binding secondary ENI to DPDK ===
[ 68.749589] cloud-init[1729]: Attempt 1: waiting for secondary ENI...
2026/03/25 10:46:36Z: Amazon SSM Agent v3.3.3598.0 is running
2026/03/25 10:46:36Z: OsProductName: Amazon Linux
2026/03/25 10:46:36Z: OsVersion: 2023
[ 69.774664] cloud-init[1729]: Attempt 2: waiting for secondary ENI...
[ 70.794691] cloud-init[1729]: Attempt 3: waiting for secondary ENI...
[ 71.815251] cloud-init[1729]: Attempt 4: waiting for secondary ENI...
[ 72.836590] cloud-init[1729]: Attempt 5: waiting for secondary ENI...
[ 73.856069] cloud-init[1729]: Attempt 6: waiting for secondary ENI...
[ 74.873976] cloud-init[1729]: Attempt 7: waiting for secondary ENI...
[ 75.892313] cloud-init[1729]: Attempt 8: waiting for secondary ENI...
[ 76.910439] cloud-init[1729]: Attempt 9: waiting for secondary ENI...
[ 77.929150] cloud-init[1729]: Attempt 10: waiting for secondary ENI...
[ 78.947416] cloud-init[1729]: Attempt 11: waiting for secondary ENI...
[ 79.965581] cloud-init[1729]: Attempt 12: waiting for secondary ENI...
[ 80.983953] cloud-init[1729]: Attempt 13: waiting for secondary ENI...
[ 82.002417] cloud-init[1729]: Attempt 14: waiting for secondary ENI...
[ 83.020705] cloud-init[1729]: Attempt 15: waiting for secondary ENI...
[ 84.046885] cloud-init[1729]: Attempt 16: waiting for secondary ENI...
[ 85.065871] cloud-init[1729]: Attempt 17: waiting for secondary ENI...
[ 86.084430] cloud-init[1729]: Attempt 18: waiting for secondary ENI...
[ 87.104867] cloud-init[1729]: Attempt 19: waiting for secondary ENI...
[ 88.125879] cloud-init[1729]: Attempt 20: waiting for secondary ENI...
[ 89.143936] cloud-init[1729]: Attempt 21: waiting for secondary ENI...
[ 90.162177] cloud-init[1729]: Attempt 22: waiting for secondary ENI...
[ 91.183732] cloud-init[1729]: Attempt 23: waiting for secondary ENI...
[ 92.202082] cloud-init[1729]: Attempt 24: waiting for secondary ENI...
[ 93.220743] cloud-init[1729]: Attempt 25: waiting for secondary ENI...
[ 94.239659] cloud-init[1729]: Attempt 26: waiting for secondary ENI...
[ 95.258522] cloud-init[1729]: Attempt 27: waiting for secondary ENI...
[ 96.276467] cloud-init[1729]: Attempt 28: waiting for secondary ENI...
[ 97.295004] cloud-init[1729]: Attempt 29: waiting for secondary ENI...
[ 98.313802] cloud-init[1729]: Attempt 30: waiting for secondary ENI...
[ 99.333995] cloud-init[1729]: Attempt 31: waiting for secondary ENI...
[ 100.352535] cloud-init[1729]: Attempt 32: waiting for secondary ENI...
[ 101.380235] cloud-init[1729]: Attempt 33: waiting for secondary ENI...
[ 102.402169] cloud-init[1729]: Attempt 34: waiting for secondary ENI...
[ 103.420258] cloud-init[1729]: Attempt 35: waiting for secondary ENI...
[ 104.439910] cloud-init[1729]: Attempt 36: waiting for secondary ENI...
[ 105.458074] cloud-init[1729]: Attempt 37: waiting for secondary ENI...
[ 106.477970] cloud-init[1729]: Attempt 38: waiting for secondary ENI...
[ 107.496052] cloud-init[1729]: Attempt 39: waiting for secondary ENI...
[ 108.514732] cloud-init[1729]: Attempt 40: waiting for secondary ENI...
[ 109.536096] cloud-init[1729]: Attempt 41: waiting for secondary ENI...
[ 110.554898] cloud-init[1729]: Attempt 42: waiting for secondary ENI...
[ 111.572807] cloud-init[1729]: Attempt 43: waiting for secondary ENI...
[ 112.591946] cloud-init[1729]: Attempt 44: waiting for secondary ENI...
[ 113.610863] cloud-init[1729]: Attempt 45: waiting for secondary ENI...
[ 114.630196] cloud-init[1729]: Attempt 46: waiting for secondary ENI...
[ 115.649867] cloud-init[1729]: Attempt 47: waiting for secondary ENI...
[ 116.669356] cloud-init[1729]: Attempt 48: waiting for secondary ENI...
[ 117.688859] cloud-init[1729]: Attempt 49: waiting for secondary ENI...
[ 118.707713] cloud-init[1729]: Attempt 50: waiting for secondary ENI...
[ 119.726518] cloud-init[1729]: Attempt 51: waiting for secondary ENI...
[ 120.746706] cloud-init[1729]: Attempt 52: waiting for secondary ENI...
[ 121.764937] cloud-init[1729]: Attempt 53: waiting for secondary ENI...
[ 122.786187] cloud-init[1729]: Attempt 54: waiting for secondary ENI...
[ 123.804708] cloud-init[1729]: Attempt 55: waiting for secondary ENI...
[ 124.824043] cloud-init[1729]: Attempt 56: waiting for secondary ENI...
[ 125.842426] cloud-init[1729]: Attempt 57: waiting for secondary ENI...
[ 126.860841] cloud-init[1729]: Attempt 58: waiting for secondary ENI...
[ 127.879334] cloud-init[1729]: Attempt 59: waiting for secondary ENI...
[ 128.898992] cloud-init[1729]: Attempt 60: waiting for secondary ENI...


### instance-1-console-output.log (14873 bytes, last 80 lines)

[ 55.589468] cloud-init[1737]: === Ensuring SSM agent is installed and running ===
[ 62.807147] zram_generator::config[2029]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 62.964626] cloud-init[1737]: SSM agent status: active
[ 63.459287] cloud-init[1737]: Last metadata expiration check: 0:00:10 ago on Wed Mar 25 10:46:19 2026.
[ 63.509526] cloud-init[1737]: Package clang-devel-15.0.7-3.amzn2023.0.4.x86_64 is already installed.
[ 63.514226] cloud-init[1737]: Package unzip-6.0-68.amzn2023.0.1.x86_64 is already installed.
[ 63.601946] cloud-init[1737]: Dependencies resolved.
[ 63.643513] cloud-init[1737]: Nothing to do.
[ 63.645303] cloud-init[1737]: Complete!
[ 63.689885] cloud-init[1737]: which unzip: /usr/bin/unzip
[ 63.693345] cloud-init[1737]: which cargo: MISSING
[ 63.697081] cloud-init[1737]: which clang: /usr/bin/clang
[ 64.005703] cloud-init[1737]: DPDK libs: 656 found
[ 64.007779] cloud-init[1737]: === Configuring DPDK runtime ===
[ 64.026140] cloud-init[1737]: SSM agent status: active
[ 64.028245] cloud-init[1737]: === Binding secondary ENI to DPDK ===
[ 64.047528] cloud-init[1737]: Attempt 1: waiting for secondary ENI...
[ 65.068942] cloud-init[1737]: Attempt 2: waiting for secondary ENI...
[ 66.089184] cloud-init[1737]: Attempt 3: waiting for secondary ENI...
[ 67.109136] cloud-init[1737]: Attempt 4: waiting for secondary ENI...
[ 68.129559] cloud-init[1737]: Attempt 5: waiting for secondary ENI...
[ 69.149271] cloud-init[1737]: Attempt 6: waiting for secondary ENI...
[ 70.175043] cloud-init[1737]: Attempt 7: waiting for secondary ENI...
[ 71.195107] cloud-init[1737]: Attempt 8: waiting for secondary ENI...
[ 72.218289] cloud-init[1737]: Attempt 9: waiting for secondary ENI...
[ 73.238199] cloud-init[1737]: Attempt 10: waiting for secondary ENI...
[ 74.257778] cloud-init[1737]: Attempt 11: waiting for secondary ENI...
[ 75.277551] cloud-init[1737]: Attempt 12: waiting for secondary ENI...
[ 76.297673] cloud-init[1737]: Attempt 13: waiting for secondary ENI...
[ 77.320227] cloud-init[1737]: Attempt 14: waiting for secondary ENI...
[ 78.341187] cloud-init[1737]: Attempt 15: waiting for secondary ENI...
[ 79.361395] cloud-init[1737]: Attempt 16: waiting for secondary ENI...
[ 80.382696] cloud-init[1737]: Attempt 17: waiting for secondary ENI...
[ 81.402382] cloud-init[1737]: Attempt 18: waiting for secondary ENI...
[ 82.423059] cloud-init[1737]: Attempt 19: waiting for secondary ENI...
[ 83.448078] cloud-init[1737]: Attempt 20: waiting for secondary ENI...
[ 84.468523] cloud-init[1737]: Attempt 21: waiting for secondary ENI...
[ 85.497864] cloud-init[1737]: Attempt 22: waiting for secondary ENI...
[ 86.518908] cloud-init[1737]: Attempt 23: waiting for secondary ENI...
[ 87.539278] cloud-init[1737]: Attempt 24: waiting for secondary ENI...
[ 88.564239] cloud-init[1737]: Attempt 25: waiting for secondary ENI...
[ 89.584383] cloud-init[1737]: Attempt 26: waiting for secondary ENI...
[ 90.608316] cloud-init[1737]: Attempt 27: waiting for secondary ENI...
[ 91.633776] cloud-init[1737]: Attempt 28: waiting for secondary ENI...
[ 92.653228] cloud-init[1737]: Attempt 29: waiting for secondary ENI...
[ 93.679279] cloud-init[1737]: Attempt 30: waiting for secondary ENI...
[ 94.699638] cloud-init[1737]: Attempt 31: waiting for secondary ENI...
[ 95.728535] cloud-init[1737]: Attempt 32: waiting for secondary ENI...
2026/03/25 10:47:01Z: Amazon SSM Agent v3.3.3598.0 is running
2026/03/25 10:47:01Z: OsProductName: Amazon Linux
2026/03/25 10:47:01Z: OsVersion: 2023
[ 96.748552] cloud-init[1737]: Attempt 33: waiting for secondary ENI...
[ 97.770389] cloud-init[1737]: Attempt 34: waiting for secondary ENI...
[ 98.791240] cloud-init[1737]: Attempt 35: waiting for secondary ENI...
[ 99.812946] cloud-init[1737]: Attempt 36: waiting for secondary ENI...
[ 100.832757] cloud-init[1737]: Attempt 37: waiting for secondary ENI...
[ 101.852401] cloud-init[1737]: Attempt 38: waiting for secondary ENI...
[ 102.872149] cloud-init[1737]: Attempt 39: waiting for secondary ENI...
[ 103.891980] cloud-init[1737]: Attempt 40: waiting for secondary ENI...
[ 104.911846] cloud-init[1737]: Attempt 41: waiting for secondary ENI...
[ 105.932293] cloud-init[1737]: Attempt 42: waiting for secondary ENI...
[ 106.952654] cloud-init[1737]: Attempt 43: waiting for secondary ENI...
[ 107.972600] cloud-init[1737]: Attempt 44: waiting for secondary ENI...
[ 108.992930] cloud-init[1737]: Attempt 45: waiting for secondary ENI...
[ 110.014647] cloud-init[1737]: Attempt 46: waiting for secondary ENI...
[ 111.037774] cloud-init[1737]: Attempt 47: waiting for secondary ENI...
[ 112.059938] cloud-init[1737]: Attempt 48: waiting for secondary ENI...
[ 113.079639] cloud-init[1737]: Attempt 49: waiting for secondary ENI...
[ 114.100801] cloud-init[1737]: Attempt 50: waiting for secondary ENI...
[ 115.121534] cloud-init[1737]: Attempt 51: waiting for secondary ENI...
[ 116.141459] cloud-init[1737]: Attempt 52: waiting for secondary ENI...
[ 117.161371] cloud-init[1737]: Attempt 53: waiting for secondary ENI...
[ 118.181332] cloud-init[1737]: Attempt 54: waiting for secondary ENI...
[ 119.201574] cloud-init[1737]: Attempt 55: waiting for secondary ENI...
[ 120.221605] cloud-init[1737]: Attempt 56: waiting for secondary ENI...
[ 121.244445] cloud-init[1737]: Attempt 57: waiting for secondary ENI...
[ 122.269417] cloud-init[1737]: Attempt 58: waiting for secondary ENI...
[ 123.289462] cloud-init[1737]: Attempt 59: waiting for secondary ENI...
[ 124.309605] cloud-init[1737]: Attempt 60: waiting for secondary ENI...
[ 125.313556] cloud-init[1737]: === Downloading DPDK-STDLIB project ===


### All instance-logs files

total 84
drwxr-xr-x 2 runner runner 4096 Mar 25 10:48 .
drwxr-xr-x 17 runner runner 4096 Mar 25 10:48 ..
-rw-r--r-- 1 runner runner 354 Mar 25 10:48 failure-summary.json
-rw-r--r-- 1 runner runner 13 Mar 25 10:48 instance-0-build-listing.log
-rw-r--r-- 1 runner runner 14395 Mar 25 10:48 instance-0-console-output.log
-rw-r--r-- 1 runner runner 1327 Mar 25 10:48 instance-0-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1049 Mar 25 10:48 instance-0-network-interfaces.log
-rw-r--r-- 1 runner runner 5003 Mar 25 10:48 instance-0-user-data.log
-rw-r--r-- 1 runner runner 13 Mar 25 10:48 instance-1-build-listing.log
-rw-r--r-- 1 runner runner 14873 Mar 25 10:48 instance-1-console-output.log
-rw-r--r-- 1 runner runner 1327 Mar 25 10:48 instance-1-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1050 Mar 25 10:48 instance-1-network-interfaces.log
-rw-r--r-- 1 runner runner 5003 Mar 25 10:48 instance-1-user-data.log

@github-actions

Copy link
Copy Markdown

❌ Integration Tests Failed (Run 23536907061)

Branch: 27/merge | Commit: ac0e079b

Test Results

Application Logs (last 20 lines)

Full Application Logs (last 200 lines each)
Network & PCI State

instance-0-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:84:1f:d8:09:9f brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0f38afb6759a57b50
    altname device-number-0.0
    inet 10.0.1.79/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3442sec preferred_lft 3442sec
    inet6 fe80::84:1fff:fed8:99f/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:08:ec:fc:8b brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

instance-1-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:4f:e9:a6:f7:89 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0bb80a381c432ef24
    altname device-number-0.0
    inet 10.0.1.36/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3419sec preferred_lft 3419sec
    inet6 fe80::4f:e9ff:fea6:f789/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:a3:a3:0f:6e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
⚠️ Crash Diagnostics

instance-0-dmesg-crashes.log

[    0.074349] pid_max: default: 32768 minimum: 301
[    0.126560] iommu: Default domain type: Translated 
[    0.127305] NetLabel:  unlabeled traffic allowed by default
[    0.134349] PCI: CLS 0 bytes, default 64
[    0.250405] nvme nvme0: 2/0/0 default/read/poll queues
[    0.426627] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.426721] systemd[1]: No hostname configured, using default hostname.
[    0.529107] systemd[1]: Queued start job for default target initrd.target.
[    5.957473] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[   17.992633] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.

instance-1-dmesg-crashes.log

[    0.074768] pid_max: default: 32768 minimum: 301
[    0.127022] iommu: Default domain type: Translated 
[    0.127772] NetLabel:  unlabeled traffic allowed by default
[    0.134768] PCI: CLS 0 bytes, default 64
[    0.192691] nvme nvme0: 2/0/0 default/read/poll queues
[    0.427200] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.427297] systemd[1]: No hostname configured, using default hostname.
[    0.528282] systemd[1]: Queued start job for default target initrd.target.
[    6.786753] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[   18.793282] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
Kernel Console (dmesg)

instance-0-console-output.log (PCI/driver events only)

[    9.989105] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[   10.000363] ena 0000:00:05.0: ENA device version: 0.10
[   10.001156] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[   10.103398] ena 0000:00:05.0: ENA Large LLQ is disabled
[   10.116362] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:84:1f:d8:09:9f
[   10.315040] ena 0000:00:05.0 ens5: renamed from eth0
[   11.740669] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels

instance-1-console-output.log (PCI/driver events only)

[   10.868745] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[   10.879965] ena 0000:00:05.0: ENA device version: 0.10
[   10.880739] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[   10.982669] ena 0000:00:05.0: ENA Large LLQ is disabled
[   10.997820] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:4f:e9:a6:f7:89
[   11.125112] ena 0000:00:05.0 ens5: renamed from eth0
[   12.521508] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels

@github-actions

Copy link
Copy Markdown

Integration Test Failure (Run 23537360123)

Branch: claude/cleanup-udp-prototype-z4UUD | Commit: b22f32d05377d2597b6b4b7d2344bf39bd3c8ccc

failure-summary.json

{
  "failed_step": "deploy_infrastructure",
  "error": "Infrastructure deployment failed",
  "exit_code": 2,
  "timestamp": "2026-03-25T10:59:55.600723Z",
  "sender_instance_id": "",
  "receiver_instance_id": "",
  "commit": "b22f32d05377d2597b6b4b7d2344bf39bd3c8ccc",
  "run_url": "https://github.com/gspivey/dpdk-stdlib-rust/actions/runs/23537360123"
}```

### instance-0-user-data.log (5003 bytes, last 80 lines)

Dependencies resolved.
Nothing to do.
Complete!
which unzip: /usr/bin/unzip
which cargo: MISSING
which clang: /usr/bin/clang
DPDK libs: 656 found
=== Configuring DPDK runtime ===
SSM agent status: active
=== Binding secondary ENI to DPDK ===
Attempt 1: waiting for secondary ENI...
Attempt 2: waiting for secondary ENI...
Attempt 3: waiting for secondary ENI...
Attempt 4: waiting for secondary ENI...
Attempt 5: waiting for secondary ENI...
Attempt 6: waiting for secondary ENI...
Attempt 7: waiting for secondary ENI...
Attempt 8: waiting for secondary ENI...
Attempt 9: waiting for secondary ENI...
Attempt 10: waiting for secondary ENI...
Attempt 11: waiting for secondary ENI...
Attempt 12: waiting for secondary ENI...
Attempt 13: waiting for secondary ENI...
Attempt 14: waiting for secondary ENI...
Attempt 15: waiting for secondary ENI...
Attempt 16: waiting for secondary ENI...
Attempt 17: waiting for secondary ENI...
Attempt 18: waiting for secondary ENI...
Attempt 19: waiting for secondary ENI...
Attempt 20: waiting for secondary ENI...
Attempt 21: waiting for secondary ENI...
Attempt 22: waiting for secondary ENI...
Attempt 23: waiting for secondary ENI...
Attempt 24: waiting for secondary ENI...
Attempt 25: waiting for secondary ENI...
Attempt 26: waiting for secondary ENI...
Attempt 27: waiting for secondary ENI...
Attempt 28: waiting for secondary ENI...
Attempt 29: waiting for secondary ENI...
Attempt 30: waiting for secondary ENI...
Attempt 31: waiting for secondary ENI...
Attempt 32: waiting for secondary ENI...
Attempt 33: waiting for secondary ENI...
Attempt 34: waiting for secondary ENI...
Attempt 35: waiting for secondary ENI...
Attempt 36: waiting for secondary ENI...
Attempt 37: waiting for secondary ENI...
Attempt 38: waiting for secondary ENI...
Attempt 39: waiting for secondary ENI...
Attempt 40: waiting for secondary ENI...
Attempt 41: waiting for secondary ENI...
Attempt 42: waiting for secondary ENI...
Attempt 43: waiting for secondary ENI...
Attempt 44: waiting for secondary ENI...
Attempt 45: waiting for secondary ENI...
Attempt 46: waiting for secondary ENI...
Attempt 47: waiting for secondary ENI...
Attempt 48: waiting for secondary ENI...
Attempt 49: waiting for secondary ENI...
Attempt 50: waiting for secondary ENI...
Attempt 51: waiting for secondary ENI...
Attempt 52: waiting for secondary ENI...
Attempt 53: waiting for secondary ENI...
Attempt 54: waiting for secondary ENI...
Attempt 55: waiting for secondary ENI...
Attempt 56: waiting for secondary ENI...
Attempt 57: waiting for secondary ENI...
Attempt 58: waiting for secondary ENI...
Attempt 59: waiting for secondary ENI...
Attempt 60: waiting for secondary ENI...
=== Downloading DPDK-STDLIB project ===
Completed 256.0 KiB/4.2 MiB (1.4 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/4.2 MiB (2.9 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/4.2 MiB (4.2 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/4.2 MiB (5.6 MiB/s) with 1 file(s) remaining
Completed 1.2 MiB/4.2 MiB (7.0 MiB/s) with 1 file(s) remaining
Completed 1.5 MiB/4.2 MiB (8.3 MiB/s) with 1 file(s) remaining
Completed 1.8 MiB/4.2 MiB (9.6 MiB/s) with 1 file(s) remaining
Completed 2.0 MiB/4.2 MiB (10.9 MiB/s) with 1 file(s) remaining
Completed 2.2 MiB/4.2 MiB (9.3 MiB/s) with 1 file(s) remaining
Completed 2.5 MiB/4.2 MiB (10.2 MiB/s) with 1 file(s) remaining
Completed 2.8 MiB/4.2 MiB (11.1 MiB/s) with 1 file(s) remaining
Completed 3.0 MiB/4.2 MiB (12.0 MiB/s) with 1 file(s) remaining
Completed 3.2 MiB/4.2 MiB (12.8 MiB/s) with 1 file(s) remaining
Completed 3.5 MiB/4.2 MiB (13.6 MiB/s) with 1 file(s) remaining
Completed 3.8 MiB/4.2 MiB (14.4 MiB/s) with 1 file(s) remaining
Completed 4.0 MiB/4.2 MiB (15.2 MiB/s) with 1 file(s) remaining
Completed 4.2 MiB/4.2 MiB (15.8 MiB/s) with 1 file(s) remaining
download: s3://cdk-hnb659fds-assets-121490076680-us-east-1/88577ea9afdacec8f928217dea4dfbf7ae2bc133791bb320c2a77666f0cc298a.zip to tmp/dpdk-stdlib.zip
=== Building project ===
cargo version: cargo 1.94.0 (85eff7c80 2026-01-15)
rustc version: rustc 1.94.0 (4a4ef493e 2026-03-02)
Checking pkg-config for libdpdk...
22.11.6
DPDK found: 22.11.6
error: none of the selected packages contains this feature: echo/dpdk
selected packages: dpdk-sys, dpdk, dpdk-udp, dpdk-tokio, echo, test-client, tokio-echo, plain-echo


### instance-1-user-data.log (5003 bytes, last 80 lines)

Dependencies resolved.
Nothing to do.
Complete!
which unzip: /usr/bin/unzip
which cargo: MISSING
which clang: /usr/bin/clang
DPDK libs: 656 found
=== Configuring DPDK runtime ===
SSM agent status: active
=== Binding secondary ENI to DPDK ===
Attempt 1: waiting for secondary ENI...
Attempt 2: waiting for secondary ENI...
Attempt 3: waiting for secondary ENI...
Attempt 4: waiting for secondary ENI...
Attempt 5: waiting for secondary ENI...
Attempt 6: waiting for secondary ENI...
Attempt 7: waiting for secondary ENI...
Attempt 8: waiting for secondary ENI...
Attempt 9: waiting for secondary ENI...
Attempt 10: waiting for secondary ENI...
Attempt 11: waiting for secondary ENI...
Attempt 12: waiting for secondary ENI...
Attempt 13: waiting for secondary ENI...
Attempt 14: waiting for secondary ENI...
Attempt 15: waiting for secondary ENI...
Attempt 16: waiting for secondary ENI...
Attempt 17: waiting for secondary ENI...
Attempt 18: waiting for secondary ENI...
Attempt 19: waiting for secondary ENI...
Attempt 20: waiting for secondary ENI...
Attempt 21: waiting for secondary ENI...
Attempt 22: waiting for secondary ENI...
Attempt 23: waiting for secondary ENI...
Attempt 24: waiting for secondary ENI...
Attempt 25: waiting for secondary ENI...
Attempt 26: waiting for secondary ENI...
Attempt 27: waiting for secondary ENI...
Attempt 28: waiting for secondary ENI...
Attempt 29: waiting for secondary ENI...
Attempt 30: waiting for secondary ENI...
Attempt 31: waiting for secondary ENI...
Attempt 32: waiting for secondary ENI...
Attempt 33: waiting for secondary ENI...
Attempt 34: waiting for secondary ENI...
Attempt 35: waiting for secondary ENI...
Attempt 36: waiting for secondary ENI...
Attempt 37: waiting for secondary ENI...
Attempt 38: waiting for secondary ENI...
Attempt 39: waiting for secondary ENI...
Attempt 40: waiting for secondary ENI...
Attempt 41: waiting for secondary ENI...
Attempt 42: waiting for secondary ENI...
Attempt 43: waiting for secondary ENI...
Attempt 44: waiting for secondary ENI...
Attempt 45: waiting for secondary ENI...
Attempt 46: waiting for secondary ENI...
Attempt 47: waiting for secondary ENI...
Attempt 48: waiting for secondary ENI...
Attempt 49: waiting for secondary ENI...
Attempt 50: waiting for secondary ENI...
Attempt 51: waiting for secondary ENI...
Attempt 52: waiting for secondary ENI...
Attempt 53: waiting for secondary ENI...
Attempt 54: waiting for secondary ENI...
Attempt 55: waiting for secondary ENI...
Attempt 56: waiting for secondary ENI...
Attempt 57: waiting for secondary ENI...
Attempt 58: waiting for secondary ENI...
Attempt 59: waiting for secondary ENI...
Attempt 60: waiting for secondary ENI...
=== Downloading DPDK-STDLIB project ===
Completed 256.0 KiB/4.2 MiB (2.8 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/4.2 MiB (5.5 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/4.2 MiB (8.2 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/4.2 MiB (10.7 MiB/s) with 1 file(s) remaining
Completed 1.2 MiB/4.2 MiB (13.2 MiB/s) with 1 file(s) remaining
Completed 1.5 MiB/4.2 MiB (15.6 MiB/s) with 1 file(s) remaining
Completed 1.8 MiB/4.2 MiB (18.0 MiB/s) with 1 file(s) remaining
Completed 2.0 MiB/4.2 MiB (20.2 MiB/s) with 1 file(s) remaining
Completed 2.2 MiB/4.2 MiB (22.5 MiB/s) with 1 file(s) remaining
Completed 2.5 MiB/4.2 MiB (24.6 MiB/s) with 1 file(s) remaining
Completed 2.8 MiB/4.2 MiB (26.7 MiB/s) with 1 file(s) remaining
Completed 3.0 MiB/4.2 MiB (28.8 MiB/s) with 1 file(s) remaining
Completed 3.2 MiB/4.2 MiB (30.8 MiB/s) with 1 file(s) remaining
Completed 3.5 MiB/4.2 MiB (32.8 MiB/s) with 1 file(s) remaining
Completed 3.8 MiB/4.2 MiB (34.8 MiB/s) with 1 file(s) remaining
Completed 4.0 MiB/4.2 MiB (36.7 MiB/s) with 1 file(s) remaining
Completed 4.2 MiB/4.2 MiB (38.0 MiB/s) with 1 file(s) remaining
download: s3://cdk-hnb659fds-assets-121490076680-us-east-1/88577ea9afdacec8f928217dea4dfbf7ae2bc133791bb320c2a77666f0cc298a.zip to tmp/dpdk-stdlib.zip
=== Building project ===
cargo version: cargo 1.94.0 (85eff7c80 2026-01-15)
rustc version: rustc 1.94.0 (4a4ef493e 2026-03-02)
Checking pkg-config for libdpdk...
22.11.6
DPDK found: 22.11.6
error: none of the selected packages contains this feature: echo/dpdk
selected packages: dpdk-sys, dpdk, dpdk-udp, dpdk-tokio, echo, test-client, tokio-echo, plain-echo


### instance-0-console-output.log (13371 bytes, last 80 lines)

[ 9.046252] cloud-init[1719]: Cloud-init v. 22.2.2 running 'modules:final' at Wed, 25 Mar 2026 10:57:17 +0000. Up 8.98 seconds.
[ 9.117449] cloud-init[1719]: === User-data starting at Wed Mar 25 10:57:17 UTC 2026 ===
[ 9.603055] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 9.607855] Bridge firewalling registered
[ 9.824590] Initializing XFRM netlink socket
[ 13.515870] cloud-init[1719]: Amazon Linux 2023 repository 13 MB/s | 56 MB 00:04

Amazon Linux 2023.10.20260302
Kernel 6.1.163-186.299.amzn2023.x86_64 on an x86_64 (-)

ip-10-0-1-97 login: [ 26.753396] cloud-init[1719]: Amazon Linux 2023 Kernel Livepatch repository 14 kB/s | 30 kB 00:02
[ 27.765908] cloud-init[1719]: Package aws-cfn-bootstrap-2.0-38.amzn2023.noarch is already installed.
[ 27.869397] cloud-init[1719]: Dependencies resolved.
[ 27.907804] cloud-init[1719]: Nothing to do.
[ 27.909542] cloud-init[1719]: Complete!
[ 27.953900] cloud-init[1719]: === Using pre-built DPDK AMI ===
[ 27.956435] cloud-init[1719]: === Ensuring SSM agent is installed and running ===
[ 35.176442] zram_generator::config[1943]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 35.363176] cloud-init[1719]: SSM agent status: active
[ 35.846942] cloud-init[1719]: Last metadata expiration check: 0:00:09 ago on Wed Mar 25 10:57:36 2026.
[ 35.896189] cloud-init[1719]: Package clang-devel-15.0.7-3.amzn2023.0.4.x86_64 is already installed.
[ 35.901272] cloud-init[1719]: Package unzip-6.0-68.amzn2023.0.1.x86_64 is already installed.
[ 36.008898] cloud-init[1719]: Dependencies resolved.
[ 36.071229] cloud-init[1719]: Nothing to do.
[ 36.073396] cloud-init[1719]: Complete!
[ 36.142669] cloud-init[1719]: which unzip: /usr/bin/unzip
[ 36.146176] cloud-init[1719]: which cargo: MISSING
[ 36.149887] cloud-init[1719]: which clang: /usr/bin/clang
[ 36.225936] cloud-init[1719]: DPDK libs: 656 found
[ 36.228184] cloud-init[1719]: === Configuring DPDK runtime ===
[ 36.246299] cloud-init[1719]: SSM agent status: active
[ 36.247996] cloud-init[1719]: === Binding secondary ENI to DPDK ===
[ 36.267428] cloud-init[1719]: Attempt 1: waiting for secondary ENI...
[ 37.288626] cloud-init[1719]: Attempt 2: waiting for secondary ENI...
[ 38.309064] cloud-init[1719]: Attempt 3: waiting for secondary ENI...
[ 39.329326] cloud-init[1719]: Attempt 4: waiting for secondary ENI...
[ 40.348236] cloud-init[1719]: Attempt 5: waiting for secondary ENI...
[ 41.372873] cloud-init[1719]: Attempt 6: waiting for secondary ENI...
[ 42.392052] cloud-init[1719]: Attempt 7: waiting for secondary ENI...
[ 43.413480] cloud-init[1719]: Attempt 8: waiting for secondary ENI...
[ 44.436612] cloud-init[1719]: Attempt 9: waiting for secondary ENI...
[ 45.456102] cloud-init[1719]: Attempt 10: waiting for secondary ENI...
[ 46.475501] cloud-init[1719]: Attempt 11: waiting for secondary ENI...
[ 47.495525] cloud-init[1719]: Attempt 12: waiting for secondary ENI...
[ 48.516296] cloud-init[1719]: Attempt 13: waiting for secondary ENI...
[ 49.535981] cloud-init[1719]: Attempt 14: waiting for secondary ENI...
[ 50.555368] cloud-init[1719]: Attempt 15: waiting for secondary ENI...
[ 51.577855] cloud-init[1719]: Attempt 16: waiting for secondary ENI...
[ 52.597463] cloud-init[1719]: Attempt 17: waiting for secondary ENI...
[ 53.616871] cloud-init[1719]: Attempt 18: waiting for secondary ENI...
[ 54.637602] cloud-init[1719]: Attempt 19: waiting for secondary ENI...
[ 55.660286] cloud-init[1719]: Attempt 20: waiting for secondary ENI...
[ 56.680119] cloud-init[1719]: Attempt 21: waiting for secondary ENI...
[ 57.701993] cloud-init[1719]: Attempt 22: waiting for secondary ENI...
[ 58.720346] cloud-init[1719]: Attempt 23: waiting for secondary ENI...
[ 59.739069] cloud-init[1719]: Attempt 24: waiting for secondary ENI...
[ 60.757782] cloud-init[1719]: Attempt 25: waiting for secondary ENI...
[ 61.776950] cloud-init[1719]: Attempt 26: waiting for secondary ENI...
[ 62.795577] cloud-init[1719]: Attempt 27: waiting for secondary ENI...
[ 63.815027] cloud-init[1719]: Attempt 28: waiting for secondary ENI...
[ 64.836388] cloud-init[1719]: Attempt 29: waiting for secondary ENI...
[ 65.855694] cloud-init[1719]: Attempt 30: waiting for secondary ENI...
[ 66.874744] cloud-init[1719]: Attempt 31: waiting for secondary ENI...
[ 67.894718] cloud-init[1719]: Attempt 32: waiting for secondary ENI...
[ 68.916271] cloud-init[1719]: Attempt 33: waiting for secondary ENI...
[ 69.939024] cloud-init[1719]: Attempt 34: waiting for secondary ENI...
[ 70.959877] cloud-init[1719]: Attempt 35: waiting for secondary ENI...
[ 71.979676] cloud-init[1719]: Attempt 36: waiting for secondary ENI...
[ 73.001207] cloud-init[1719]: Attempt 37: waiting for secondary ENI...
[ 74.021002] cloud-init[1719]: Attempt 38: waiting for secondary ENI...
[ 75.040995] cloud-init[1719]: Attempt 39: waiting for secondary ENI...
[ 76.062740] cloud-init[1719]: Attempt 40: waiting for secondary ENI...
[ 77.082433] cloud-init[1719]: Attempt 41: waiting for secondary ENI...
[ 78.110078] cloud-init[1719]: Attempt 42: waiting for secondary ENI...
[ 79.129958] cloud-init[1719]: Attempt 43: waiting for secondary ENI...
[ 80.153232] cloud-init[1719]: Attempt 44: waiting for secondary ENI...
[ 81.172637] cloud-init[1719]: Attempt 45: waiting for secondary ENI...
[ 82.193464] cloud-init[1719]: Attempt 46: waiting for secondary ENI...
[ 83.213098] cloud-init[1719]: Attempt 47: waiting for secondary ENI...
[ 84.232360] cloud-init[1719]: Attempt 48: waiting for secondary ENI...


### instance-1-console-output.log (13727 bytes, last 80 lines)

Amazon Linux 2023.10.20260302
Kernel 6.1.163-186.299.amzn2023.x86_64 on an x86_64 (-)

ip-10-0-1-82 login: [ 25.283735] cloud-init[1733]: Amazon Linux 2023 Kernel Livepatch repository 290 kB/s | 30 kB 00:00
[ 26.357458] cloud-init[1733]: Package aws-cfn-bootstrap-2.0-38.amzn2023.noarch is already installed.
[ 26.480172] cloud-init[1733]: Dependencies resolved.
[ 26.519630] cloud-init[1733]: Nothing to do.
[ 26.521677] cloud-init[1733]: Complete!
[ 26.564106] cloud-init[1733]: === Using pre-built DPDK AMI ===
[ 26.566639] cloud-init[1733]: === Ensuring SSM agent is installed and running ===
[ 33.659976] zram_generator::config[1954]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 33.954615] cloud-init[1733]: SSM agent status: active
[ 34.334704] cloud-init[1733]: Last metadata expiration check: 0:00:09 ago on Wed Mar 25 10:57:36 2026.
[ 34.368424] cloud-init[1733]: Package clang-devel-15.0.7-3.amzn2023.0.4.x86_64 is already installed.
[ 34.373165] cloud-init[1733]: Package unzip-6.0-68.amzn2023.0.1.x86_64 is already installed.
[ 34.440326] cloud-init[1733]: Dependencies resolved.
[ 34.482937] cloud-init[1733]: Nothing to do.
[ 34.484930] cloud-init[1733]: Complete!
[ 34.548695] cloud-init[1733]: which unzip: /usr/bin/unzip
[ 34.552505] cloud-init[1733]: which cargo: MISSING
[ 34.556491] cloud-init[1733]: which clang: /usr/bin/clang
[ 34.606719] cloud-init[1733]: DPDK libs: 656 found
[ 34.609009] cloud-init[1733]: === Configuring DPDK runtime ===
[ 34.627249] cloud-init[1733]: SSM agent status: active
[ 34.629653] cloud-init[1733]: === Binding secondary ENI to DPDK ===
[ 34.653345] cloud-init[1733]: Attempt 1: waiting for secondary ENI...
[ 35.677538] cloud-init[1733]: Attempt 2: waiting for secondary ENI...
[ 36.698151] cloud-init[1733]: Attempt 3: waiting for secondary ENI...
[ 37.717377] cloud-init[1733]: Attempt 4: waiting for secondary ENI...
[ 38.737597] cloud-init[1733]: Attempt 5: waiting for secondary ENI...
[ 39.757282] cloud-init[1733]: Attempt 6: waiting for secondary ENI...
[ 40.777489] cloud-init[1733]: Attempt 7: waiting for secondary ENI...
[ 41.797748] cloud-init[1733]: Attempt 8: waiting for secondary ENI...
[ 42.817413] cloud-init[1733]: Attempt 9: waiting for secondary ENI...
[ 43.838737] cloud-init[1733]: Attempt 10: waiting for secondary ENI...
[ 44.860625] cloud-init[1733]: Attempt 11: waiting for secondary ENI...
[ 45.880344] cloud-init[1733]: Attempt 12: waiting for secondary ENI...
[ 46.902193] cloud-init[1733]: Attempt 13: waiting for secondary ENI...
[ 47.922713] cloud-init[1733]: Attempt 14: waiting for secondary ENI...
[ 48.942723] cloud-init[1733]: Attempt 15: waiting for secondary ENI...
[ 49.962525] cloud-init[1733]: Attempt 16: waiting for secondary ENI...
[ 50.983075] cloud-init[1733]: Attempt 17: waiting for secondary ENI...
[ 52.004368] cloud-init[1733]: Attempt 18: waiting for secondary ENI...
[ 53.024014] cloud-init[1733]: Attempt 19: waiting for secondary ENI...
[ 54.043812] cloud-init[1733]: Attempt 20: waiting for secondary ENI...
[ 55.066198] cloud-init[1733]: Attempt 21: waiting for secondary ENI...
[ 56.085413] cloud-init[1733]: Attempt 22: waiting for secondary ENI...
[ 57.104577] cloud-init[1733]: Attempt 23: waiting for secondary ENI...
[ 58.124354] cloud-init[1733]: Attempt 24: waiting for secondary ENI...
[ 59.143829] cloud-init[1733]: Attempt 25: waiting for secondary ENI...
[ 60.165331] cloud-init[1733]: Attempt 26: waiting for secondary ENI...
[ 61.184435] cloud-init[1733]: Attempt 27: waiting for secondary ENI...
[ 62.204194] cloud-init[1733]: Attempt 28: waiting for secondary ENI...
[ 63.223661] cloud-init[1733]: Attempt 29: waiting for secondary ENI...
[ 64.244710] cloud-init[1733]: Attempt 30: waiting for secondary ENI...
[ 65.263900] cloud-init[1733]: Attempt 31: waiting for secondary ENI...
[ 66.285963] cloud-init[1733]: Attempt 32: waiting for secondary ENI...
2026/03/25 10:58:18Z: Amazon SSM Agent v3.3.3598.0 is running
2026/03/25 10:58:18Z: OsProductName: Amazon Linux
2026/03/25 10:58:18Z: OsVersion: 2023
[ 67.305610] cloud-init[1733]: Attempt 33: waiting for secondary ENI...
[ 68.324938] cloud-init[1733]: Attempt 34: waiting for secondary ENI...
[ 69.344960] cloud-init[1733]: Attempt 35: waiting for secondary ENI...
[ 70.365097] cloud-init[1733]: Attempt 36: waiting for secondary ENI...
[ 71.385253] cloud-init[1733]: Attempt 37: waiting for secondary ENI...
[ 72.408839] cloud-init[1733]: Attempt 38: waiting for secondary ENI...
[ 73.429038] cloud-init[1733]: Attempt 39: waiting for secondary ENI...
[ 74.448442] cloud-init[1733]: Attempt 40: waiting for secondary ENI...
[ 75.472509] cloud-init[1733]: Attempt 41: waiting for secondary ENI...
[ 76.492521] cloud-init[1733]: Attempt 42: waiting for secondary ENI...
[ 77.515086] cloud-init[1733]: Attempt 43: waiting for secondary ENI...
[ 78.536131] cloud-init[1733]: Attempt 44: waiting for secondary ENI...
[ 79.555285] cloud-init[1733]: Attempt 45: waiting for secondary ENI...
[ 80.579640] cloud-init[1733]: Attempt 46: waiting for secondary ENI...
[ 81.599534] cloud-init[1733]: Attempt 47: waiting for secondary ENI...
[ 82.618888] cloud-init[1733]: Attempt 48: waiting for secondary ENI...
[ 83.639319] cloud-init[1733]: Attempt 49: waiting for secondary ENI...
[ 84.658695] cloud-init[1733]: Attempt 50: waiting for secondary ENI...
[ 85.677578] cloud-init[1733]: Attempt 51: waiting for secondary ENI...


### All instance-logs files

total 84
drwxr-xr-x 2 runner runner 4096 Mar 25 10:59 .
drwxr-xr-x 17 runner runner 4096 Mar 25 10:59 ..
-rw-r--r-- 1 runner runner 354 Mar 25 10:59 failure-summary.json
-rw-r--r-- 1 runner runner 13 Mar 25 10:59 instance-0-build-listing.log
-rw-r--r-- 1 runner runner 13371 Mar 25 10:59 instance-0-console-output.log
-rw-r--r-- 1 runner runner 1327 Mar 25 10:59 instance-0-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1050 Mar 25 10:59 instance-0-network-interfaces.log
-rw-r--r-- 1 runner runner 5003 Mar 25 10:59 instance-0-user-data.log
-rw-r--r-- 1 runner runner 13 Mar 25 10:59 instance-1-build-listing.log
-rw-r--r-- 1 runner runner 13727 Mar 25 10:59 instance-1-console-output.log
-rw-r--r-- 1 runner runner 1327 Mar 25 10:59 instance-1-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1050 Mar 25 10:59 instance-1-network-interfaces.log
-rw-r--r-- 1 runner runner 5003 Mar 25 10:59 instance-1-user-data.log

@github-actions

Copy link
Copy Markdown

❌ Integration Tests Failed (Run 23537360123)

Branch: claude/cleanup-udp-prototype-z4UUD | Commit: b22f32d0

Test Results

Application Logs (last 20 lines)

Full Application Logs (last 200 lines each)
Network & PCI State

instance-0-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:50:78:b7:a0:27 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-050a553f519051af0
    altname device-number-0.0
    inet 10.0.1.97/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3474sec preferred_lft 3474sec
    inet6 fe80::50:78ff:feb7:a027/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:06:33:67:f1 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

instance-1-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:49:3d:6b:52:25 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-05d405b9a64069c1d
    altname device-number-0.0
    inet 10.0.1.82/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3453sec preferred_lft 3453sec
    inet6 fe80::49:3dff:fe6b:5225/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:73:d2:13:1f brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
⚠️ Crash Diagnostics

instance-0-dmesg-crashes.log

[    0.073627] pid_max: default: 32768 minimum: 301
[    0.125776] iommu: Default domain type: Translated 
[    0.126531] NetLabel:  unlabeled traffic allowed by default
[    0.134742] PCI: CLS 0 bytes, default 64
[    0.206380] nvme nvme0: 2/0/0 default/read/poll queues
[    0.419762] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.419858] systemd[1]: No hostname configured, using default hostname.
[    0.517929] systemd[1]: Queued start job for default target initrd.target.
[    2.141876] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    9.603055] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.

instance-1-dmesg-crashes.log

[    0.073254] pid_max: default: 32768 minimum: 301
[    0.125432] iommu: Default domain type: Translated 
[    0.126165] NetLabel:  unlabeled traffic allowed by default
[    0.133254] PCI: CLS 0 bytes, default 64
[    0.233056] nvme nvme0: 2/0/0 default/read/poll queues
[    0.418676] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.418769] systemd[1]: No hostname configured, using default hostname.
[    0.517620] systemd[1]: Queued start job for default target initrd.target.
[    2.463669] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[   10.384220] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
Kernel Console (dmesg)

instance-0-console-output.log (PCI/driver events only)

[    4.702442] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.713801] ena 0000:00:05.0: ENA device version: 0.10
[    4.714550] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.815026] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.827189] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:50:78:b7:a0:27
[    4.975082] ena 0000:00:05.0 ens5: renamed from eth0
[    6.067546] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels

instance-1-console-output.log (PCI/driver events only)

[    4.898622] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.905563] ena 0000:00:05.0: ENA device version: 0.10
[    4.906317] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    5.025098] ena 0000:00:05.0: ENA Large LLQ is disabled
[    5.037178] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:49:3d:6b:52:25
[    5.135181] ena 0000:00:05.0 ens5: renamed from eth0
[    6.172229] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels

@github-actions

Copy link
Copy Markdown

Integration Test Failure (Run 23538977178)

Branch: claude/cleanup-udp-prototype-z4UUD | Commit: b22f32d05377d2597b6b4b7d2344bf39bd3c8ccc

failure-summary.json

{
  "failed_step": "deploy_infrastructure",
  "error": "Infrastructure deployment failed",
  "exit_code": 2,
  "timestamp": "2026-03-25T11:43:11.728416Z",
  "sender_instance_id": "",
  "receiver_instance_id": "",
  "commit": "b22f32d05377d2597b6b4b7d2344bf39bd3c8ccc",
  "run_url": "https://github.com/gspivey/dpdk-stdlib-rust/actions/runs/23538977178"
}```

### instance-0-user-data.log (5003 bytes, last 80 lines)

Dependencies resolved.
Nothing to do.
Complete!
which unzip: /usr/bin/unzip
which cargo: MISSING
which clang: /usr/bin/clang
DPDK libs: 656 found
=== Configuring DPDK runtime ===
SSM agent status: active
=== Binding secondary ENI to DPDK ===
Attempt 1: waiting for secondary ENI...
Attempt 2: waiting for secondary ENI...
Attempt 3: waiting for secondary ENI...
Attempt 4: waiting for secondary ENI...
Attempt 5: waiting for secondary ENI...
Attempt 6: waiting for secondary ENI...
Attempt 7: waiting for secondary ENI...
Attempt 8: waiting for secondary ENI...
Attempt 9: waiting for secondary ENI...
Attempt 10: waiting for secondary ENI...
Attempt 11: waiting for secondary ENI...
Attempt 12: waiting for secondary ENI...
Attempt 13: waiting for secondary ENI...
Attempt 14: waiting for secondary ENI...
Attempt 15: waiting for secondary ENI...
Attempt 16: waiting for secondary ENI...
Attempt 17: waiting for secondary ENI...
Attempt 18: waiting for secondary ENI...
Attempt 19: waiting for secondary ENI...
Attempt 20: waiting for secondary ENI...
Attempt 21: waiting for secondary ENI...
Attempt 22: waiting for secondary ENI...
Attempt 23: waiting for secondary ENI...
Attempt 24: waiting for secondary ENI...
Attempt 25: waiting for secondary ENI...
Attempt 26: waiting for secondary ENI...
Attempt 27: waiting for secondary ENI...
Attempt 28: waiting for secondary ENI...
Attempt 29: waiting for secondary ENI...
Attempt 30: waiting for secondary ENI...
Attempt 31: waiting for secondary ENI...
Attempt 32: waiting for secondary ENI...
Attempt 33: waiting for secondary ENI...
Attempt 34: waiting for secondary ENI...
Attempt 35: waiting for secondary ENI...
Attempt 36: waiting for secondary ENI...
Attempt 37: waiting for secondary ENI...
Attempt 38: waiting for secondary ENI...
Attempt 39: waiting for secondary ENI...
Attempt 40: waiting for secondary ENI...
Attempt 41: waiting for secondary ENI...
Attempt 42: waiting for secondary ENI...
Attempt 43: waiting for secondary ENI...
Attempt 44: waiting for secondary ENI...
Attempt 45: waiting for secondary ENI...
Attempt 46: waiting for secondary ENI...
Attempt 47: waiting for secondary ENI...
Attempt 48: waiting for secondary ENI...
Attempt 49: waiting for secondary ENI...
Attempt 50: waiting for secondary ENI...
Attempt 51: waiting for secondary ENI...
Attempt 52: waiting for secondary ENI...
Attempt 53: waiting for secondary ENI...
Attempt 54: waiting for secondary ENI...
Attempt 55: waiting for secondary ENI...
Attempt 56: waiting for secondary ENI...
Attempt 57: waiting for secondary ENI...
Attempt 58: waiting for secondary ENI...
Attempt 59: waiting for secondary ENI...
Attempt 60: waiting for secondary ENI...
=== Downloading DPDK-STDLIB project ===
Completed 256.0 KiB/4.2 MiB (3.1 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/4.2 MiB (6.0 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/4.2 MiB (8.9 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/4.2 MiB (11.6 MiB/s) with 1 file(s) remaining
Completed 1.2 MiB/4.2 MiB (14.3 MiB/s) with 1 file(s) remaining
Completed 1.5 MiB/4.2 MiB (16.8 MiB/s) with 1 file(s) remaining
Completed 1.8 MiB/4.2 MiB (19.4 MiB/s) with 1 file(s) remaining
Completed 2.0 MiB/4.2 MiB (21.7 MiB/s) with 1 file(s) remaining
Completed 2.2 MiB/4.2 MiB (23.9 MiB/s) with 1 file(s) remaining
Completed 2.5 MiB/4.2 MiB (26.0 MiB/s) with 1 file(s) remaining
Completed 2.8 MiB/4.2 MiB (28.3 MiB/s) with 1 file(s) remaining
Completed 3.0 MiB/4.2 MiB (30.4 MiB/s) with 1 file(s) remaining
Completed 3.2 MiB/4.2 MiB (32.5 MiB/s) with 1 file(s) remaining
Completed 3.5 MiB/4.2 MiB (34.6 MiB/s) with 1 file(s) remaining
Completed 3.8 MiB/4.2 MiB (36.6 MiB/s) with 1 file(s) remaining
Completed 4.0 MiB/4.2 MiB (38.6 MiB/s) with 1 file(s) remaining
Completed 4.2 MiB/4.2 MiB (39.9 MiB/s) with 1 file(s) remaining
download: s3://cdk-hnb659fds-assets-121490076680-us-east-1/88577ea9afdacec8f928217dea4dfbf7ae2bc133791bb320c2a77666f0cc298a.zip to tmp/dpdk-stdlib.zip
=== Building project ===
cargo version: cargo 1.94.0 (85eff7c80 2026-01-15)
rustc version: rustc 1.94.0 (4a4ef493e 2026-03-02)
Checking pkg-config for libdpdk...
22.11.6
DPDK found: 22.11.6
error: none of the selected packages contains this feature: echo/dpdk
selected packages: dpdk-sys, dpdk, dpdk-udp, dpdk-tokio, echo, test-client, tokio-echo, plain-echo


### instance-1-user-data.log (5003 bytes, last 80 lines)

Dependencies resolved.
Nothing to do.
Complete!
which unzip: /usr/bin/unzip
which cargo: MISSING
which clang: /usr/bin/clang
DPDK libs: 656 found
=== Configuring DPDK runtime ===
SSM agent status: active
=== Binding secondary ENI to DPDK ===
Attempt 1: waiting for secondary ENI...
Attempt 2: waiting for secondary ENI...
Attempt 3: waiting for secondary ENI...
Attempt 4: waiting for secondary ENI...
Attempt 5: waiting for secondary ENI...
Attempt 6: waiting for secondary ENI...
Attempt 7: waiting for secondary ENI...
Attempt 8: waiting for secondary ENI...
Attempt 9: waiting for secondary ENI...
Attempt 10: waiting for secondary ENI...
Attempt 11: waiting for secondary ENI...
Attempt 12: waiting for secondary ENI...
Attempt 13: waiting for secondary ENI...
Attempt 14: waiting for secondary ENI...
Attempt 15: waiting for secondary ENI...
Attempt 16: waiting for secondary ENI...
Attempt 17: waiting for secondary ENI...
Attempt 18: waiting for secondary ENI...
Attempt 19: waiting for secondary ENI...
Attempt 20: waiting for secondary ENI...
Attempt 21: waiting for secondary ENI...
Attempt 22: waiting for secondary ENI...
Attempt 23: waiting for secondary ENI...
Attempt 24: waiting for secondary ENI...
Attempt 25: waiting for secondary ENI...
Attempt 26: waiting for secondary ENI...
Attempt 27: waiting for secondary ENI...
Attempt 28: waiting for secondary ENI...
Attempt 29: waiting for secondary ENI...
Attempt 30: waiting for secondary ENI...
Attempt 31: waiting for secondary ENI...
Attempt 32: waiting for secondary ENI...
Attempt 33: waiting for secondary ENI...
Attempt 34: waiting for secondary ENI...
Attempt 35: waiting for secondary ENI...
Attempt 36: waiting for secondary ENI...
Attempt 37: waiting for secondary ENI...
Attempt 38: waiting for secondary ENI...
Attempt 39: waiting for secondary ENI...
Attempt 40: waiting for secondary ENI...
Attempt 41: waiting for secondary ENI...
Attempt 42: waiting for secondary ENI...
Attempt 43: waiting for secondary ENI...
Attempt 44: waiting for secondary ENI...
Attempt 45: waiting for secondary ENI...
Attempt 46: waiting for secondary ENI...
Attempt 47: waiting for secondary ENI...
Attempt 48: waiting for secondary ENI...
Attempt 49: waiting for secondary ENI...
Attempt 50: waiting for secondary ENI...
Attempt 51: waiting for secondary ENI...
Attempt 52: waiting for secondary ENI...
Attempt 53: waiting for secondary ENI...
Attempt 54: waiting for secondary ENI...
Attempt 55: waiting for secondary ENI...
Attempt 56: waiting for secondary ENI...
Attempt 57: waiting for secondary ENI...
Attempt 58: waiting for secondary ENI...
Attempt 59: waiting for secondary ENI...
Attempt 60: waiting for secondary ENI...
=== Downloading DPDK-STDLIB project ===
Completed 256.0 KiB/4.2 MiB (1.1 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/4.2 MiB (2.3 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/4.2 MiB (3.3 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/4.2 MiB (4.4 MiB/s) with 1 file(s) remaining
Completed 1.2 MiB/4.2 MiB (5.5 MiB/s) with 1 file(s) remaining
Completed 1.5 MiB/4.2 MiB (6.5 MiB/s) with 1 file(s) remaining
Completed 1.8 MiB/4.2 MiB (7.5 MiB/s) with 1 file(s) remaining
Completed 2.0 MiB/4.2 MiB (8.5 MiB/s) with 1 file(s) remaining
Completed 2.2 MiB/4.2 MiB (8.6 MiB/s) with 1 file(s) remaining
Completed 2.5 MiB/4.2 MiB (9.5 MiB/s) with 1 file(s) remaining
Completed 2.8 MiB/4.2 MiB (10.3 MiB/s) with 1 file(s) remaining
Completed 3.0 MiB/4.2 MiB (11.1 MiB/s) with 1 file(s) remaining
Completed 3.2 MiB/4.2 MiB (11.9 MiB/s) with 1 file(s) remaining
Completed 3.5 MiB/4.2 MiB (12.6 MiB/s) with 1 file(s) remaining
Completed 3.8 MiB/4.2 MiB (13.4 MiB/s) with 1 file(s) remaining
Completed 4.0 MiB/4.2 MiB (14.0 MiB/s) with 1 file(s) remaining
Completed 4.2 MiB/4.2 MiB (14.6 MiB/s) with 1 file(s) remaining
download: s3://cdk-hnb659fds-assets-121490076680-us-east-1/88577ea9afdacec8f928217dea4dfbf7ae2bc133791bb320c2a77666f0cc298a.zip to tmp/dpdk-stdlib.zip
=== Building project ===
cargo version: cargo 1.94.0 (85eff7c80 2026-01-15)
rustc version: rustc 1.94.0 (4a4ef493e 2026-03-02)
Checking pkg-config for libdpdk...
22.11.6
DPDK found: 22.11.6
error: none of the selected packages contains this feature: echo/dpdk
selected packages: dpdk-sys, dpdk, dpdk-udp, dpdk-tokio, echo, test-client, tokio-echo, plain-echo


### instance-0-console-output.log (16403 bytes, last 80 lines)

[ 63.619939] cloud-init[1735]: which unzip: /usr/bin/unzip
[ 63.623058] cloud-init[1735]: which cargo: MISSING
[ 63.626112] cloud-init[1735]: which clang: /usr/bin/clang
[ 63.671500] cloud-init[1735]: DPDK libs: 656 found
[ 63.672802] cloud-init[1735]: === Configuring DPDK runtime ===
[ 63.689954] cloud-init[1735]: SSM agent status: active
[ 63.691379] cloud-init[1735]: === Binding secondary ENI to DPDK ===
[ 63.713114] cloud-init[1735]: Attempt 1: waiting for secondary ENI...
[ 64.732937] cloud-init[1735]: Attempt 2: waiting for secondary ENI...
[ 65.750516] cloud-init[1735]: Attempt 3: waiting for secondary ENI...
[ 66.768797] cloud-init[1735]: Attempt 4: waiting for secondary ENI...
[ 67.788656] cloud-init[1735]: Attempt 5: waiting for secondary ENI...
[ 68.810981] cloud-init[1735]: Attempt 6: waiting for secondary ENI...
[ 69.830606] cloud-init[1735]: Attempt 7: waiting for secondary ENI...
[ 70.849199] cloud-init[1735]: Attempt 8: waiting for secondary ENI...
[ 71.869002] cloud-init[1735]: Attempt 9: waiting for secondary ENI...
[ 72.890690] cloud-init[1735]: Attempt 10: waiting for secondary ENI...
[ 73.909900] cloud-init[1735]: Attempt 11: waiting for secondary ENI...
[ 74.929202] cloud-init[1735]: Attempt 12: waiting for secondary ENI...
[ 75.948667] cloud-init[1735]: Attempt 13: waiting for secondary ENI...
[ 76.968859] cloud-init[1735]: Attempt 14: waiting for secondary ENI...
[ 77.988921] cloud-init[1735]: Attempt 15: waiting for secondary ENI...
[ 79.008958] cloud-init[1735]: Attempt 16: waiting for secondary ENI...
[ 80.028884] cloud-init[1735]: Attempt 17: waiting for secondary ENI...
[ 81.049206] cloud-init[1735]: Attempt 18: waiting for secondary ENI...
[ 82.069741] cloud-init[1735]: Attempt 19: waiting for secondary ENI...
[ 83.091848] cloud-init[1735]: Attempt 20: waiting for secondary ENI...
[ 84.111390] cloud-init[1735]: Attempt 21: waiting for secondary ENI...
[ 85.132325] cloud-init[1735]: Attempt 22: waiting for secondary ENI...
[ 86.151654] cloud-init[1735]: Attempt 23: waiting for secondary ENI...
[ 87.173814] cloud-init[1735]: Attempt 24: waiting for secondary ENI...
[ 88.192983] cloud-init[1735]: Attempt 25: waiting for secondary ENI...
[ 89.214125] cloud-init[1735]: Attempt 26: waiting for secondary ENI...
2026/03/25 11:41:16Z: Amazon SSM Agent v3.3.3598.0 is running
2026/03/25 11:41:16Z: OsProductName: Amazon Linux
2026/03/25 11:41:16Z: OsVersion: 2023
[ 90.233785] cloud-init[1735]: Attempt 27: waiting for secondary ENI...
[ 91.253525] cloud-init[1735]: Attempt 28: waiting for secondary ENI...
[ 92.272898] cloud-init[1735]: Attempt 29: waiting for secondary ENI...
[ 93.294912] cloud-init[1735]: Attempt 30: waiting for secondary ENI...
[ 94.314401] cloud-init[1735]: Attempt 31: waiting for secondary ENI...
[ 95.334266] cloud-init[1735]: Attempt 32: waiting for secondary ENI...
[ 96.357744] cloud-init[1735]: Attempt 33: waiting for secondary ENI...
[ 97.380943] cloud-init[1735]: Attempt 34: waiting for secondary ENI...
[ 98.395402] cloud-init[1735]: Attempt 35: waiting for secondary ENI...
[ 99.415370] cloud-init[1735]: Attempt 36: waiting for secondary ENI...
[ 100.435294] cloud-init[1735]: Attempt 37: waiting for secondary ENI...
[ 101.455037] cloud-init[1735]: Attempt 38: waiting for secondary ENI...
[ 102.477835] cloud-init[1735]: Attempt 39: waiting for secondary ENI...
[ 103.505196] cloud-init[1735]: Attempt 40: waiting for secondary ENI...
[ 104.524346] cloud-init[1735]: Attempt 41: waiting for secondary ENI...
[ 105.543552] cloud-init[1735]: Attempt 42: waiting for secondary ENI...
[ 106.564799] cloud-init[1735]: Attempt 43: waiting for secondary ENI...
[ 107.584269] cloud-init[1735]: Attempt 44: waiting for secondary ENI...
[ 108.603943] cloud-init[1735]: Attempt 45: waiting for secondary ENI...
[ 109.624371] cloud-init[1735]: Attempt 46: waiting for secondary ENI...
[ 110.645002] cloud-init[1735]: Attempt 47: waiting for secondary ENI...
[ 111.664507] cloud-init[1735]: Attempt 48: waiting for secondary ENI...
[ 112.684134] cloud-init[1735]: Attempt 49: waiting for secondary ENI...
[ 113.703940] cloud-init[1735]: Attempt 50: waiting for secondary ENI...
[ 114.724072] cloud-init[1735]: Attempt 51: waiting for secondary ENI...
[ 115.744334] cloud-init[1735]: Attempt 52: waiting for secondary ENI...
[ 116.764334] cloud-init[1735]: Attempt 53: waiting for secondary ENI...
[ 117.786092] cloud-init[1735]: Attempt 54: waiting for secondary ENI...
[ 118.805657] cloud-init[1735]: Attempt 55: waiting for secondary ENI...
[ 119.825194] cloud-init[1735]: Attempt 56: waiting for secondary ENI...
[ 120.844198] cloud-init[1735]: Attempt 57: waiting for secondary ENI...
[ 121.863097] cloud-init[1735]: Attempt 58: waiting for secondary ENI...
[ 122.883108] cloud-init[1735]: Attempt 59: waiting for secondary ENI...
[ 123.912506] cloud-init[1735]: Attempt 60: waiting for secondary ENI...
[ 124.915424] cloud-init[1735]: === Downloading DPDK-STDLIB project ===
[ 127.260756] cloud-init[1735]: Completed 256.0 KiB/4.2 MiB (3.1 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/4.2 MiB (6.0 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/4.2 MiB (8.9 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/4.2 MiB (11.6 MiB/s) with 1 file(s) remaining
Completed 1.2 MiB/4.2 MiB (14.3 MiB/s) with 1 file(s) remaining
Completed 1.5 MiB/4.2 MiB (16.8 MiB/s) with 1 file(s) remaining
Completed 1.8 MiB/4.2 MiB (19.4 MiB/s) with 1 file(s) remaining
Completed 2.0 MiB/4.2 MiB (21.7 MiB/s) with 1 file(s) remaining
Completed 2.2 MiB/4.2 MiB (23.9 MiB/s) with 1 file(s) remaining
Completed 2.5 MiB/4.2 MiB (26.0 MiB/s) with 1 file(s) remaining
Completed 2.8 MiB/4.2 MiB (28.3 MiB/s) with 1 file(s) remaining
Completed 3.0 MiB/4.2 MiB (30.4 MiB/s) with 1 file(s) remaining
Completed 3.2 MiB/4.2 MiB (32.5 MiB/s) with 1 file(s) remaining
Completed 3.5 MiB/4.2 MiB (34.6 MiB/s) with 1 file(s) remaining
Completed 3.8 MiB/4.2 MiB (36.6 MiB/s) with 1 file(s[2026-03-25T11:41:54.630522]) remaining
Completed 4.0 MiB/4.2 MiB (38.6 MiB/s) with 1 file(s) remaining
Completed 4.2 MiB/4.2 MiB (39.9 MiB/s) with 1 file(s) remaining
download: s3://cdk-hnb659fds-assets-121490076680-us-east-1/88577ea9afdacec8f928217dea4dfbf7ae2bc133791bb320c2a77666f0cc298a.zip to tmp/dpdk-stdlib.zip
[ 127.461030] cloud-init[1735]: === Building project ===
[ 129.220387] cloud-init[1735]: cargo version: cargo 1.94.0 (85eff7c80 2026-01-15)
[ 130.980294] cloud-init[1735]: rustc version: rustc 1.94.0 (4a4ef493e 2026-03-02)
[ 130.983458] cloud-init[1735]: Checking pkg-config for libdpdk...
[ 131.129932] cloud-init[1735]: 22.11.6
[ 131.142058] cloud-init[1735]: DPDK found: 22.11.6
[ 132.001485] cloud-init[1735]: error: none of the selected packages contains this feature: echo/dpdk
[ 132.003760] cloud-init[1735]: selected packages: dpdk-sys, dpdk, dpdk-udp, dpdk-tokio, echo, test-client, tokio-echo, plain-echo


### instance-1-console-output.log (19152 bytes, last 80 lines)

[ 73.611211] cloud-init[1738]: Attempt 14: waiting for secondary ENI...
[ 74.631151] cloud-init[1738]: Attempt 15: waiting for secondary ENI...
[ 75.650248] cloud-init[1738]: Attempt 16: waiting for secondary ENI...
[ 76.669236] cloud-init[1738]: Attempt 17: waiting for secondary ENI...
[ 77.688507] cloud-init[1738]: Attempt 18: waiting for secondary ENI...
[ 78.707157] cloud-init[1738]: Attempt 19: waiting for secondary ENI...
[ 79.726036] cloud-init[1738]: Attempt 20: waiting for secondary ENI...
[ 80.744417] cloud-init[1738]: Attempt 21: waiting for secondary ENI...
[ 81.764613] cloud-init[1738]: Attempt 22: waiting for secondary ENI...
[ 82.783870] cloud-init[1738]: Attempt 23: waiting for secondary ENI...
[ 83.802662] cloud-init[1738]: Attempt 24: waiting for secondary ENI...
[ 84.828675] cloud-init[1738]: Attempt 25: waiting for secondary ENI...
[ 85.847465] cloud-init[1738]: Attempt 26: waiting for secondary ENI...
[ 86.865922] cloud-init[1738]: Attempt 27: waiting for secondary ENI...
[ 87.884407] cloud-init[1738]: Attempt 28: waiting for secondary ENI...
[ 88.904041] cloud-init[1738]: Attempt 29: waiting for secondary ENI...
[ 89.922524] cloud-init[1738]: Attempt 30: waiting for secondary ENI...
[ 90.945859] cloud-init[1738]: Attempt 31: waiting for secondary ENI...
[ 91.966182] cloud-init[1738]: Attempt 32: waiting for secondary ENI...
2026/03/25 11:41:20Z: Amazon SSM Agent v3.3.3598.0 is running
2026/03/25 11:41:20Z: OsProductName: Amazon Linux
2026/03/25 11:41:20Z: OsVersion: 2023
[ 92.985288] cloud-init[1738]: Attempt 33: waiting for secondary ENI...
[ 94.004707] cloud-init[1738]: Attempt 34: waiting for secondary ENI...
[ 95.026255] cloud-init[1738]: Attempt 35: waiting for secondary ENI...
[ 96.044511] cloud-init[1738]: Attempt 36: waiting for secondary ENI...
[ 97.064267] cloud-init[1738]: Attempt 37: waiting for secondary ENI...
[ 98.083499] cloud-init[1738]: Attempt 38: waiting for secondary ENI...
[ 99.103237] cloud-init[1738]: Attempt 39: waiting for secondary ENI...
[ 100.123625] cloud-init[1738]: Attempt 40: waiting for secondary ENI...
[ 101.147085] cloud-init[1738]: Attempt 41: waiting for secondary ENI...
[ 102.165972] cloud-init[1738]: Attempt 42: waiting for secondary ENI...
[ 103.186636] cloud-init[1738]: Attempt 43: waiting for secondary ENI...
[ 104.208071] cloud-init[1738]: Attempt 44: waiting for secondary ENI...
[ 105.228857] cloud-init[1738]: Attempt 45: waiting for secondary ENI...
[ 106.254433] cloud-init[1738]: Attempt 46: waiting for secondary ENI...
[ 107.273263] cloud-init[1738]: Attempt 47: waiting for secondary ENI...
[ 108.292284] cloud-init[1738]: Attempt 48: waiting for secondary ENI...
[ 109.314873] cloud-init[1738]: Attempt 49: waiting for secondary ENI...
[ 110.348023] cloud-init[1738]: Attempt 50: waiting for secondary ENI...
[ 111.366936] cloud-init[1738]: Attempt 51: waiting for secondary ENI...
[ 112.386527] cloud-init[1738]: Attempt 52: waiting for secondary ENI...
[ 113.405185] cloud-init[1738]: Attempt 53: waiting for secondary ENI...
[ 114.423870] cloud-init[1738]: Attempt 54: waiting for secondary ENI...
[ 115.444336] cloud-init[1738]: Attempt 55: waiting for secondary ENI...
[ 116.463008] cloud-init[1738]: Attempt 56: waiting for secondary ENI...
[ 117.481554] cloud-init[1738]: Attempt 57: waiting for secondary ENI...
[ 118.499924] cloud-init[1738]: Attempt 58: waiting for secondary ENI...
[ 119.519347] cloud-init[1738]: Attempt 59: waiting for secondary ENI...
[ 120.543922] cloud-init[1738]: Attempt 60: waiting for secondary ENI...
[ 121.547050] cloud-init[1738]: === Downloading DPDK-STDLIB project ===
[ 122.812848] cloud-init[1738]: Completed 256.0 KiB/4.2 MiB (1.1 MiB/s) with 1 file(s) remaining
Completed 512.0 KiB/4.2 MiB (2.3 MiB/s) with 1 file(s) remaining
Completed 768.0 KiB/4.2 MiB (3.3 MiB/s) with 1 file(s) remaining
Completed 1.0 MiB/4.2 MiB (4.4 MiB/s) with 1 file(s) remaining
Completed 1.2 MiB/4.2 MiB (5.5 MiB/s) with 1 file(s) remaining
Completed 1.5 MiB/4.2 MiB (6.5 MiB/s) with 1 file(s) remaining
Completed 1.8 MiB/4.2 MiB (7.5 MiB/s) with 1 file(s) remaining
Completed 2.0 MiB/4.2 MiB (8.5 MiB/s) with 1 file(s) remaining
Completed 2.2 MiB/4.2 MiB (8.6 MiB/s) with 1 file(s) remaining
Completed 2.5 MiB/4.2 MiB (9.5 MiB/s) with 1 file(s) remaining
Completed 2.8 MiB/4.2 MiB (10.3 MiB/s) with 1 file(s) remaining
Completed 3.0 MiB/4.2 MiB (11.1 MiB/s) with 1 file(s) remaining
Completed 3.2 MiB/4.2 MiB (11.9 MiB/s) with 1 file(s) remaining
Completed 3.5 MiB/4.2 MiB (12.6 MiB/s) with 1 file(s) remaining
Completed 3.8 MiB/4.2 MiB (13.4 MiB/s) with 1 file(s[2026-03-25T11:41:50.183079]) remaining
Completed 4.0 MiB/4.2 MiB (14.0 MiB/s) with 1 file(s) remaining
Completed 4.2 MiB/4.2 MiB (14.6 MiB/s) with 1 file(s) remaining
download: s3://cdk-hnb659fds-assets-121490076680-us-east-1/88577ea9afdacec8f928217dea4dfbf7ae2bc133791bb320c2a77666f0cc298a.zip to tmp/dpdk-stdlib.zip
[ 122.976984] cloud-init[1738]: === Building project ===
[ 123.114400] cloud-init[1738]: cargo version: cargo 1.94.0 (85eff7c80 2026-01-15)
[ 123.286758] cloud-init[1738]: rustc version: rustc 1.94.0 (4a4ef493e 2026-03-02)
[ 123.288997] cloud-init[1738]: Checking pkg-config for libdpdk...
[ 123.308184] cloud-init[1738]: 22.11.6
[ 123.319216] cloud-init[1738]: DPDK found: 22.11.6
[ 123.450131] cloud-init[1738]: error: none of the selected packages contains this feature: echo/dpdk
[ 123.452732] cloud-init[1738]: selected packages: dpdk-sys, dpdk, dpdk-udp, dpdk-tokio, echo, test-client, tokio-echo, plain-echo
[ 123.834987] cloud-init[1738]: 2026-03-25 11:41:51,152 - cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
[ 123.839151] cloud-init[1738]: 2026-03-25 11:41:51,152 - util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python3.9/site-packages/cloudinit/config/cc_scripts_user.py'>) failed
ci-info: +++++++++++++++++++++++++++++++++++++++++++++Authorized keys from /home/ec2-user/.ssh/authorized_keys for user ec2-user++++++++++++++++++++++++++++++++++++++++++++++
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
ci-info: | Keytype | Fingerprint (sha256) | Options | Comment |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
ci-info: | ssh-rsa | f7:99:5f:d6:e4:f9:4a:38:68:d0:ba:d9:dd:7c:48:fd:c2:1b:4f:a1:d8:8b:21:2c:c5:0e:d6:f5:9d:16:a7:49 | - | packer_69c370a6-048a-3531-3d22-ab882f71302e |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
<14>Mar 25 11:41:51 cloud-init: #############################################################
<14>Mar 25 11:41:51 cloud-init: -----BEGIN SSH HOST KEY FINGERPRINTS-----
<14>Mar 25 11:41:51 cloud-init: 256 SHA256:7was1k/06itYNWtYqOsTkkSLYgPmmNbvfesJZdB5fjs root@ip-10-0-1-74.ec2.internal (ECDSA)
<14>Mar 25 11:41:51 cloud-init: 256 SHA256:vk+KmrmaPuyMdUQLlq1M2TtFOeKRQHuy+J1Imjgqx5E root@ip-10-0-1-74.ec2.internal (ED25519)
<14>Mar 25 11:41:51 cloud-init: -----END SSH HOST KEY FINGERPRINTS-----
<14>Mar 25 11:41:51 cloud-init: #############################################################
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMTDhKGsKh6kFcSO9g+BQTgWXd3H4u34WvEkSY2MgPCL5sRIbEhC9W8eUHwNyC17JdxYlm9zMA72hNgeTVkudSw= root@ip-10-0-1-74.ec2.internal
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFKlLlHUuytLwrQYK3UkmWyiYefaPFibB/5+7ovpdmEf root@ip-10-0-1-74.ec2.internal
-----END SSH HOST KEY KEYS-----
[ 123.939818] cloud-init[1738]: Cloud-init v. 22.2.2 finished at Wed, 25 Mar 2026 11:41:51 +0000. Datasource DataSourceEc2. Up 123.93 seconds
[�[0;1;31mFAILED�[0m] Failed to start �[0;1;39mcloud-fina… Execute cloud user/final scripts.


### All instance-logs files

total 92
drwxr-xr-x 2 runner runner 4096 Mar 25 11:43 .
drwxr-xr-x 17 runner runner 4096 Mar 25 11:42 ..
-rw-r--r-- 1 runner runner 354 Mar 25 11:43 failure-summary.json
-rw-r--r-- 1 runner runner 13 Mar 25 11:42 instance-0-build-listing.log
-rw-r--r-- 1 runner runner 16403 Mar 25 11:42 instance-0-console-output.log
-rw-r--r-- 1 runner runner 1327 Mar 25 11:42 instance-0-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1051 Mar 25 11:42 instance-0-network-interfaces.log
-rw-r--r-- 1 runner runner 5003 Mar 25 11:42 instance-0-user-data.log
-rw-r--r-- 1 runner runner 13 Mar 25 11:43 instance-1-build-listing.log
-rw-r--r-- 1 runner runner 19152 Mar 25 11:42 instance-1-console-output.log
-rw-r--r-- 1 runner runner 1327 Mar 25 11:43 instance-1-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1050 Mar 25 11:43 instance-1-network-interfaces.log
-rw-r--r-- 1 runner runner 5003 Mar 25 11:42 instance-1-user-data.log

@github-actions

Copy link
Copy Markdown

❌ Integration Tests Failed (Run 23538977178)

Branch: claude/cleanup-udp-prototype-z4UUD | Commit: b22f32d0

Test Results

Application Logs (last 20 lines)

Full Application Logs (last 200 lines each)
Network & PCI State

instance-0-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:d2:52:6b:7e:fd brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0b02ce601c5b1eee5
    altname device-number-0.0
    inet 10.0.1.236/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3435sec preferred_lft 3435sec
    inet6 fe80::d2:52ff:fe6b:7efd/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:d1:52:2a:67 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

instance-1-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:6b:37:01:e7:e9 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-057765a687647ba2d
    altname device-number-0.0
    inet 10.0.1.74/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3412sec preferred_lft 3412sec
    inet6 fe80::6b:37ff:fe01:e7e9/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:75:35:3d:93 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
⚠️ Crash Diagnostics

instance-0-dmesg-crashes.log

[    0.074188] pid_max: default: 32768 minimum: 301
[    0.126361] iommu: Default domain type: Translated 
[    0.127087] NetLabel:  unlabeled traffic allowed by default
[    0.153637] PCI: CLS 0 bytes, default 64
[    0.231465] nvme nvme0: 2/0/0 default/read/poll queues
[    0.436840] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.436934] systemd[1]: No hostname configured, using default hostname.
[    0.538061] systemd[1]: Queued start job for default target initrd.target.
[    2.366654] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[   10.036932] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.

instance-1-dmesg-crashes.log

[    0.073937] pid_max: default: 32768 minimum: 301
[    0.127296] iommu: Default domain type: Translated 
[    0.128052] NetLabel:  unlabeled traffic allowed by default
[    0.133928] PCI: CLS 0 bytes, default 64
[    0.209615] nvme nvme0: 2/0/0 default/read/poll queues
[    0.422169] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.422267] systemd[1]: No hostname configured, using default hostname.
[    0.508253] systemd[1]: Queued start job for default target initrd.target.
[    2.128524] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    9.113813] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
Kernel Console (dmesg)

instance-0-console-output.log (PCI/driver events only)

[    4.593644] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.607922] ena 0000:00:05.0: ENA device version: 0.10
[    4.608660] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.713682] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.728259] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:d2:52:6b:7e:fd
[    4.795036] ena 0000:00:05.0 ens5: renamed from eth0
[    5.750809] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels

instance-1-console-output.log (PCI/driver events only)

[    4.140296] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.154742] ena 0000:00:05.0: ENA device version: 0.10
[    4.155525] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.270525] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.283210] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:6b:37:01:e7:e9
[    4.355080] ena 0000:00:05.0 ens5: renamed from eth0
[    5.288993] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels

The previous commit made dpdk-udp a non-optional dependency of the echo
app (no feature flag needed). The CDK stacks were still passing
--features echo/dpdk which caused cargo build to fail on EC2 instances,
breaking integration tests at deploy_infrastructure step.

https://claude.ai/code/session_013kEK2d9wyTRWwmoAB4VBco
@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0eecbea38f975e7ce (DPDK ENI: 10.0.1.84)
  • Receiver: i-00afd50e6b0339e3f (DPDK ENI: 10.0.1.137)
  • Both instances SSM-ready.

@github-actions

Copy link
Copy Markdown

[CI] Stage: Summary

All tests PASSED.

ARP seeding: kernel /proc/net/arp (automatic)

  • tier1-dpdk-echo: 4 tests, 0 failures
  • tier2-kernel-interop: 4 tests, 0 failures
  • tier3-iperf-interop: 1 tests, 0 failures
  • tier3-iperf-interop: 1 tests, 0 failures

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 23540263285)

Branch: 27/merge | Commit: b430d5be

Test Results

  • tier1-dpdk-echo.xml: 4 tests, 0 failures, skipped
  • tier2-kernel-interop.xml: 4 tests, 0 failures, skipped
  • tier3-iperf-sends.xml: 1 tests, 0 failures, skipped
  • tier3-our-app-sends.xml: 1 tests, 0 failures, skipped

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.137:9000 (MAC: 02:41:7c:a1:64:fb)
echo listening on 10.0.1.137:9000
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.84:9000 (MAC: 02:45:92:a8:33:c5)
echo listening on 10.0.1.84:9000
Shutting down gracefully...

sender-test-client.log

EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.137:9000: 'arp-probe #1'
Test complete
[2026-03-25T12:22:53Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T12:22:53Z] INFO: Test: udp_send_receive
[2026-03-25T12:22:54Z] INFO: UDP send/receive succeeded
[2026-03-25T12:22:54Z] INFO: Test: echo_roundtrip
[2026-03-25T12:22:55Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T12:22:55Z] INFO: Test: payload_integrity
[2026-03-25T12:22:55Z] INFO: Response received, checking payload match...
[2026-03-25T12:22:55Z] INFO: Payload integrity verified (found in response)
[2026-03-25T12:22:55Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-25T12:22:55Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

[2026-03-25T12:29:29Z] INFO: iperf-sends: sent 10 packets, received 10 responses
[2026-03-25T12:29:29Z] INFO: iperf-sends: PASS (sent >= 5 packets)
[2026-03-25T12:29:29Z] INFO: JUnit XML written to: /tmp/test-results/tier3-iperf-sends.xml
[2026-03-25T12:29:29Z] INFO: iperf-sends test complete

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-25T12:28:28Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-25T12:28:28Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-25T12:28:28Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-25T12:28:28Z] INFO: our-app-sends test complete
Full Application Logs (last 200 lines each)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.137:9000 (MAC: 02:41:7c:a1:64:fb)
echo listening on 10.0.1.137:9000
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.84:9000 (MAC: 02:45:92:a8:33:c5)
echo listening on 10.0.1.84:9000
Shutting down gracefully...

sender-test-client.log

[2026-03-25T12:18:56Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.137:9000
Bind address: 10.0.1.84:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.84:32768 (MAC: 02:45:92:a8:33:c5)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.137:9000: 'arp-probe #1'
Test complete
[2026-03-25T12:18:59Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T12:18:59Z] INFO: Test: udp_send_receive
[2026-03-25T12:19:00Z] INFO: UDP send/receive succeeded
[2026-03-25T12:19:00Z] INFO: Test: echo_roundtrip
[2026-03-25T12:19:02Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T12:19:02Z] INFO: Test: payload_integrity
[2026-03-25T12:19:03Z] INFO: Response received, checking payload match...
[2026-03-25T12:19:03Z] INFO: Payload integrity verified (found in response)
[2026-03-25T12:19:03Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-25T12:19:03Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-25T12:22:53Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.137:9000
Bind address: 0.0.0.0:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.137:9000: 'arp-probe #1'
Test complete
[2026-03-25T12:22:53Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T12:22:53Z] INFO: Test: udp_send_receive
[2026-03-25T12:22:54Z] INFO: UDP send/receive succeeded
[2026-03-25T12:22:54Z] INFO: Test: echo_roundtrip
[2026-03-25T12:22:55Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T12:22:55Z] INFO: Test: payload_integrity
[2026-03-25T12:22:55Z] INFO: Response received, checking payload match...
[2026-03-25T12:22:55Z] INFO: Payload integrity verified (found in response)
[2026-03-25T12:22:55Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-25T12:22:55Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

[2026-03-25T12:29:29Z] INFO: iperf-sends: sent 10 packets, received 10 responses
[2026-03-25T12:29:29Z] INFO: iperf-sends: PASS (sent >= 5 packets)
[2026-03-25T12:29:29Z] INFO: JUnit XML written to: /tmp/test-results/tier3-iperf-sends.xml
[2026-03-25T12:29:29Z] INFO: iperf-sends test complete

sender-test-client-iperf.log

[2026-03-25T12:28:25Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-03-25T12:28:25Z] INFO: Local IP: 10.0.1.84, Peer IP: 10.0.1.137, Port: 9000
[2026-03-25T12:28:25Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.137       0x1         0x2         02:41:7c:a1:64:fb     *        ens5
10.0.1.233       0x1         0x2         02:6c:39:12:d1:6f     *        ens5
10.0.1.1         0x1         0x2         02:bc:85:d3:54:6f     *        ens5
10.0.1.84        0x1         0x2         02:45:92:a8:33:c5     *        ens5
[2026-03-25T12:28:25Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-03-25T12:28:25Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-03-25T12:28:25Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1858056 Mar 25 12:17 /opt/dpdk-stdlib/target/release/test-client
[2026-03-25T12:28:25Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.137 --port 9000 --bind-ip 10.0.1.84 --count 10 --delay 200
[2026-03-25T12:28:28Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.137:9000
Bind address: 10.0.1.84:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.84:32768 (MAC: 02:45:92:a8:33:c5)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.137:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-25T12:28:28Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-25T12:28:28Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-25T12:28:28Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-25T12:28:28Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-00afd50e6b0339e3f (receiver)
Command ID: 8ae41a85-e1c5-4f41-b541-458d724c5458

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-00afd50e6b0339e3f (receiver)
Command ID: c1541a27-582d-4d7e-9ebb-bef5dd37795f

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-00afd50e6b0339e3f (receiver)
Command ID: fdad8db0-788d-417b-8942-51108491667d

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0eecbea38f975e7ce (sender)
Command ID: a1afc13a-e8b1-4578-bed0-214fb1230f8e

=== STDOUT ===


=== STDERR ===


Network & PCI State

receiver-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:55:7c:e3:ce:83 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-03722de14277787e4
    altname device-number-0.0
    inet 10.0.1.245/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2546sec preferred_lft 2546sec
    inet6 fe80::55:7cff:fee3:ce83/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:37:1c:58:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 02:41:7c:a1:64:fb brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname ens6
    inet 10.0.1.137/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::41:7cff:fea1:64fb/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:f0:0d:f6:e6:75 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-09d4bd518e93f66cd
    altname device-number-0.0
    inet 10.0.1.8/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2569sec preferred_lft 2569sec
    inet6 fe80::f0:dff:fef6:e675/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:b8:44:66:ff brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-25T12:18:16Z
hostname: ip-10-0-1-245.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Elastic Network Adapter (ENA) ec20' drv=vfio-pci unused=ena

Network devices using kernel driver
===================================
0000:00:05.0 'Elastic Network Adapter (ENA) ec20' if=ens5 drv=ena unused=vfio-pci *Active*

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:55:7c:e3:ce:83 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-03722de14277787e4
    altname device-number-0.0
    inet 10.0.1.245/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3340sec preferred_lft 3340sec
    inet6 fe80::55:7cff:fee3:ce83/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:37:1c:58:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:bc:85:d3:54:6f REACHABLE 
10.0.1.63 dev ens5 lladdr 02:60:bf:3f:03:4b STALE 
10.0.1.233 dev ens5 lladdr 02:6c:39:12:d1:6f REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.245 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.245 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.245 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.245 metric 512 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:41:7c:a1:64:fb/ 02:55:7c:e3:ce:83/ 

--- ENI: 02:41:7c:a1:64:fb/ ---
  device-number: 1
  local-ipv4s: 10.0.1.137
  subnet-id: subnet-0fad35655c82b9cfd
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:55:7c:e3:ce:83/ ---
  device-number: 0
  local-ipv4s: 10.0.1.245
  subnet-id: subnet-0fad35655c82b9cfd
  subnet-cidr: 10.0.1.0/24


=== GATEWAY ARP TEST ===
Gateway IP: 10.0.1.1
Gateway ARP entry:
10.0.1.1 dev ens5 lladdr 02:bc:85:d3:54:6f REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.245 ens5
Unicast reply from 10.0.1.1 [02:BC:85:D3:54:6F]  0.544ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 25 12:18 .
drwxr-xr-x. 14 root root     3100 Mar 25 12:16 ..
crw-------.  1 root root 243,   0 Mar 25 12:18 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 25 12:13 vfio

noiommu mode:
Y

=== DPDK SHARED MEMORY ===
no /var/run/dpdk/ directory (clean state)

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068412] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074680] audit: type=2000 audit(1774440830.864:1): state=initialized audit_enabled=0 res=1
[    0.076180] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.101032] ACPI: Interpreter enabled
[    0.101032] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124621] pci 0000:00:05.0: enabling Extended Tags
[    0.157233] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.187132] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.253749] IPI shorthand broadcast: enabled
[    0.253818] AES CTR mode by8 optimization enabled
[    3.145247] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.192458] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.252301] VFIO - User Level meta-driver version: 0.3
[    4.312756] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.324106] ena 0000:00:05.0: ENA device version: 0.10
[    4.324886] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.445085] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.468941] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:55:7c:e3:ce:83
[    4.555129] ena 0000:00:05.0 ens5: renamed from eth0
[    5.432791] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  171.008145] pci 0000:00:06.0: enabling Extended Tags
[  171.012235] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  171.022707] ena 0000:00:06.0: ENA device version: 0.10
[  171.023475] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  171.118393] ena 0000:00:06.0: ENA Large LLQ is disabled
[  171.126854] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:41:7c:a1:64:fb
[  171.162807] ena 0000:00:06.0 ens6: renamed from eth0
[  171.540317] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  252.245736] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  252.247078] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

=== DPDK-RELATED PROCESSES ===
no DPDK processes running

=== END DIAGNOSTICS ===

sender-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-25T12:18:08Z
hostname: ip-10-0-1-8.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Elastic Network Adapter (ENA) ec20' drv=vfio-pci unused=ena

Network devices using kernel driver
===================================
0000:00:05.0 'Elastic Network Adapter (ENA) ec20' if=ens5 drv=ena unused=vfio-pci *Active*

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:f0:0d:f6:e6:75 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-09d4bd518e93f66cd
    altname device-number-0.0
    inet 10.0.1.8/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3349sec preferred_lft 3349sec
    inet6 fe80::f0:dff:fef6:e675/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:b8:44:66:ff brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.233 dev ens5 lladdr 02:6c:39:12:d1:6f REACHABLE 
10.0.1.63 dev ens5 lladdr 02:60:bf:3f:03:4b STALE 
10.0.1.1 dev ens5 lladdr 02:bc:85:d3:54:6f REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.8 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.8 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.8 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.8 metric 512 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:45:92:a8:33:c5/ 02:f0:0d:f6:e6:75/ 

--- ENI: 02:45:92:a8:33:c5/ ---
  device-number: 1
  local-ipv4s: 10.0.1.84
  subnet-id: subnet-0fad35655c82b9cfd
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:f0:0d:f6:e6:75/ ---
  device-number: 0
  local-ipv4s: 10.0.1.8
  subnet-id: subnet-0fad35655c82b9cfd
  subnet-cidr: 10.0.1.0/24


=== GATEWAY ARP TEST ===
Gateway IP: 10.0.1.1
Gateway ARP entry:
10.0.1.1 dev ens5 lladdr 02:bc:85:d3:54:6f REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.8 ens5
Unicast reply from 10.0.1.1 [02:BC:85:D3:54:6F]  0.543ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 25 12:17 .
drwxr-xr-x. 14 root root     3100 Mar 25 12:17 ..
crw-------.  1 root root 243,   0 Mar 25 12:17 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 25 12:13 vfio

noiommu mode:
Y

=== DPDK SHARED MEMORY ===
no /var/run/dpdk/ directory (clean state)

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.066879] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073155] audit: type=2000 audit(1774440831.559:1): state=initialized audit_enabled=0 res=1
[    0.074651] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099472] ACPI: Interpreter enabled
[    0.099472] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123039] pci 0000:00:05.0: enabling Extended Tags
[    0.154505] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.179593] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.255325] IPI shorthand broadcast: enabled
[    0.255386] AES CTR mode by8 optimization enabled
[    3.005165] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.051458] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.099612] VFIO - User Level meta-driver version: 0.3
[    4.076895] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.085011] ena 0000:00:05.0: ENA device version: 0.10
[    4.085761] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.184989] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.197173] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:f0:0d:f6:e6:75
[    4.265052] ena 0000:00:05.0 ens5: renamed from eth0
[    5.143132] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.311201] pci 0000:00:06.0: enabling Extended Tags
[  210.315106] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.325306] ena 0000:00:06.0: ENA device version: 0.10
[  210.326060] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.421691] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.430149] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:45:92:a8:33:c5
[  210.475305] ena 0000:00:06.0 ens6: renamed from eth0
[  210.841700] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  244.475432] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  244.476765] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

=== DPDK-RELATED PROCESSES ===
no DPDK processes running

=== END DIAGNOSTICS ===
⚠️ Crash Diagnostics

receiver-dmesg-crashes.log

[    0.074660] pid_max: default: 32768 minimum: 301
[    0.126730] iommu: Default domain type: Translated 
[    0.127459] NetLabel:  unlabeled traffic allowed by default
[    0.134660] PCI: CLS 0 bytes, default 64
[    0.206449] nvme nvme0: 2/0/0 default/read/poll queues
[    0.419600] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.419693] systemd[1]: No hostname configured, using default hostname.
[    0.538407] systemd[1]: Queued start job for default target initrd.target.
[    2.095098] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.974265] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  291.673556] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6855)
[  527.010124] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:10654)

sender-dmesg-crashes.log

[    0.073134] pid_max: default: 32768 minimum: 301
[    0.125150] iommu: Default domain type: Translated 
[    0.125868] NetLabel:  unlabeled traffic allowed by default
[    0.133134] PCI: CLS 0 bytes, default 64
[    0.202400] nvme nvme0: 2/0/0 default/read/poll queues
[    0.420618] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.420710] systemd[1]: No hostname configured, using default hostname.
[    0.517531] systemd[1]: Queued start job for default target initrd.target.
[    1.955850] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.536858] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  920.278547] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:37490)
Kernel Console (dmesg)

receiver-console-output.log (PCI/driver events only)

[  171.006834] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  171.008145] pci 0000:00:06.0: enabling Extended Tags
[  171.010097] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  171.011175] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  171.012235] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  171.022707] ena 0000:00:06.0: ENA device version: 0.10
[  171.023475] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  171.118393] ena 0000:00:06.0: ENA Large LLQ is disabled
[  171.126854] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:41:7c:a1:64:fb
[  171.162807] ena 0000:00:06.0 ens6: renamed from eth0
[  171.540317] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  252.245736] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  252.247078] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  291.673556] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6855)
[  474.027458] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  475.038285] ena 0000:00:06.0: ENA device version: 0.10
[  475.039066] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  475.138264] ena 0000:00:06.0: ENA Large LLQ is disabled
[  475.150453] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:41:7c:a1:64:fb
[  475.188462] ena 0000:00:06.0 ens6: renamed from eth0
[  475.220132] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  495.101855] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  495.103200] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  527.010124] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:10654)
[  603.491769] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  604.504821] ena 0000:00:06.0: ENA device version: 0.10
[  604.505605] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  604.606413] ena 0000:00:06.0: ENA Large LLQ is disabled
[  604.618513] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:41:7c:a1:64:fb
[  604.628232] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels

sender-console-output.log (PCI/driver events only)

[    5.143132] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.307822] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  210.308911] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  210.309941] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  210.311201] pci 0000:00:06.0: enabling Extended Tags
[  210.313015] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  210.314076] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  210.315106] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.325306] ena 0000:00:06.0: ENA device version: 0.10
[  210.326060] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.421691] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.430149] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:45:92:a8:33:c5
[  210.475305] ena 0000:00:06.0 ens6: renamed from eth0
[  210.841700] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  244.475432] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  244.476765] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  307.127855] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6574)
[  307.877767] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6595)
[  309.627755] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6619)
[  311.177752] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6642)
[  355.914075] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  356.925348] ena 0000:00:06.0: ENA device version: 0.10
[  356.926134] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  357.025329] ena 0000:00:06.0: ENA Large LLQ is disabled
[  357.037382] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:45:92:a8:33:c5
[  357.046859] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  725.279465] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  725.280744] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  874.648495] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:34955)
[  920.278547] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:37490)

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-06dd09667ab1c9a64 (DPDK ENI: 10.0.1.218)
  • Receiver: i-0b12a7f92ae000167 (DPDK ENI: 10.0.1.123)
  • Both instances SSM-ready.

PR #26 did have a full perf run (GH Actions 23522716883). Key findings:
- rust-dpdk single-core matches native-dpdk at 700K/1400B (both 36% drop)
- rust-dpdk-multicore 100% broken (--workers flag removed by simplification)
- DPDK delivers ~2x throughput of kernel sockets at 64B/700K saturation

https://claude.ai/code/session_013kEK2d9wyTRWwmoAB4VBco
@github-actions

Copy link
Copy Markdown

[Perf] Stage: Deploy

Deploying PerfTestStack (TRex + DUT on c5n.2xlarge)...
Configs: rust-stdlib,plain-rust,rust-dpdk,native-dpdk
Packet sizes: 64,512,1400

@github-actions

Copy link
Copy Markdown

[CI] Stage: Summary

All tests PASSED.

ARP seeding: kernel /proc/net/arp (automatic)

  • tier1-dpdk-echo: 4 tests, 0 failures
  • tier2-kernel-interop: 4 tests, 0 failures
  • tier3-iperf-interop: 1 tests, 0 failures
  • tier3-iperf-interop: 1 tests, 0 failures

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 23540263498)

Branch: claude/cleanup-udp-prototype-z4UUD | Commit: a9d385bf

Test Results

  • tier1-dpdk-echo.xml: 4 tests, 0 failures, skipped
  • tier2-kernel-interop.xml: 4 tests, 0 failures, skipped
  • tier3-iperf-sends.xml: 1 tests, 0 failures, skipped
  • tier3-our-app-sends.xml: 1 tests, 0 failures, skipped

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.123:9000 (MAC: 02:bf:8d:df:f9:e7)
echo listening on 10.0.1.123:9000
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.218:9000 (MAC: 02:de:a5:c3:3e:fb)
echo listening on 10.0.1.218:9000
Shutting down gracefully...

sender-test-client.log

EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.123:9000: 'arp-probe #1'
Test complete
[2026-03-25T12:52:16Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T12:52:16Z] INFO: Test: udp_send_receive
[2026-03-25T12:52:17Z] INFO: UDP send/receive succeeded
[2026-03-25T12:52:17Z] INFO: Test: echo_roundtrip
[2026-03-25T12:52:18Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T12:52:18Z] INFO: Test: payload_integrity
[2026-03-25T12:52:18Z] INFO: Response received, checking payload match...
[2026-03-25T12:52:18Z] INFO: Payload integrity verified (found in response)
[2026-03-25T12:52:18Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-25T12:52:18Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

[2026-03-25T12:57:10Z] INFO: iperf-sends: sent 10 packets, received 10 responses
[2026-03-25T12:57:10Z] INFO: iperf-sends: PASS (sent >= 5 packets)
[2026-03-25T12:57:10Z] INFO: JUnit XML written to: /tmp/test-results/tier3-iperf-sends.xml
[2026-03-25T12:57:10Z] INFO: iperf-sends test complete

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-25T12:56:08Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-25T12:56:08Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-25T12:56:08Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-25T12:56:08Z] INFO: our-app-sends test complete
Full Application Logs (last 200 lines each)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.123:9000 (MAC: 02:bf:8d:df:f9:e7)
echo listening on 10.0.1.123:9000
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.218:9000 (MAC: 02:de:a5:c3:3e:fb)
echo listening on 10.0.1.218:9000
Shutting down gracefully...

sender-test-client.log

[2026-03-25T12:45:25Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.123:9000
Bind address: 10.0.1.218:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.218:32768 (MAC: 02:de:a5:c3:3e:fb)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.123:9000: 'arp-probe #1'
Test complete
[2026-03-25T12:45:27Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T12:45:27Z] INFO: Test: udp_send_receive
[2026-03-25T12:45:29Z] INFO: UDP send/receive succeeded
[2026-03-25T12:45:29Z] INFO: Test: echo_roundtrip
[2026-03-25T12:45:30Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T12:45:30Z] INFO: Test: payload_integrity
[2026-03-25T12:45:31Z] INFO: Response received, checking payload match...
[2026-03-25T12:45:31Z] INFO: Payload integrity verified (found in response)
[2026-03-25T12:45:31Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-25T12:45:31Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-25T12:52:16Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.123:9000
Bind address: 0.0.0.0:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.123:9000: 'arp-probe #1'
Test complete
[2026-03-25T12:52:16Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T12:52:16Z] INFO: Test: udp_send_receive
[2026-03-25T12:52:17Z] INFO: UDP send/receive succeeded
[2026-03-25T12:52:17Z] INFO: Test: echo_roundtrip
[2026-03-25T12:52:18Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T12:52:18Z] INFO: Test: payload_integrity
[2026-03-25T12:52:18Z] INFO: Response received, checking payload match...
[2026-03-25T12:52:18Z] INFO: Payload integrity verified (found in response)
[2026-03-25T12:52:18Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-25T12:52:18Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

[2026-03-25T12:57:10Z] INFO: iperf-sends: sent 10 packets, received 10 responses
[2026-03-25T12:57:10Z] INFO: iperf-sends: PASS (sent >= 5 packets)
[2026-03-25T12:57:10Z] INFO: JUnit XML written to: /tmp/test-results/tier3-iperf-sends.xml
[2026-03-25T12:57:10Z] INFO: iperf-sends test complete

sender-test-client-iperf.log

[2026-03-25T12:56:06Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-03-25T12:56:06Z] INFO: Local IP: 10.0.1.218, Peer IP: 10.0.1.123, Port: 9000
[2026-03-25T12:56:06Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.149       0x1         0x2         02:54:5a:ae:a7:99     *        ens5
10.0.1.123       0x1         0x2         02:bf:8d:df:f9:e7     *        ens5
10.0.1.1         0x1         0x2         02:72:b9:38:95:bb     *        ens5
10.0.1.218       0x1         0x2         02:de:a5:c3:3e:fb     *        ens5
10.0.1.227       0x1         0x2         02:58:e0:7f:3b:b5     *        ens5
[2026-03-25T12:56:06Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-03-25T12:56:06Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-03-25T12:56:06Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1858056 Mar 25 12:43 /opt/dpdk-stdlib/target/release/test-client
[2026-03-25T12:56:06Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.123 --port 9000 --bind-ip 10.0.1.218 --count 10 --delay 200
[2026-03-25T12:56:08Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.123:9000
Bind address: 10.0.1.218:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.218:32768 (MAC: 02:de:a5:c3:3e:fb)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.123:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-25T12:56:08Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-25T12:56:08Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-25T12:56:08Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-25T12:56:08Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b12a7f92ae000167 (receiver)
Command ID: 0057ebbd-5542-4fbf-8e08-d32a22355469

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b12a7f92ae000167 (receiver)
Command ID: 394413e4-193a-4981-b578-abf29fd70a5f

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b12a7f92ae000167 (receiver)
Command ID: 794c74f1-35de-4f34-a0f4-124c914c1a74

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-06dd09667ab1c9a64 (sender)
Command ID: 986eb155-dd4e-46de-aec8-911e8f615f24

=== STDOUT ===


=== STDERR ===


Network & PCI State

receiver-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:e8:ce:9a:8b:c1 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0c8d16ffd7a9b9222
    altname device-number-0.0
    inet 10.0.1.133/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2429sec preferred_lft 2429sec
    inet6 fe80::e8:ceff:fe9a:8bc1/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:2d:58:c1:b1 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 02:bf:8d:df:f9:e7 brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname ens6
    inet 10.0.1.123/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::bf:8dff:fedf:f9e7/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:20:ea:09:49:9b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0ef81ec5ad2922a74
    altname device-number-0.0
    inet 10.0.1.183/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2449sec preferred_lft 2449sec
    inet6 fe80::20:eaff:fe09:499b/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:c2:9e:4e:ae brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-25T12:44:44Z
hostname: ip-10-0-1-133.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Elastic Network Adapter (ENA) ec20' drv=vfio-pci unused=ena

Network devices using kernel driver
===================================
0000:00:05.0 'Elastic Network Adapter (ENA) ec20' if=ens5 drv=ena unused=vfio-pci *Active*

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:e8:ce:9a:8b:c1 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0c8d16ffd7a9b9222
    altname device-number-0.0
    inet 10.0.1.133/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3301sec preferred_lft 3301sec
    inet6 fe80::e8:ceff:fe9a:8bc1/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:2d:58:c1:b1 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:72:b9:38:95:bb REACHABLE 
10.0.1.227 dev ens5 lladdr 02:58:e0:7f:3b:b5 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.133 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.133 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.133 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.133 metric 512 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:bf:8d:df:f9:e7/ 02:e8:ce:9a:8b:c1/ 

--- ENI: 02:bf:8d:df:f9:e7/ ---
  device-number: 1
  local-ipv4s: 10.0.1.123
  subnet-id: subnet-01da0b3ae67ad70fa
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:e8:ce:9a:8b:c1/ ---
  device-number: 0
  local-ipv4s: 10.0.1.133
  subnet-id: subnet-01da0b3ae67ad70fa
  subnet-cidr: 10.0.1.0/24


=== GATEWAY ARP TEST ===
Gateway IP: 10.0.1.1
Gateway ARP entry:
10.0.1.1 dev ens5 lladdr 02:72:b9:38:95:bb REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.133 ens5
Unicast reply from 10.0.1.1 [02:72:B9:38:95:BB]  0.534ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 25 12:44 .
drwxr-xr-x. 14 root root     3100 Mar 25 12:43 ..
crw-------.  1 root root 243,   0 Mar 25 12:44 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 25 12:39 vfio

noiommu mode:
Y

=== DPDK SHARED MEMORY ===
no /var/run/dpdk/ directory (clean state)

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068130] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074327] audit: type=2000 audit(1774442379.482:1): state=initialized audit_enabled=0 res=1
[    0.075822] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.100616] ACPI: Interpreter enabled
[    0.100616] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124368] pci 0000:00:05.0: enabling Extended Tags
[    0.156393] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.186779] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.257734] IPI shorthand broadcast: enabled
[    0.257805] AES CTR mode by8 optimization enabled
[    2.605210] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.656784] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.714506] VFIO - User Level meta-driver version: 0.3
[    3.853406] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.864678] ena 0000:00:05.0: ENA device version: 0.10
[    3.865497] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.965014] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.976930] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:e8:ce:9a:8b:c1
[    4.075318] ena 0000:00:05.0 ens5: renamed from eth0
[    5.023615] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  250.858997] pci 0000:00:06.0: enabling Extended Tags
[  250.862858] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  250.871051] ena 0000:00:06.0: ENA device version: 0.10
[  250.871838] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  250.971054] ena 0000:00:06.0: ENA Large LLQ is disabled
[  250.982893] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:bf:8d:df:f9:e7
[  251.051069] ena 0000:00:06.0 ens6: renamed from eth0
[  251.381187] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  290.664969] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  290.666308] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

=== DPDK-RELATED PROCESSES ===
no DPDK processes running

=== END DIAGNOSTICS ===

sender-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-25T12:44:36Z
hostname: ip-10-0-1-183.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Elastic Network Adapter (ENA) ec20' drv=vfio-pci unused=ena

Network devices using kernel driver
===================================
0000:00:05.0 'Elastic Network Adapter (ENA) ec20' if=ens5 drv=ena unused=vfio-pci *Active*

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:20:ea:09:49:9b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0ef81ec5ad2922a74
    altname device-number-0.0
    inet 10.0.1.183/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3306sec preferred_lft 3306sec
    inet6 fe80::20:eaff:fe09:499b/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:c2:9e:4e:ae brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:72:b9:38:95:bb REACHABLE 
10.0.1.227 dev ens5 lladdr 02:58:e0:7f:3b:b5 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.183 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.183 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.183 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.183 metric 512 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:20:ea:09:49:9b/ 02:de:a5:c3:3e:fb/ 

--- ENI: 02:20:ea:09:49:9b/ ---
  device-number: 0
  local-ipv4s: 10.0.1.183
  subnet-id: subnet-01da0b3ae67ad70fa
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:de:a5:c3:3e:fb/ ---
  device-number: 1
  local-ipv4s: 10.0.1.218
  subnet-id: subnet-01da0b3ae67ad70fa
  subnet-cidr: 10.0.1.0/24


=== GATEWAY ARP TEST ===
Gateway IP: 10.0.1.1
Gateway ARP entry:
10.0.1.1 dev ens5 lladdr 02:72:b9:38:95:bb REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.183 ens5
Unicast reply from 10.0.1.1 [02:72:B9:38:95:BB]  0.540ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 25 12:44 .
drwxr-xr-x. 14 root root     3100 Mar 25 12:43 ..
crw-------.  1 root root 243,   0 Mar 25 12:44 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 25 12:39 vfio

noiommu mode:
Y

=== DPDK SHARED MEMORY ===
no /var/run/dpdk/ directory (clean state)

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068651] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.075436] audit: type=2000 audit(1774442375.559:1): state=initialized audit_enabled=0 res=1
[    0.076210] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.101385] ACPI: Interpreter enabled
[    0.101385] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.125878] pci 0000:00:05.0: enabling Extended Tags
[    0.153682] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.183519] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.272184] IPI shorthand broadcast: enabled
[    0.272247] AES CTR mode by8 optimization enabled
[    3.225295] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.263010] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.341872] VFIO - User Level meta-driver version: 0.3
[    4.424367] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.450895] ena 0000:00:05.0: ENA device version: 0.10
[    4.451663] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.553337] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.566409] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:20:ea:09:49:9b
[    4.635133] ena 0000:00:05.0 ens5: renamed from eth0
[    5.682021] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  251.553546] pci 0000:00:06.0: enabling Extended Tags
[  251.557378] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  251.570647] ena 0000:00:06.0: ENA device version: 0.10
[  251.571432] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.667360] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.680428] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:de:a5:c3:3e:fb
[  251.732437] ena 0000:00:06.0 ens6: renamed from eth0
[  252.068495] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  287.526454] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  287.527775] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

=== DPDK-RELATED PROCESSES ===
no DPDK processes running

=== END DIAGNOSTICS ===
⚠️ Crash Diagnostics

receiver-dmesg-crashes.log

[    0.074305] pid_max: default: 32768 minimum: 301
[    0.126492] iommu: Default domain type: Translated 
[    0.127229] NetLabel:  unlabeled traffic allowed by default
[    0.134305] PCI: CLS 0 bytes, default 64
[    0.203855] nvme nvme0: 2/0/0 default/read/poll queues
[    0.424359] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.424462] systemd[1]: No hostname configured, using default hostname.
[    0.529428] systemd[1]: Queued start job for default target initrd.target.
[    1.902567] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.563954] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  330.322224] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6661)
[  741.405325] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22738)

sender-dmesg-crashes.log

[    0.074681] pid_max: default: 32768 minimum: 301
[    0.128114] iommu: Default domain type: Translated 
[    0.128873] NetLabel:  unlabeled traffic allowed by default
[    0.144864] PCI: CLS 0 bytes, default 64
[    0.211015] nvme nvme0: 2/0/0 default/read/poll queues
[    0.439675] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.439776] systemd[1]: No hostname configured, using default hostname.
[    0.539698] systemd[1]: Queued start job for default target initrd.target.
[    2.235655] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    9.971616] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 1037.585659] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:41295)
Kernel Console (dmesg)

receiver-console-output.log (PCI/driver events only)

[  250.856638] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  250.857700] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  250.858997] pci 0000:00:06.0: enabling Extended Tags
[  250.860815] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  250.861863] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  250.862858] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  250.871051] ena 0000:00:06.0: ENA device version: 0.10
[  250.871838] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  250.971054] ena 0000:00:06.0: ENA Large LLQ is disabled
[  250.982893] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:bf:8d:df:f9:e7
[  251.051069] ena 0000:00:06.0 ens6: renamed from eth0
[  251.381187] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  290.664969] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  290.666308] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  330.322224] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6661)
[  468.948426] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  469.964938] ena 0000:00:06.0: ENA device version: 0.10
[  469.965732] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  470.066963] ena 0000:00:06.0: ENA Large LLQ is disabled
[  470.079518] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:bf:8d:df:f9:e7
[  470.088772] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  611.470272] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  611.471660] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  741.405325] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22738)
[  819.242152] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  820.251468] ena 0000:00:06.0: ENA device version: 0.10
[  820.252269] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  820.350417] ena 0000:00:06.0: ENA Large LLQ is disabled
[  820.363101] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:bf:8d:df:f9:e7
[  820.373083] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels

sender-console-output.log (PCI/driver events only)

[    5.682021] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  251.550110] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  251.551216] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  251.552314] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  251.553546] pci 0000:00:06.0: enabling Extended Tags
[  251.555297] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  251.556343] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  251.557378] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  251.570647] ena 0000:00:06.0: ENA device version: 0.10
[  251.571432] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.667360] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.680428] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:de:a5:c3:3e:fb
[  251.732437] ena 0000:00:06.0 ens6: renamed from eth0
[  252.068495] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  287.526454] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  287.527775] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  351.513719] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6649)
[  352.253634] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6670)
[  354.003608] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6692)
[  355.553576] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6715)
[  401.947288] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  402.960279] ena 0000:00:06.0: ENA device version: 0.10
[  402.961065] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  403.058837] ena 0000:00:06.0: ENA Large LLQ is disabled
[  403.071942] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:de:a5:c3:3e:fb
[  403.081756] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  856.529632] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  856.531025] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  990.826200] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:38676)
[ 1037.585659] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:41295)

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Instances Ready

  • TRex: i-00ce25ab05f6cab42 (10.0.1.188)
  • DUT: i-04478c2e3f6596b54 (10.0.1.70)

@github-actions

Copy link
Copy Markdown

[Perf] Stage: TRex Config

Starting TRex configuration (MAC discovery + NIC binding)...

@github-actions

Copy link
Copy Markdown

[Perf] Stage: TRex Config OK

  • TX: 0000:00:06.0 MAC: 02:2b:8e:c5:14:4b
  • RX: 0000:00:07.0 MAC: 02:2b:db:7f:50:07
  • Gateway MAC: 02:d7:15:b1:10:13
    Starting TRex server...

@github-actions

Copy link
Copy Markdown

[Perf] Stage: TRex Started

TRex server running. Beginning benchmarks...

@github-actions

Copy link
Copy Markdown

[Perf] DUT Ready

DUT instance i-04478c2e3f6596b54 SSM working, build complete.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (1/4)

Running rust-stdlib benchmark...
Packet sizes: 64,512,1400 | Duration: 30s/step | Target PPS: 70000,140000,350000,700000

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-stdlib preflight

TRex API OK: 2 ports
  Port 0: 02:2b:8e:c5:14:4b
  Port 1: 02:2b:db:7f:50:07
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-stdlib result

SSM exit: 0

Output (last 30 lines)
=== TRex Benchmark: rust-stdlib ===
Server: localhost, Port: 0
Src: 10.0.1.188 -> Dst: 10.0.1.70 (MAC: 02:d7:15:b1:10:13)
Packet sizes: [64, 512, 1400]
Rate steps (target PPS): [70000, 140000, 350000, 700000]
Duration per step: 30s
Source MAC: 02:2b:8e:c5:14:4b

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 1 pps, Drop: 99.9982%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 1 pps, Drop: 99.9992%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 1 pps, Drop: 99.9997%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 1 pps, Drop: 99.9998%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 1 pps, Drop: 99.9983%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 1 pps, Drop: 99.9992%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 1 pps, Drop: 99.9997%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 1 pps, Drop: 99.9998%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 1 pps, Drop: 99.9984%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 1 pps, Drop: 99.9992%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 1 pps, Drop: 99.9997%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 1 pps, Drop: 99.9998%, Lat avg: 0.0 us

Results written to /tmp/perf-results/rust-stdlib.json
EXIT_CODE=0

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (2/4)

Running plain-rust benchmark...
Packet sizes: 64,512,1400 | Duration: 30s/step | Target PPS: 70000,140000,350000,700000

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: plain-rust preflight

TRex API OK: 2 ports
  Port 0: 02:2b:8e:c5:14:4b
  Port 1: 02:2b:db:7f:50:07
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: plain-rust result

SSM exit: 0

Output (last 30 lines)
=== TRex Benchmark: plain-rust ===
Server: localhost, Port: 0
Src: 10.0.1.188 -> Dst: 10.0.1.70 (MAC: 02:d7:15:b1:10:13)
Packet sizes: [64, 512, 1400]
Rate steps (target PPS): [70000, 140000, 350000, 700000]
Duration per step: 30s
Source MAC: 02:2b:8e:c5:14:4b

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4285%, Lat avg: 456.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,976 pps, Drop: 0.7312%, Lat avg: 318.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 335,866 pps, Drop: 4.0383%, Lat avg: 552.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 332,519 pps, Drop: 52.4972%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,982 pps, Drop: 0.7268%, Lat avg: 468.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 320,751 pps, Drop: 8.3569%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 314,677 pps, Drop: 55.0461%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,981 pps, Drop: 0.7281%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 277,319 pps, Drop: 20.7659%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 307,044 pps, Drop: 56.1366%, Lat avg: 0.0 us

Results written to /tmp/perf-results/plain-rust.json
EXIT_CODE=0

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (3/4)

Running rust-dpdk benchmark...
Packet sizes: 64,512,1400 | Duration: 30s/step | Target PPS: 70000,140000,350000,700000

After making dpdk-udp non-optional in echo, the rust-stdlib perf config
broke (RX: 1 pps) because echo now always uses dpdk_udp::UdpSocket
which tries DPDK init even when the NIC is in kernel mode.

- rust-stdlib now runs plain-echo (std::net) instead of echo
- Remove rust-stdlib from default configs (redundant with plain-rust)
- Default perf configs: plain-rust, rust-dpdk, native-dpdk

https://claude.ai/code/session_013kEK2d9wyTRWwmoAB4VBco
@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:2b:8e:c5:14:4b
  Port 1: 02:2b:db:7f:50:07
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Deploy

Deploying PerfTestStack (TRex + DUT on c5n.2xlarge)...
Configs: plain-rust,rust-dpdk,native-dpdk
Packet sizes: 64,512,1400

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0d6fd48055e416a82 (DPDK ENI: 10.0.1.93)
  • Receiver: i-05b92bc1f459944a8 (DPDK ENI: 10.0.1.6)
  • Both instances SSM-ready.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Instances Ready

  • TRex: i-08feb5bf5fc66f933 (10.0.1.219)
  • DUT: i-09744fedbcde01614 (10.0.1.118)

@github-actions

Copy link
Copy Markdown

[Perf] Stage: TRex Config

Starting TRex configuration (MAC discovery + NIC binding)...

@github-actions

Copy link
Copy Markdown

[Perf] Stage: TRex Config OK

  • TX: 0000:00:06.0 MAC: 02:6d:68:05:85:c1
  • RX: 0000:00:07.0 MAC: 02:0f:1c:54:25:19
  • Gateway MAC: 02:e9:0e:8c:ba:9d
    Starting TRex server...

@github-actions

Copy link
Copy Markdown

[Perf] Stage: TRex Started

TRex server running. Beginning benchmarks...

@github-actions

Copy link
Copy Markdown

[Perf] DUT Ready

DUT instance i-09744fedbcde01614 SSM working, build complete.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (1/3)

Running plain-rust benchmark...
Packet sizes: 64,512,1400 | Duration: 30s/step | Target PPS: 70000,140000,350000,700000

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: plain-rust preflight

TRex API OK: 2 ports
  Port 0: 02:6d:68:05:85:c1
  Port 1: 02:0f:1c:54:25:19
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: plain-rust result

SSM exit: 0

Output (last 30 lines)
=== TRex Benchmark: plain-rust ===
Server: localhost, Port: 0
Src: 10.0.1.219 -> Dst: 10.0.1.118 (MAC: 02:e9:0e:8c:ba:9d)
Packet sizes: [64, 512, 1400]
Rate steps (target PPS): [70000, 140000, 350000, 700000]
Duration per step: 30s
Source MAC: 02:6d:68:05:85:c1

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,997 pps, Drop: 1.4327%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 343,703 pps, Drop: 1.7992%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 338,133 pps, Drop: 51.6952%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,994 pps, Drop: 0.7183%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 284,625 pps, Drop: 18.6785%, Lat avg: 711.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 305,504 pps, Drop: 56.3566%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,988 pps, Drop: 1.4451%, Lat avg: 549.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,979 pps, Drop: 0.7291%, Lat avg: 373.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 272,446 pps, Drop: 22.1583%, Lat avg: 549.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 305,543 pps, Drop: 56.3509%, Lat avg: 0.0 us

Results written to /tmp/perf-results/plain-rust.json
EXIT_CODE=0

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (2/3)

Running rust-dpdk benchmark...
Packet sizes: 64,512,1400 | Duration: 30s/step | Target PPS: 70000,140000,350000,700000

@github-actions

Copy link
Copy Markdown

[CI] Stage: Summary

All tests PASSED.

ARP seeding: kernel /proc/net/arp (automatic)

  • tier1-dpdk-echo: 4 tests, 0 failures
  • tier2-kernel-interop: 4 tests, 0 failures
  • tier3-iperf-interop: 1 tests, 0 failures
  • tier3-iperf-interop: 1 tests, 0 failures

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:6d:68:05:85:c1
  Port 1: 02:0f:1c:54:25:19
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 23568847540)

Branch: 27/merge | Commit: ee2fa8c0

Test Results

  • tier1-dpdk-echo.xml: 4 tests, 0 failures, skipped
  • tier2-kernel-interop.xml: 4 tests, 0 failures, skipped
  • tier3-iperf-sends.xml: 1 tests, 0 failures, skipped
  • tier3-our-app-sends.xml: 1 tests, 0 failures, skipped

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.6:9000 (MAC: 02:25:5f:02:b5:01)
echo listening on 10.0.1.6:9000
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.93:9000 (MAC: 02:0d:96:36:1c:8d)
echo listening on 10.0.1.93:9000
Shutting down gracefully...

sender-test-client.log

EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.6:9000: 'arp-probe #1'
Test complete
[2026-03-25T23:28:11Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T23:28:11Z] INFO: Test: udp_send_receive
[2026-03-25T23:28:12Z] INFO: UDP send/receive succeeded
[2026-03-25T23:28:12Z] INFO: Test: echo_roundtrip
[2026-03-25T23:28:13Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T23:28:13Z] INFO: Test: payload_integrity
[2026-03-25T23:28:13Z] INFO: Response received, checking payload match...
[2026-03-25T23:28:13Z] INFO: Payload integrity verified (found in response)
[2026-03-25T23:28:13Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-25T23:28:13Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

[2026-03-25T23:33:15Z] INFO: iperf-sends: sent 10 packets, received 10 responses
[2026-03-25T23:33:15Z] INFO: iperf-sends: PASS (sent >= 5 packets)
[2026-03-25T23:33:15Z] INFO: JUnit XML written to: /tmp/test-results/tier3-iperf-sends.xml
[2026-03-25T23:33:15Z] INFO: iperf-sends test complete

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-25T23:32:15Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-25T23:32:15Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-25T23:32:15Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-25T23:32:15Z] INFO: our-app-sends test complete
Full Application Logs (last 200 lines each)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.6:9000 (MAC: 02:25:5f:02:b5:01)
echo listening on 10.0.1.6:9000
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.93:9000 (MAC: 02:0d:96:36:1c:8d)
echo listening on 10.0.1.93:9000
Shutting down gracefully...

sender-test-client.log

[2026-03-25T23:21:23Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.6:9000
Bind address: 10.0.1.93:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.93:32768 (MAC: 02:0d:96:36:1c:8d)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.6:9000: 'arp-probe #1'
Test complete
[2026-03-25T23:21:24Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T23:21:24Z] INFO: Test: udp_send_receive
[2026-03-25T23:21:26Z] INFO: UDP send/receive succeeded
[2026-03-25T23:21:26Z] INFO: Test: echo_roundtrip
[2026-03-25T23:21:27Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T23:21:27Z] INFO: Test: payload_integrity
[2026-03-25T23:21:28Z] INFO: Response received, checking payload match...
[2026-03-25T23:21:28Z] INFO: Payload integrity verified (found in response)
[2026-03-25T23:21:28Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-25T23:21:28Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-25T23:28:11Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.6:9000
Bind address: 0.0.0.0:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.6:9000: 'arp-probe #1'
Test complete
[2026-03-25T23:28:11Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T23:28:11Z] INFO: Test: udp_send_receive
[2026-03-25T23:28:12Z] INFO: UDP send/receive succeeded
[2026-03-25T23:28:12Z] INFO: Test: echo_roundtrip
[2026-03-25T23:28:13Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T23:28:13Z] INFO: Test: payload_integrity
[2026-03-25T23:28:13Z] INFO: Response received, checking payload match...
[2026-03-25T23:28:13Z] INFO: Payload integrity verified (found in response)
[2026-03-25T23:28:13Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-25T23:28:13Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

[2026-03-25T23:33:15Z] INFO: iperf-sends: sent 10 packets, received 10 responses
[2026-03-25T23:33:15Z] INFO: iperf-sends: PASS (sent >= 5 packets)
[2026-03-25T23:33:15Z] INFO: JUnit XML written to: /tmp/test-results/tier3-iperf-sends.xml
[2026-03-25T23:33:15Z] INFO: iperf-sends test complete

sender-test-client-iperf.log

[2026-03-25T23:32:12Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-03-25T23:32:12Z] INFO: Local IP: 10.0.1.93, Peer IP: 10.0.1.6, Port: 9000
[2026-03-25T23:32:12Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.1         0x1         0x2         02:5e:31:69:0c:b7     *        ens5
10.0.1.93        0x1         0x2         02:0d:96:36:1c:8d     *        ens5
10.0.1.6         0x1         0x2         02:25:5f:02:b5:01     *        ens5
10.0.1.8         0x1         0x2         02:e8:4d:90:c8:29     *        ens5
[2026-03-25T23:32:12Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-03-25T23:32:12Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-03-25T23:32:12Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1858056 Mar 25 23:19 /opt/dpdk-stdlib/target/release/test-client
[2026-03-25T23:32:12Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.6 --port 9000 --bind-ip 10.0.1.93 --count 10 --delay 200
[2026-03-25T23:32:15Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.6:9000
Bind address: 10.0.1.93:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.93:32768 (MAC: 02:0d:96:36:1c:8d)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.6:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-25T23:32:15Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-25T23:32:15Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-25T23:32:15Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-25T23:32:15Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-05b92bc1f459944a8 (receiver)
Command ID: ae383587-ac8c-4f20-9f69-9a99696f7f7c

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-05b92bc1f459944a8 (receiver)
Command ID: 9e0f22bb-c6dc-4e56-adba-0ce568b5d589

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-05b92bc1f459944a8 (receiver)
Command ID: d8551d12-b74b-40ab-92c2-f8a2f8ec9451

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0d6fd48055e416a82 (sender)
Command ID: 701b2181-8561-494e-98dc-97f64d3cf101

=== STDOUT ===


=== STDERR ===


Network & PCI State

receiver-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:4a:42:58:95:35 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0eed63b61533bda93
    altname device-number-0.0
    inet 10.0.1.113/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2393sec preferred_lft 2393sec
    inet6 fe80::4a:42ff:fe58:9535/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:82:a1:47:2a brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 02:25:5f:02:b5:01 brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname ens6
    inet 10.0.1.6/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::25:5fff:fe02:b501/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:96:90:65:b0:31 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0aa7d147646c7103d
    altname device-number-0.0
    inet 10.0.1.117/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2412sec preferred_lft 2412sec
    inet6 fe80::96:90ff:fe65:b031/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:c4:3a:2f:ad brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-25T23:20:43Z
hostname: ip-10-0-1-113.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Elastic Network Adapter (ENA) ec20' drv=vfio-pci unused=ena

Network devices using kernel driver
===================================
0000:00:05.0 'Elastic Network Adapter (ENA) ec20' if=ens5 drv=ena unused=vfio-pci *Active*

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:4a:42:58:95:35 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0eed63b61533bda93
    altname device-number-0.0
    inet 10.0.1.113/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3265sec preferred_lft 3265sec
    inet6 fe80::4a:42ff:fe58:9535/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:82:a1:47:2a brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.150 dev ens5 lladdr 02:e5:ab:d6:c4:75 STALE 
10.0.1.1 dev ens5 lladdr 02:5e:31:69:0c:b7 REACHABLE 
10.0.1.8 dev ens5 lladdr 02:e8:4d:90:c8:29 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.113 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.113 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.113 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.113 metric 512 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:25:5f:02:b5:01/ 02:4a:42:58:95:35/ 

--- ENI: 02:25:5f:02:b5:01/ ---
  device-number: 1
  local-ipv4s: 10.0.1.6
  subnet-id: subnet-0a124b5b84ab05e53
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:4a:42:58:95:35/ ---
  device-number: 0
  local-ipv4s: 10.0.1.113
  subnet-id: subnet-0a124b5b84ab05e53
  subnet-cidr: 10.0.1.0/24


=== GATEWAY ARP TEST ===
Gateway IP: 10.0.1.1
Gateway ARP entry:
10.0.1.1 dev ens5 lladdr 02:5e:31:69:0c:b7 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.113 ens5
Unicast reply from 10.0.1.1 [02:5E:31:69:0C:B7]  0.535ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 25 23:20 .
drwxr-xr-x. 14 root root     3100 Mar 25 23:19 ..
crw-------.  1 root root 243,   0 Mar 25 23:20 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 25 23:15 vfio

noiommu mode:
Y

=== DPDK SHARED MEMORY ===
no /var/run/dpdk/ directory (clean state)

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067356] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073478] audit: type=2000 audit(1774480503.133:1): state=initialized audit_enabled=0 res=1
[    0.074896] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099640] ACPI: Interpreter enabled
[    0.099640] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123528] pci 0000:00:05.0: enabling Extended Tags
[    0.155604] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.204917] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.250994] IPI shorthand broadcast: enabled
[    0.251056] AES CTR mode by8 optimization enabled
[    2.445132] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.486548] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.543600] VFIO - User Level meta-driver version: 0.3
[    3.628141] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.652566] ena 0000:00:05.0: ENA device version: 0.10
[    3.653324] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.754979] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.766888] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:4a:42:58:95:35
[    3.815104] ena 0000:00:05.0 ens5: renamed from eth0
[    4.681810] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  291.016205] pci 0000:00:06.0: enabling Extended Tags
[  291.020090] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  291.032754] ena 0000:00:06.0: ENA device version: 0.10
[  291.033551] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  291.133790] ena 0000:00:06.0: ENA Large LLQ is disabled
[  291.145614] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:25:5f:02:b5:01
[  291.193778] ena 0000:00:06.0 ens6: renamed from eth0
[  291.530078] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  327.017805] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  327.019148] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

=== DPDK-RELATED PROCESSES ===
no DPDK processes running

=== END DIAGNOSTICS ===

sender-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-25T23:20:35Z
hostname: ip-10-0-1-117.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Elastic Network Adapter (ENA) ec20' drv=vfio-pci unused=ena

Network devices using kernel driver
===================================
0000:00:05.0 'Elastic Network Adapter (ENA) ec20' if=ens5 drv=ena unused=vfio-pci *Active*

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:96:90:65:b0:31 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0aa7d147646c7103d
    altname device-number-0.0
    inet 10.0.1.117/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3270sec preferred_lft 3270sec
    inet6 fe80::96:90ff:fe65:b031/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:c4:3a:2f:ad brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:5e:31:69:0c:b7 REACHABLE 
10.0.1.8 dev ens5 lladdr 02:e8:4d:90:c8:29 REACHABLE 
10.0.1.150 dev ens5 lladdr 02:e5:ab:d6:c4:75 STALE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.117 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.117 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.117 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.117 metric 512 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:0d:96:36:1c:8d/ 02:96:90:65:b0:31/ 

--- ENI: 02:0d:96:36:1c:8d/ ---
  device-number: 1
  local-ipv4s: 10.0.1.93
  subnet-id: subnet-0a124b5b84ab05e53
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:96:90:65:b0:31/ ---
  device-number: 0
  local-ipv4s: 10.0.1.117
  subnet-id: subnet-0a124b5b84ab05e53
  subnet-cidr: 10.0.1.0/24


=== GATEWAY ARP TEST ===
Gateway IP: 10.0.1.1
Gateway ARP entry:
10.0.1.1 dev ens5 lladdr 02:5e:31:69:0c:b7 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.117 ens5
Unicast reply from 10.0.1.1 [02:5E:31:69:0C:B7]  0.532ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 25 23:20 .
drwxr-xr-x. 14 root root     3100 Mar 25 23:19 ..
crw-------.  1 root root 243,   0 Mar 25 23:20 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 25 23:15 vfio

noiommu mode:
Y

=== DPDK SHARED MEMORY ===
no /var/run/dpdk/ directory (clean state)

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067665] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073884] audit: type=2000 audit(1774480500.769:1): state=initialized audit_enabled=0 res=1
[    0.075305] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.100316] ACPI: Interpreter enabled
[    0.100316] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123937] pci 0000:00:05.0: enabling Extended Tags
[    0.155545] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.185232] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.257704] IPI shorthand broadcast: enabled
[    0.257766] AES CTR mode by8 optimization enabled
[    2.475265] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.512741] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.579881] VFIO - User Level meta-driver version: 0.3
[    3.665070] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.677124] ena 0000:00:05.0: ENA device version: 0.10
[    3.677862] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.775050] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.787434] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:96:90:65:b0:31
[    3.836859] ena 0000:00:05.0 ens5: renamed from eth0
[    4.668757] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  271.268854] pci 0000:00:06.0: enabling Extended Tags
[  271.272672] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  271.285614] ena 0000:00:06.0: ENA device version: 0.10
[  271.286403] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  271.387615] ena 0000:00:06.0: ENA Large LLQ is disabled
[  271.400065] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:0d:96:36:1c:8d
[  271.440548] ena 0000:00:06.0 ens6: renamed from eth0
[  271.755346] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  322.324388] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  322.325738] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

=== DPDK-RELATED PROCESSES ===
no DPDK processes running

=== END DIAGNOSTICS ===
⚠️ Crash Diagnostics

receiver-dmesg-crashes.log

[    0.073460] pid_max: default: 32768 minimum: 301
[    0.125682] iommu: Default domain type: Translated 
[    0.126431] NetLabel:  unlabeled traffic allowed by default
[    0.133460] PCI: CLS 0 bytes, default 64
[    0.223589] nvme nvme0: 2/0/0 default/read/poll queues
[    0.416281] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.416383] systemd[1]: No hostname configured, using default hostname.
[    0.507817] systemd[1]: Queued start job for default target initrd.target.
[    1.665385] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.877881] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  365.975989] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6388)
[  772.734303] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22235)

sender-dmesg-crashes.log

[    0.073872] pid_max: default: 32768 minimum: 301
[    0.126069] iommu: Default domain type: Translated 
[    0.126826] NetLabel:  unlabeled traffic allowed by default
[    0.133954] PCI: CLS 0 bytes, default 64
[    0.210161] nvme nvme0: 2/0/0 default/read/poll queues
[    0.424348] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.424456] systemd[1]: No hostname configured, using default hostname.
[    0.538181] systemd[1]: Queued start job for default target initrd.target.
[    1.684028] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    7.956964] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 1077.311753] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:42135)
Kernel Console (dmesg)

receiver-console-output.log (PCI/driver events only)

[  291.013922] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  291.014949] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  291.016205] pci 0000:00:06.0: enabling Extended Tags
[  291.018002] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  291.019063] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  291.020090] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  291.032754] ena 0000:00:06.0: ENA device version: 0.10
[  291.033551] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  291.133790] ena 0000:00:06.0: ENA Large LLQ is disabled
[  291.145614] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:25:5f:02:b5:01
[  291.193778] ena 0000:00:06.0 ens6: renamed from eth0
[  291.530078] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  327.017805] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  327.019148] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  365.975989] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6388)
[  512.102994] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  513.112891] ena 0000:00:06.0: ENA device version: 0.10
[  513.113665] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  513.212880] ena 0000:00:06.0: ENA Large LLQ is disabled
[  513.224736] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:25:5f:02:b5:01
[  513.234058] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  639.705846] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  639.707173] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  772.734303] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22235)
[  848.406473] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  849.419728] ena 0000:00:06.0: ENA device version: 0.10
[  849.420507] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  849.521477] ena 0000:00:06.0: ENA Large LLQ is disabled
[  849.533277] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:25:5f:02:b5:01
[  849.542338] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels

sender-console-output.log (PCI/driver events only)

[    4.668757] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  271.265412] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  271.266510] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  271.267566] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  271.268854] pci 0000:00:06.0: enabling Extended Tags
[  271.270659] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  271.271687] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  271.272672] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  271.285614] ena 0000:00:06.0: ENA device version: 0.10
[  271.286403] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  271.387615] ena 0000:00:06.0: ENA Large LLQ is disabled
[  271.400065] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:0d:96:36:1c:8d
[  271.440548] ena 0000:00:06.0 ens6: renamed from eth0
[  271.755346] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  322.324388] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  322.325738] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  383.312834] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7169)
[  384.052728] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7221)
[  385.802743] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7246)
[  387.362727] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7271)
[  433.403641] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  434.416510] ena 0000:00:06.0: ENA device version: 0.10
[  434.417300] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  434.518528] ena 0000:00:06.0: ENA Large LLQ is disabled
[  434.531571] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:0d:96:36:1c:8d
[  434.541781] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  889.483336] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  889.484658] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1031.991814] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:39811)
[ 1077.311753] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:42135)

Run #5 (23548559577) had anomalous kernel numbers (78% drop at 64B/700K)
due to a bad EC2 instance. Run #6 (23567309410) shows normal kernel
performance (51% drop) consistent with Run #4. Updated both
perf-test-log.md and README performance tables with the correct data.

DPDK advantage is consistently ~2x at saturation, not the 3-4x that the
outlier suggested.

https://claude.ai/code/session_013kEK2d9wyTRWwmoAB4VBco
@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk result

SSM exit: 0

Output (last 30 lines)
=== TRex Benchmark: rust-dpdk ===
Server: localhost, Port: 0
Src: 10.0.1.219 -> Dst: 10.0.1.118 (MAC: 02:e9:0e:8c:ba:9d)
Packet sizes: [64, 512, 1400]
Rate steps (target PPS): [70000, 140000, 350000, 700000]
Duration per step: 30s
Source MAC: 02:6d:68:05:85:c1

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 211.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 244.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,993 pps, Drop: 0.002%, Lat avg: 250.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 627,659 pps, Drop: 10.3345%, Lat avg: 927.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 210.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 220.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 274.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 608,601 pps, Drop: 13.057%, Lat avg: 1039.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 242.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,938 pps, Drop: 0.0444%, Lat avg: 213.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,999 pps, Drop: 0.0004%, Lat avg: 275.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 447,942 pps, Drop: 36.0082%, Lat avg: 4001.0 us

Results written to /tmp/perf-results/rust-dpdk.json
EXIT_CODE=0

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (3/3)

Running native-dpdk benchmark...
Packet sizes: 64,512,1400 | Duration: 30s/step | Target PPS: 70000,140000,350000,700000

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: native-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:6d:68:05:85:c1
  Port 1: 02:0f:1c:54:25:19
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-025fa05142308c541 (DPDK ENI: 10.0.1.203)
  • Receiver: i-087d994daa5ecb364 (DPDK ENI: 10.0.1.132)
  • Both instances SSM-ready.

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: native-dpdk result

SSM exit: 0

Output (last 30 lines)
=== TRex Benchmark: native-dpdk ===
Server: localhost, Port: 0
Src: 10.0.1.219 -> Dst: 10.0.1.118 (MAC: 02:e9:0e:8c:ba:9d)
Packet sizes: [64, 512, 1400]
Rate steps (target PPS): [70000, 140000, 350000, 700000]
Duration per step: 30s
Source MAC: 02:6d:68:05:85:c1

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 141.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 104.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 115.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 639,371 pps, Drop: 8.6613%, Lat avg: 750.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 102.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 155.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 169.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 601,459 pps, Drop: 14.0772%, Lat avg: 829.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 106.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 165.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 124.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 447,968 pps, Drop: 36.0045%, Lat avg: 3658.0 us

Results written to /tmp/perf-results/native-dpdk.json
EXIT_CODE=0

@github-actions

Copy link
Copy Markdown

[Perf] Diag: testpmd log

testpmd output (last 30 lines)
=== testpmd stats (last 30 lines) ===
  TX-packets: 96481465   TX-errors: 0          TX-bytes:  55676052918

  Throughput (since last show)
  Rx-pps:       447720          Rx-bps:   5000140880
  Tx-pps:       447720          Tx-bps:   5000140880
  ############################################################################
�[2J�[1;1H
Port statistics ====================================
  ######################## NIC statistics for port 0  ########################
  RX-packets: 100960945  RX-missed: 0          RX-bytes:  61927610662
  RX-errors: 329015
  RX-nombuf:  0         
  TX-packets: 100959023  TX-errors: 0          TX-bytes:  61926723886

  Throughput (since last show)
  Rx-pps:       447720          Rx-bps:   5000142128
  Tx-pps:       447720          Tx-bps:   5000142128
  ############################################################################
�[2J�[1;1H
Port statistics ====================================
  ######################## NIC statistics for port 0  ########################
  RX-packets: 101065894  RX-missed: 0          RX-bytes:  62074118112
  RX-errors: 329122
  RX-nombuf:  0         
  TX-packets: 101063972  TX-errors: 0          TX-bytes:  62073231336

  Throughput (since last show)
  Rx-pps:        10494          Rx-bps:    117196896
  Tx-pps:        10494          Tx-bps:    117196896
  ############################################################################
=== ENA port stats ===
N/A (vfio-pci)

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Results

[23:52:05] INFO Generating markdown summary...

Performance Test Results — c5n.2xlarge

Commit: 637f6d78
Timestamp: 2026-03-25T23:52:05.303996+00:00

1400B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 106.0 2075.0 784.0 784.0
native-dpdk 140,000 140,000 140,000 0.00% 165.0 230.0 1568.0 1568.0
native-dpdk 350,000 350,000 350,000 0.00% 124.0 694.0 3920.0 3920.0
native-dpdk 700,000 700,000 447,968 36.00% 3658.0 3805.0 7840.0 5017.2
rust-dpdk 70,000 70,000 70,000 0.00% 242.0 3221.0 784.0 784.0
rust-dpdk 140,000 140,000 139,938 0.04% 213.0 19899.0 1568.0 1567.3
rust-dpdk 350,000 350,000 349,999 0.00% 275.0 2755.0 3920.0 3920.0
rust-dpdk 700,000 700,000 447,942 36.01% 4001.0 5033.0 7840.0 5016.9
plain-rust 70,000 70,000 68,988 1.45% 549.0 0.0 784.0 772.7
plain-rust 140,000 140,000 138,979 0.73% 373.0 0.0 1568.0 1556.6
plain-rust 350,000 350,000 272,446 22.16% 549.0 0.0 3920.0 3051.4
plain-rust 700,000 700,000 305,543 56.35% 0.0 0.0 7840.0 3422.1

512B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 102.0 207.0 286.7 286.7
native-dpdk 140,000 140,000 140,000 0.00% 155.0 245.0 573.4 573.4
native-dpdk 350,000 350,000 350,000 0.00% 169.0 637.0 1433.6 1433.6
native-dpdk 700,000 700,000 601,459 14.08% 829.0 2685.0 2867.2 2463.6
rust-dpdk 70,000 70,000 70,000 0.00% 210.0 3003.0 286.7 286.7
rust-dpdk 140,000 140,000 140,000 0.00% 220.0 2619.0 573.4 573.4
rust-dpdk 350,000 350,000 350,000 0.00% 274.0 2269.0 1433.6 1433.6
rust-dpdk 700,000 700,000 608,601 13.06% 1039.0 3219.0 2867.2 2492.8
plain-rust 70,000 70,000 69,000 1.43% 0.0 0.0 286.7 282.6
plain-rust 140,000 140,000 138,994 0.72% 0.0 0.0 573.4 569.3
plain-rust 350,000 350,000 284,625 18.68% 711.0 0.0 1433.6 1165.8
plain-rust 700,000 700,000 305,504 56.36% 0.0 0.0 2867.2 1251.3

64B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 141.0 185.0 35.8 35.8
native-dpdk 140,000 140,000 140,000 0.00% 104.0 305.0 71.7 71.7
native-dpdk 350,000 350,000 350,000 0.00% 115.0 205.0 179.2 179.2
native-dpdk 700,000 700,000 639,371 8.66% 750.0 2371.0 358.4 327.4
rust-dpdk 70,000 70,000 70,000 0.00% 211.0 2604.0 35.8 35.8
rust-dpdk 140,000 140,000 140,000 0.00% 244.0 2864.0 71.7 71.7
rust-dpdk 350,000 350,000 349,993 0.00% 250.0 2806.0 179.2 179.2
rust-dpdk 700,000 700,000 627,659 10.33% 927.0 3460.0 358.4 321.4
plain-rust 70,000 70,000 68,997 1.43% 0.0 0.0 35.8 35.3
plain-rust 140,000 140,000 139,000 0.71% 0.0 0.0 71.7 71.2
plain-rust 350,000 350,000 343,703 1.80% 0.0 0.0 179.2 176.0
plain-rust 700,000 700,000 338,133 51.70% 0.0 0.0 358.4 173.1

Full results artifact

@github-actions

Copy link
Copy Markdown

[CI] Stage: Summary

All tests PASSED.

ARP seeding: kernel /proc/net/arp (automatic)

  • tier1-dpdk-echo: 4 tests, 0 failures
  • tier2-kernel-interop: 4 tests, 0 failures
  • tier3-iperf-interop: 1 tests, 0 failures
  • tier3-iperf-interop: 1 tests, 0 failures

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 23569743098)

Branch: 27/merge | Commit: 9aa6caa3

Test Results

  • tier1-dpdk-echo.xml: 4 tests, 0 failures, skipped
  • tier2-kernel-interop.xml: 4 tests, 0 failures, skipped
  • tier3-iperf-sends.xml: 1 tests, 0 failures, skipped
  • tier3-our-app-sends.xml: 1 tests, 0 failures, skipped

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.132:9000 (MAC: 02:03:d9:ae:e6:df)
echo listening on 10.0.1.132:9000
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.203:9000 (MAC: 02:08:80:08:51:91)
echo listening on 10.0.1.203:9000
Shutting down gracefully...

sender-test-client.log

EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.132:9000: 'arp-probe #1'
Test complete
[2026-03-25T23:54:07Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T23:54:07Z] INFO: Test: udp_send_receive
[2026-03-25T23:54:08Z] INFO: UDP send/receive succeeded
[2026-03-25T23:54:08Z] INFO: Test: echo_roundtrip
[2026-03-25T23:54:09Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T23:54:09Z] INFO: Test: payload_integrity
[2026-03-25T23:54:09Z] INFO: Response received, checking payload match...
[2026-03-25T23:54:09Z] INFO: Payload integrity verified (found in response)
[2026-03-25T23:54:09Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-25T23:54:09Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

[2026-03-25T23:59:17Z] INFO: iperf-sends: sent 10 packets, received 10 responses
[2026-03-25T23:59:17Z] INFO: iperf-sends: PASS (sent >= 5 packets)
[2026-03-25T23:59:17Z] INFO: JUnit XML written to: /tmp/test-results/tier3-iperf-sends.xml
[2026-03-25T23:59:17Z] INFO: iperf-sends test complete

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-25T23:58:17Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-25T23:58:17Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-25T23:58:17Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-25T23:58:17Z] INFO: our-app-sends test complete
Full Application Logs (last 200 lines each)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.132:9000 (MAC: 02:03:d9:ae:e6:df)
echo listening on 10.0.1.132:9000
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.203:9000 (MAC: 02:08:80:08:51:91)
echo listening on 10.0.1.203:9000
Shutting down gracefully...

sender-test-client.log

[2026-03-25T23:47:27Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.132:9000
Bind address: 10.0.1.203:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.203:32768 (MAC: 02:08:80:08:51:91)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.132:9000: 'arp-probe #1'
Test complete
[2026-03-25T23:47:28Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T23:47:28Z] INFO: Test: udp_send_receive
[2026-03-25T23:47:30Z] INFO: UDP send/receive succeeded
[2026-03-25T23:47:30Z] INFO: Test: echo_roundtrip
[2026-03-25T23:47:31Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T23:47:31Z] INFO: Test: payload_integrity
[2026-03-25T23:47:32Z] INFO: Response received, checking payload match...
[2026-03-25T23:47:32Z] INFO: Payload integrity verified (found in response)
[2026-03-25T23:47:32Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-25T23:47:32Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-25T23:54:07Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.132:9000
Bind address: 0.0.0.0:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.132:9000: 'arp-probe #1'
Test complete
[2026-03-25T23:54:07Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-25T23:54:07Z] INFO: Test: udp_send_receive
[2026-03-25T23:54:08Z] INFO: UDP send/receive succeeded
[2026-03-25T23:54:08Z] INFO: Test: echo_roundtrip
[2026-03-25T23:54:09Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-25T23:54:09Z] INFO: Test: payload_integrity
[2026-03-25T23:54:09Z] INFO: Response received, checking payload match...
[2026-03-25T23:54:09Z] INFO: Payload integrity verified (found in response)
[2026-03-25T23:54:09Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-25T23:54:09Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

[2026-03-25T23:59:17Z] INFO: iperf-sends: sent 10 packets, received 10 responses
[2026-03-25T23:59:17Z] INFO: iperf-sends: PASS (sent >= 5 packets)
[2026-03-25T23:59:17Z] INFO: JUnit XML written to: /tmp/test-results/tier3-iperf-sends.xml
[2026-03-25T23:59:17Z] INFO: iperf-sends test complete

sender-test-client-iperf.log

[2026-03-25T23:58:15Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-03-25T23:58:15Z] INFO: Local IP: 10.0.1.203, Peer IP: 10.0.1.132, Port: 9000
[2026-03-25T23:58:15Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.179       0x1         0x2         02:41:16:cb:2b:0b     *        ens5
10.0.1.203       0x1         0x2         02:08:80:08:51:91     *        ens5
10.0.1.138       0x1         0x2         02:b9:1d:f8:d6:75     *        ens5
10.0.1.132       0x1         0x2         02:03:d9:ae:e6:df     *        ens5
10.0.1.1         0x1         0x2         02:64:cd:b8:e6:8f     *        ens5
[2026-03-25T23:58:15Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-03-25T23:58:15Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-03-25T23:58:15Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1858056 Mar 25 23:45 /opt/dpdk-stdlib/target/release/test-client
[2026-03-25T23:58:15Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.132 --port 9000 --bind-ip 10.0.1.203 --count 10 --delay 200
[2026-03-25T23:58:17Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.132:9000
Bind address: 10.0.1.203:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.203:32768 (MAC: 02:08:80:08:51:91)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.132:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-25T23:58:17Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-25T23:58:17Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-25T23:58:17Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-25T23:58:17Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-087d994daa5ecb364 (receiver)
Command ID: b4b7fc87-3dee-4df6-973a-927cc635638c

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-087d994daa5ecb364 (receiver)
Command ID: b9f25493-5e91-42fc-bf38-489724ddd507

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-087d994daa5ecb364 (receiver)
Command ID: d978c083-46b6-4dc1-9d49-823e6f5486e4

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-025fa05142308c541 (sender)
Command ID: 070c7cbc-1b4f-4a2d-8026-5e822e105b3a

=== STDOUT ===


=== STDERR ===


Network & PCI State

receiver-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:6d:c4:bd:cf:cf brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-02eec686378dec3ee
    altname device-number-0.0
    inet 10.0.1.219/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2498sec preferred_lft 2498sec
    inet6 fe80::6d:c4ff:febd:cfcf/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:76:c8:83:7e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 02:03:d9:ae:e6:df brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname ens6
    inet 10.0.1.132/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3:d9ff:feae:e6df/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:91:f0:0e:3b:1d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-077c9b86cdc7b0427
    altname device-number-0.0
    inet 10.0.1.50/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2518sec preferred_lft 2518sec
    inet6 fe80::91:f0ff:fe0e:3b1d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:0e:e4:a6:ef brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-25T23:46:49Z
hostname: ip-10-0-1-219.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Elastic Network Adapter (ENA) ec20' drv=vfio-pci unused=ena

Network devices using kernel driver
===================================
0000:00:05.0 'Elastic Network Adapter (ENA) ec20' if=ens5 drv=ena unused=vfio-pci *Active*

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:6d:c4:bd:cf:cf brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-02eec686378dec3ee
    altname device-number-0.0
    inet 10.0.1.219/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3362sec preferred_lft 3362sec
    inet6 fe80::6d:c4ff:febd:cfcf/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:76:c8:83:7e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:64:cd:b8:e6:8f REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.219 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.219 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.219 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.219 metric 512 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:03:d9:ae:e6:df/ 02:6d:c4:bd:cf:cf/ 

--- ENI: 02:03:d9:ae:e6:df/ ---
  device-number: 1
  local-ipv4s: 10.0.1.132
  subnet-id: subnet-0d4a163708047bf55
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:6d:c4:bd:cf:cf/ ---
  device-number: 0
  local-ipv4s: 10.0.1.219
  subnet-id: subnet-0d4a163708047bf55
  subnet-cidr: 10.0.1.0/24


=== GATEWAY ARP TEST ===
Gateway IP: 10.0.1.1
Gateway ARP entry:
10.0.1.1 dev ens5 lladdr 02:64:cd:b8:e6:8f REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.219 ens5
Unicast reply from 10.0.1.1 [02:64:CD:B8:E6:8F]  0.537ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 25 23:46 .
drwxr-xr-x. 14 root root     3100 Mar 25 23:45 ..
crw-------.  1 root root 243,   0 Mar 25 23:46 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 25 23:42 vfio

noiommu mode:
Y

=== DPDK SHARED MEMORY ===
no /var/run/dpdk/ directory (clean state)

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.066508] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.072756] audit: type=2000 audit(1774482165.893:1): state=initialized audit_enabled=0 res=1
[    0.074248] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.098720] ACPI: Interpreter enabled
[    0.098720] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.122691] pci 0000:00:05.0: enabling Extended Tags
[    0.154568] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.184356] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.255417] IPI shorthand broadcast: enabled
[    0.255480] AES CTR mode by8 optimization enabled
[    2.145189] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.189929] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.240252] VFIO - User Level meta-driver version: 0.3
[    3.360726] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.372014] ena 0000:00:05.0: ENA device version: 0.10
[    3.372762] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.464983] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.477119] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:6d:c4:bd:cf:cf
[    3.535150] ena 0000:00:05.0 ens5: renamed from eth0
[    4.369520] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  190.309430] pci 0000:00:06.0: enabling Extended Tags
[  190.313254] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.323897] ena 0000:00:06.0: ENA device version: 0.10
[  190.324685] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.423905] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.435800] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:03:d9:ae:e6:df
[  190.503905] ena 0000:00:06.0 ens6: renamed from eth0
[  190.816958] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  229.978661] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  229.979978] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

=== DPDK-RELATED PROCESSES ===
no DPDK processes running

=== END DIAGNOSTICS ===

sender-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-25T23:46:41Z
hostname: ip-10-0-1-50.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

Network devices using DPDK-compatible driver
============================================
0000:00:06.0 'Elastic Network Adapter (ENA) ec20' drv=vfio-pci unused=ena

Network devices using kernel driver
===================================
0000:00:05.0 'Elastic Network Adapter (ENA) ec20' if=ens5 drv=ena unused=vfio-pci *Active*

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:91:f0:0e:3b:1d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-077c9b86cdc7b0427
    altname device-number-0.0
    inet 10.0.1.50/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3368sec preferred_lft 3368sec
    inet6 fe80::91:f0ff:fe0e:3b1d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:0e:e4:a6:ef brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.138 dev ens5 lladdr 02:b9:1d:f8:d6:75 REACHABLE 
10.0.1.1 dev ens5 lladdr 02:64:cd:b8:e6:8f REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.50 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.50 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.50 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.50 metric 512 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:08:80:08:51:91/ 02:91:f0:0e:3b:1d/ 

--- ENI: 02:08:80:08:51:91/ ---
  device-number: 1
  local-ipv4s: 10.0.1.203
  subnet-id: subnet-0d4a163708047bf55
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:91:f0:0e:3b:1d/ ---
  device-number: 0
  local-ipv4s: 10.0.1.50
  subnet-id: subnet-0d4a163708047bf55
  subnet-cidr: 10.0.1.0/24


=== GATEWAY ARP TEST ===
Gateway IP: 10.0.1.1
Gateway ARP entry:
10.0.1.1 dev ens5 lladdr 02:64:cd:b8:e6:8f REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.50 ens5
Unicast reply from 10.0.1.1 [02:64:CD:B8:E6:8F]  0.537ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:    1024
HugePages_Free:     1024
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:         2097152 kB

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 25 23:46 .
drwxr-xr-x. 14 root root     3100 Mar 25 23:45 ..
crw-------.  1 root root 243,   0 Mar 25 23:46 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 25 23:42 vfio

noiommu mode:
Y

=== DPDK SHARED MEMORY ===
no /var/run/dpdk/ directory (clean state)

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067634] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073746] audit: type=2000 audit(1774482164.219:1): state=initialized audit_enabled=0 res=1
[    0.075156] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099872] ACPI: Interpreter enabled
[    0.099872] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124613] pci 0000:00:05.0: enabling Extended Tags
[    0.155563] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.185253] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.253492] IPI shorthand broadcast: enabled
[    0.253553] AES CTR mode by8 optimization enabled
[    2.475174] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.518656] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.564418] VFIO - User Level meta-driver version: 0.3
[    3.637159] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.657640] ena 0000:00:05.0: ENA device version: 0.10
[    3.658365] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.764203] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.777045] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:91:f0:0e:3b:1d
[    3.825097] ena 0000:00:05.0 ens5: renamed from eth0
[    4.596618] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  190.612034] pci 0000:00:06.0: enabling Extended Tags
[  190.615850] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.628083] ena 0000:00:06.0: ENA device version: 0.10
[  190.628871] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.728096] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.740005] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:08:80:08:51:91
[  190.798086] ena 0000:00:06.0 ens6: renamed from eth0
[  191.148258] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  224.701517] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  224.702845] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

=== DPDK-RELATED PROCESSES ===
no DPDK processes running

=== END DIAGNOSTICS ===
⚠️ Crash Diagnostics

receiver-dmesg-crashes.log

[    0.072736] pid_max: default: 32768 minimum: 301
[    0.124825] iommu: Default domain type: Translated 
[    0.125558] NetLabel:  unlabeled traffic allowed by default
[    0.132736] PCI: CLS 0 bytes, default 64
[    0.209984] nvme nvme0: 2/0/0 default/read/poll queues
[    0.421049] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.421140] systemd[1]: No hostname configured, using default hostname.
[    0.518435] systemd[1]: Queued start job for default target initrd.target.
[    1.438285] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.115122] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  266.335482] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6228)
[  665.540769] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:21488)

sender-dmesg-crashes.log

[    0.073728] pid_max: default: 32768 minimum: 301
[    0.126750] iommu: Default domain type: Translated 
[    0.127500] NetLabel:  unlabeled traffic allowed by default
[    0.133728] PCI: CLS 0 bytes, default 64
[    0.203968] nvme nvme0: 2/0/0 default/read/poll queues
[    0.419644] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.419734] systemd[1]: No hostname configured, using default hostname.
[    0.517360] systemd[1]: Queued start job for default target initrd.target.
[    1.716916] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    7.914047] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  975.364215] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:42046)
Kernel Console (dmesg)

receiver-console-output.log (PCI/driver events only)

[  190.307085] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  190.308142] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  190.309430] pci 0000:00:06.0: enabling Extended Tags
[  190.311221] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  190.312257] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  190.313254] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.323897] ena 0000:00:06.0: ENA device version: 0.10
[  190.324685] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.423905] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.435800] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:03:d9:ae:e6:df
[  190.503905] ena 0000:00:06.0 ens6: renamed from eth0
[  190.816958] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  229.978661] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  229.979978] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  266.335482] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6228)
[  415.826374] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  416.839700] ena 0000:00:06.0: ENA device version: 0.10
[  416.840479] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  416.941257] ena 0000:00:06.0: ENA Large LLQ is disabled
[  416.953073] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:03:d9:ae:e6:df
[  416.963151] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  535.763999] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  535.765319] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  665.540769] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:21488)
[  739.697825] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  740.707389] ena 0000:00:06.0: ENA device version: 0.10
[  740.708178] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  740.807364] ena 0000:00:06.0: ENA Large LLQ is disabled
[  740.819953] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:03:d9:ae:e6:df
[  740.868699] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels

sender-console-output.log (PCI/driver events only)

[    4.596618] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  190.608571] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  190.609690] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  190.610740] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  190.612034] pci 0000:00:06.0: enabling Extended Tags
[  190.613818] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  190.614853] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  190.615850] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.628083] ena 0000:00:06.0: ENA device version: 0.10
[  190.628871] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.728096] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.740005] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:08:80:08:51:91
[  190.798086] ena 0000:00:06.0 ens6: renamed from eth0
[  191.148258] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  224.701517] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  224.702845] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  283.949818] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6830)
[  284.689722] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6851)
[  286.429729] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6875)
[  287.969712] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6900)
[  332.223614] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  333.236660] ena 0000:00:06.0: ENA device version: 0.10
[  333.237441] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  333.335574] ena 0000:00:06.0: ENA Large LLQ is disabled
[  333.348476] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:08:80:08:51:91
[  333.358826] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  779.527474] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  779.528883] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  931.364549] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:39531)
[  975.364215] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:42046)

@gspivey
gspivey merged commit b659ffd into main Mar 26, 2026
4 checks passed
@gspivey
gspivey deleted the claude/cleanup-udp-prototype-z4UUD branch April 15, 2026 06:34
gspivey pushed a commit that referenced this pull request Jun 2, 2026
Performance test results from GH Actions run 26815657085:
- rust-dpdk at 700K PPS 64B: 689,799 RX (1.46% drop)
- native-dpdk at 700K PPS 64B: 688,347 RX (1.66% drop)
- No regression vs Run #26

Synthetic CPU-only IPv6 vs IPv4 comparison confirms expected
~28% TX overhead at 64B due to larger headers and mandatory
UDP checksum. RX performance equivalent.

Marks IPv6 roadmap tasks 3 and 9 as complete.
gspivey pushed a commit that referenced this pull request Jun 14, 2026
Performance tests show no regression — TCP engine code has zero impact
on UDP datapath. rust-dpdk results consistent with Run #27.
gspivey pushed a commit that referenced this pull request Jun 18, 2026
gspivey added a commit that referenced this pull request Jun 18, 2026
## ROADMAP Item

`#27 dpdk-stdlib-tcp: Sync socket — engine loop and DpdkTcpStream`

Spec: `.kiro/specs/tcp-support/` · tasks 8.1, 8.2, 8.3

## Changes

### engine_loop (task 8.2)
- Selects on `rx_readiness` | `engine_wakeup` | timer deadline
- Dispatches: `parse_tcp_packet` → `on_segment`, `cmd_rx.try_recv()` →
`on_command`, `on_tick(clock.now())`
- Handles all three `RxReadiness` variants (Condvar/PollOnly/Fd)
- Sends outbound frames via `backend.send_frame`

### connect_v4 + connect_timeout (task 8.1)
- Resolves dst_mac via `NeighborResolver.resolve()`
- Creates `ConnectionHandle` with SPSC rings
- Sends `EngineCommand::Connect` with resolved MACs
- Parks on oneshot until handshake completes or error
- `connect_timeout` uses `recv_timeout` for bounded wait

### DpdkTcpStream (task 8.3)
- `io::Read` with P0-B recheck-under-lock pattern (check error → try
rx_ring.read → check eof → lock notify_lock → recheck → condvar.wait)
- `io::Write` with push to tx_ring, signal engine_wakeup, block if full
- Honors `set_nonblocking` (→ `WouldBlock`) and
`read_timeout`/`write_timeout` (condvar.wait_timeout → `TimedOut`)
- `Drop` → decrement app_refcount → send Close on last handle

### Supporting changes
- Added `clock()` and `next_timer_deadline()` to `TcpEngine`
- Added `wakeup()` accessor to `CommandSender`

## Tests Added
12 new unit tests covering:
- Nonblocking read/write (WouldBlock)
- Data delivery from rx_ring
- EOF flag detection
- Sticky error propagation
- Write pushes to tx_ring
- Read timeout expiry
- Blocking read wakes on data (threaded)
- Drop sends Close command
- connect_v4 resolves MAC and sends command
- connect_timeout returns TimedOut

## Validation
- `cargo build && cargo test`: all 1007 workspace tests pass
- Zero warnings in new code (only pre-existing warnings in upstream
dpdk-stdlib)

---------

Co-authored-by: Agent Router <agent@agent-router.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants