Skip to content

dpdk-stdlib-tcp: EC2 tier-2 and tier-3 integration test scripts - #117

Merged
gspivey merged 1 commit into
developmentfrom
agent/tcp-tier2-tier3-integration-scripts
Aug 15, 2026
Merged

gspivey merged 1 commit into
developmentfrom
agent/tcp-tier2-tier3-integration-scripts

Conversation

@gspivey

@gspivey gspivey commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Roadmap Item

ROADMAP #35: dpdk-stdlib-tcp: EC2 tier-2 and tier-3 integration test scripts

Spec: .kiro/specs/tcp-support/ tasks 15.2, 15.3

Changes

Adds four new integration test scripts for EC2:

Tier-2: Reliability under adverse conditions

  • tier2-tcp-retransmit.sh — Injects packet loss via tc/netem (default 10%), runs bidirectional echo transfer, and verifies:

    • Data delivery completes despite loss (retransmission works)
    • Recovery time is bounded (≤10× baseline + 5s)
    • Baseline comparison without loss for reference
  • tier2-tcp-flow-control.sh — Exercises TCP flow control by sending large bursts (1400B × 200–500) that overflow receive buffers, verifying:

    • Zero-window → persist probe → resume cycle works
    • Data integrity maintained under window pressure
    • 1000-iteration small-payload burst (64B × 1000) stays consistent

Tier-3: Cross-stack interoperability

  • tier3-tcp-kernel-interop.sh — Tests kernel TCP ↔ DPDK TCP interop:

    • ncat/nc (kernel) → DPDK tcp-echo server
    • DPDK tcp-test-client → ncat/socat (kernel) echo server
    • iperf3 throughput test (kernel TCP path validation)
  • tier3-tcp-std-parity.sh — Byte-for-byte comparison between dpdk-stdlib-tcp and std::net::TcpStream using tcp-test-client --mode std-parity:

    • 64B, 512B, 1400B, 4096B payload sizes
    • Verifies identical received bytes from both TCP stacks

Pattern

All scripts follow the established harness pattern:

  • Source harness-common.sh for JUnit XML generation
  • Server/client role separation via --role flag
  • --bind-ip, --peer-ip, --port, --gateway-mac, --output flags
  • 60-second per-test timeout
  • JUnit XML output for CI reporting
  • Crash diagnostics via check_process_crash

Tests

cargo build && cargo test passes (1040+ tests, 0 failures). These are pure shell scripts — no Rust code changes.

Tier-2 scripts:
- tier2-tcp-retransmit.sh: loss injection via tc/netem, verifies
  retransmission occurs and recovery time is bounded
- tier2-tcp-flow-control.sh: exercises zero-window condition with
  large bursts, verifies persist probe and data integrity

Tier-3 scripts:
- tier3-tcp-kernel-interop.sh: ncat/iperf3 interoperability tests
  (kernel TCP ↔ DPDK TCP in both directions)
- tier3-tcp-std-parity.sh: byte-for-byte comparison between
  dpdk-stdlib-tcp and std::net::TcpStream across payload sizes

All scripts follow the existing harness pattern: source
harness-common.sh, produce JUnit XML, 60s timeout per test,
server/client role separation.
@github-actions

Copy link
Copy Markdown

Synthetic Performance Results (run)

Commit: 359fad4f

✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)

Synthetic UDP Performance Results

Measures framework overhead: sync dpdk_udp::UdpSocket vs async (std::sync::Mutex + try_recv_from).

IPv4 Baseline

Test Payload Sync PPS Async PPS Ratio (sync/async) Async ns/op
TX send_to 64B 12.8M 11.7M 1.1x 85
RX recv_from 64B 3.6M 4.2M 0.9x 240
TX send_to 1400B 2.1M 2.1M 1.0x 472
RX recv_from 1400B 1.3M 1.4M 0.9x 696

IPv6

Test Payload Sync PPS Async PPS Ratio (sync/async) Async ns/op
TX send_to (IPv6) 64B 9.9M 9.4M 1.1x 106
RX recv_from (IPv6) 64B 4.0M 4.7M 0.8x 213
TX send_to (IPv6) 1400B 3.4M 3.3M 1.0x 301
RX recv_from (IPv6) 1400B 1.3M 1.4M 0.9x 736

IPv6 vs IPv4 Comparison (sync path)

Test Payload IPv4 PPS IPv6 PPS IPv4/IPv6 Ratio
TX send_to (sync) 64B 12.8M 9.9M 1.29x
RX recv_from (sync) 64B 3.6M 4.0M 0.90x
TX send_to (sync) 1400B 2.1M 3.4M 0.63x
RX recv_from (sync) 1400B 1.3M 1.3M 1.04x

IPv4 avg sync/async ratio: 1.0x, worst: 1.1x | IPv6 vs IPv4 worst ratio: 1.29x (OK)

OK: IPv6 is 28.9% slower than IPv4 — within acceptable threshold (<50%). Expected due to larger headers (40B vs 20B) and mandatory UDP checksum.

Good: Async wrapper is within 1.1x of sync — minimal framework overhead.

@github-actions

Copy link
Copy Markdown

Synthetic Performance Results — Graviton (run)

Commit: 359fad4f

✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)
✅ synthetic UDP socket bound to [2001:db8::1]:9000 (MAC: 02:00:00:00:00:01)

Synthetic UDP Performance Results

Measures framework overhead: sync dpdk_udp::UdpSocket vs async (std::sync::Mutex + try_recv_from).

IPv4 Baseline

Test Payload Sync PPS Async PPS Ratio (sync/async) Async ns/op
TX send_to 64B 11.4M 10.9M 1.0x 91
RX recv_from 64B 3.4M 4.5M 0.8x 223
TX send_to 1400B 1.6M 1.6M 1.0x 610
RX recv_from 1400B 958.7K 1.0M 0.9x 954

IPv6

Test Payload Sync PPS Async PPS Ratio (sync/async) Async ns/op
TX send_to (IPv6) 64B 8.3M 8.4M 1.0x 119
RX recv_from (IPv6) 64B 3.9M 5.4M 0.7x 186
TX send_to (IPv6) 1400B 2.6M 2.6M 1.0x 377
RX recv_from (IPv6) 1400B 976.9K 1.1M 0.9x 941

IPv6 vs IPv4 Comparison (sync path)

Test Payload IPv4 PPS IPv6 PPS IPv4/IPv6 Ratio
TX send_to (sync) 64B 11.4M 8.3M 1.38x
RX recv_from (sync) 64B 3.4M 3.9M 0.88x
TX send_to (sync) 1400B 1.6M 2.6M 0.62x
RX recv_from (sync) 1400B 958.7K 976.9K 0.98x

IPv4 avg sync/async ratio: 0.9x, worst: 1.0x | IPv6 vs IPv4 worst ratio: 1.38x (OK)

OK: IPv6 is 38.1% slower than IPv4 — within acceptable threshold (<50%). Expected due to larger headers (40B vs 20B) and mandatory UDP checksum.

Good: Async wrapper is within 1.0x of sync — minimal framework overhead.

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0efb5135a1494008a (DPDK ENI: 10.0.1.252)
  • Receiver: i-0c684faa531dbd162 (DPDK ENI: 10.0.1.27)
  • Both instances SSM-ready.

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-097a07a09967242fa (DPDK ENI: 10.0.1.61)
  • Receiver: i-0d28e19dff274b33a (DPDK ENI: 10.0.1.243)
  • 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: 6 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

[CI] Stage: Summary

Some tests FAILED (exit code: 1).

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

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

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed — Graviton (run)

Branch: 117/merge | Commit: 359fad4f

Test Results

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

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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.243:9000 (MAC: 02:4c:57:c5:a3:f5)
echo listening on 10.0.1.243:9000 (MTU=9001, max_udp_payload=8973)
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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.61:9000 (MAC: 02:b3:b8:d5:63:61)
echo listening on 10.0.1.61:9000 (MTU=9001, max_udp_payload=8973)
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.243:9000: 'arp-probe #1'
Test complete
[2026-08-15T01:24:26Z] INFO: ARP resolution succeeded (got response from peer)
[2026-08-15T01:24:26Z] INFO: Test: udp_send_receive
[2026-08-15T01:24:27Z] INFO: UDP send/receive succeeded
[2026-08-15T01:24:27Z] INFO: Test: echo_roundtrip
[2026-08-15T01:24:28Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-08-15T01:24:28Z] INFO: Test: payload_integrity
[2026-08-15T01:24:28Z] INFO: Response received, checking payload match...
[2026-08-15T01:24:28Z] INFO: Payload integrity verified (found in response)
[2026-08-15T01:24:28Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-08-15T01:24:28Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

@github-actions

Copy link
Copy Markdown

Integration Test Failure (Run 31855637896)

Branch: 117/merge | Commit: 359fad4fc1b87cadf5955a3aad7c220d90af4b33

No failure-summary.json found

receiver-user-data.log (6885 bytes, last 80 lines)

   Compiling slab v0.4.12
   Compiling anstyle v1.0.14
   Compiling colorchoice v1.0.5
   Compiling s2n-tls v0.3.42
   Compiling is_terminal_polyfill v1.70.2
   Compiling futures-task v0.3.34
   Compiling futures-util v0.3.34
   Compiling anstream v1.0.0
   Compiling rand_core v0.5.1
   Compiling ppv-lite86 v0.2.21
   Compiling strsim v0.11.1
   Compiling hex v0.4.3
   Compiling heck v0.5.0
   Compiling clap_lex v1.1.0
   Compiling rand_core v0.10.1
   Compiling getrandom v0.4.3
   Compiling clap_builder v4.6.6
   Compiling clap_derive v4.6.4
   Compiling rand_chacha v0.2.2
   Compiling futures-executor v0.3.34
   Compiling ring v0.17.14
   Compiling deranged v0.5.8
   Compiling cpufeatures v0.3.0
   Compiling equivalent v1.0.2
   Compiling foldhash v0.2.0
   Compiling num-conv v0.2.2
   Compiling s2n-quic-platform v0.81.0
   Compiling powerfmt v0.2.0
   Compiling allocator-api2 v0.2.21
   Compiling time-core v0.1.9
   Compiling time v0.3.55
   Compiling hashbrown v0.17.1
   Compiling chacha20 v0.10.1
   Compiling futures v0.3.34
   Compiling rand v0.7.3
   Compiling clap v4.6.6
   Compiling dpdk-stdlib-tcp v0.2.0 (/opt/dpdk-stdlib/dpdk-stdlib-tcp)
   Compiling intrusive-collections v0.10.3
   Compiling untrusted v0.9.0
   Compiling base64 v0.22.1
   Compiling fnv v1.0.7
   Compiling cuckoofilter v0.5.0
   Compiling pem v3.0.6
   Compiling s2n-quic-transport v0.81.0
   Compiling rand v0.10.2
   Compiling yasna v0.5.2
   Compiling rustls-pki-types v1.15.1
   Compiling hash_hasher v2.0.4
   Compiling rcgen v0.13.2
   Compiling s2n-quic-crypto v0.81.0
   Compiling serde_core v1.0.229
   Compiling async-trait v0.1.92
   Compiling zmij v1.0.23
   Compiling dpdk-stdlib-tokio v0.2.0 (/opt/dpdk-stdlib/dpdk-tokio)
   Compiling serde v1.0.229
   Compiling serde_json v1.0.151
   Compiling serde_derive v1.0.229
   Compiling itoa v1.0.18
   Compiling tcp-synthetic-bench v0.2.0 (/opt/dpdk-stdlib/apps/tcp-synthetic-bench)
   Compiling synthetic-bench v0.2.0 (/opt/dpdk-stdlib/apps/synthetic-bench)
   Compiling test-client v0.1.0 (/opt/dpdk-stdlib/apps/test-client)
   Compiling tokio-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-echo)
   Compiling tokio-tcp-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-tcp-echo)
   Compiling tcp-test-client v0.1.0 (/opt/dpdk-stdlib/apps/tcp-test-client)
   Compiling tcp-echo v0.1.0 (/opt/dpdk-stdlib/apps/tcp-echo)
   Compiling plain-echo v0.1.0 (/opt/dpdk-stdlib/apps/plain-echo)
   Compiling echo v0.1.0 (/opt/dpdk-stdlib/apps/echo)
   Compiling plain-tcp-echo v0.2.0 (/opt/dpdk-stdlib/apps/plain-tcp-echo)
   Compiling s2n-quic-tls v0.81.0
   Compiling s2n-quic-tls-default v0.81.0
   Compiling s2n-quic v1.81.0
   Compiling dpdk-stdlib-quic v0.2.0 (/opt/dpdk-stdlib/dpdk-stdlib-quic)
    Finished `release` profile [optimized] target(s) in 4m 22s
