Skip to content

feat: RX backpressure accounting and socket drop counters - #33

Merged
gspivey merged 13 commits into
mainfrom
claude/complete-roadmap-feature-L1KJN
Apr 11, 2026
Merged

gspivey merged 13 commits into
mainfrom
claude/complete-roadmap-feature-L1KJN

Conversation

@gspivey

@gspivey gspivey commented Apr 11, 2026

Copy link
Copy Markdown
Owner

Summary

Implements RX backpressure and drop counters — the roadmap item the README called out as "the most important gap for production use". Applications now have first-class visibility into receive-side packet loss instead of silently losing datagrams when the internal socket buffer fills.

This is the next well-scoped feature from the Planned roadmap, picking up right after TX/RX checksum work (already in "Done" from #32).

What changed

  • ReceiveQueue now tracks both packet count and queued payload bytes. push() returns Result<(), Vec<u8>> — on reject it hands the payload back so the caller can record the drop size. pop() decrements current_bytes.
  • UdpSocket gains the SO_RCVBUF-style API:
    • recv_buffer_size() / set_recv_buffer_size(bytes) — mirrors POSIX getsockopt/setsockopt SO_RCVBUF
    • recv_buffer_bytes() — live watermark
    • recv_drops() -> RecvDropStats { packets, bytes } — lock-free atomic read
    • reset_recv_drops() — for windowed measurement
  • All four recv_queue.push() call sites (multicore connected-filter, RTC connected-filter, RTC burst overflow, ARP resolution loop) now record drops via a single record_rx_drop(len) helper.
  • New perf counter rx_drops_buffer_full is rolled into the existing rx_drops rate on the periodic reporter, so socket-level drops show up alongside worker-ring drops with no extra plumbing.
  • Default buffer is 256 KiB (close to Linux net.core.rmem_default); constants DEFAULT_RECV_BUFFER_BYTES / DEFAULT_RECV_BUFFER_PACKETS are public so apps can compare against them.
  • README roadmap updated: "RX backpressure and drop counters" moved from Planned → Done, and the "What's Implemented" table gains a row for it.

Scope / non-goals

  • This is the socket-level backpressure buffer — the equivalent of Linux sk_rcvbuf/sk_rmem_alloc. Hardware RX ring sizing is still configured separately via TopologyConfig.
  • No changes to the hot-path memcpy layout; drop accounting is two relaxed atomic adds on the rejection slow path.
  • Existing behavior preserved: connected-socket filtering and burst-overflow queuing still work identically — we just count the drops that were previously silent.

Test plan

  • cargo build clean (only pre-existing unused_unsafe warnings in dpdk/)
  • cargo test — 280 tests passing (was 262). 18 new tests cover:
    • Byte-limit enforcement at and beyond the boundary
    • Packet-count cap independent of bytes
    • pop() reclaims capacity for subsequent pushes
    • set_max_bytes() updates live limit
    • set_recv_buffer_size(0) rejected with InvalidInput
    • Drop counters start at zero, increment on rejection, reset to zero
    • record_rx_drop also bumps the rx_drops_buffer_full perf counter
    • Default constant is sane (200 KiB ≤ default ≤ 4 MiB)
    • counter_snapshot_rates updated to aggregate buffer-full drops into rx_drops
  • Integration tests (EC2) — auto-triggered on this PR
  • Performance tests — will be run after CI passes to verify no regression

https://claude.ai/code/session_01AEEjCeNiuSA8MWU7BPy15G

Adds `SO_RCVBUF`-equivalent byte-based accounting to the socket-level
receive queue, with atomic drop counters applications can read without
acquiring the queue lock. This closes the gap the README called out as
"the most important gap for production use" — apps now have visibility
into receive-side backpressure instead of silently losing packets when
the internal VecDeque fills up.

- ReceiveQueue tracks `current_bytes` against `max_bytes` in addition to
  the existing packet-count cap; push returns Err(payload) so callers
  can record the dropped size.
- UdpSocket gains `set_recv_buffer_size` / `recv_buffer_size` /
  `recv_buffer_bytes` / `recv_drops` / `reset_recv_drops`, plus a
  `RecvDropStats { packets, bytes }` public type.
- All four push call sites (multicore connected-filter, RTC
  connected-filter, RTC burst overflow, ARP resolution loop) now record
  drops via a single `record_rx_drop(len)` helper which also bumps a
  new `rx_drops_buffer_full` perf counter.
- Default buffer is 256 KiB (close to Linux `net.core.rmem_default`).
- 18 new unit tests cover byte-limit enforcement, packet-count cap,
  pop/reclaim, setter validation, perf counter integration, and the
  socket-level getters. Full suite: 280 tests passing.
@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-08d58efea5b00d24e (DPDK ENI: 10.0.1.223)
  • Receiver: i-0b3d9cbdd56278d02 (DPDK ENI: 10.0.1.71)
  • 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

[Perf] Stage: Deploy

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

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 24272160915)

Branch: 33/merge | Commit: 0204f3c0

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
✅ DPDK UDP socket bound to 10.0.1.71:9000 (MAC: 02:4b:e3:48:c1:a7)
echo listening on 10.0.1.71: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
✅ DPDK UDP socket bound to 10.0.1.223:9000 (MAC: 02:84:17:4e:1e:09)
echo listening on 10.0.1.223: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.71:9000: 'arp-probe #1'
Test complete
[2026-04-11T02:16:29Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T02:16:29Z] INFO: Test: udp_send_receive
[2026-04-11T02:16:30Z] INFO: UDP send/receive succeeded
[2026-04-11T02:16:30Z] INFO: Test: echo_roundtrip
[2026-04-11T02:16:31Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T02:16:31Z] INFO: Test: payload_integrity
[2026-04-11T02:16:31Z] INFO: Response received, checking payload match...
[2026-04-11T02:16:31Z] INFO: Payload integrity verified (found in response)
[2026-04-11T02:16:31Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-11T02:16:31Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.71:9000 (MAC: 02:4b:e3:48:c1:a7)
echo listening on 10.0.1.71: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
✅ DPDK UDP socket bound to 10.0.1.223:9000 (MAC: 02:84:17:4e:1e:09)
echo listening on 10.0.1.223:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-11T02:12:59Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.71:9000
Bind address: 10.0.1.223:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.223:32768 (MAC: 02:84:17:4e:1e:09)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.71:9000: 'arp-probe #1'
Test complete
[2026-04-11T02:13:01Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T02:13:01Z] INFO: Test: udp_send_receive
[2026-04-11T02:13:03Z] INFO: UDP send/receive succeeded
[2026-04-11T02:13:03Z] INFO: Test: echo_roundtrip
[2026-04-11T02:13:05Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T02:13:05Z] INFO: Test: payload_integrity
[2026-04-11T02:13:05Z] INFO: Response received, checking payload match...
[2026-04-11T02:13:05Z] INFO: Payload integrity verified (found in response)
[2026-04-11T02:13:05Z] INFO: Test: jumbo_diagnostics
[2026-04-11T02:13:05Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-11T02:13:05Z] INFO: Interface MTU:
  9001
  65536
[2026-04-11T02:13:05Z] INFO:   ens5: MTU=9001
[2026-04-11T02:13:05Z] INFO:   lo: MTU=65536
[2026-04-11T02:13:05Z] 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-04-11T02:13:05Z] INFO: DPDK port config (from echo server log):
[2026-04-11T02:13:05Z] INFO:   (no MTU info in echo log)
[2026-04-11T02:13:05Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-11T02:13:05Z] INFO: Test: jumbo_echo_8000
[2026-04-11T02:13:07Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.71:9000
Bind address: 10.0.1.223: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
✅ DPDK UDP socket bound to 10.0.1.223:32768 (MAC: 02:84:17:4e:1e:09)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.71:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.71:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.71:9000 (expected 8000, OK)
Test complete
[2026-04-11T02:13:07Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-11T02:13:07Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-11T02:13:07Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-11T02:16:29Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.71: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.71:9000: 'arp-probe #1'
Test complete
[2026-04-11T02:16:29Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T02:16:29Z] INFO: Test: udp_send_receive
[2026-04-11T02:16:30Z] INFO: UDP send/receive succeeded
[2026-04-11T02:16:30Z] INFO: Test: echo_roundtrip
[2026-04-11T02:16:31Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T02:16:31Z] INFO: Test: payload_integrity
[2026-04-11T02:16:31Z] INFO: Response received, checking payload match...
[2026-04-11T02:16:31Z] INFO: Payload integrity verified (found in response)
[2026-04-11T02:16:31Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-11T02:16:31Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-11T02:22:08Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-11T02:22:08Z] INFO: Local IP: 10.0.1.223, Peer IP: 10.0.1.71, Port: 9000
[2026-04-11T02:22:08Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.223       0x1         0x2         02:84:17:4e:1e:09     *        ens5
10.0.1.242       0x1         0x2         02:73:6a:d0:f2:d7     *        ens5
10.0.1.232       0x1         0x2         02:b2:d6:28:73:7b     *        ens5
10.0.1.1         0x1         0x2         02:f9:5e:a3:11:b9     *        ens5
10.0.1.71        0x1         0x2         02:4b:e3:48:c1:a7     *        ens5
[2026-04-11T02:22:08Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-11T02:22:08Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-11T02:22:08Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1890280 Apr 11 02:11 /opt/dpdk-stdlib/target/release/test-client
[2026-04-11T02:22:08Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.71 --port 9000 --bind-ip 10.0.1.223 --count 10 --delay 200
[2026-04-11T02:22:11Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.71:9000
Bind address: 10.0.1.223:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.223:32768 (MAC: 02:84:17:4e:1e:09)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.71:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-11T02:22:11Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-11T02:22:11Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-11T02:22:11Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-11T02:22:11Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b3d9cbdd56278d02 (receiver)
Command ID: 89284df0-6b21-48a5-9c07-7657a1c03bdb

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b3d9cbdd56278d02 (receiver)
Command ID: 93ba5964-93b6-45b7-8a80-8c5c52259c26

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b3d9cbdd56278d02 (receiver)
Command ID: d38340b4-2ead-4e37-a603-8aef6b935b9a

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-08d58efea5b00d24e (sender)
Command ID: 3ccb46ab-2439-4e32-b062-8eba6a8bc096

=== 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:5c:d9:5f:85:d9 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-071961464f330ce82
    altname device-number-0.0
    inet 10.0.1.150/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2530sec preferred_lft 2530sec
    inet6 fe80::5c:d9ff:fe5f:85d9/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
5: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:4b:e3:48:c1:a7 brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname eni-0cfd65fa86fe7107f
    altname device-number-1.0
    inet 10.0.1.71/24 brd 10.0.1.255 scope global ens6
       valid_lft forever preferred_lft forever
    inet6 fe80::4b:e3ff:fe48:c1a7/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:97:b4:e2:56:e7 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0fbf1bd53345671a4
    altname device-number-0.0
    inet 10.0.1.136/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2553sec preferred_lft 2553sec
    inet6 fe80::97:b4ff:fee2:56e7/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-11T02:12:20Z
hostname: ip-10-0-1-150.ec2.internal
kernel: 6.18.16-18.222.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:5c:d9:5f:85:d9 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-071961464f330ce82
    altname device-number-0.0
    inet 10.0.1.150/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3300sec preferred_lft 3300sec
    inet6 fe80::5c:d9ff:fe5f:85d9/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.232 dev ens5 lladdr 02:b2:d6:28:73:7b REACHABLE 
10.0.1.1 dev ens5 lladdr 02:f9:5e:a3:11:b9 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.150 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.150 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.150 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.150 metric 512 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:4b:e3:48:c1:a7/ 02:5c:d9:5f:85:d9/ 

--- ENI: 02:4b:e3:48:c1:a7/ ---
  device-number: 1
  local-ipv4s: 10.0.1.71
  subnet-id: subnet-02156fa0e93310a87
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:5c:d9:5f:85:d9/ ---
  device-number: 0
  local-ipv4s: 10.0.1.150
  subnet-id: subnet-02156fa0e93310a87
  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:f9:5e:a3:11:b9 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.150 ens5
Unicast reply from 10.0.1.1 [02:F9:5E:A3:11:B9]  0.537ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:     14336 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 Apr 11 02:12 .
drwxr-xr-x. 14 root root     3100 Apr 11 02:11 ..
crw-------.  1 root root 243,   0 Apr 11 02:12 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 11 02:07 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.053138] printk: legacy console [ttyS0] enabled
[    0.054253] x2apic enabled
[    0.058940] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.059054] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.068641] audit: type=2000 audit(1775873234.287:1): state=initialized audit_enabled=0 res=1
[    0.070680] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.133131] ACPI: Interpreter enabled
[    0.133131] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.147363] pci 0000:00:05.0: enabling Extended Tags
[    0.233912] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.239726] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.245564] IPI shorthand broadcast: enabled
[    3.657268] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.689301] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.775837] VFIO - User Level meta-driver version: 0.3
[    4.283969] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.295080] ena 0000:00:05.0: ENA device version: 0.10
[    4.295797] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.395041] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.407043] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:5c:d9:5f:85:d9
[    4.447987] ena 0000:00:05.0 ens5: renamed from eth0
[  250.527813] pci 0000:00:06.0: enabling Extended Tags
[  250.531864] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  250.544089] ena 0000:00:06.0: ENA device version: 0.10
[  250.544882] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  250.644079] ena 0000:00:06.0: ENA Large LLQ is disabled
[  250.655961] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4b:e3:48:c1:a7
[  250.663217] ena 0000:00:06.0 ens6: renamed from eth0
[  293.027804] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  293.029240] 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-04-11T02:12:12Z
hostname: ip-10-0-1-136.ec2.internal
kernel: 6.18.16-18.222.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:97:b4:e2:56:e7 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0fbf1bd53345671a4
    altname device-number-0.0
    inet 10.0.1.136/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3309sec preferred_lft 3309sec
    inet6 fe80::97:b4ff:fee2:56e7/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.232 dev ens5 lladdr 02:b2:d6:28:73:7b REACHABLE 