=== Build complete ===
-rwxr-xr-x. 2 root root 1427040 Aug 15 01:16 target/release/echo
-rwxr-xr-x. 2 root root 2009240 Aug 15 01:16 target/release/test-client
=== Setup complete! ===
Rust project built successfully
Instance ready for testing
Project location: /opt/dpdk-stdlib

sender-user-data.log (6879 bytes, last 80 lines)

   Compiling anstyle-query v1.1.5
   Compiling futures-task v0.3.34
   Compiling colorchoice v1.0.5
   Compiling anstyle v1.0.14
   Compiling is_terminal_polyfill v1.70.2
   Compiling s2n-tls v0.3.42
   Compiling anstream v1.0.0
   Compiling futures-util v0.3.34
   Compiling rand_core v0.5.1
   Compiling ppv-lite86 v0.2.21
   Compiling getrandom v0.4.3
   Compiling clap_lex v1.1.0
   Compiling strsim v0.11.1
   Compiling rand_core v0.10.1
   Compiling heck v0.5.0
   Compiling hex v0.4.3
   Compiling clap_derive v4.6.4
   Compiling clap_builder v4.6.6
   Compiling rand_chacha v0.2.2
   Compiling futures-executor v0.3.34
   Compiling ring v0.17.14
   Compiling s2n-quic-platform v0.81.0
   Compiling deranged v0.5.8
   Compiling allocator-api2 v0.2.21
   Compiling foldhash v0.2.0
   Compiling powerfmt v0.2.0
   Compiling equivalent v1.0.2
   Compiling cpufeatures v0.3.0
   Compiling num-conv v0.2.2
   Compiling time-core v0.1.9
   Compiling time v0.3.55
   Compiling chacha20 v0.10.1
   Compiling hashbrown v0.17.1
   Compiling futures v0.3.34
   Compiling rand v0.7.3
   Compiling clap v4.6.6
   Compiling dpdk-stdlib-tcp v0.2.0 (/opt/dpdk-stdlib/dpdk-stdlib-tcp)
   Compiling fnv v1.0.7
   Compiling intrusive-collections v0.10.3
   Compiling base64 v0.22.1
   Compiling untrusted v0.9.0
   Compiling pem v3.0.6
   Compiling s2n-quic-transport v0.81.0
   Compiling cuckoofilter v0.5.0
   Compiling rand v0.10.2
   Compiling yasna v0.5.2
   Compiling rustls-pki-types v1.15.1
   Compiling hash_hasher v2.0.4
   Compiling rcgen v0.13.2
   Compiling s2n-quic-crypto v0.81.0
   Compiling serde_core v1.0.229
   Compiling async-trait v0.1.92
   Compiling zmij v1.0.23
   Compiling dpdk-stdlib-tokio v0.2.0 (/opt/dpdk-stdlib/dpdk-tokio)
   Compiling serde v1.0.229
   Compiling serde_json v1.0.151
   Compiling serde_derive v1.0.229
   Compiling itoa v1.0.18
   Compiling tcp-synthetic-bench v0.2.0 (/opt/dpdk-stdlib/apps/tcp-synthetic-bench)
   Compiling synthetic-bench v0.2.0 (/opt/dpdk-stdlib/apps/synthetic-bench)
   Compiling tokio-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-echo)
   Compiling test-client v0.1.0 (/opt/dpdk-stdlib/apps/test-client)
   Compiling tokio-tcp-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-tcp-echo)
   Compiling tcp-test-client v0.1.0 (/opt/dpdk-stdlib/apps/tcp-test-client)
   Compiling tcp-echo v0.1.0 (/opt/dpdk-stdlib/apps/tcp-echo)
   Compiling plain-echo v0.1.0 (/opt/dpdk-stdlib/apps/plain-echo)
   Compiling echo v0.1.0 (/opt/dpdk-stdlib/apps/echo)
   Compiling plain-tcp-echo v0.2.0 (/opt/dpdk-stdlib/apps/plain-tcp-echo)
   Compiling s2n-quic-tls v0.81.0
   Compiling s2n-quic-tls-default v0.81.0
   Compiling s2n-quic v1.81.0
   Compiling dpdk-stdlib-quic v0.2.0 (/opt/dpdk-stdlib/dpdk-stdlib-quic)
    Finished `release` profile [optimized] target(s) in 4m 19s
=== Build complete ===
-rwxr-xr-x. 2 root root 1427040 Aug 15 01:17 target/release/echo
-rwxr-xr-x. 2 root root 2009240 Aug 15 01:17 target/release/test-client
=== Setup complete! ===
Rust project built successfully
Instance ready for testing
Project location: /opt/dpdk-stdlib

receiver-console-output.log (44031 bytes, last 80 lines)

[  292.442989] cloud-init[1825]:    Compiling test-client v0.1.0 (/opt/dpdk-stdlib/apps/test-client)
[  297.649096] cloud-init[1825]:    Compiling tokio-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-echo)
[  303.400534] cloud-init[1825]:    Compiling tokio-tcp-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-tcp-echo)
[  308.290700] cloud-init[1825]:    Compiling tcp-test-client v0.1.0 (/opt/dpdk-stdlib/apps/tcp-test-client)
[  310.606361] cloud-init[1825]:    Compiling tcp-echo v0.1.0 (/opt/dpdk-stdlib/apps/tcp-echo)
[  312.930794] cloud-init[1825]:    Compiling plain-echo v0.1.0 (/opt/dpdk-stdlib/apps/plain-echo)
[  314.409018] cloud-init[1825]:    Compiling echo v0.1.0 (/opt/dpdk-stdlib/apps/echo)
[  316.497178] cloud-init[1825]:    Compiling plain-tcp-echo v0.2.0 (/opt/dpdk-stdlib/apps/plain-tcp-echo)
[  327.092747] cloud-init[1825]:    Compiling s2n-quic-tls v0.81.0
[  327.937090] cloud-init[1825]:    Compiling s2n-quic-tls-default v0.81.0
[  327.973755] cloud-init[1825]:    Compiling s2n-quic v1.81.0
[  328.946898] cloud-init[1825]:    Compiling dpdk-stdlib-quic v0.2.0 (/opt/dpdk-stdlib/dpdk-stdlib-quic)
[  389.407475] cloud-init[1825]:     Finished `release` profile [optimized] target(s) in 4m 22s
[  389.491123] cloud-init[1825]: === Build complete ===
[  389.494159] cloud-init[1825]: -rwxr-xr-x. 2 root root 1427040 Aug 15 01:16 target/release/echo
[  389.494502] cloud-init[1825]: -rwxr-xr-x. 2 root root 2009240 Aug 15 01:16 target/release/test-client
[  389.498181] cloud-init[1825]: === Setup complete! ===
[  389.498490] cloud-init[1825]: Rust project built successfully
[  389.498533] cloud-init[1825]: Instance ready for testing
[  389.498567] cloud-init[1825]: Project location: /opt/dpdk-stdlib
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 | 32:7b:06:eb:58:5e:a7:52:5a:70:7a:c2:26:36:e8:aa:28:4c:20:c2:69:41:3b:5d:b2:22:df:00:5e:73:88:47 |    -    | packer_6a7c03c5-c2f4-276a-0dbf-90663c801107 |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
<14>Aug 15 01:18:09 cloud-init: #############################################################
<14>Aug 15 01:18:09 cloud-init: -----BEGIN SSH HOST KEY FINGERPRINTS-----
<14>Aug 15 01:18:09 cloud-init: 256 SHA256:WgI/9XLEw4fG1gBcze/d+MIq6u4TlXkHiaQSp0tOcEc root@ip-10-0-1-230.ec2.internal (ECDSA)
<14>Aug 15 01:18:09 cloud-init: 256 SHA256:Smkzi/vTA868v9fqY8djh+bjlFxecbF2RbBJDINxhsM root@ip-10-0-1-230.ec2.internal (ED25519)
<14>Aug 15 01:18:09 cloud-init: -----END SSH HOST KEY FINGERPRINTS-----
<14>Aug 15 01:18:09 cloud-init: #############################################################
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBtUa3wcHG74l0iVu/ftQJx86TcFyqsNMZn9At+55CM2+EvkLDooXWWLr7I4kFdMKEUHVP+CksZG4/ZltimvGa8= root@ip-10-0-1-230.ec2.internal
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP+fkJgRH8LK3yrfIr2IaT993A2rD78U/ofIxNxdrONH root@ip-10-0-1-230.ec2.internal
-----END SSH HOST KEY KEYS-----
[  389.801963] cloud-init[1825]: Cloud-init v. 22.2.2 finished at Sat, 15 Aug 2026 01:18:09 +0000. Datasource DataSourceEc2.  Up 389.79 seconds
[  411.535985] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  411.537027] pci 0000:00:06.0: BAR 0 [mem 0x00000000-0x00003fff]
[  411.537975] pci 0000:00:06.0: BAR 2 [mem 0x00000000-0x000fffff pref]
[  411.539167] pci 0000:00:06.0: enabling Extended Tags
[  411.540921] pci 0000:00:06.0: BAR 2 [mem 0xc0600000-0xc06fffff pref]: assigned
[  411.541850] pci 0000:00:06.0: BAR 0 [mem 0xc0508000-0xc050bfff]: assigned
[  411.542796] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  411.552127] ena 0000:00:06.0: ENA device version: 0.10
[  411.552886] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  411.652108] ena 0000:00:06.0: ENA Large LLQ is disabled
[  411.664566] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:76:e9:cf:d0:27
[  411.722141] ena 0000:00:06.0 ens6: renamed from eth0
[  411.980068] zram_generator::config[8656]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  412.157545] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  468.078197] zram_generator::config[9954]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  468.956587] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  468.957852] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  506.294073] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:10588)
[  710.451407] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  711.470291] ena 0000:00:06.0: ENA device version: 0.10
[  711.471033] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  711.570272] ena 0000:00:06.0: ENA Large LLQ is disabled
[  711.582875] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:76:e9:cf:d0:27
[  711.592398] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  711.593972] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  711.749106] zram_generator::config[13951]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  807.030737] zram_generator::config[17501]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  807.884378] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  807.885968] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  939.281474] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:23396)
[ 1014.300649] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1015.314106] ena 0000:00:06.0: ENA device version: 0.10
[ 1015.314865] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1015.408431] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1015.421921] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:76:e9:cf:d0:27
[ 1015.458464] ena 0000:00:06.0 ens6: renamed from eth0
[ 1015.500408] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1015.502347] IPv6: ADDRCONF(NETDEV_CHANGE): ens6: link becomes ready
[ 1015.618081] zram_generator::config[27062]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1294.031492] zram_generator::config[32070]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1294.940615] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1294.941851] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1404.598558] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:33630)