10.0.1.242 dev ens5 lladdr 02:73:6a:d0:f2:d7 STALE 
10.0.1.1 dev ens5 lladdr 02:f9:5e:a3:11:b9 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.136 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.136 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.136 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.136 metric 512 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:84:17:4e:1e:09/ 02:97:b4:e2:56:e7/ 

--- ENI: 02:84:17:4e:1e:09/ ---
  device-number: 1
  local-ipv4s: 10.0.1.223
  subnet-id: subnet-02156fa0e93310a87
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:97:b4:e2:56:e7/ ---
  device-number: 0
  local-ipv4s: 10.0.1.136
  subnet-id: subnet-02156fa0e93310a87
  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:f9:5e:a3:11:b9 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.136 ens5
Unicast reply from 10.0.1.1 [02:F9:5E:A3:11:B9]  0.542ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:     14336 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 Apr 11 02:12 .
drwxr-xr-x. 14 root root     3100 Apr 11 02:11 ..
crw-------.  1 root root 243,   0 Apr 11 02:12 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 11 02:07 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.054027] printk: legacy console [ttyS0] enabled
[    0.055154] x2apic enabled
[    0.059923] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.060037] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.069596] audit: type=2000 audit(1775873235.359:1): state=initialized audit_enabled=0 res=1
[    0.071621] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.134657] ACPI: Interpreter enabled
[    0.134657] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.149129] pci 0000:00:05.0: enabling Extended Tags
[    0.233975] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.240696] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.243584] IPI shorthand broadcast: enabled
[    3.558060] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.594678] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.667418] VFIO - User Level meta-driver version: 0.3
[    4.089322] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.097011] ena 0000:00:05.0: ENA device version: 0.10
[    4.097739] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.225045] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.238116] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:97:b4:e2:56:e7
[    4.278924] ena 0000:00:05.0 ens5: renamed from eth0
[  250.811608] pci 0000:00:06.0: enabling Extended Tags
[  250.815881] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  250.824883] ena 0000:00:06.0: ENA device version: 0.10
[  250.825693] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  250.924949] ena 0000:00:06.0: ENA Large LLQ is disabled
[  250.937124] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:84:17:4e:1e:09
[  250.945327] ena 0000:00:06.0 ens6: renamed from eth0
[  284.810140] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  284.811658] 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.068008] pid_max: default: 32768 minimum: 301
[    0.151339] iommu: Default domain type: Translated
[    0.151366] NetLabel:  unlabeled traffic allowed by default
[    0.203722] PCI: CLS 0 bytes, default 64
[    0.324341] nvme nvme0: 2/0/0 default/read/poll queues
[    0.438178] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.438268] systemd[1]: No hostname configured, using default hostname.
[    0.491223] systemd[1]: Queued start job for default target initrd.target.
[    2.766896] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[  334.057279] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4196)
[  539.657212] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4627)

sender-dmesg-crashes.log

[    0.068967] pid_max: default: 32768 minimum: 301
[    0.153174] iommu: Default domain type: Translated
[    0.153204] NetLabel:  unlabeled traffic allowed by default
[    0.197131] PCI: CLS 0 bytes, default 64
[    0.256368] nvme nvme0: 2/0/0 default/read/poll queues
[    0.412644] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.412771] systemd[1]: No hostname configured, using default hostname.
[    0.488902] systemd[1]: Queued start job for default target initrd.target.
[    2.808197] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[  938.427556] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5484)
Kernel Console (dmesg)

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

[  250.544882] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  250.644079] ena 0000:00:06.0: ENA Large LLQ is disabled
[  250.655961] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4b:e3:48:c1:a7
[  250.663217] ena 0000:00:06.0 ens6: renamed from eth0
[  293.027804] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  293.029240] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  333.839853] vfio-pci 0000:00:06.0: resetting
[  334.055654] vfio-pci 0000:00:06.0: reset done
[  334.057279] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4196)
[  334.058883] vfio-pci 0000:00:06.0: resetting
[  334.275543] vfio-pci 0000:00:06.0: reset done
[  411.155599] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  412.164040] ena 0000:00:06.0: ENA device version: 0.10
[  412.164831] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  412.264022] ena 0000:00:06.0: ENA Large LLQ is disabled
[  412.275880] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4b:e3:48:c1:a7
[  412.286840] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  432.032128] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  432.033530] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  539.434075] vfio-pci 0000:00:06.0: resetting
[  539.655593] vfio-pci 0000:00:06.0: reset done
[  539.657212] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4627)
[  539.658730] vfio-pci 0000:00:06.0: resetting
[  539.875478] vfio-pci 0000:00:06.0: reset done
[  614.560094] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  615.573005] ena 0000:00:06.0: ENA device version: 0.10
[  615.573811] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  615.673963] ena 0000:00:06.0: ENA Large LLQ is disabled
[  615.685806] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4b:e3:48:c1:a7
[  615.696235] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)

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

[  348.549784] vfio-pci 0000:00:06.0: resetting
[  348.766354] vfio-pci 0000:00:06.0: reset done
[  349.897156] vfio-pci 0000:00:06.0: resetting
[  350.106372] vfio-pci 0000:00:06.0: reset done
[  350.108043] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4277)
[  350.109828] vfio-pci 0000:00:06.0: resetting
[  350.326391] vfio-pci 0000:00:06.0: reset done
[  350.701114] vfio-pci 0000:00:06.0: resetting
[  350.916393] vfio-pci 0000:00:06.0: reset done
[  350.918023] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4333)
[  350.919806] vfio-pci 0000:00:06.0: resetting
[  351.136347] vfio-pci 0000:00:06.0: reset done
[  400.225659] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  401.234742] ena 0000:00:06.0: ENA device version: 0.10
[  401.235551] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  401.334715] ena 0000:00:06.0: ENA Large LLQ is disabled
[  401.346909] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:84:17:4e:1e:09
[  401.355418] ena 0000:00:06.0 ens6: renamed from eth0
[  634.318800] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  634.320036] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  893.395856] vfio-pci 0000:00:06.0: resetting
[  893.615930] vfio-pci 0000:00:06.0: reset done
[  893.617561] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:5395)
[  893.619333] vfio-pci 0000:00:06.0: resetting
[  893.835807] vfio-pci 0000:00:06.0: reset done
[  938.216093] vfio-pci 0000:00:06.0: resetting
[  938.425887] vfio-pci 0000:00:06.0: reset done
[  938.427556] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5484)
[  938.429130] vfio-pci 0000:00:06.0: resetting
[  938.645754] vfio-pci 0000:00:06.0: reset done

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Instances Ready

  • TRex: i-093b158ebc7b6d904 (10.0.1.233)
  • DUT: i-0b1d275d26a76d9c4 (10.0.1.59)
  • Instance type: unknown

@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:9f:d4:bb:43:11
  • RX: 0000:00:07.0 MAC: 02:5f:bf:55:42:8b
  • Gateway MAC: 02:95:b7:10:03:6b
    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-0b1d275d26a76d9c4 SSM working, build complete.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (1/3)

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:9f:d4:bb:43:11
  Port 1: 02:5f:bf:55:42:8b
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:9f:d4:bb:43:11

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4285%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,798 pps, Drop: 0.3435%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 615,219 pps, Drop: 12.1115%, Lat avg: 1008.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4285%, Lat avg: 199.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,999 pps, Drop: 0.7149%, Lat avg: 201.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,941 pps, Drop: 0.3026%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 459,159 pps, Drop: 34.4058%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,989 pps, Drop: 0.7223%, Lat avg: 245.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,786 pps, Drop: 0.3468%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,276 pps, RX: 466,257 pps, Drop: 2.1034%, 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: 31,193 pps, Drop: 55.4382%, Lat avg: 217.0 us
  Target: 140,000 pps ... TX: 78,291 pps, RX: 77,727 pps, Drop: 0.7201%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,284 pps, RX: 77,595 pps, Drop: 0.8804%, 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/3)

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:9f:d4:bb:43:11
  Port 1: 02:5f:bf:55:42:8b
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:9f:d4:bb:43:11

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,000 pps, Drop: 0.2857%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 698,111 pps, Drop: 0.2699%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,993 pps, Drop: 0.2876%, Lat avg: 293.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 695,988 pps, Drop: 0.5732%, Lat avg: 276.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 304.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,000 pps, Drop: 0.2857%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,285 pps, RX: 475,572 pps, Drop: 0.1496%, 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: 69,000 pps, Drop: 1.4286%, Lat avg: 592.0 us
  Target: 140,000 pps ... TX: 78,305 pps, RX: 77,713 pps, Drop: 0.7559%, Lat avg: 14039.0 us
  Target: 350,000 pps ... TX: 78,343 pps, RX: 77,653 pps, Drop: 0.8807%, Lat avg: 0.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/3)

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:9f:d4:bb:43:11
  Port 1: 02:5f:bf:55:42:8b
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:9f:d4:bb:43:11

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 114.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 128.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 144.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 698,646 pps, Drop: 0.1935%, Lat avg: 190.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 122.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 133.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 148.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 695,992 pps, Drop: 0.5726%, Lat avg: 246.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 130.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 139.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 152.0 us
  Target: 700,000 pps ... TX: 476,553 pps, RX: 475,121 pps, Drop: 0.3006%, Lat avg: 3058.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: 70,000 pps, Drop: 0.0%, Lat avg: 160.0 us
  Target: 140,000 pps ... TX: 78,291 pps, RX: 78,287 pps, Drop: 0.0046%, Lat avg: 14078.0 us
  Target: 350,000 pps ... TX: 78,355 pps, RX: 78,083 pps, Drop: 0.3469%, Lat avg: 14297.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) ===
  TX-packets: 215092996  TX-errors: 0          TX-bytes:  227968832631

  Throughput (since last show)
  Rx-pps:        73579          Rx-bps:   5001093568
  Tx-pps:        73580          Tx-bps:   5001093568
  ############################################################################
�[2J�[1;1H
Port statistics ====================================
  ######################## NIC statistics for port 0  ########################
  RX-packets: 113432291  RX-missed: 0          RX-bytes:  122625131730
  RX-errors: 403550
  RX-nombuf:  0         
  TX-packets: 215429702  TX-errors: 0          TX-bytes:  230829478353

  Throughput (since last show)
  Rx-pps:        33668          Rx-bps:   2288294920
  Tx-pps:        33667          Tx-bps:   2288301712
  ############################################################################
�[2J�[1;1H
Port statistics ====================================
  ######################## NIC statistics for port 0  ########################
  RX-packets: 113432291  RX-missed: 0          RX-bytes:  122625131730
  RX-errors: 403550
  RX-nombuf:  0         
  TX-packets: 215429702  TX-errors: 0          TX-bytes:  230829478353

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Results

[03:11:01] INFO Generating markdown summary...

Performance Test Results — unknown

Commit: 28f13ce6
Timestamp: 2026-04-11T03:11:01.502844+00:00

64B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 114.0 566.0 35.8 35.8
native-dpdk 140,000 140,000 140,000 0.00% 128.0 574.0 71.7 71.7
native-dpdk 350,000 350,000 350,000 0.00% 144.0 1326.0 179.2 179.2
native-dpdk 700,000 700,000 698,646 0.19% 190.0 2261.0 358.4 357.7
rust-dpdk 70,000 70,000 69,000 1.43% 0.0 0.0 35.8 35.3
rust-dpdk 140,000 140,000 139,000 0.71% 0.0 0.0 71.7 71.2
rust-dpdk 350,000 350,000 349,000 0.29% 0.0 0.0 179.2 178.7
rust-dpdk 700,000 700,000 698,111 0.27% 0.0 0.0 358.4 357.4
plain-rust 70,000 70,000 69,000 1.43% 0.0 0.0 35.8 35.3
plain-rust 140,000 140,000 139,000 0.71% 0.0 0.0 71.7 71.2
plain-rust 350,000 350,000 348,798 0.34% 0.0 0.0 179.2 178.6
plain-rust 700,000 700,000 615,219 12.11% 1008.0 0.0 358.4 315.0

512B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 122.0 285.0 286.7 286.7
native-dpdk 140,000 140,000 140,000 0.00% 133.0 258.0 573.4 573.4
native-dpdk 350,000 350,000 350,000 0.00% 148.0 786.0 1433.6 1433.6
native-dpdk 700,000 700,000 695,992 0.57% 246.0 2844.0 2867.2 2850.8
rust-dpdk 70,000 70,000 69,000 1.43% 0.0 0.0 286.7 282.6
rust-dpdk 140,000 140,000 139,000 0.71% 0.0 0.0 573.4 569.3
rust-dpdk 350,000 350,000 348,993 0.29% 293.0 0.0 1433.6 1429.5
rust-dpdk 700,000 700,000 695,988 0.57% 276.0 0.0 2867.2 2850.8
plain-rust 70,000 70,000 69,000 1.43% 199.0 0.0 286.7 282.6
plain-rust 140,000 140,000 138,999 0.71% 201.0 0.0 573.4 569.3
plain-rust 350,000 350,000 348,941 0.30% 0.0 0.0 1433.6 1429.3
plain-rust 700,000 700,000 459,159 34.41% 0.0 0.0 2867.2 1880.7

1400B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 130.0 338.0 784.0 784.0
native-dpdk 140,000 140,000 140,000 0.00% 139.0 374.0 1568.0 1568.0
native-dpdk 350,000 350,000 350,000 0.00% 152.0 460.0 3920.0 3920.0
native-dpdk 700,000 476,553 475,121 0.30% 3058.0 5191.0 5337.4 5321.4
rust-dpdk 70,000 70,000 69,000 1.43% 0.0 0.0 784.0 772.8
rust-dpdk 140,000 140,000 139,000 0.71% 304.0 0.0 1568.0 1556.8
rust-dpdk 350,000 350,000 349,000 0.29% 0.0 0.0 3920.0 3908.8
rust-dpdk 700,000 476,285 475,572 0.15% 0.0 0.0 5334.4 5326.4
plain-rust 70,000 70,000 69,000 1.43% 0.0 0.0 784.0 772.8
plain-rust 140,000 140,000 138,989 0.72% 245.0 0.0 1568.0 1556.7
plain-rust 350,000 350,000 348,786 0.35% 0.0 0.0 3920.0 3906.4
plain-rust 700,000 476,276 466,257 2.10% 0.0 0.0 5334.3 5222.1

8500B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 160.0 375.0 4760.0 4760.0
native-dpdk 140,000 78,291 78,287 0.00% 14078.0 14752.0 5323.8 5323.5
native-dpdk 350,000 78,355 78,083 0.35% 14297.0 14867.0 5328.1 5309.6
rust-dpdk 70,000 70,000 69,000 1.43% 592.0 0.0 4760.0 4692.0
rust-dpdk 140,000 78,305 77,713 0.76% 14039.0 0.0 5324.7 5284.4
rust-dpdk 350,000 78,343 77,653 0.88% 0.0 0.0 5327.3 5280.4
plain-rust 70,000 70,000 31,193 55.44% 217.0 0.0 4760.0 2121.1
plain-rust 140,000 78,291 77,727 0.72% 0.0 0.0 5323.8 5285.4
plain-rust 350,000 78,284 77,595 0.88% 0.0 0.0 5323.3 5276.4

Full results artifact

64B/700K rust-dpdk holds 698k pps (0.27% drop) vs plain-rust's
615k (12.1% drop). 512B/700K rust-dpdk delivers 696k pps (0.57%
drop) vs plain-rust's 459k (34.4% drop). No regression from the
new RX buffer accounting — byte-counting cost is below the
measurement noise floor at all tested rates.
@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0386230f57d244f20 (DPDK ENI: 10.0.1.99)
  • Receiver: i-092aa14db48ec3230 (DPDK ENI: 10.0.1.253)
  • Both instances SSM-ready.

The new socket-level recv-buffer drops (rx_drops_buffer_full) were
already being incremented and folded into the aggregate rx_drops in
PerfReporter, but (a) they were indistinguishable from worker
ring-full drops in the log line, and (b) the rust-dpdk perf-test
launcher never passed --perf-interval, so PerfReporter never ran.

Changes:
- RateSnapshot: split rx_drops into rx_ring_drops + rx_buf_drops
  while keeping the aggregate rx_drops field for back-compat.
- PerfReporter [PERF] line: print rx_ring_drops and rx_buf_drops
  as their own key=value pairs alongside the aggregate.
- run-perf-tests.sh: pass --perf-interval 10 to the rust-dpdk echo
  launcher so [PERF] lines actually appear in dut-rust-dpdk-app.log
  (which the perf workflow already attaches to PR comments). This
  lets us compare our internal drop counters against TRex's drop %
  side-by-side in the perf-test report.
@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 24273354938)

Branch: 33/merge | Commit: 509338da

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
✅ DPDK UDP socket bound to 10.0.1.253:9000 (MAC: 02:2a:f7:52:51:6d)
echo listening on 10.0.1.253: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
✅ DPDK UDP socket bound to 10.0.1.99:9000 (MAC: 02:c2:21:02:ec:c3)
echo listening on 10.0.1.99: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.253:9000: 'arp-probe #1'
Test complete
[2026-04-11T03:26:33Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T03:26:33Z] INFO: Test: udp_send_receive
[2026-04-11T03:26:34Z] INFO: UDP send/receive succeeded
[2026-04-11T03:26:34Z] INFO: Test: echo_roundtrip
[2026-04-11T03:26:35Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T03:26:35Z] INFO: Test: payload_integrity
[2026-04-11T03:26:35Z] INFO: Response received, checking payload match...
[2026-04-11T03:26:35Z] INFO: Payload integrity verified (found in response)
[2026-04-11T03:26:35Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-11T03:26:35Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.253:9000 (MAC: 02:2a:f7:52:51:6d)
echo listening on 10.0.1.253: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
✅ DPDK UDP socket bound to 10.0.1.99:9000 (MAC: 02:c2:21:02:ec:c3)
echo listening on 10.0.1.99:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-11T03:21:52Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.253:9000
Bind address: 10.0.1.99:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.99:32768 (MAC: 02:c2:21:02:ec:c3)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.253:9000: 'arp-probe #1'
Test complete
[2026-04-11T03:21:55Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T03:21:55Z] INFO: Test: udp_send_receive
[2026-04-11T03:21:57Z] INFO: UDP send/receive succeeded
[2026-04-11T03:21:57Z] INFO: Test: echo_roundtrip
[2026-04-11T03:21:58Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T03:21:58Z] INFO: Test: payload_integrity
[2026-04-11T03:21:59Z] INFO: Response received, checking payload match...
[2026-04-11T03:21:59Z] INFO: Payload integrity verified (found in response)
[2026-04-11T03:21:59Z] INFO: Test: jumbo_diagnostics
[2026-04-11T03:21:59Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-11T03:21:59Z] INFO: Interface MTU:
  9001
  65536
[2026-04-11T03:21:59Z] INFO:   ens5: MTU=9001
[2026-04-11T03:21:59Z] INFO:   lo: MTU=65536
[2026-04-11T03:21:59Z] 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-04-11T03:21:59Z] INFO: DPDK port config (from echo server log):
[2026-04-11T03:21:59Z] INFO:   (no MTU info in echo log)
[2026-04-11T03:21:59Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-11T03:21:59Z] INFO: Test: jumbo_echo_8000
[2026-04-11T03:22:01Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.253:9000
Bind address: 10.0.1.99: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
✅ DPDK UDP socket bound to 10.0.1.99:32768 (MAC: 02:c2:21:02:ec:c3)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.253:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.253:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.253:9000 (expected 8000, OK)
Test complete
[2026-04-11T03:22:01Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-11T03:22:01Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-11T03:22:01Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-11T03:26:33Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.253: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.253:9000: 'arp-probe #1'
Test complete
[2026-04-11T03:26:33Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T03:26:33Z] INFO: Test: udp_send_receive
[2026-04-11T03:26:34Z] INFO: UDP send/receive succeeded
[2026-04-11T03:26:34Z] INFO: Test: echo_roundtrip
[2026-04-11T03:26:35Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T03:26:35Z] INFO: Test: payload_integrity
[2026-04-11T03:26:35Z] INFO: Response received, checking payload match...
[2026-04-11T03:26:35Z] INFO: Payload integrity verified (found in response)
[2026-04-11T03:26:35Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-11T03:26:35Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-11T03:32:29Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-11T03:32:29Z] INFO: Local IP: 10.0.1.99, Peer IP: 10.0.1.253, Port: 9000
[2026-04-11T03:32:29Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.99        0x1         0x2         02:c2:21:02:ec:c3     *        ens5
10.0.1.1         0x1         0x2         02:c3:ae:12:b2:49     *        ens5
10.0.1.253       0x1         0x2         02:2a:f7:52:51:6d     *        ens5
10.0.1.144       0x1         0x2         02:b7:1d:03:62:97     *        ens5
[2026-04-11T03:32:29Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-11T03:32:29Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-11T03:32:29Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1890280 Apr 11 03:20 /opt/dpdk-stdlib/target/release/test-client
[2026-04-11T03:32:29Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.253 --port 9000 --bind-ip 10.0.1.99 --count 10 --delay 200
[2026-04-11T03:32:31Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.253:9000
Bind address: 10.0.1.99:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.99:32768 (MAC: 02:c2:21:02:ec:c3)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.253:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-11T03:32:31Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-11T03:32:31Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-11T03:32:31Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-11T03:32:31Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-092aa14db48ec3230 (receiver)
Command ID: f05ec298-df16-4083-a1c6-1c7f1d447f31

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-092aa14db48ec3230 (receiver)
Command ID: 106bec18-6277-4281-bbc3-7fe582283aca

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-092aa14db48ec3230 (receiver)
Command ID: 15155466-363c-4118-8473-93e9b25b5205

=== 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 unbind && bash scripts/integration-tests/configure-eni.sh --action assign-ip --ip 10.0.1.99) ===
Status: InProgress
Instance: i-0386230f57d244f20 (sender)
Command ID: 40ac3580-e943-4b00-822e-777fcd517d5a

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0386230f57d244f20 (sender)
Command ID: 5a5da2ee-436f-4029-9526-921bcbf6f626

=== 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:99:74:57:7e:4d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-02d959ba0ae13111c
    altname device-number-0.0
    inet 10.0.1.12/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2417sec preferred_lft 2417sec
    inet6 fe80::99:74ff:fe57:7e4d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
5: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:2a:f7:52:51:6d brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname eni-041a5128babf360ac
    altname device-number-1.0
    inet 10.0.1.253/24 brd 10.0.1.255 scope global ens6
       valid_lft forever preferred_lft forever
    inet6 fe80::2a:f7ff:fe52:516d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:36:54:09:db:ff brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0dee71b3dacef00c5
    altname device-number-0.0
    inet 10.0.1.212/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2442sec preferred_lft 2442sec
    inet6 fe80::36:54ff:fe09:dbff/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-11T03:21:12Z
hostname: ip-10-0-1-12.ec2.internal
kernel: 6.18.16-18.222.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:99:74:57:7e:4d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-02d959ba0ae13111c
    altname device-number-0.0
    inet 10.0.1.12/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3278sec preferred_lft 3278sec
    inet6 fe80::99:74ff:fe57:7e4d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.167 dev ens5 lladdr 02:c5:02:48:8e:f7 STALE 
10.0.1.1 dev ens5 lladdr 02:c3:ae:12:b2:49 REACHABLE 
10.0.1.144 dev ens5 lladdr 02:b7:1d:03:62:97 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.12 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.12 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.12 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.12 metric 512 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:2a:f7:52:51:6d/ 02:99:74:57:7e:4d/ 

--- ENI: 02:2a:f7:52:51:6d/ ---
  device-number: 1
  local-ipv4s: 10.0.1.253
  subnet-id: subnet-0916f41ccbf2b640d
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:99:74:57:7e:4d/ ---
  device-number: 0
  local-ipv4s: 10.0.1.12
  subnet-id: subnet-0916f41ccbf2b640d
  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:c3:ae:12:b2:49 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.12 ens5
Unicast reply from 10.0.1.1 [02:C3:AE:12:B2:49]  0.536ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:     14336 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 Apr 11 03:20 .
drwxr-xr-x. 14 root root     3100 Apr 11 03:19 ..
crw-------.  1 root root 243,   0 Apr 11 03:20 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 11 03:15 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.053885] printk: legacy console [ttyS0] enabled
[    0.054973] x2apic enabled
[    0.059635] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.059751] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.069353] audit: type=2000 audit(1775877346.346:1): state=initialized audit_enabled=0 res=1
[    0.071341] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.148993] ACPI: Interpreter enabled
[    0.149154] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.168631] pci 0000:00:05.0: enabling Extended Tags
[    0.224084] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.240087] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.243451] IPI shorthand broadcast: enabled
[    2.536854] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.575000] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.647834] VFIO - User Level meta-driver version: 0.3
[    2.996192] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.005026] ena 0000:00:05.0: ENA device version: 0.10
[    3.005821] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.105022] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.116920] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:99:74:57:7e:4d
[    3.142577] ena 0000:00:05.0 ens5: renamed from eth0
[  251.220401] pci 0000:00:06.0: enabling Extended Tags
[  251.224610] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  251.238637] ena 0000:00:06.0: ENA device version: 0.10
[  251.239428] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.340642] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.353366] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2a:f7:52:51:6d
[  251.360806] ena 0000:00:06.0 ens6: renamed from eth0
[  312.846831] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  312.848306] 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-04-11T03:21:05Z
hostname: ip-10-0-1-212.ec2.internal
kernel: 6.18.16-18.222.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:36:54:09:db:ff brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0dee71b3dacef00c5
    altname device-number-0.0
    inet 10.0.1.212/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3288sec preferred_lft 3288sec
    inet6 fe80::36:54ff:fe09:dbff/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:c3:ae:12:b2:49 REACHABLE 