sender-console-output.log (44641 bytes, last 80 lines)

[  352.770790] cloud-init[1838]:    Compiling plain-tcp-echo v0.2.0 (/opt/dpdk-stdlib/apps/plain-tcp-echo)
[  362.947570] cloud-init[1838]:    Compiling s2n-quic-tls v0.81.0
[  363.782593] cloud-init[1838]:    Compiling s2n-quic-tls-default v0.81.0
[  363.818235] cloud-init[1838]:    Compiling s2n-quic v1.81.0
[  364.783288] cloud-init[1838]:    Compiling dpdk-stdlib-quic v0.2.0 (/opt/dpdk-stdlib/dpdk-stdlib-quic)
[  424.843562] cloud-init[1838]:     Finished `release` profile [optimized] target(s) in 4m 19s
[  424.927185] cloud-init[1838]: === Build complete ===
[  424.930471] cloud-init[1838]: -rwxr-xr-x. 2 root root 1427040 Aug 15 01:17 target/release/echo
[  424.933194] cloud-init[1838]: -rwxr-xr-x. 2 root root 2009240 Aug 15 01:17 target/release/test-client
[  424.935445] cloud-init[1838]: === Setup complete! ===
[  424.935562] cloud-init[1838]: Rust project built successfully
[  424.935607] cloud-init[1838]: Instance ready for testing
[  424.935641] cloud-init[1838]: Project location: /opt/dpdk-stdlib
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 | 32:7b:06:eb:58:5e:a7:52:5a:70:7a:c2:26:36:e8:aa:28:4c:20:c2:69:41:3b:5d:b2:22:df:00:5e:73:88:47 |    -    | packer_6a7c03c5-c2f4-276a-0dbf-90663c801107 |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
<14>Aug 15 01:18:43 cloud-init: #############################################################
<14>Aug 15 01:18:43 cloud-init: -----BEGIN SSH HOST KEY FINGERPRINTS-----
<14>Aug 15 01:18:43 cloud-init: 256 SHA256:r4KJ1cnCTJKens2xAw4lkioQcAQ/E8VklTlnpqGnhLA root@ip-10-0-1-167.ec2.internal (ECDSA)
<14>Aug 15 01:18:43 cloud-init: 256 SHA256:w3HxK6A5bNEf/VOVqW/xdiYBXTlqWiamfGDvWTLiLbc root@ip-10-0-1-167.ec2.internal (ED25519)
<14>Aug 15 01:18:43 cloud-init: -----END SSH HOST KEY FINGERPRINTS-----
<14>Aug 15 01:18:43 cloud-init: #############################################################
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGdfTBlAkvPLeCKMenhJC0f3y7ja93EQnhmrkfFo4qPR6vz9k3pjC2+zY0sBH01kR9XgRV66fDKmPttluwNWwI4= root@ip-10-0-1-167.ec2.internal
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFDE/cn7nDP5x/Y1vR1P0sMdr/MTZPwj/rB5gMatoUn root@ip-10-0-1-167.ec2.internal
-----END SSH HOST KEY KEYS-----
[  425.232505] cloud-init[1838]: Cloud-init v. 22.2.2 finished at Sat, 15 Aug 2026 01:18:43 +0000. Datasource DataSourceEc2.  Up 425.22 seconds
[  431.595463] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  431.596513] pci 0000:00:06.0: BAR 0 [mem 0x00000000-0x00003fff]
[  431.597453] pci 0000:00:06.0: BAR 2 [mem 0x00000000-0x000fffff pref]
[  431.598606] pci 0000:00:06.0: enabling Extended Tags
[  431.600345] pci 0000:00:06.0: BAR 2 [mem 0xc0600000-0xc06fffff pref]: assigned
[  431.601315] pci 0000:00:06.0: BAR 0 [mem 0xc0508000-0xc050bfff]: assigned
[  431.602213] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  431.611164] ena 0000:00:06.0: ENA device version: 0.10
[  431.611929] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  431.711139] ena 0000:00:06.0: ENA Large LLQ is disabled
[  431.723372] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4e:7a:ca:67:35
[  431.761275] ena 0000:00:06.0 ens6: renamed from eth0
[  431.913124] zram_generator::config[8116]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  432.043085] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  462.696768] zram_generator::config[9130]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  463.625434] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  463.626717] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  523.712847] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10239)
[  524.472778] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10259)
[  526.232773] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10281)
[  527.792770] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10304)
[  528.572738] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10364)
[  578.697889] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  579.709968] ena 0000:00:06.0: ENA device version: 0.10
[  579.710659] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  579.809959] ena 0000:00:06.0: ENA Large LLQ is disabled
[  579.822830] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4e:7a:ca:67:35
[  579.835664] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  579.837548] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  579.982157] zram_generator::config[11455]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1035.773070] zram_generator::config[31263]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1036.652169] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1036.653401] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1187.637180] zram_generator::config[38047]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1188.278005] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1189.290690] ena 0000:00:06.0: ENA device version: 0.10
[ 1189.291393] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1189.392482] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1189.405776] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4e:7a:ca:67:35
[ 1189.445048] ena 0000:00:06.0 ens6: renamed from eth0
[ 1189.531088] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1189.532713] IPv6: ADDRCONF(NETDEV_CHANGE): ens6: link becomes ready
[ 1189.579998] zram_generator::config[38143]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1288.732625] zram_generator::config[39976]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1289.626069] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1289.627459] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1421.995514] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42017)
[ 1422.745432] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42037)
[ 1424.485395] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42293)
[ 1426.235381] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42316)

All instance-logs files

total 172
drwxr-xr-x  2 runner runner  4096 Aug 15 01:37 .
drwxr-xr-x 22 runner runner  4096 Aug 15 01:19 ..
-rw-r--r--  1 runner runner  3386 Aug 15 01:37 receiver-build-listing.log
-rw-r--r--  1 runner runner 44031 Aug 15 01:36 receiver-console-output.log
-rw-r--r--  1 runner runner  1585 Aug 15 01:37 receiver-dmesg-crashes.log
-rw-r--r--  1 runner runner   664 Aug 15 01:37 receiver-echo-server.log
-rw-r--r--  1 runner runner  1050 Aug 15 01:37 receiver-network-interfaces.log
-rw-r--r--  1 runner runner  6121 Aug 15 01:19 receiver-networking-diag-baseline.txt
-rw-r--r--  1 runner runner   534 Aug 15 01:36 receiver-ssm-failure.log
-rw-r--r--  1 runner runner  6885 Aug 15 01:37 receiver-user-data.log
-rw-r--r--  1 runner runner  3386 Aug 15 01:36 sender-build-listing.log
-rw-r--r--  1 runner runner 44641 Aug 15 01:36 sender-console-output.log
-rw-r--r--  1 runner runner  1327 Aug 15 01:36 sender-dmesg-crashes.log
-rw-r--r--  1 runner runner  1050 Aug 15 01:36 sender-network-interfaces.log
-rw-r--r--  1 runner runner  6174 Aug 15 01:19 sender-networking-diag-baseline.txt
-rw-r--r--  1 runner runner   285 Aug 15 01:31 sender-ssm-failure.log
-rw-r--r--  1 runner runner  5285 Aug 15 01:36 sender-test-client.log
-rw-r--r--  1 runner runner  6879 Aug 15 01:36 sender-user-data.log

@github-actions

Copy link
Copy Markdown

❌ Integration Tests Failed (Run 31855637896)

Branch: 117/merge | Commit: 359fad4f