10.0.1.144 dev ens5 lladdr 02:b7:1d:03:62:97 REACHABLE 
10.0.1.167 dev ens5 lladdr 02:c5:02:48:8e:f7 STALE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.212 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.212 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.212 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.212 metric 512 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:36:54:09:db:ff/ 02:c2:21:02:ec:c3/ 

--- ENI: 02:36:54:09:db:ff/ ---
  device-number: 0
  local-ipv4s: 10.0.1.212
  subnet-id: subnet-0916f41ccbf2b640d
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:c2:21:02:ec:c3/ ---
  device-number: 1
  local-ipv4s: 10.0.1.99
  subnet-id: subnet-0916f41ccbf2b640d
  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:c3:ae:12:b2:49 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.212 ens5
Unicast reply from 10.0.1.1 [02:C3:AE:12:B2:49]  0.538ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:     14336 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 Apr 11 03:20 .
drwxr-xr-x. 14 root root     3100 Apr 11 03:20 ..
crw-------.  1 root root 243,   0 Apr 11 03:20 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 11 03:15 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.052735] printk: legacy console [ttyS0] enabled
[    0.053826] x2apic enabled
[    0.058496] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.058609] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.068191] audit: type=2000 audit(1775877347.763:1): state=initialized audit_enabled=0 res=1
[    0.070251] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.137842] ACPI: Interpreter enabled
[    0.137994] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.157391] pci 0000:00:05.0: enabling Extended Tags
[    0.213700] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.227367] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.230883] IPI shorthand broadcast: enabled
[    3.456557] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.491305] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.570899] VFIO - User Level meta-driver version: 0.3
[    3.929703] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.942139] ena 0000:00:05.0: ENA device version: 0.10
[    3.942885] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.044999] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.058975] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:36:54:09:db:ff
[    4.105375] ena 0000:00:05.0 ens5: renamed from eth0
[  271.062251] pci 0000:00:06.0: enabling Extended Tags
[  271.066507] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  271.077497] ena 0000:00:06.0: ENA device version: 0.10
[  271.078289] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  271.177477] ena 0000:00:06.0: ENA Large LLQ is disabled
[  271.189313] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:c2:21:02:ec:c3
[  271.196758] ena 0000:00:06.0 ens6: renamed from eth0
[  304.831819] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  304.833252] 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.068705] pid_max: default: 32768 minimum: 301
[    0.172379] iommu: Default domain type: Translated
[    0.172379] NetLabel:  unlabeled traffic allowed by default
[    0.193205] PCI: CLS 0 bytes, default 64
[    0.258874] nvme nvme0: 2/0/0 default/read/poll queues
[    0.402209] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.402333] systemd[1]: No hostname configured, using default hostname.
[    0.473961] systemd[1]: Queued start job for default target initrd.target.
[    1.937326] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[  351.116065] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4285)
[  631.284221] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4767)

sender-dmesg-crashes.log

[    0.067567] pid_max: default: 32768 minimum: 301
[    0.161274] iommu: Default domain type: Translated
[    0.161299] NetLabel:  unlabeled traffic allowed by default
[    0.191979] PCI: CLS 0 bytes, default 64
[    0.239042] nvme nvme0: 2/0/0 default/read/poll queues
[    0.402309] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.402431] systemd[1]: No hostname configured, using default hostname.
[    0.469898] systemd[1]: Queued start job for default target initrd.target.
[    2.833062] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[ 1047.052830] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5592)
Kernel Console (dmesg)

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

[  251.239428] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.340642] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.353366] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2a:f7:52:51:6d
[  251.360806] ena 0000:00:06.0 ens6: renamed from eth0
[  312.846831] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  312.848306] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  350.900162] vfio-pci 0000:00:06.0: resetting
[  351.114466] vfio-pci 0000:00:06.0: reset done
[  351.116065] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4285)
[  351.117590] vfio-pci 0000:00:06.0: resetting
[  351.334335] vfio-pci 0000:00:06.0: reset done
[  433.010860] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  434.022299] ena 0000:00:06.0: ENA device version: 0.10
[  434.023106] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  434.122286] ena 0000:00:06.0: ENA Large LLQ is disabled
[  434.134131] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2a:f7:52:51:6d
[  434.145384] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  454.096730] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  454.098121] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  631.062642] vfio-pci 0000:00:06.0: resetting
[  631.282622] vfio-pci 0000:00:06.0: reset done
[  631.284221] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4767)
[  631.285715] vfio-pci 0000:00:06.0: resetting
[  631.502478] vfio-pci 0000:00:06.0: reset done
[  708.035758] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  709.048833] ena 0000:00:06.0: ENA device version: 0.10
[  709.049638] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  709.150464] ena 0000:00:06.0: ENA Large LLQ is disabled
[  709.162372] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2a:f7:52:51:6d
[  709.173562] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)

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

[  369.561379] vfio-pci 0000:00:06.0: resetting
[  369.777972] vfio-pci 0000:00:06.0: reset done
[  370.929549] vfio-pci 0000:00:06.0: resetting
[  371.158001] vfio-pci 0000:00:06.0: reset done
[  371.159617] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4318)
[  371.161332] vfio-pci 0000:00:06.0: resetting
[  371.377953] vfio-pci 0000:00:06.0: reset done
[  371.732923] vfio-pci 0000:00:06.0: resetting
[  371.957967] vfio-pci 0000:00:06.0: reset done
[  371.959582] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4374)
[  371.961318] vfio-pci 0000:00:06.0: resetting
[  372.177933] vfio-pci 0000:00:06.0: reset done
[  421.633325] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  422.645949] ena 0000:00:06.0: ENA device version: 0.10
[  422.646738] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  422.745930] ena 0000:00:06.0: ENA Large LLQ is disabled
[  422.757728] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:c2:21:02:ec:c3
[  422.768805] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  727.666246] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  727.667657] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1001.530803] vfio-pci 0000:00:06.0: resetting
[ 1001.741669] vfio-pci 0000:00:06.0: reset done
[ 1001.743266] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:5505)
[ 1001.744998] vfio-pci 0000:00:06.0: resetting
[ 1001.961539] vfio-pci 0000:00:06.0: reset done
[ 1046.830784] vfio-pci 0000:00:06.0: resetting
[ 1047.051229] vfio-pci 0000:00:06.0: reset done
[ 1047.052830] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5592)
[ 1047.054361] vfio-pci 0000:00:06.0: resetting
[ 1047.271084] vfio-pci 0000:00:06.0: reset done

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-024e9d0f9f220d224 (DPDK ENI: 10.0.1.81)
  • Receiver: i-0c881f57d8378f2d6 (DPDK ENI: 10.0.1.70)
  • Both instances SSM-ready.

… to matrix

Threads perf reporting and recv-drop snapshots through the AsyncUdpSocket
trait so async users can opt into the same instrumentation that the sync
dpdk-udp UdpSocket exposes. Adds a new tokio-dpdk perf-test config and an
"App Drops" column in the per-step results table so the gap between TX/RX
can be attributed to either app-level backpressure or AWS network loss.

Trait + backends:
- AsyncUdpSocket: new async fn enable_perf_reporting and recv_drops with
  no-op defaults so the Tokio backend works unchanged.
- DpdkUdpSocket: implements both via spawn_blocking (cannot use blocking_lock
  inside an async runtime).
- New RecvDropsSnapshot type so callers do not need to depend on dpdk-udp.

tokio-echo:
- New --perf-interval flag (default 0/disabled), parallels apps/echo. When
  set, calls socket.enable_perf_reporting on startup.
- perf-test-stack.ts now builds tokio-echo with --features dpdk so the
  binary actually uses the DPDK backend in benchmarks.

Per-step App Drops:
- perf.rs [PERF] log line gains a leading ts_unix=<epoch.fff> field so
  samples can be bucketed into TRex per-step time ranges.
- run_benchmark.py records ts_start_unix/ts_end_unix on every result step.
- run-perf-tests.sh fetches the full set of [PERF] lines per config into
  $LOGS_DIR/dut-<config>-perf.log, then aggregate_results parses them and
  injects app_drops/app_ring_drops/app_buf_drops into each step. The
  markdown summary adds an "App Drops" column.

tokio-dpdk config:
- New start_dut_tokio_dpdk function (DPDK bind, hugepages, --perf-interval 10).
- Wired into the config dispatch, log mapping, dut_stop_all_apps pkill list.
- Default CONFIGS in run-perf-tests.sh and the perf-tests.yml workflow input
  now include tokio-dpdk between rust-dpdk and native-dpdk.
@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 24273703471)

Branch: 33/merge | Commit: f269b22e

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
✅ DPDK UDP socket bound to 10.0.1.70:9000 (MAC: 02:a3:3c:41:92:b7)
echo listening on 10.0.1.70: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
✅ DPDK UDP socket bound to 10.0.1.81:9000 (MAC: 02:0d:b7:50:b2:cd)
echo listening on 10.0.1.81: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.70:9000: 'arp-probe #1'
Test complete
[2026-04-11T03:51:02Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T03:51:02Z] INFO: Test: udp_send_receive
[2026-04-11T03:51:03Z] INFO: UDP send/receive succeeded
[2026-04-11T03:51:03Z] INFO: Test: echo_roundtrip
[2026-04-11T03:51:04Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T03:51:04Z] INFO: Test: payload_integrity
[2026-04-11T03:51:04Z] INFO: Response received, checking payload match...
[2026-04-11T03:51:04Z] INFO: Payload integrity verified (found in response)
[2026-04-11T03:51:04Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-11T03:51:04Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.70:9000 (MAC: 02:a3:3c:41:92:b7)
echo listening on 10.0.1.70: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
✅ DPDK UDP socket bound to 10.0.1.81:9000 (MAC: 02:0d:b7:50:b2:cd)
echo listening on 10.0.1.81:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-11T03:47:14Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.70:9000
Bind address: 10.0.1.81:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.81:32768 (MAC: 02:0d:b7:50:b2:cd)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.70:9000: 'arp-probe #1'
Test complete
[2026-04-11T03:47:15Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T03:47:15Z] INFO: Test: udp_send_receive
[2026-04-11T03:47:17Z] INFO: UDP send/receive succeeded
[2026-04-11T03:47:17Z] INFO: Test: echo_roundtrip
[2026-04-11T03:47:18Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T03:47:18Z] INFO: Test: payload_integrity
[2026-04-11T03:47:19Z] INFO: Response received, checking payload match...
[2026-04-11T03:47:19Z] INFO: Payload integrity verified (found in response)
[2026-04-11T03:47:19Z] INFO: Test: jumbo_diagnostics
[2026-04-11T03:47:19Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-11T03:47:19Z] INFO: Interface MTU:
  9001
  65536
[2026-04-11T03:47:19Z] INFO:   ens5: MTU=9001
[2026-04-11T03:47:19Z] INFO:   lo: MTU=65536
[2026-04-11T03:47:19Z] 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-04-11T03:47:19Z] INFO: DPDK port config (from echo server log):
[2026-04-11T03:47:19Z] INFO:   (no MTU info in echo log)
[2026-04-11T03:47:19Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-11T03:47:19Z] INFO: Test: jumbo_echo_8000
[2026-04-11T03:47:21Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.70:9000
Bind address: 10.0.1.81: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
✅ DPDK UDP socket bound to 10.0.1.81:32768 (MAC: 02:0d:b7:50:b2:cd)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.70:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.70:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.70:9000 (expected 8000, OK)
Test complete
[2026-04-11T03:47:21Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-11T03:47:21Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-11T03:47:21Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-11T03:51:02Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.70: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.70:9000: 'arp-probe #1'
Test complete
[2026-04-11T03:51:02Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T03:51:02Z] INFO: Test: udp_send_receive
[2026-04-11T03:51:03Z] INFO: UDP send/receive succeeded
[2026-04-11T03:51:03Z] INFO: Test: echo_roundtrip
[2026-04-11T03:51:04Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T03:51:04Z] INFO: Test: payload_integrity
[2026-04-11T03:51:04Z] INFO: Response received, checking payload match...
[2026-04-11T03:51:04Z] INFO: Payload integrity verified (found in response)
[2026-04-11T03:51:04Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-11T03:51:04Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-11T03:56:45Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-11T03:56:45Z] INFO: Local IP: 10.0.1.81, Peer IP: 10.0.1.70, Port: 9000
[2026-04-11T03:56:45Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.1         0x1         0x2         02:bb:f5:59:34:33     *        ens5
10.0.1.70        0x1         0x2         02:a3:3c:41:92:b7     *        ens5
10.0.1.216       0x1         0x2         02:e8:62:0d:67:b1     *        ens5
10.0.1.81        0x1         0x2         02:0d:b7:50:b2:cd     *        ens5
[2026-04-11T03:56:45Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-11T03:56:45Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-11T03:56:45Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1890280 Apr 11 03:45 /opt/dpdk-stdlib/target/release/test-client
[2026-04-11T03:56:45Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.70 --port 9000 --bind-ip 10.0.1.81 --count 10 --delay 200
[2026-04-11T03:56:47Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.70:9000
Bind address: 10.0.1.81:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.81:32768 (MAC: 02:0d:b7:50:b2:cd)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-11T03:56:47Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-11T03:56:47Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-11T03:56:47Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-11T03:56:47Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c881f57d8378f2d6 (receiver)
Command ID: dd4568f5-bcb0-4460-bfab-d0e9f0d8bc10

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c881f57d8378f2d6 (receiver)
Command ID: 7209643d-ba99-4fdf-b680-e1b844d859d4

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c881f57d8378f2d6 (receiver)
Command ID: c72d253e-db96-4a69-9361-8e22964df257

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-024e9d0f9f220d224 (sender)
Command ID: 2fd6cef6-db90-4b4a-8453-a060aa0ef2bf

=== 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:67:53:63:d6:0d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0a0f243ba94eecb1c
    altname device-number-0.0
    inet 10.0.1.186/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2541sec preferred_lft 2541sec
    inet6 fe80::67:53ff:fe63:d60d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
5: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:a3:3c:41:92:b7 brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname eni-08373efe0809fc8cd
    altname device-number-1.0
    inet 10.0.1.70/24 brd 10.0.1.255 scope global ens6
       valid_lft forever preferred_lft forever
    inet6 fe80::a3:3cff:fe41:92b7/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:ef:b2:d1:97:bb brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0aaa6ad86308b8ab1
    altname device-number-0.0
    inet 10.0.1.238/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2563sec preferred_lft 2563sec
    inet6 fe80::ef:b2ff:fed1:97bb/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-11T03:46:34Z
hostname: ip-10-0-1-186.ec2.internal
kernel: 6.18.16-18.222.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:67:53:63:d6:0d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0a0f243ba94eecb1c
    altname device-number-0.0
    inet 10.0.1.186/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3342sec preferred_lft 3342sec
    inet6 fe80::67:53ff:fe63:d60d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:bb:f5:59:34:33 REACHABLE 
10.0.1.45 dev ens5 lladdr 02:69:fb:eb:45:27 STALE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.186 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.186 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.186 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.186 metric 512 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:67:53:63:d6:0d/ 02:a3:3c:41:92:b7/ 

--- ENI: 02:67:53:63:d6:0d/ ---
  device-number: 0
  local-ipv4s: 10.0.1.186
  subnet-id: subnet-0a3f7004d95f169d0
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:a3:3c:41:92:b7/ ---
  device-number: 1
  local-ipv4s: 10.0.1.70
  subnet-id: subnet-0a3f7004d95f169d0
  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:bb:f5:59:34:33 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.186 ens5
Unicast reply from 10.0.1.1 [02:BB:F5:59:34:33]  0.541ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:     14336 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 Apr 11 03:46 .
drwxr-xr-x. 14 root root     3100 Apr 11 03:45 ..
crw-------.  1 root root 243,   0 Apr 11 03:46 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 11 03:42 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.053794] printk: legacy console [ttyS0] enabled
[    0.054927] x2apic enabled
[    0.059873] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.060001] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.069425] audit: type=2000 audit(1775878931.347:1): state=initialized audit_enabled=0 res=1
[    0.071450] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.134450] ACPI: Interpreter enabled
[    0.134450] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.148937] pci 0000:00:05.0: enabling Extended Tags
[    0.213795] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.219376] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.225536] IPI shorthand broadcast: enabled
[    2.427109] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.462642] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.544360] VFIO - User Level meta-driver version: 0.3
[    2.940222] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    2.963911] ena 0000:00:05.0: ENA device version: 0.10
[    2.964674] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.065154] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.077677] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:67:53:63:d6:0d
[    3.100964] ena 0000:00:05.0 ens5: renamed from eth0
[  210.098438] pci 0000:00:06.0: enabling Extended Tags
[  210.102590] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.114986] ena 0000:00:06.0: ENA device version: 0.10
[  210.115792] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.215092] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.227171] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:3c:41:92:b7
[  210.234733] ena 0000:00:06.0 ens6: renamed from eth0
[  248.499237] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  248.500734] 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-04-11T03:46:25Z
hostname: ip-10-0-1-238.ec2.internal
kernel: 6.18.16-18.222.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:ef:b2:d1:97:bb brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0aaa6ad86308b8ab1
    altname device-number-0.0
    inet 10.0.1.238/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3349sec preferred_lft 3349sec
    inet6 fe80::ef:b2ff:fed1:97bb/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.45 dev ens5 lladdr 02:69:fb:eb:45:27 STALE 
10.0.1.235 dev ens5 lladdr 02:e6:26:9b:51:8b STALE 
10.0.1.1 dev ens5 lladdr 02:bb:f5:59:34:33 REACHABLE 
10.0.1.216 dev ens5 lladdr 02:e8:62:0d:67:b1 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.238 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.238 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.238 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.238 metric 512 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:0d:b7:50:b2:cd/ 02:ef:b2:d1:97:bb/ 

--- ENI: 02:0d:b7:50:b2:cd/ ---
  device-number: 1
  local-ipv4s: 10.0.1.81
  subnet-id: subnet-0a3f7004d95f169d0
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:ef:b2:d1:97:bb/ ---
  device-number: 0
  local-ipv4s: 10.0.1.238
  subnet-id: subnet-0a3f7004d95f169d0
  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:bb:f5:59:34:33 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.238 ens5
Unicast reply from 10.0.1.1 [02:BB:F5:59:34:33]  0.531ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:     14336 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 Apr 11 03:46 .
drwxr-xr-x. 14 root root     3100 Apr 11 03:45 ..
crw-------.  1 root root 243,   0 Apr 11 03:46 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 11 03:42 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.051345] printk: legacy console [ttyS0] enabled
[    0.052442] x2apic enabled
[    0.057094] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.057205] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.066791] audit: type=2000 audit(1775878929.981:1): state=initialized audit_enabled=0 res=1
[    0.068842] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.130351] ACPI: Interpreter enabled
[    0.130351] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.144650] pci 0000:00:05.0: enabling Extended Tags
[    0.243404] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.257363] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.260366] IPI shorthand broadcast: enabled
[    2.537532] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.580597] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.629769] VFIO - User Level meta-driver version: 0.3
[    3.044586] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.056508] ena 0000:00:05.0: ENA device version: 0.10
[    3.057273] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.163094] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.176971] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:ef:b2:d1:97:bb
[    3.199159] ena 0000:00:05.0 ens5: renamed from eth0
[  190.958082] pci 0000:00:06.0: enabling Extended Tags
[  190.962296] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.974039] ena 0000:00:06.0: ENA device version: 0.10
[  190.974842] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  191.074021] ena 0000:00:06.0: ENA Large LLQ is disabled
[  191.085911] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:0d:b7:50:b2:cd
[  191.093248] ena 0000:00:06.0 ens6: renamed from eth0
[  242.777346] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  242.778832] 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.068765] pid_max: default: 32768 minimum: 301
[    0.153005] iommu: Default domain type: Translated
[    0.153032] NetLabel:  unlabeled traffic allowed by default
[    0.191924] PCI: CLS 0 bytes, default 64
[    0.242744] nvme nvme0: 2/0/0 default/read/poll queues
[    0.412329] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.412455] systemd[1]: No hostname configured, using default hostname.
[    0.470916] systemd[1]: Queued start job for default target initrd.target.
[    1.871932] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[  287.958206] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4142)
[  515.288028] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4625)