Test Results

  • tier1-dpdk-echo.xml: 6 tests, 0 failures, skipped
  • tier2-kernel-interop.xml: 4 tests, 0 failures, skipped
  • tier3-iperf-interop.xml: 1 tests, 1 failures, skipped
    FAIL: ENI bind failed on sender instance
    

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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.27:9000 (MAC: 02:76:e9:cf:d0:27)
echo listening on 10.0.1.27:9000 (MTU=9001, max_udp_payload=8973)
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.27:9000: 'arp-probe #1'
Test complete
[2026-08-15T01:27:34Z] INFO: ARP resolution succeeded (got response from peer)
[2026-08-15T01:27:34Z] INFO: Test: udp_send_receive
[2026-08-15T01:27:35Z] INFO: UDP send/receive succeeded
[2026-08-15T01:27:35Z] INFO: Test: echo_roundtrip
[2026-08-15T01:27:36Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-08-15T01:27:36Z] INFO: Test: payload_integrity
[2026-08-15T01:27:36Z] INFO: Response received, checking payload match...
[2026-08-15T01:27:36Z] INFO: Payload integrity verified (found in response)
[2026-08-15T01:27:36Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-08-15T01:27:36Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml
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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.27:9000 (MAC: 02:76:e9:cf:d0:27)
echo listening on 10.0.1.27:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-08-15T01:20:21Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.27:9000
Bind address: 10.0.1.252: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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.252:32768 (MAC: 02:4e:7a:ca:67:35)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.27:9000: 'arp-probe #1'
Test complete
[2026-08-15T01:20:22Z] INFO: ARP resolution succeeded (got response from peer)
[2026-08-15T01:20:22Z] INFO: Test: udp_send_receive
[2026-08-15T01:20:23Z] INFO: UDP send/receive succeeded
[2026-08-15T01:20:23Z] INFO: Test: echo_roundtrip
[2026-08-15T01:20:25Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-08-15T01:20:25Z] INFO: Test: payload_integrity
[2026-08-15T01:20:26Z] INFO: Response received, checking payload match...
[2026-08-15T01:20:26Z] INFO: Payload integrity verified (found in response)
[2026-08-15T01:20:26Z] INFO: Test: jumbo_diagnostics
[2026-08-15T01:20:26Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-08-15T01:20:26Z] INFO: Interface MTU:
  1500
  9001
  65536
[2026-08-15T01:20:26Z] INFO:   docker0: MTU=1500
[2026-08-15T01:20:26Z] INFO:   ens5: MTU=9001
[2026-08-15T01:20:26Z] INFO:   lo: MTU=65536
[2026-08-15T01:20:26Z] INFO: Routing table MTU column:
Iface	Destination	Gateway 	Flags	RefCnt	Use	Metric	Mask		MTU	Window	IRTT                                                       
ens5	00000000	0101000A	0003	0	0	512	00000000	0	0	0                                                                             
ens5	0200000A	0101000A	0007	0	0	512	FFFFFFFF	0	0	0                                                                             
ens5	0001000A	00000000	0001	0	0	512	00FFFFFF	0	0	0                                                                             
ens5	0101000A	00000000	0005	0	0	512	FFFFFFFF	0	0	0                                                                             
[2026-08-15T01:20:26Z] INFO: DPDK port config (from echo server log):
[2026-08-15T01:20:26Z] INFO:   (no MTU info in echo log)
[2026-08-15T01:20:26Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-08-15T01:20:26Z] INFO: Test: jumbo_echo_8000
[2026-08-15T01:20:28Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.27:9000
Bind address: 10.0.1.252:0
Payload size: 8000 bytes
Count: 3
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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.252:32768 (MAC: 02:4e:7a:ca:67:35)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.27:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.27:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.27:9000 (expected 8000, OK)
Test complete
[2026-08-15T01:20:28Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-08-15T01:20:28Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-08-15T01:20:28Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-08-15T01:27:34Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.27: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.27:9000: 'arp-probe #1'
Test complete
[2026-08-15T01:27:34Z] INFO: ARP resolution succeeded (got response from peer)
[2026-08-15T01:27:34Z] INFO: Test: udp_send_receive
[2026-08-15T01:27:35Z] INFO: UDP send/receive succeeded
[2026-08-15T01:27:35Z] INFO: Test: echo_roundtrip
[2026-08-15T01:27:36Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-08-15T01:27:36Z] INFO: Test: payload_integrity
[2026-08-15T01:27:36Z] INFO: Response received, checking payload match...
[2026-08-15T01:27:36Z] INFO: Payload integrity verified (found in response)
[2026-08-15T01:27:36Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-08-15T01:27:36Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c684faa531dbd162 (receiver)
Command ID: 07a0d7d5-7fd3-437e-ad33-90a1f26514ac

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c684faa531dbd162 (receiver)
Command ID: 2df8d8a6-1e9c-43d8-a411-cf104f454bfe

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c684faa531dbd162 (receiver)
Command ID: 07f96039-2be8-4f91-8015-8af8744c0fa6

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout 120s (SSM timeout: 90s, command: cd /opt/dpdk-stdlib && bash scripts/integration-tests/configure-eni.sh --action bind) ===
Status: InProgress
Instance: i-0efb5135a1494008a (sender)
Command ID: 2c783e9a-a788-47e7-8411-e2535ff4ab79

=== 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:db:07:20:25:6f brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0c75bcb4762933eea
    altname device-number-0.0
    inet 10.0.1.230/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2075sec preferred_lft 2075sec
    inet6 fe80::db:7ff:fe20:256f/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:a2:e7:1e:5a 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

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:a4:99:46:0c:b3 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-00d2c8b5de5654ab6
    altname device-number-0.0
    inet 10.0.1.167/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2095sec preferred_lft 2095sec
    inet6 fe80::a4:99ff:fe46:cb3/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:9c:c4:43:cc 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-08-15T01:19:41Z
hostname: ip-10-0-1-230.ec2.internal
kernel: 6.1.177-224.371.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:db:07:20:25:6f brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0c75bcb4762933eea
    altname device-number-0.0
    inet 10.0.1.230/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3125sec preferred_lft 3125sec
    inet6 fe80::db:7ff:fe20:256f/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:a2:e7:1e:5a 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:4c:02:e4:9b REACHABLE 
10.0.1.65 dev ens5 lladdr 02:f5:14:de:e0:e9 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.230 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.230 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.230 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.230 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:76:e9:cf:d0:27/ 02:db:07:20:25:6f/ 

--- ENI: 02:76:e9:cf:d0:27/ ---
  device-number: 1
  local-ipv4s: 10.0.1.27
  subnet-id: subnet-0508195e222817bb5
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:db:07:20:25:6f/ ---
  device-number: 0
  local-ipv4s: 10.0.1.230
  subnet-id: subnet-0508195e222817bb5
  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:4c:02:e4:9b REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.230 ens5
Unicast reply from 10.0.1.1 [02:BC:4C:02:E4:9B]  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 Aug 15 01:19 .
drwxr-xr-x. 14 root root     3100 Aug 15 01:18 ..
crw-------.  1 root root 243,   0 Aug 15 01:19 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Aug 15 01:11 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067462] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074193] audit: type=2000 audit(1786756299.566:1): state=initialized audit_enabled=0 res=1
[    0.076633] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.100130] ACPI: Interpreter enabled
[    0.100130] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.126272] pci 0000:00:05.0: enabling Extended Tags
[    0.166319] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.196907] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.283197] IPI shorthand broadcast: enabled
[    0.283258] AES CTR mode by8 optimization enabled
[    2.914807] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.958561] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.009786] VFIO - User Level meta-driver version: 0.3
[    4.141661] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.17.2g
[    4.168524] ena 0000:00:05.0: ENA device version: 0.10
[    4.169218] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.284622] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.296996] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:db:07:20:25:6f
[    4.334731] ena 0000:00:05.0 ens5: renamed from eth0
[    5.620645] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  411.539167] pci 0000:00:06.0: enabling Extended Tags
[  411.542796] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  411.552127] ena 0000:00:06.0: ENA device version: 0.10
[  411.552886] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  411.652108] ena 0000:00:06.0: ENA Large LLQ is disabled
[  411.664566] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:76:e9:cf:d0:27
[  411.722141] ena 0000:00:06.0 ens6: renamed from eth0
[  412.157545] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  468.956587] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  468.957852] 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-08-15T01:19:34Z
hostname: ip-10-0-1-167.ec2.internal
kernel: 6.1.177-224.371.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:a4:99:46:0c:b3 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-00d2c8b5de5654ab6
    altname device-number-0.0
    inet 10.0.1.167/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3130sec preferred_lft 3130sec
    inet6 fe80::a4:99ff:fe46:cb3/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:9c:c4:43:cc 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:4c:02:e4:9b REACHABLE 
10.0.1.65 dev ens5 lladdr 02:f5:14:de:e0:e9 REACHABLE 
10.0.1.105 dev ens5 lladdr 02:d1:e8:09:cc:4d DELAY 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.167 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.167 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.167 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.167 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:4e:7a:ca:67:35/ 02:a4:99:46:0c:b3/ 

--- ENI: 02:4e:7a:ca:67:35/ ---
  device-number: 1
  local-ipv4s: 10.0.1.252
  subnet-id: subnet-0508195e222817bb5
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:a4:99:46:0c:b3/ ---
  device-number: 0
  local-ipv4s: 10.0.1.167
  subnet-id: subnet-0508195e222817bb5
  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:4c:02:e4:9b REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.167 ens5
Unicast reply from 10.0.1.1 [02:BC:4C:02:E4:9B]  0.531ms
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 Aug 15 01:19 .
drwxr-xr-x. 14 root root     3100 Aug 15 01:18 ..
crw-------.  1 root root 243,   0 Aug 15 01:19 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Aug 15 01:11 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.066765] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073407] audit: type=2000 audit(1786756298.055:1): state=initialized audit_enabled=0 res=1
[    0.075687] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099078] ACPI: Interpreter enabled
[    0.099078] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124243] pci 0000:00:05.0: enabling Extended Tags
[    0.155364] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.186271] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.268018] IPI shorthand broadcast: enabled
[    0.268085] AES CTR mode by8 optimization enabled
[    2.844761] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.886641] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.940061] VFIO - User Level meta-driver version: 0.3
[    4.117519] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.17.2g
[    4.126993] ena 0000:00:05.0: ENA device version: 0.10
[    4.127660] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.224602] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.236701] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:a4:99:46:0c:b3
[    4.294789] ena 0000:00:05.0 ens5: renamed from eth0
[    5.458984] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  431.598606] pci 0000:00:06.0: enabling Extended Tags
[  431.602213] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  431.611164] ena 0000:00:06.0: ENA device version: 0.10
[  431.611929] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  431.711139] ena 0000:00:06.0: ENA Large LLQ is disabled
[  431.723372] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4e:7a:ca:67:35
[  431.761275] ena 0000:00:06.0 ens6: renamed from eth0
[  432.043085] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  463.625434] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  463.626717] 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.074193] pid_max: default: 32768 minimum: 301
[    0.128375] iommu: Default domain type: Translated 
[    0.129096] NetLabel:  unlabeled traffic allowed by default
[    0.144055] PCI: CLS 0 bytes, default 64
[    0.214716] nvme nvme0: 2/0/0 default/read/poll queues
[    0.448379] systemd[1]: systemd 252.23-12.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.448473] systemd[1]: No hostname configured, using default hostname.
[    0.548021] systemd[1]: Queued start job for default target initrd.target.
[    2.117897] systemd[1]: systemd 252.23-12.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.689192] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  506.294073] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:10588)
[  939.281474] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:23396)
[ 1404.598558] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:33630)