sender-dmesg-crashes.log

[    0.066178] pid_max: default: 32768 minimum: 301
[    0.148578] iommu: Default domain type: Translated
[    0.148606] NetLabel:  unlabeled traffic allowed by default
[    0.187289] PCI: CLS 0 bytes, default 64
[    0.274867] nvme nvme0: 2/0/0 default/read/poll queues
[    0.401824] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.401946] systemd[1]: No hostname configured, using default hostname.
[    0.465993] systemd[1]: Queued start job for default target initrd.target.
[    2.055088] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[  922.203310] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5481)
Kernel Console (dmesg)

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

[  210.115792] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.215092] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.227171] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:3c:41:92:b7
[  210.234733] ena 0000:00:06.0 ens6: renamed from eth0
[  248.499237] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  248.500734] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  287.746181] vfio-pci 0000:00:06.0: resetting
[  287.956618] vfio-pci 0000:00:06.0: reset done
[  287.958206] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4142)
[  287.959788] vfio-pci 0000:00:06.0: resetting
[  288.176500] vfio-pci 0000:00:06.0: reset done
[  370.961698] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  371.974806] ena 0000:00:06.0: ENA device version: 0.10
[  371.975553] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  372.074791] ena 0000:00:06.0: ENA Large LLQ is disabled
[  372.086949] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:3c:41:92:b7
[  372.095593] ena 0000:00:06.0 ens6: renamed from eth0
[  392.129028] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  392.130517] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  515.064787] vfio-pci 0000:00:06.0: resetting
[  515.286401] vfio-pci 0000:00:06.0: reset done
[  515.288028] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4625)
[  515.289581] vfio-pci 0000:00:06.0: resetting
[  515.506301] vfio-pci 0000:00:06.0: reset done
[  592.693659] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  593.704619] ena 0000:00:06.0: ENA device version: 0.10
[  593.705435] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  593.804591] ena 0000:00:06.0: ENA Large LLQ is disabled
[  593.816764] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:3c:41:92:b7
[  593.825719] ena 0000:00:06.0 ens6: renamed from eth0

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

[  307.628269] vfio-pci 0000:00:06.0: resetting
[  307.844866] vfio-pci 0000:00:06.0: reset done
[  308.994621] vfio-pci 0000:00:06.0: resetting
[  309.214915] vfio-pci 0000:00:06.0: reset done
[  309.216527] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4350)
[  309.218234] vfio-pci 0000:00:06.0: resetting
[  309.434872] vfio-pci 0000:00:06.0: reset done
[  309.787877] vfio-pci 0000:00:06.0: resetting
[  310.004890] vfio-pci 0000:00:06.0: reset done
[  310.006488] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4406)
[  310.008167] vfio-pci 0000:00:06.0: resetting
[  310.224862] vfio-pci 0000:00:06.0: reset done
[  362.355774] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  363.369087] ena 0000:00:06.0: ENA device version: 0.10
[  363.369887] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  363.471109] ena 0000:00:06.0: ENA Large LLQ is disabled
[  363.483777] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:0d:b7:50:b2:cd
[  363.494235] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  615.235087] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  615.236467] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  875.367168] vfio-pci 0000:00:06.0: resetting
[  875.581957] vfio-pci 0000:00:06.0: reset done
[  875.583576] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:5439)
[  875.585259] vfio-pci 0000:00:06.0: resetting
[  875.801808] vfio-pci 0000:00:06.0: reset done
[  921.987203] vfio-pci 0000:00:06.0: resetting
[  922.201695] vfio-pci 0000:00:06.0: reset done
[  922.203310] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5481)
[  922.204808] vfio-pci 0000:00:06.0: resetting
[  922.421553] vfio-pci 0000:00:06.0: reset done

@github-actions

Copy link
Copy Markdown

[Perf] Stage: TRex Config OK

  • TX: 0000:00:06.0 MAC: 02:82:ec:6b:c4:29
  • RX: 0000:00:07.0 MAC: 02:84:9b:ab:11:6d
  • Gateway MAC: 02:f7:18:7f:62:4b
    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-0829bf6d2430aee1f 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:82:ec:6b:c4:29
  Port 1: 02:84:9b:ab:11:6d
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:82:ec:6b:c4:29

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,000 pps, Drop: 0.2857%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 483,234 pps, Drop: 30.9665%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 232.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,505 pps, Drop: 0.427%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 391,953 pps, Drop: 44.0068%, Lat avg: 345.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,101 pps, Drop: 0.5426%, Lat avg: 256.0 us
  Target: 700,000 pps ... TX: 476,271 pps, RX: 442,095 pps, Drop: 7.1757%, 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: 30,240 pps, Drop: 56.8004%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,305 pps, RX: 77,737 pps, Drop: 0.7245%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,281 pps, RX: 77,921 pps, Drop: 0.4596%, Lat avg: 14235.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:82:ec:6b:c4:29
  Port 1: 02:84:9b:ab:11:6d
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:82:ec:6b:c4:29

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4285%, Lat avg: 197.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 185.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,000 pps, Drop: 0.2857%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 690,851 pps, Drop: 1.307%, Lat avg: 373.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4285%, Lat avg: 208.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 231.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,000 pps, Drop: 0.2857%, Lat avg: 306.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 679,855 pps, Drop: 2.8778%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,000 pps, Drop: 0.2857%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,320 pps, RX: 474,346 pps, Drop: 0.4145%, Lat avg: 2839.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,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,326 pps, RX: 77,712 pps, Drop: 0.7841%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,300 pps, RX: 77,862 pps, Drop: 0.5603%, Lat avg: 0.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:82:ec:6b:c4:29
  Port 1: 02:84:9b:ab:11:6d
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:82:ec:6b:c4:29

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 37,894 pps, Drop: 45.8653%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 38,423 pps, Drop: 72.5548%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 38,564 pps, Drop: 88.9819%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 38,103 pps, Drop: 94.5568%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 37,476 pps, Drop: 46.463%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 37,257 pps, Drop: 73.388%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 37,214 pps, Drop: 89.3674%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 37,198 pps, Drop: 94.686%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 36,037 pps, Drop: 48.5193%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 36,184 pps, Drop: 74.1543%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 36,145 pps, Drop: 89.6728%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,263 pps, RX: 38,403 pps, Drop: 91.9366%, 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: 28,532 pps, Drop: 59.2401%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,286 pps, RX: 30,392 pps, Drop: 61.1788%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,327 pps, RX: 30,464 pps, Drop: 61.1067%, 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:82:ec:6b:c4:29
  Port 1: 02:84:9b:ab:11:6d
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:82:ec:6b:c4:29

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 121.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 139.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 147.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 691,727 pps, Drop: 1.1819%, Lat avg: 424.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 122.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 143.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 164.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 690,215 pps, Drop: 1.3979%, Lat avg: 350.0 us

--- Packet size: 1400B ---
  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: 142.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 155.0 us
  Target: 700,000 pps ... TX: 476,698 pps, RX: 467,748 pps, Drop: 1.8775%, Lat avg: 3099.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: 70,000 pps, Drop: 0.0%, Lat avg: 139.0 us
  Target: 140,000 pps ... TX: 78,323 pps, RX: 78,317 pps, Drop: 0.0079%, Lat avg: 14453.0 us
  Target: 350,000 pps ... TX: 78,299 pps, RX: 77,859 pps, Drop: 0.5623%, Lat avg: 14495.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: 113355552      RX-dropped: 0             RX-total: 113355552
  RX-error: 403450
  RX-nombufs: 0             
  TX-packets: 113354970      TX-dropped: 582           TX-total: 113355552
  ----------------------------------------------------------------------------

  +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
  RX-packets: 113355552      RX-dropped: 0             RX-total: 113355552
  TX-packets: 113354970      TX-dropped: 582           TX-total: 113355552
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

[17:33:44] INFO Generating markdown summary...

Performance Test Results — unknown