sender-dmesg-crashes.log

[    0.073407] pid_max: default: 32768 minimum: 301
[    0.126323] iommu: Default domain type: Translated 
[    0.127038] NetLabel:  unlabeled traffic allowed by default
[    0.133407] PCI: CLS 0 bytes, default 64
[    0.197781] nvme nvme0: 2/0/0 default/read/poll queues
[    0.432328] systemd[1]: systemd 252.23-12.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.432424] systemd[1]: No hostname configured, using default hostname.
[    0.517823] systemd[1]: Queued start job for default target initrd.target.
[    1.981797] systemd[1]: systemd 252.23-12.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.363687] 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)

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

[  411.541850] pci 0000:00:06.0: BAR 0 [mem 0xc0508000-0xc050bfff]: assigned
[  411.542796] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  411.552127] ena 0000:00:06.0: ENA device version: 0.10
[  411.552886] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  411.652108] ena 0000:00:06.0: ENA Large LLQ is disabled
[  411.664566] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:76:e9:cf:d0:27
[  411.722141] ena 0000:00:06.0 ens6: renamed from eth0
[  412.157545] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  468.956587] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  468.957852] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  506.294073] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:10588)
[  710.451407] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  711.470291] ena 0000:00:06.0: ENA device version: 0.10
[  711.471033] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  711.570272] ena 0000:00:06.0: ENA Large LLQ is disabled
[  711.582875] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:76:e9:cf:d0:27
[  711.592398] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  807.884378] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  807.885968] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  939.281474] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:23396)
[ 1014.300649] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1015.314106] ena 0000:00:06.0: ENA device version: 0.10
[ 1015.314865] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1015.408431] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1015.421921] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:76:e9:cf:d0:27
[ 1015.458464] ena 0000:00:06.0 ens6: renamed from eth0
[ 1015.500408] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1294.940615] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1294.941851] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1404.598558] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:33630)

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

[  431.761275] ena 0000:00:06.0 ens6: renamed from eth0
[  432.043085] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  463.625434] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  463.626717] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  523.712847] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10239)
[  524.472778] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10259)
[  526.232773] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10281)
[  527.792770] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10304)
[  528.572738] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10364)
[  578.697889] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  579.709968] ena 0000:00:06.0: ENA device version: 0.10
[  579.710659] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  579.809959] ena 0000:00:06.0: ENA Large LLQ is disabled
[  579.822830] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4e:7a:ca:67:35
[  579.835664] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1036.652169] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1036.653401] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1188.278005] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1189.290690] ena 0000:00:06.0: ENA device version: 0.10
[ 1189.291393] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1189.392482] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1189.405776] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4e:7a:ca:67:35
[ 1189.445048] ena 0000:00:06.0 ens6: renamed from eth0
[ 1189.531088] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1289.626069] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1289.627459] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1421.995514] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42017)
[ 1422.745432] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42037)
[ 1424.485395] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42293)
[ 1426.235381] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42316)

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0922377bad0d89bac (DPDK ENI: 10.0.1.218)
  • Receiver: i-0d0d121f4ff820fba (DPDK ENI: 10.0.1.46)
  • 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: 6 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 31855637896)

Branch: 117/merge | Commit: 359fad4f

Test Results

  • tier1-dpdk-echo.xml: 6 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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.46:9000 (MAC: 02:2b:25:f0:77:7b)
echo listening on 10.0.1.46:9000 (MTU=9001, max_udp_payload=8973)
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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.218:9000 (MAC: 02:9f:cc:12:02:65)
echo listening on 10.0.1.218:9000 (MTU=9001, max_udp_payload=8973)
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.46:9000: 'arp-probe #1'
Test complete
[2026-08-15T02:01:21Z] INFO: ARP resolution succeeded (got response from peer)
[2026-08-15T02:01:21Z] INFO: Test: udp_send_receive
[2026-08-15T02:01:22Z] INFO: UDP send/receive succeeded
[2026-08-15T02:01:22Z] INFO: Test: echo_roundtrip
[2026-08-15T02:01:23Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-08-15T02:01:23Z] INFO: Test: payload_integrity
[2026-08-15T02:01:23Z] INFO: Response received, checking payload match...
[2026-08-15T02:01:23Z] INFO: Payload integrity verified (found in response)
[2026-08-15T02:01:23Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-08-15T02:01:23Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-08-15T02:07:29Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-08-15T02:07:29Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-08-15T02:07:29Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-08-15T02:07:29Z] 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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.46:9000 (MAC: 02:2b:25:f0:77:7b)
echo listening on 10.0.1.46:9000 (MTU=9001, max_udp_payload=8973)
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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.218:9000 (MAC: 02:9f:cc:12:02:65)
echo listening on 10.0.1.218:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-08-15T01:53:57Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.46: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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.218:32768 (MAC: 02:9f:cc:12:02:65)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.46:9000: 'arp-probe #1'
Test complete
[2026-08-15T01:53:58Z] INFO: ARP resolution succeeded (got response from peer)
[2026-08-15T01:53:58Z] INFO: Test: udp_send_receive
[2026-08-15T01:54:00Z] INFO: UDP send/receive succeeded
[2026-08-15T01:54:00Z] INFO: Test: echo_roundtrip
[2026-08-15T01:54:01Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-08-15T01:54:01Z] INFO: Test: payload_integrity
[2026-08-15T01:54:02Z] INFO: Response received, checking payload match...
[2026-08-15T01:54:02Z] INFO: Payload integrity verified (found in response)
[2026-08-15T01:54:02Z] INFO: Test: jumbo_diagnostics
[2026-08-15T01:54:02Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-08-15T01:54:02Z] INFO: Interface MTU:
  1500
  9001
  65536
[2026-08-15T01:54:02Z] INFO:   docker0: MTU=1500
[2026-08-15T01:54:02Z] INFO:   ens5: MTU=9001
[2026-08-15T01:54:02Z] INFO:   lo: MTU=65536
[2026-08-15T01:54:02Z] INFO: Routing table MTU column:
Iface	Destination	Gateway 	Flags	RefCnt	Use	Metric	Mask		MTU	Window	IRTT                                                       
ens5	00000000	0101000A	0003	0	0	512	00000000	0	0	0                                                                             
ens5	0200000A	0101000A	0007	0	0	512	FFFFFFFF	0	0	0                                                                             
ens5	0001000A	00000000	0001	0	0	512	00FFFFFF	0	0	0                                                                             
ens5	0101000A	00000000	0005	0	0	512	FFFFFFFF	0	0	0                                                                             
[2026-08-15T01:54:02Z] INFO: DPDK port config (from echo server log):
[2026-08-15T01:54:02Z] INFO:   (no MTU info in echo log)
[2026-08-15T01:54:02Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-08-15T01:54:02Z] INFO: Test: jumbo_echo_8000
[2026-08-15T01:54:04Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.46:9000
Bind address: 10.0.1.218:0
Payload size: 8000 bytes
Count: 3
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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.218:32768 (MAC: 02:9f:cc:12:02:65)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.46:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.46:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.46:9000 (expected 8000, OK)
Test complete
[2026-08-15T01:54:04Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-08-15T01:54:04Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-08-15T01:54:04Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-08-15T02:01:21Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.46: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.46:9000: 'arp-probe #1'
Test complete
[2026-08-15T02:01:21Z] INFO: ARP resolution succeeded (got response from peer)
[2026-08-15T02:01:21Z] INFO: Test: udp_send_receive
[2026-08-15T02:01:22Z] INFO: UDP send/receive succeeded
[2026-08-15T02:01:22Z] INFO: Test: echo_roundtrip
[2026-08-15T02:01:23Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-08-15T02:01:23Z] INFO: Test: payload_integrity
[2026-08-15T02:01:23Z] INFO: Response received, checking payload match...
[2026-08-15T02:01:23Z] INFO: Payload integrity verified (found in response)
[2026-08-15T02:01:23Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-08-15T02:01:23Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-08-15T02:07:27Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-08-15T02:07:27Z] INFO: Local IP: 10.0.1.218, Peer IP: 10.0.1.46, Port: 9000
[2026-08-15T02:07:27Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.46        0x1         0x2         02:2b:25:f0:77:7b     *        ens5
10.0.1.86        0x1         0x2         02:8d:7c:15:55:ad     *        ens5
10.0.1.218       0x1         0x2         02:9f:cc:12:02:65     *        ens5
10.0.1.115       0x1         0x2         02:8d:4f:79:36:c3     *        ens5
10.0.1.1         0x1         0x2         02:2e:9d:a0:1e:cf     *        ens5
[2026-08-15T02:07:27Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-08-15T02:07:27Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-08-15T02:07:27Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 2009240 Aug 15 01:50 /opt/dpdk-stdlib/target/release/test-client
[2026-08-15T02:07:27Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.46 --port 9000 --bind-ip 10.0.1.218 --count 10 --delay 200
[2026-08-15T02:07:29Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.46: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
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.218:32768 (MAC: 02:9f:cc:12:02:65)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.46:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-08-15T02:07:29Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-08-15T02:07:29Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-08-15T02:07:29Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-08-15T02:07:29Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0d0d121f4ff820fba (receiver)
Command ID: b6181e5a-18b4-45d0-8ac7-c11e9c44cf7b

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0d0d121f4ff820fba (receiver)
Command ID: a17daf0b-f6a8-4cb1-8ca0-2553fb51c0e9

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0d0d121f4ff820fba (receiver)
Command ID: 65f54cb6-094d-4be7-837d-ae019f360791

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0d0d121f4ff820fba (receiver)
Command ID: a376c5ae-9198-4890-9b1f-9b3969ab792f

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0922377bad0d89bac (sender)
Command ID: c1fa4a04-2f0c-4e0e-b5bb-eb4f0ec8e69b

=== 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:3b:3e:47:62:1b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-00cd096fadd608d6a
    altname device-number-0.0
    inet 10.0.1.18/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 1863sec preferred_lft 1863sec
    inet6 fe80::3b:3eff:fe47:621b/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:cb:e7:9a:4d 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

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:76:8a:19:29:bd brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-038d409e7d52fb40d
    altname device-number-0.0
    inet 10.0.1.214/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 1884sec preferred_lft 1884sec
    inet6 fe80::76:8aff:fe19:29bd/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:a1:4d:d3:5e 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-08-15T01:53:18Z
hostname: ip-10-0-1-18.ec2.internal
kernel: 6.1.177-224.371.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:3b:3e:47:62:1b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-00cd096fadd608d6a
    altname device-number-0.0
    inet 10.0.1.18/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3063sec preferred_lft 3063sec
    inet6 fe80::3b:3eff:fe47:621b/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:cb:e7:9a:4d 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.86 dev ens5 lladdr 02:8d:7c:15:55:ad REACHABLE 
10.0.1.1 dev ens5 lladdr 02:2e:9d:a0:1e:cf REACHABLE 
10.0.1.115 dev ens5 lladdr 02:8d:4f:79:36:c3 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.18 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.18 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.18 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.18 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:2b:25:f0:77:7b/ 02:3b:3e:47:62:1b/ 

--- ENI: 02:2b:25:f0:77:7b/ ---
  device-number: 1
  local-ipv4s: 10.0.1.46
  subnet-id: subnet-049aca53fa600320d
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:3b:3e:47:62:1b/ ---
  device-number: 0
  local-ipv4s: 10.0.1.18
  subnet-id: subnet-049aca53fa600320d
  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:2e:9d:a0:1e:cf REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.18 ens5
Unicast reply from 10.0.1.1 [02:2E:9D:A0:1E:CF]  0.536ms
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 Aug 15 01:53 .
drwxr-xr-x. 14 root root     3100 Aug 15 01:52 ..
crw-------.  1 root root 243,   0 Aug 15 01:53 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Aug 15 01:44 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.066675] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073333] audit: type=2000 audit(1786758254.724:1): state=initialized audit_enabled=0 res=1
[    0.075477] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.098811] ACPI: Interpreter enabled
[    0.098811] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123254] pci 0000:00:05.0: enabling Extended Tags
[    0.155435] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.195843] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.267607] IPI shorthand broadcast: enabled
[    0.267668] AES CTR mode by8 optimization enabled
[    3.014815] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.048257] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.094384] VFIO - User Level meta-driver version: 0.3
[    4.286759] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.17.2g
[    4.298900] ena 0000:00:05.0: ENA device version: 0.10
[    4.299583] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.405199] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.417110] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:3b:3e:47:62:1b
[    4.474679] ena 0000:00:05.0 ens5: renamed from eth0
[    5.975374] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  492.231245] pci 0000:00:06.0: enabling Extended Tags
[  492.234726] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  492.242416] ena 0000:00:06.0: ENA device version: 0.10
[  492.243101] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  492.340632] ena 0000:00:06.0: ENA Large LLQ is disabled
[  492.352758] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2b:25:f0:77:7b
[  492.380760] ena 0000:00:06.0 ens6: renamed from eth0
[  492.888140] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  530.925573] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  530.926850] 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-08-15T01:53:11Z
hostname: ip-10-0-1-214.ec2.internal
kernel: 6.1.177-224.371.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:76:8a:19:29:bd brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-038d409e7d52fb40d
    altname device-number-0.0
    inet 10.0.1.214/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3070sec preferred_lft 3070sec
    inet6 fe80::76:8aff:fe19:29bd/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:a1:4d:d3:5e 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.86 dev ens5 lladdr 02:8d:7c:15:55:ad REACHABLE 
10.0.1.1 dev ens5 lladdr 02:2e:9d:a0:1e:cf REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.214 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.214 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.214 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.214 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:76:8a:19:29:bd/ 02:9f:cc:12:02:65/ 

--- ENI: 02:76:8a:19:29:bd/ ---
  device-number: 0
  local-ipv4s: 10.0.1.214
  subnet-id: subnet-049aca53fa600320d
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:9f:cc:12:02:65/ ---
  device-number: 1
  local-ipv4s: 10.0.1.218
  subnet-id: subnet-049aca53fa600320d
  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:2e:9d:a0:1e:cf REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.214 ens5
Unicast reply from 10.0.1.1 [02:2E:9D:A0:1E:CF]  0.536ms
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 Aug 15 01:52 .
drwxr-xr-x. 14 root root     3100 Aug 15 01:52 ..
crw-------.  1 root root 243,   0 Aug 15 01:52 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Aug 15 01:44 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.066787] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073528] audit: type=2000 audit(1786758254.631:1): state=initialized audit_enabled=0 res=1
[    0.075827] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099166] ACPI: Interpreter enabled
[    0.099166] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123191] pci 0000:00:05.0: enabling Extended Tags
[    0.155958] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.189295] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.269786] IPI shorthand broadcast: enabled
[    0.269847] AES CTR mode by8 optimization enabled
[    2.714770] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.751078] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.820917] VFIO - User Level meta-driver version: 0.3
[    3.773936] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.17.2g
[    3.793423] ena 0000:00:05.0: ENA device version: 0.10
[    3.794120] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.894576] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.906471] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:76:8a:19:29:bd
[    3.954592] ena 0000:00:05.0 ens5: renamed from eth0
[    5.190098] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  491.407715] pci 0000:00:06.0: enabling Extended Tags
[  491.411239] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  491.422936] ena 0000:00:06.0: ENA device version: 0.10
[  491.423645] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  491.522896] ena 0000:00:06.0: ENA Large LLQ is disabled
[  491.534977] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:9f:cc:12:02:65
[  491.563007] ena 0000:00:06.0 ens6: renamed from eth0
[  492.020255] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  524.127518] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  524.128918] 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.073333] pid_max: default: 32768 minimum: 301
[    0.125299] iommu: Default domain type: Translated 
[    0.126026] NetLabel:  unlabeled traffic allowed by default
[    0.133333] PCI: CLS 0 bytes, default 64
[    0.216499] nvme nvme0: 2/0/0 default/read/poll queues
[    0.432131] systemd[1]: systemd 252.23-12.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.432222] systemd[1]: No hostname configured, using default hostname.
[    0.517128] systemd[1]: Queued start job for default target initrd.target.
[    2.030983] systemd[1]: systemd 252.23-12.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.712326] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  568.482502] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:10086)
[ 1010.978861] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:23580)
[ 1605.024008] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:43572)

sender-dmesg-crashes.log

[    0.073528] pid_max: default: 32768 minimum: 301
[    0.125227] iommu: Default domain type: Translated 
[    0.125924] NetLabel:  unlabeled traffic allowed by default
[    0.133528] PCI: CLS 0 bytes, default 64
[    0.212321] nvme nvme0: 2/0/0 default/read/poll queues
[    0.440117] systemd[1]: systemd 252.23-12.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.440210] systemd[1]: No hostname configured, using default hostname.
[    0.549054] systemd[1]: Queued start job for default target initrd.target.
[    1.891249] systemd[1]: systemd 252.23-12.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.579764] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 1437.102106] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:41018)
Kernel Console (dmesg)

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

[  492.232875] pci 0000:00:06.0: BAR 2 [mem 0xc0600000-0xc06fffff pref]: assigned
[  492.233802] pci 0000:00:06.0: BAR 0 [mem 0xc0508000-0xc050bfff]: assigned
[  492.234726] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  492.242416] ena 0000:00:06.0: ENA device version: 0.10
[  492.243101] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  492.340632] ena 0000:00:06.0: ENA Large LLQ is disabled
[  492.352758] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2b:25:f0:77:7b
[  492.380760] ena 0000:00:06.0 ens6: renamed from eth0
[  492.888140] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  530.925573] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  530.926850] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  568.482502] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:10086)
[  759.324452] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  760.337710] ena 0000:00:06.0: ENA device version: 0.10
[  760.338455] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  760.438416] ena 0000:00:06.0: ENA Large LLQ is disabled
[  760.451031] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2b:25:f0:77:7b
[  760.460331] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  885.912272] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  885.913506] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1010.978861] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:23580)
[ 1085.399245] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1086.411856] ena 0000:00:06.0: ENA device version: 0.10
[ 1086.412575] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1086.513705] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1086.527286] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2b:25:f0:77:7b
[ 1086.536777] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1536.625898] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1536.627266] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1605.024008] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:43572)

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

[  524.127518] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  524.128918] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  583.524952] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10312)
[  584.284926] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10332)
[  586.044911] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10354)
[  587.604899] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10377)
[  588.404878] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:10437)
[  638.280862] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  639.292389] ena 0000:00:06.0: ENA device version: 0.10
[  639.293095] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  639.392369] ena 0000:00:06.0: ENA Large LLQ is disabled
[  639.405139] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:9f:cc:12:02:65
[  639.414556] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1240.523874] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1240.525264] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1392.812196] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:40217)
[ 1437.102106] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:41018)
[ 1499.142554] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1500.155772] ena 0000:00:06.0: ENA device version: 0.10
[ 1500.156470] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1500.254668] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1500.268312] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:9f:cc:12:02:65
[ 1500.319505] ena 0000:00:06.0 ens6: renamed from eth0
[ 1500.361125] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1529.963445] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1529.964991] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1621.001418] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:44281)
[ 1621.761312] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:44301)
[ 1623.521327] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:44324)
[ 1625.291270] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:44347)

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Deploy

Deploying PerfTestStack...
Configs: plain-rust,rust-dpdk,tokio-dpdk,native-dpdk
Packet sizes: 64,512,1400,8500

@gspivey
gspivey merged commit b4d36cd into development Aug 15, 2026
11 of 12 checks passed
@gspivey
gspivey deleted the agent/tcp-tier2-tier3-integration-scripts branch August 15, 2026 02:19
@github-actions

Copy link
Copy Markdown

[Perf] Stage: Instances Ready

  • TRex: i-09d0e39a2b11e409d (10.0.1.65)
  • DUT: i-04586c0bc8e71673b (10.0.1.77)
  • Instance type: c6in.xlarge

@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:c2:ca:d4:1d:33
  • RX: 0000:00:07.0 MAC: 02:e1:22:e4:01:49
  • Gateway MAC: 02:59:3e:03:71:3b
    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-04586c0bc8e71673b SSM working, build complete.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (1/4)

Running plain-rust benchmark...
Packet sizes: 64,512,1400,8500 | 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:c2:ca:d4:1d:33
  Port 1: 02:e1:22:e4:01:49
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: plain-rust result

SSM exit: 0