Commit: bcd83caf
Timestamp: 2026-04-11T17:33:44.869565+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% — — — — 121.0 244.0 35.8 35.8
native-dpdk 140,000 140,000 140,000 0.00% — — — — 139.0 359.0 71.7 71.7
native-dpdk 350,000 350,000 350,000 0.00% — — — — 147.0 803.0 179.2 179.2
native-dpdk 700,000 700,000 691,727 1.18% — — — — 424.0 2075.0 358.4 354.2
rust-dpdk 70,000 70,000 69,000 1.43% 0 31,554 0 0 197.0 0.0 35.8 35.3
rust-dpdk 140,000 140,000 139,000 0.71% 0 41,941 0 0 185.0 0.0 71.7 71.2
rust-dpdk 350,000 350,000 349,000 0.29% 0 33,483 0 0 0.0 0.0 179.2 178.7
rust-dpdk 700,000 700,000 690,851 1.31% 0 41,866 0 0 373.0 0.0 358.4 353.7
tokio-dpdk 70,000 70,000 37,894 45.87% 0 9,929 0 0 0.0 0.0 35.8 21.2
tokio-dpdk 140,000 140,000 38,423 72.55% 0 7,125 0 0 0.0 0.0 71.7 21.5
tokio-dpdk 350,000 350,000 38,564 88.98% 0 2,685 0 0 0.0 0.0 179.2 21.6
tokio-dpdk 700,000 700,000 38,103 94.56% 0 4,657 0 0 0.0 0.0 358.4 21.3
plain-rust 70,000 70,000 69,000 1.43% — — — — 0.0 0.0 35.8 35.3
plain-rust 140,000 140,000 139,000 0.71% — — — — 0.0 0.0 71.7 71.2
plain-rust 350,000 350,000 349,000 0.29% — — — — 0.0 0.0 179.2 178.7
plain-rust 700,000 700,000 483,234 30.97% — — — — 0.0 0.0 358.4 247.4

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% — — — — 122.0 304.0 286.7 286.7
native-dpdk 140,000 140,000 140,000 0.00% — — — — 143.0 344.0 573.4 573.4
native-dpdk 350,000 350,000 350,000 0.00% — — — — 164.0 602.0 1433.6 1433.6
native-dpdk 700,000 700,000 690,215 1.40% — — — — 350.0 2791.0 2867.2 2827.1
rust-dpdk 70,000 70,000 69,000 1.43% 0 35,415 0 0 208.0 0.0 286.7 282.6
rust-dpdk 140,000 140,000 139,000 0.71% 0 31,939 0 0 231.0 0.0 573.4 569.3
rust-dpdk 350,000 350,000 349,000 0.29% 0 41,884 0 0 306.0 0.0 1433.6 1429.5
rust-dpdk 700,000 700,000 679,855 2.88% 0 33,218 0 0 0.0 0.0 2867.2 2784.7
tokio-dpdk 70,000 70,000 37,476 46.46% 0 10,424 0 0 0.0 0.0 286.7 155.3
tokio-dpdk 140,000 140,000 37,257 73.39% 0 5,193 0 0 0.0 0.0 573.4 154.4
tokio-dpdk 350,000 350,000 37,214 89.37% 0 3,574 0 0 0.0 0.0 1433.6 154.2
tokio-dpdk 700,000 700,000 37,198 94.69% 0 2,422 0 0 0.0 0.0 2867.2 154.2
plain-rust 70,000 70,000 69,000 1.43% — — — — 0.0 0.0 286.7 282.6
plain-rust 140,000 140,000 139,000 0.71% — — — — 232.0 0.0 573.4 569.3
plain-rust 350,000 350,000 348,505 0.43% — — — — 0.0 0.0 1433.6 1427.5
plain-rust 700,000 700,000 391,953 44.01% — — — — 345.0 0.0 2867.2 1605.4

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 70,000 0.00% — — — — 120.0 485.0 784.0 784.0
native-dpdk 140,000 140,000 140,000 0.00% — — — — 142.0 288.0 1568.0 1568.0
native-dpdk 350,000 350,000 350,000 0.00% — — — — 155.0 929.0 3920.0 3920.0
native-dpdk 700,000 476,698 467,748 1.88% — — — — 3099.0 5651.0 5339.0 5238.8
rust-dpdk 70,000 70,000 69,000 1.43% 0 41,923 0 0 0.0 0.0 784.0 772.8
rust-dpdk 140,000 140,000 139,000 0.71% 0 35,229 0 0 0.0 0.0 1568.0 1556.8
rust-dpdk 350,000 350,000 349,000 0.29% 0 31,491 0 0 0.0 0.0 3920.0 3908.8
rust-dpdk 700,000 476,320 474,346 0.41% 0 32,185 0 0 2839.0 0.0 5334.8 5312.7
tokio-dpdk 70,000 70,000 36,037 48.52% 0 10,786 0 0 0.0 0.0 784.0 405.3
tokio-dpdk 140,000 140,000 36,184 74.15% 0 5,039 0 0 0.0 0.0 1568.0 407.0
tokio-dpdk 350,000 350,000 36,145 89.67% 0 2,589 0 0 0.0 0.0 3920.0 406.6
tokio-dpdk 700,000 476,263 38,403 91.94% 0 3,610 0 0 0.0 0.0 5334.1 432.0
plain-rust 70,000 70,000 69,000 1.43% — — — — 0.0 0.0 784.0 772.8
plain-rust 140,000 140,000 139,000 0.71% — — — — 0.0 0.0 1568.0 1556.8
plain-rust 350,000 350,000 348,101 0.54% — — — — 256.0 0.0 3920.0 3898.7
plain-rust 700,000 476,271 442,095 7.18% — — — — 0.0 0.0 5334.2 4951.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 70,000 0.00% — — — — 139.0 319.0 4760.0 4760.0
native-dpdk 140,000 78,323 78,317 0.01% — — — — 14453.0 14788.0 5326.0 5325.6
native-dpdk 350,000 78,299 77,859 0.56% — — — — 14495.0 15521.0 5324.4 5294.4
rust-dpdk 70,000 70,000 69,000 1.43% 0 32,026 0 0 0.0 0.0 4760.0 4692.0
rust-dpdk 140,000 78,326 77,712 0.78% 0 21,397 0 0 0.0 0.0 5326.1 5284.4
rust-dpdk 350,000 78,300 77,862 0.56% 0 6,673 0 0 0.0 0.0 5324.4 5294.6
tokio-dpdk 70,000 70,000 28,532 59.24% 0 7,862 0 0 0.0 0.0 4760.0 1941.5
tokio-dpdk 140,000 78,286 30,392 61.18% 0 7,914 0 0 0.0 0.0 5323.4 2068.1
tokio-dpdk 350,000 78,327 30,464 61.11% 0 2,696 0 0 0.0 0.0 5326.2 2073.0
plain-rust 70,000 70,000 30,240 56.80% — — — — 0.0 0.0 4760.0 2056.3
plain-rust 140,000 78,305 77,737 0.72% — — — — 0.0 0.0 5324.7 5286.1
plain-rust 350,000 78,281 77,921 0.46% — — — — 14235.0 0.0 5323.1 5298.6

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 OK 0 / 0 / 0 403,492 / 403,492 / 0 0 / 0 / 0
tokio-dpdk OK 0 / 0 / 0 71,313 / 71,313 / 0 0 / 0 / 0
plain-rust no instrumentation — — —

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

Captures the Run #11 results after bcd83ca fixed the [NIC-FINAL] emission
path. This is the run where the NIC Drops Instrumentation Self-Check
table shows OK for both rust-dpdk and tokio-dpdk with zero drift, and
where rust-dpdk's 403,492 ierrors cross-validates against upstream
testpmd's 403,450 (delta 42 packets, 0.000037%).

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-004e0addca5bda936 (DPDK ENI: 10.0.1.10)
  • Receiver: i-0a77d638506b5028d (DPDK ENI: 10.0.1.103)
  • 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 24288806390)

Branch: 33/merge | Commit: 3e283eeb

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
✅ DPDK UDP socket bound to 10.0.1.103:9000 (MAC: 02:5d:a3:99:da:85)
echo listening on 10.0.1.103: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
✅ DPDK UDP socket bound to 10.0.1.10:9000 (MAC: 02:9c:5f:bf:41:51)
echo listening on 10.0.1.10: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.103:9000: 'arp-probe #1'
Test complete
[2026-04-11T18:40:04Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T18:40:04Z] INFO: Test: udp_send_receive
[2026-04-11T18:40:05Z] INFO: UDP send/receive succeeded
[2026-04-11T18:40:05Z] INFO: Test: echo_roundtrip
[2026-04-11T18:40:06Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T18:40:06Z] INFO: Test: payload_integrity
[2026-04-11T18:40:06Z] INFO: Response received, checking payload match...
[2026-04-11T18:40:06Z] INFO: Payload integrity verified (found in response)
[2026-04-11T18:40:06Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-11T18:40:06Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.103:9000 (MAC: 02:5d:a3:99:da:85)
echo listening on 10.0.1.103: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
✅ DPDK UDP socket bound to 10.0.1.10:9000 (MAC: 02:9c:5f:bf:41:51)
echo listening on 10.0.1.10:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-11T18:37:14Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.103:9000
Bind address: 10.0.1.10:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.10:32768 (MAC: 02:9c:5f:bf:41:51)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.103:9000: 'arp-probe #1'
Test complete
[2026-04-11T18:37:15Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T18:37:16Z] INFO: Test: udp_send_receive
[2026-04-11T18:37:17Z] INFO: UDP send/receive succeeded
[2026-04-11T18:37:17Z] INFO: Test: echo_roundtrip
[2026-04-11T18:37:19Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T18:37:19Z] INFO: Test: payload_integrity
[2026-04-11T18:37:20Z] INFO: Response received, checking payload match...
[2026-04-11T18:37:20Z] INFO: Payload integrity verified (found in response)
[2026-04-11T18:37:20Z] INFO: Test: jumbo_diagnostics
[2026-04-11T18:37:20Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-11T18:37:20Z] INFO: Interface MTU:
  9001
  65536
[2026-04-11T18:37:20Z] INFO:   ens5: MTU=9001
[2026-04-11T18:37:20Z] INFO:   lo: MTU=65536
[2026-04-11T18:37:20Z] 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-04-11T18:37:20Z] INFO: DPDK port config (from echo server log):
[2026-04-11T18:37:20Z] INFO:   (no MTU info in echo log)
[2026-04-11T18:37:20Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-11T18:37:20Z] INFO: Test: jumbo_echo_8000
[2026-04-11T18:37:21Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.103:9000
Bind address: 10.0.1.10: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
✅ DPDK UDP socket bound to 10.0.1.10:32768 (MAC: 02:9c:5f:bf:41:51)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.103:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.103:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.103:9000 (expected 8000, OK)
Test complete
[2026-04-11T18:37:21Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-11T18:37:21Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-11T18:37:21Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-11T18:40:04Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.103: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.103:9000: 'arp-probe #1'
Test complete
[2026-04-11T18:40:04Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-11T18:40:04Z] INFO: Test: udp_send_receive
[2026-04-11T18:40:05Z] INFO: UDP send/receive succeeded
[2026-04-11T18:40:05Z] INFO: Test: echo_roundtrip
[2026-04-11T18:40:06Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-11T18:40:06Z] INFO: Test: payload_integrity
[2026-04-11T18:40:06Z] INFO: Response received, checking payload match...
[2026-04-11T18:40:06Z] INFO: Payload integrity verified (found in response)
[2026-04-11T18:40:06Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-11T18:40:06Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-11T18:46:01Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-11T18:46:01Z] INFO: Local IP: 10.0.1.10, Peer IP: 10.0.1.103, Port: 9000
[2026-04-11T18:46:01Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.88        0x1         0x2         02:c4:1b:e1:e6:17     *        ens5
10.0.1.1         0x1         0x2         02:c9:c1:9d:df:63     *        ens5
10.0.1.189       0x1         0x2         02:20:35:7d:e4:5f     *        ens5
10.0.1.10        0x1         0x2         02:9c:5f:bf:41:51     *        ens5
10.0.1.103       0x1         0x2         02:5d:a3:99:da:85     *        ens5
[2026-04-11T18:46:01Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-11T18:46:01Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-11T18:46:01Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1894528 Apr 11 18:35 /opt/dpdk-stdlib/target/release/test-client
[2026-04-11T18:46:01Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.103 --port 9000 --bind-ip 10.0.1.10 --count 10 --delay 200
[2026-04-11T18:46:04Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.103:9000
Bind address: 10.0.1.10:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.10:32768 (MAC: 02:9c:5f:bf:41:51)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.103:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-11T18:46:04Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-11T18:46:04Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-11T18:46:04Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-11T18:46:04Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0a77d638506b5028d (receiver)
Command ID: b3f8e79e-4793-4b2c-a351-43b018098615

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0a77d638506b5028d (receiver)
Command ID: da2380e0-b034-41df-ae24-fbb919a8e947

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0a77d638506b5028d (receiver)
Command ID: a395d82f-ed1d-41c0-81d0-8c641bb89a31

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-004e0addca5bda936 (sender)
Command ID: e2b46a91-368d-42e8-a3c6-0dcf4d56d376

=== 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:77:25:2e:01:7f brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0b6d6b38518cf0c32
    altname device-number-0.0
    inet 10.0.1.133/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2617sec preferred_lft 2617sec
    inet6 fe80::77:25ff:fe2e:17f/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
5: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:5d:a3:99:da:85 brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname eni-0f2b2677ce11ecd5f
    altname device-number-1.0
    inet 10.0.1.103/24 brd 10.0.1.255 scope global ens6
       valid_lft forever preferred_lft forever
    inet6 fe80::5d:a3ff:fe99:da85/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:8a:17:bb:50:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0c50d2001c5ca5453
    altname device-number-0.0
    inet 10.0.1.85/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2639sec preferred_lft 2639sec
    inet6 fe80::8a:17ff:febb:5003/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-11T18:36:35Z
hostname: ip-10-0-1-133.ec2.internal
kernel: 6.18.16-18.222.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:77:25:2e:01:7f brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0b6d6b38518cf0c32
    altname device-number-0.0
    inet 10.0.1.133/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3366sec preferred_lft 3366sec
    inet6 fe80::77:25ff:fe2e:17f/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.189 dev ens5 lladdr 02:20:35:7d:e4:5f REACHABLE 
10.0.1.1 dev ens5 lladdr 02:c9:c1:9d:df:63 REACHABLE 
10.0.1.88 dev ens5 lladdr 02:c4:1b:e1:e6:17 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:5d:a3:99:da:85/ 02:77:25:2e:01:7f/ 

--- ENI: 02:5d:a3:99:da:85/ ---
  device-number: 1
  local-ipv4s: 10.0.1.103
  subnet-id: subnet-04098672afd4fb0f8
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:77:25:2e:01:7f/ ---
  device-number: 0
  local-ipv4s: 10.0.1.133
  subnet-id: subnet-04098672afd4fb0f8
  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:c9:c1:9d:df:63 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.133 ens5
Unicast reply from 10.0.1.1 [02:C9:C1:9D:DF:63]  0.560ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:     14336 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 Apr 11 18:36 .
drwxr-xr-x. 14 root root     3100 Apr 11 18:35 ..
crw-------.  1 root root 243,   0 Apr 11 18:36 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 11 18:32 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.052560] printk: legacy console [ttyS0] enabled
[    0.053683] x2apic enabled
[    0.058555] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.058685] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.068068] audit: type=2000 audit(1775932357.171:1): state=initialized audit_enabled=0 res=1
[    0.070103] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.133132] ACPI: Interpreter enabled
[    0.133132] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.147616] pci 0000:00:05.0: enabling Extended Tags
[    0.223922] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.237891] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.245535] IPI shorthand broadcast: enabled
[    2.356333] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.398509] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.467325] VFIO - User Level meta-driver version: 0.3
[    2.875227] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    2.886923] ena 0000:00:05.0: ENA device version: 0.10
[    2.887683] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    2.985055] ena 0000:00:05.0: ENA Large LLQ is disabled
[    2.997598] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:77:25:2e:01:7f
[    3.021399] ena 0000:00:05.0 ens5: renamed from eth0
[  170.354495] pci 0000:00:06.0: enabling Extended Tags
[  170.358550] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  170.371993] ena 0000:00:06.0: ENA device version: 0.10
[  170.372785] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  170.473383] ena 0000:00:06.0: ENA Large LLQ is disabled
[  170.485900] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:5d:a3:99:da:85
[  170.492892] ena 0000:00:06.0 ens6: renamed from eth0
[  225.038424] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  225.039884] 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-04-11T18:36:27Z
hostname: ip-10-0-1-85.ec2.internal
kernel: 6.18.16-18.222.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:8a:17:bb:50:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0c50d2001c5ca5453
    altname device-number-0.0
    inet 10.0.1.85/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3372sec preferred_lft 3372sec
    inet6 fe80::8a:17ff:febb:5003/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.88 dev ens5 lladdr 02:c4:1b:e1:e6:17 REACHABLE 