Output (last 30 lines)
Duration per step: 30s
Source MAC: 02:c2:ca:d4:1d:33

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,994 pps, Drop: 1.4367%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,993 pps, Drop: 0.7196%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 347,913 pps, Drop: 0.5964%, Lat avg: 231.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 471,308 pps, Drop: 32.6703%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,994 pps, Drop: 1.4368%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,968 pps, Drop: 0.7372%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 344,967 pps, Drop: 1.4381%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 463,275 pps, Drop: 33.8178%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,998 pps, Drop: 1.4308%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,967 pps, Drop: 0.7379%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 343,992 pps, Drop: 1.7166%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,693 pps, RX: 359,956 pps, Drop: 24.4889%, Lat avg: 2615.0 us

--- Packet size: 8500B ---
  (jumbo: capping at 418,133 pps for 30.0 Gbps limit)
  Target: 70,000 pps ... TX: 70,000 pps, RX: 43,071 pps, Drop: 38.4698%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,356 pps, RX: 76,968 pps, Drop: 1.7711%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,357 pps, RX: 77,245 pps, Drop: 1.4195%, Lat avg: 0.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (2/4)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:c2:ca:d4:1d:33
  Port 1: 02:e1:22:e4:01:49
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk result

SSM exit: 0

Output (last 30 lines)
Duration per step: 30s
Source MAC: 02:c2:ca:d4:1d:33

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,979 pps, Drop: 1.4586%, Lat avg: 260.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,998 pps, Drop: 0.7156%, Lat avg: 142.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,593 pps, Drop: 0.4019%, Lat avg: 270.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 697,369 pps, Drop: 0.3759%, Lat avg: 384.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,997 pps, Drop: 1.4331%, Lat avg: 267.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,939 pps, Drop: 0.7577%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,567 pps, Drop: 0.4095%, Lat avg: 283.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 697,122 pps, Drop: 0.4112%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,988 pps, Drop: 1.4461%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,928 pps, Drop: 0.7656%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,781 pps, Drop: 0.3484%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,658 pps, RX: 473,556 pps, Drop: 0.6509%, Lat avg: 0.0 us

--- Packet size: 8500B ---
  (jumbo: capping at 418,133 pps for 30.0 Gbps limit)
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,988 pps, Drop: 1.4453%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,355 pps, RX: 76,921 pps, Drop: 1.8299%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,349 pps, RX: 71,448 pps, Drop: 8.8089%, Lat avg: 14116.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (3/4)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: tokio-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:c2:ca:d4:1d:33
  Port 1: 02:e1:22:e4:01:49
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: tokio-dpdk result

SSM exit: 0

Output (last 30 lines)
Duration per step: 30s
Source MAC: 02:c2:ca:d4:1d:33

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4284%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7142%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 312,162 pps, Drop: 10.8108%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 314,573 pps, Drop: 55.061%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4284%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7142%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 225,615 pps, Drop: 35.5385%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 226,821 pps, Drop: 67.597%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4284%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,976 pps, Drop: 0.7315%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 145,199 pps, Drop: 58.5145%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,705 pps, RX: 155,237 pps, Drop: 67.4353%, Lat avg: 0.0 us

--- Packet size: 8500B ---
  (jumbo: capping at 418,133 pps for 30.0 Gbps limit)
  Target: 70,000 pps ... TX: 70,000 pps, RX: 54,891 pps, Drop: 21.5843%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,303 pps, RX: 58,499 pps, Drop: 25.2921%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,359 pps, RX: 58,356 pps, Drop: 25.5276%, Lat avg: 0.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (4/4)

Running native-dpdk benchmark...
Packet sizes: 64,512,1400,8500 | 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:c2:ca:d4:1d:33
  Port 1: 02:e1:22:e4:01:49
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: native-dpdk result

SSM exit: 0

Output (last 30 lines)
Duration per step: 30s
Source MAC: 02:c2:ca:d4:1d:33

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 117.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 127.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,971 pps, Drop: 0.0082%, Lat avg: 176.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 454,827 pps, Drop: 35.0247%, Lat avg: 478.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 120.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 120.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,994 pps, Drop: 0.0019%, Lat avg: 138.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 624,607 pps, Drop: 10.7704%, Lat avg: 1104.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,996 pps, Drop: 0.006%, Lat avg: 114.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 113.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,924 pps, Drop: 0.0218%, Lat avg: 136.0 us
  Target: 700,000 pps ... TX: 476,638 pps, RX: 468,763 pps, Drop: 1.6523%, Lat avg: 3030.0 us

--- Packet size: 8500B ---
  (jumbo: capping at 418,133 pps for 30.0 Gbps limit)
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,997 pps, Drop: 0.004%, Lat avg: 121.0 us
  Target: 140,000 pps ... TX: 78,351 pps, RX: 77,320 pps, Drop: 1.316%, Lat avg: 14748.0 us
  Target: 350,000 pps ... TX: 78,328 pps, RX: 69,980 pps, Drop: 10.6574%, Lat avg: 14291.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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) ===
  ############################################################################
Telling cores to stop...
Waiting for lcores to finish...

  ---------------------- Forward statistics for port 0  ----------------------
  RX-packets: 111231886      RX-dropped: 0             RX-total: 111231886
  RX-error: 400407
  RX-nombufs: 0             
  TX-packets: 111065350      TX-dropped: 166536        TX-total: 111231886
  ----------------------------------------------------------------------------

  +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
  RX-packets: 111231886      RX-dropped: 0             RX-total: 111231886
  TX-packets: 111065350      TX-dropped: 166536        TX-total: 111231886
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Done.

Stopping port 0...
Stopping ports...
Done

Shutting down port 0...
ena_rx_queue_release(): Rx queue 0:0 released
ena_tx_queue_release(): Tx queue 0:0 released
Closing ports...
Port 0 is closed
Done

Bye...
=== ENA port stats ===
N/A (vfio-pci)

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Results

[03:09:34] INFO Generating markdown summary...

Performance Test Results — c6in.xlarge

Commit: aaed7990
Timestamp: 2026-08-15T03:09:34.807287+00:00

64B packets

Config Target PPS TX pps RX pps Drop % NIC imissed NIC ierrors NIC nombuf App Drops Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% — — — — 117.0 1668.0 35.8 35.8
native-dpdk 140,000 140,000 140,000 0.00% — — — — 127.0 374.0 71.7 71.7
native-dpdk 350,000 350,000 349,971 0.01% — — — — 176.0 2771.0 179.2 179.2
native-dpdk 700,000 700,000 454,827 35.02% — — — — 478.0 3870.0 358.4 232.9
rust-dpdk 70,000 70,000 68,979 1.46% 0 32,922 0 0 260.0 0.0 35.8 35.3
rust-dpdk 140,000 140,000 138,998 0.72% 0 41,866 0 0 142.0 0.0 71.7 71.2
rust-dpdk 350,000 350,000 348,593 0.40% 0 34,762 0 0 270.0 0.0 179.2 178.5
rust-dpdk 700,000 700,000 697,369 0.38% 0 31,843 0 0 384.0 0.0 358.4 357.1
tokio-dpdk 70,000 70,000 69,000 1.43% 0 32,814 0 0 0.0 0.0 35.8 38.6
tokio-dpdk 140,000 140,000 139,000 0.71% 0 40,774 0 0 0.0 0.0 71.7 77.8
tokio-dpdk 350,000 350,000 312,162 10.81% 0 26,018 0 0 0.0 0.0 179.2 174.8
tokio-dpdk 700,000 700,000 314,573 55.06% 0 14,561 0 0 0.0 0.0 358.4 176.2
plain-rust 70,000 70,000 68,994 1.44% — — — — 0.0 0.0 35.8 35.3
plain-rust 140,000 140,000 138,993 0.72% — — — — 0.0 0.0 71.7 71.2
plain-rust 350,000 350,000 347,913 0.60% — — — — 231.0 0.0 179.2 178.1
plain-rust 700,000 700,000 471,308 32.67% — — — — 0.0 0.0 358.4 241.3

512B packets

Config Target PPS TX pps RX pps Drop % NIC imissed NIC ierrors NIC nombuf App Drops Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% — — — — 120.0 2330.0 286.7 286.7
native-dpdk 140,000 140,000 140,000 0.00% — — — — 120.0 3770.0 573.4 573.4
native-dpdk 350,000 350,000 349,994 0.00% — — — — 138.0 723.0 1433.6 1433.6
native-dpdk 700,000 700,000 624,607 10.77% — — — — 1104.0 5246.0 2867.2 2558.4
rust-dpdk 70,000 70,000 68,997 1.43% 0 41,880 0 0 267.0 0.0 286.7 282.6
rust-dpdk 140,000 140,000 138,939 0.76% 0 32,652 0 0 0.0 0.0 573.4 569.1
rust-dpdk 350,000 350,000 348,567 0.41% 0 41,844 0 0 283.0 0.0 1433.6 1427.7
rust-dpdk 700,000 700,000 697,122 0.41% 0 34,475 0 0 0.0 0.0 2867.2 2855.4
tokio-dpdk 70,000 70,000 69,000 1.43% 0 38,912 0 0 0.0 0.0 286.7 285.9
tokio-dpdk 140,000 140,000 139,000 0.71% 0 30,952 0 0 0.0 0.0 573.4 576.0
tokio-dpdk 350,000 350,000 225,615 35.54% 0 19,925 0 0 0.0 0.0 1433.6 935.0
tokio-dpdk 700,000 700,000 226,821 67.60% 0 13,507 0 0 0.0 0.0 2867.2 940.0
plain-rust 70,000 70,000 68,994 1.44% — — — — 0.0 0.0 286.7 282.6
plain-rust 140,000 140,000 138,968 0.74% — — — — 0.0 0.0 573.4 569.2
plain-rust 350,000 350,000 344,967 1.44% — — — — 0.0 0.0 1433.6 1413.0
plain-rust 700,000 700,000 463,275 33.82% — — — — 0.0 0.0 2867.2 1897.6

1400B packets

Config Target PPS TX pps RX pps Drop % NIC imissed NIC ierrors NIC nombuf App Drops Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 69,996 0.01% — — — — 114.0 1705.0 784.0 784.0
native-dpdk 140,000 140,000 140,000 0.00% — — — — 113.0 592.0 1568.0 1568.0
native-dpdk 350,000 350,000 349,924 0.02% — — — — 136.0 2837.0 3920.0 3919.2
native-dpdk 700,000 476,638 468,763 1.65% — — — — 3030.0 5994.0 5338.4 5250.1
rust-dpdk 70,000 70,000 68,988 1.45% 0 31,882 0 0 0.0 0.0 784.0 772.7
rust-dpdk 140,000 140,000 138,928 0.77% 0 41,864 0 0 0.0 0.0 1568.0 1556.0
rust-dpdk 350,000 350,000 348,781 0.35% 0 31,496 0 0 0.0 0.0 3920.0 3906.3
rust-dpdk 700,000 476,658 473,556 0.65% 0 32,126 0 0 0.0 0.0 5338.6 5303.8
tokio-dpdk 70,000 70,000 69,000 1.43% 0 30,854 0 0 0.0 0.0 784.0 776.1
tokio-dpdk 140,000 140,000 138,976 0.73% 0 36,798 0 0 0.0 0.0 1568.0 1563.2
tokio-dpdk 350,000 350,000 145,199 58.51% 0 6,519 0 0 0.0 0.0 3920.0 1633.2
tokio-dpdk 700,000 476,705 155,237 67.44% 0 8,191 0 0 0.0 0.0 5339.1 1746.1
plain-rust 70,000 70,000 68,998 1.43% — — — — 0.0 0.0 784.0 772.8
plain-rust 140,000 140,000 138,967 0.74% — — — — 0.0 0.0 1568.0 1556.4
plain-rust 350,000 350,000 343,992 1.72% — — — — 0.0 0.0 3920.0 3852.7
plain-rust 700,000 476,693 359,956 24.49% — — — — 2615.0 0.0 5339.0 4031.5

8500B packets

Config Target PPS TX pps RX pps Drop % NIC imissed NIC ierrors NIC nombuf App Drops Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 69,997 0.00% — — — — 121.0 3379.0 4760.0 4759.8
native-dpdk 140,000 78,351 77,320 1.32% — — — — 14748.0 15609.0 5327.9 5257.8
native-dpdk 350,000 78,328 69,980 10.66% — — — — 14291.0 19702.0 5326.3 4758.6
rust-dpdk 70,000 70,000 68,988 1.45% 0 32,170 0 0 0.0 0.0 4760.0 4691.2
rust-dpdk 140,000 78,355 76,921 1.83% 0 18,402 0 0 0.0 0.0 5328.1 5230.6
rust-dpdk 350,000 78,349 71,448 8.81% 0 10,310 0 0 14116.0 0.0 5327.8 4858.4
tokio-dpdk 70,000 70,000 54,891 21.58% 0 4,147 0 0 0.0 0.0 4760.0 3735.2
tokio-dpdk 140,000 78,303 58,499 25.29% 0 12,583 0 0 0.0 0.0 5324.6 3980.7
tokio-dpdk 350,000 78,359 58,356 25.53% 0 8,097 0 0 0.0 0.0 5328.4 3971.0
plain-rust 70,000 70,000 43,071 38.47% — — — — 0.0 0.0 4760.0 2928.8
plain-rust 140,000 78,356 76,968 1.77% — — — — 0.0 0.0 5328.2 5233.8
plain-rust 350,000 78,357 77,245 1.42% — — — — 0.0 0.0 5328.3 5252.7

NIC Drops Instrumentation Self-Check

Compares (NIC-FINAL − NIC-BASELINE) one-shot snapshots against the sum of per-tick [PERF] deltas over the reporter's lifetime. These MUST match exactly — a mismatch means per-tick delta bookkeeping is losing data.

Config Status imissed (expected / actual / Δ) ierrors (expected / actual / Δ) rx_nombuf (expected / actual / Δ)
native-dpdk no instrumentation — — —
rust-dpdk MISMATCH 0 / 0 / 0 403,364 / 402,962 / -402 0 / 0 / 0
tokio-dpdk OK 0 / 0 / 0 272,944 / 272,944 / 0 0 / 0 / 0
plain-rust no instrumentation — — —
native-dpdk-v6 no data — — —
rust-dpdk-v6 no data — — —

expected = FINAL − BASELINE (raw NIC counter delta across reporter lifetime). actual = sum of per-tick [PERF] delta fields. Any Δ ≠ 0 is a bug in the tick loop's bookkeeping.

plain-rust Kernel NIC Drops (ethtool -S delta)

ethtool snapshots not available — baseline or final file missing in $LOGS_DIR/dut-plain-rust-ethtool-*.txt.

Full results artifact

gspivey pushed a commit that referenced this pull request Aug 16, 2026
ROADMAP item #36: EC2 integration test CI jobs with non-blocking TCP.

Changes:
1. TCP tier orchestration (scripts/run-integration-tests.sh):
   - Added run_tcp_tier1, run_tcp_tier2, run_tcp_tier3 functions
   - TCP tier 1: handshake, echo, shutdown (DPDK<->DPDK)
   - TCP tier 2: retransmission under loss, flow control/persist probes
   - TCP tier 3: kernel interop (ncat/iperf3), std-parity
   - Extended --tier filter to accept tcp1, tcp1a, tcp2, tcp3
   - TCP tiers run after UDP tier 4 when no filter is specified
   - tcp_cleanup_processes() kills stale DPDK processes before/between
     TCP tests to prevent /dev/vfio/noiommu-0 busy errors
   - DELETE_FAILED stack state recovery before CDK deploy

2. Non-blocking exit code (print_summary):
   - TCP test results (*tcp*.xml) excluded from exit code
   - TCP failures reported but don't block CI

3. Dedicated TCP workflow (scripts/ci/tcp-integration-tests.yml):
   - Ready-to-activate workflow with continue-on-error: true
   - Blocked by PAT lacking 'workflow' scope; staged for manual move

4. CI workflow fixes (.github/workflows/integration-tests.yml):
   - Exclude TCP tier XMLs from dorny fail-on-error reporter
   - Only UDP tier patterns in path glob (TCP handled separately)

5. tier1-tcp-echo.sh: accept server/client role aliases (was
   listener/sender), fixing 'Invalid role' errors that prevented
   TCP echo tests from running

6. ROADMAP housekeeping: ticked #35 (PR #117), tasks 15.2-15.4

Spec: .kiro/specs/tcp-support/ tasks 15.4, 16.1
gspivey pushed a commit that referenced this pull request Aug 16, 2026
ROADMAP item #36: EC2 integration test CI jobs with non-blocking TCP.

Changes:
1. TCP tier orchestration (scripts/run-integration-tests.sh):
   - Added run_tcp_tier1, run_tcp_tier2, run_tcp_tier3 functions
   - TCP tier 1: handshake, echo, shutdown (DPDK<->DPDK)
   - TCP tier 2: retransmission under loss, flow control/persist probes
   - TCP tier 3: kernel interop (ncat/iperf3), std-parity
   - Extended --tier filter to accept tcp1, tcp1a, tcp2, tcp3
   - TCP tiers run after UDP tier 4 when no filter is specified
   - tcp_cleanup_processes() kills stale DPDK processes before/between
     TCP tests to prevent /dev/vfio/noiommu-0 busy errors
   - DELETE_FAILED stack state recovery before CDK deploy

2. Non-blocking exit code (print_summary):
   - TCP test results (*tcp*.xml) excluded from exit code
   - TCP failures reported but don't block CI

3. Dedicated TCP workflow (scripts/ci/tcp-integration-tests.yml):
   - Ready-to-activate workflow with continue-on-error: true
   - Blocked by PAT lacking 'workflow' scope; staged for manual move

4. CI workflow fixes (.github/workflows/integration-tests.yml):
   - Exclude TCP tier XMLs from dorny fail-on-error reporter
   - Only UDP tier patterns in path glob (TCP handled separately)

5. tier1-tcp-echo.sh: accept server/client role aliases (was
   listener/sender), fixing 'Invalid role' errors that prevented
   TCP echo tests from running

6. ROADMAP housekeeping: ticked #35 (PR #117), tasks 15.2-15.4

Spec: .kiro/specs/tcp-support/ tasks 15.4, 16.1
gspivey pushed a commit that referenced this pull request Aug 16, 2026
ROADMAP item #36: EC2 integration test CI jobs with non-blocking TCP.

Changes:
1. TCP tier orchestration (scripts/run-integration-tests.sh):
   - Added run_tcp_tier1, run_tcp_tier2, run_tcp_tier3 functions
   - TCP tier 1: handshake, echo, shutdown (DPDK<->DPDK)
   - TCP tier 2: retransmission under loss, flow control/persist probes
   - TCP tier 3: kernel interop (ncat/iperf3), std-parity
   - Extended --tier filter to accept tcp1, tcp1a, tcp2, tcp3
   - TCP tiers run after UDP tier 4 when no filter is specified
   - tcp_cleanup_processes() kills stale DPDK processes before/between
     TCP tests to prevent /dev/vfio/noiommu-0 busy errors
   - DELETE_FAILED stack state recovery before CDK deploy

2. Non-blocking exit code (print_summary):
   - TCP test results (*tcp*.xml) excluded from exit code
   - TCP failures reported but don't block CI

3. Dedicated TCP workflow (scripts/ci/tcp-integration-tests.yml):
   - Ready-to-activate workflow with continue-on-error: true
   - Blocked by PAT lacking 'workflow' scope; staged for manual move

4. CI workflow fixes (.github/workflows/integration-tests.yml):
   - Exclude TCP tier XMLs from dorny fail-on-error reporter
   - Only UDP tier patterns in path glob (TCP handled separately)

5. tier1-tcp-echo.sh: accept server/client role aliases (was
   listener/sender), fixing 'Invalid role' errors that prevented
   TCP echo tests from running

6. ROADMAP housekeeping: ticked #35 (PR #117), tasks 15.2-15.4

Spec: .kiro/specs/tcp-support/ tasks 15.4, 16.1
gspivey added a commit that referenced this pull request Aug 17, 2026
## Roadmap Item

ROADMAP #35: `dpdk-stdlib-tcp: EC2 tier-2 and tier-3 integration test
scripts`

Spec: `.kiro/specs/tcp-support/` tasks 15.2, 15.3

## Summary

PR #117 implemented and merged the tier-2 and tier-3 TCP integration
test scripts but did not update ROADMAP.md or tasks.md. This PR
finalizes the bookkeeping:

- **ROADMAP.md**: marks item #35 as `[x] Complete · PR: #117`
- **tasks.md**: checks off tasks 15.2 and 15.3

## Tests

No code changes — docs-only. All 1041 existing tests pass locally
(`cargo build && cargo test`).

---------

Co-authored-by: Agent Router <agent@gspivey.com>
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.

1 participant