10.0.1.1 dev ens5 lladdr 02:c9:c1:9d:df:63 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.85 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.85 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.85 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.85 metric 512 

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:8a:17:bb:50:03/ 02:9c:5f:bf:41:51/ 

--- ENI: 02:8a:17:bb:50:03/ ---
  device-number: 0
  local-ipv4s: 10.0.1.85
  subnet-id: subnet-04098672afd4fb0f8
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:9c:5f:bf:41:51/ ---
  device-number: 1
  local-ipv4s: 10.0.1.10
  subnet-id: subnet-04098672afd4fb0f8
  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:c9:c1:9d:df:63 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.85 ens5
Unicast reply from 10.0.1.1 [02:C9:C1:9D:DF:63]  0.538ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

=== HUGEPAGE STATUS ===
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:     14336 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 Apr 11 18:36 .
drwxr-xr-x. 14 root root     3100 Apr 11 18:35 ..
crw-------.  1 root root 243,   0 Apr 11 18:36 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 11 18:32 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.053609] printk: legacy console [ttyS0] enabled
[    0.054731] x2apic enabled
[    0.059456] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.059570] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.069141] audit: type=2000 audit(1775932355.557:1): state=initialized audit_enabled=0 res=1
[    0.071176] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.133902] ACPI: Interpreter enabled
[    0.133902] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.148325] pci 0000:00:05.0: enabling Extended Tags
[    0.213784] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.227781] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.230819] IPI shorthand broadcast: enabled
[    2.407687] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.451289] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.504367] VFIO - User Level meta-driver version: 0.3
[    2.895956] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    2.910965] ena 0000:00:05.0: ENA device version: 0.10
[    2.911731] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.015068] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.027358] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:8a:17:bb:50:03
[    3.051602] ena 0000:00:05.0 ens5: renamed from eth0
[  190.619472] pci 0000:00:06.0: enabling Extended Tags
[  190.623599] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.634055] ena 0000:00:06.0: ENA device version: 0.10
[  190.634848] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.734029] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.746194] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:9c:5f:bf:41:51
[  190.753933] ena 0000:00:06.0 ens6: renamed from eth0
[  219.789324] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  219.790794] 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.067448] pid_max: default: 32768 minimum: 301
[    0.151609] iommu: Default domain type: Translated
[    0.151634] NetLabel:  unlabeled traffic allowed by default
[    0.189867] PCI: CLS 0 bytes, default 64
[    0.320461] nvme nvme0: 2/0/0 default/read/poll queues
[    0.436058] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.436180] systemd[1]: No hostname configured, using default hostname.
[    0.489716] systemd[1]: Queued start job for default target initrd.target.
[    1.775172] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[  263.475918] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4161)
[  431.284152] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4544)

sender-dmesg-crashes.log

[    0.068514] pid_max: default: 32768 minimum: 301
[    0.152283] iommu: Default domain type: Translated
[    0.152310] NetLabel:  unlabeled traffic allowed by default
[    0.191220] PCI: CLS 0 bytes, default 64
[    0.256512] nvme nvme0: 2/0/0 default/read/poll queues
[    0.391778] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    0.391899] systemd[1]: No hostname configured, using default hostname.
[    0.460628] systemd[1]: Queued start job for default target initrd.target.
[    1.892864] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[  851.433413] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5316)
Kernel Console (dmesg)

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

[  170.372785] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  170.473383] ena 0000:00:06.0: ENA Large LLQ is disabled
[  170.485900] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:5d:a3:99:da:85
[  170.492892] ena 0000:00:06.0 ens6: renamed from eth0
[  225.038424] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  225.039884] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  263.252303] vfio-pci 0000:00:06.0: resetting
[  263.474315] vfio-pci 0000:00:06.0: reset done
[  263.475918] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4161)
[  263.477469] vfio-pci 0000:00:06.0: resetting
[  263.694173] vfio-pci 0000:00:06.0: reset done
[  343.352979] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  344.361617] ena 0000:00:06.0: ENA device version: 0.10
[  344.362412] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  344.461595] ena 0000:00:06.0: ENA Large LLQ is disabled
[  344.474063] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:5d:a3:99:da:85
[  344.484519] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  364.315001] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  364.316405] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  431.062970] vfio-pci 0000:00:06.0: resetting
[  431.282602] vfio-pci 0000:00:06.0: reset done
[  431.284152] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4544)
[  431.285608] vfio-pci 0000:00:06.0: resetting
[  431.502468] vfio-pci 0000:00:06.0: reset done
[  506.825843] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  507.838923] ena 0000:00:06.0: ENA device version: 0.10
[  507.839714] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  507.939886] ena 0000:00:06.0: ENA Large LLQ is disabled
[  507.952430] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:5d:a3:99:da:85
[  507.963919] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)

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

[  282.538530] vfio-pci 0000:00:06.0: resetting
[  282.754988] vfio-pci 0000:00:06.0: reset done
[  283.915152] vfio-pci 0000:00:06.0: resetting
[  284.135143] vfio-pci 0000:00:06.0: reset done
[  284.136776] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4225)
[  284.138555] vfio-pci 0000:00:06.0: resetting
[  284.355058] vfio-pci 0000:00:06.0: reset done
[  284.728186] vfio-pci 0000:00:06.0: resetting
[  284.945111] vfio-pci 0000:00:06.0: reset done
[  284.946737] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4281)
[  284.948496] vfio-pci 0000:00:06.0: resetting
[  285.165050] vfio-pci 0000:00:06.0: reset done
[  335.063397] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  336.073224] ena 0000:00:06.0: ENA device version: 0.10
[  336.074008] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  336.173234] ena 0000:00:06.0: ENA Large LLQ is disabled
[  336.185320] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:9c:5f:bf:41:51
[  336.196242] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  529.316990] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  529.318392] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  806.361896] vfio-pci 0000:00:06.0: resetting
[  806.592124] vfio-pci 0000:00:06.0: reset done
[  806.593748] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:5229)
[  806.595532] vfio-pci 0000:00:06.0: resetting
[  806.811986] vfio-pci 0000:00:06.0: reset done
[  851.214387] vfio-pci 0000:00:06.0: resetting
[  851.431860] vfio-pci 0000:00:06.0: reset done
[  851.433413] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5316)
[  851.435000] vfio-pci 0000:00:06.0: resetting
[  851.651696] vfio-pci 0000:00:06.0: reset done

@gspivey
gspivey merged commit cd9843b into main Apr 11, 2026
4 checks passed
@gspivey
gspivey deleted the claude/complete-roadmap-feature-L1KJN branch April 11, 2026 19:08
gspivey pushed a commit that referenced this pull request Jun 6, 2026
- Append performance test results from GH Actions run 27059998412
- No regressions: rust-dpdk 697K RX at 700K PPS (0.4% drop),
  native-dpdk 699K RX (0.13% drop) — consistent with Run #32
- Mark roadmap item #6 (dpdk-stdlib-quic TX queue) complete with PR #70
gspivey pushed a commit that referenced this pull request Jun 6, 2026
Performance results from GH Actions run 27063712285. No regressions:
- native-dpdk: 0.04% drop at 700K/64B (Run #33: 0.13%)
- rust-dpdk: 0.2% drop at 700K/64B (Run #33: 0.4%)
- tokio-dpdk: caps ~323K PPS (Run #33: ~326K)

All within normal variance. Change is documentation-only.
gspivey pushed a commit that referenced this pull request Aug 14, 2026
gspivey added a commit that referenced this pull request Aug 14, 2026
## Summary

Implements **ROADMAP item #33** — `dpdk-stdlib-tcp`: Performance CI
workflow.

Creates `.github/workflows/perf-tests-tcp.yml`, a manually-triggered
(`workflow_dispatch`) TCP performance test workflow matching the
existing UDP `perf-tests.yml` pattern but specialized for TCP/ASTF
benchmarks.

## Spec Reference

- Spec: `.kiro/specs/tcp-support/` · task `15.5`
- Requirements satisfied: 17.1, 17.2, 17.3, 17.4, 17.5, 17.6, 17.7

## Features

- **workflow_dispatch trigger** with TCP-specific configurable inputs:
  - `payload_sizes`: TCP payload sizes (default: 64,512,1400,65536)
- `cps_rates`: target connections-per-second (default:
100,500,1000,5000)
  - `duration`: seconds per rate step (default: 30)
- `configs`: DUT configurations (default:
plain-rust-tcp,rust-dpdk-tcp,tokio-dpdk-tcp)
  - `teardown`: stack destroy toggle
- **Concurrency group** `perf-tests-tcp` (cancel-in-progress: false) —
separate from UDP perf group
- **validate-cdk** pre-flight job (synthesize PerfTestStack)
- **perf-tests-tcp** job:
  - AWS OIDC authentication
  - SSM AMI lookup (DPDK + TRex)
  - PR number resolution for comment posting
- Invokes `run-perf-tests.sh` with `--tcp-payload-sizes`, `--cps-rates`,
`--configs` flags
  - Failure diagnostics posted as structured PR comment
  - `tcp-perf-results` artifact with **90-day retention**
  - `tcp-perf-instance-logs` artifact with 30-day retention
  - Safety-net CDK teardown on failure

## Tests

- `cargo build` — passes (workflow YAML doesn't affect Rust compilation)
- `cargo test` — all 1040+ tests pass, 0 failures
- The workflow reuses the existing `run-perf-tests.sh` infrastructure
which already supports TCP configs via `run_tcp_benchmark_for_config`
(TRex ASTF mode)

## Tradeoffs

- Uses a separate concurrency group (`perf-tests-tcp`) from UDP
(`perf-tests`) so TCP and UDP perf tests can run independently without
blocking each other. Both share the same CDK stack so they won't
actually run simultaneously, but this gives clearer queue semantics.

---------

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants