Skip to content

feat: 802.1Q VLAN tag insert/strip support - #36

Merged
gspivey merged 7 commits into
mainfrom
claude/roadmap-feature-testing-X8mVR
Apr 12, 2026
Merged

gspivey merged 7 commits into
mainfrom
claude/roadmap-feature-testing-X8mVR

Conversation

@gspivey

@gspivey gspivey commented Apr 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • 802.1Q VLAN support — Full VLAN tag insert/strip in the socket layer. Outgoing frames are tagged with configurable VLAN ID (0-4094), PCP priority (0-7), and DEI. Incoming VLAN-tagged frames are transparently accepted and stripped by all protocol handlers (ARP, ICMP, UDP). Configured per-socket via set_vlan() or through NetworkConfig::with_vlan().
  • Tier 4 jumbo frame echo integration test — New integration test exercising the jumbo frame feature (PR feat: jumbo frames, checksum offload, and bindgen compatibility #32) with 1400/4000/8000-byte payloads on EC2. This validates large packet integrity end-to-end.
  • README roadmap updated — VLAN moved from Planned to Done.

Changes

VLAN (802.1Q) Implementation

  • VlanConfig type with builder pattern (VlanConfig::new(100).with_priority(3).with_dei(true))
  • build_udp_frame_into_vlan() — frame builder with 4-byte VLAN tag insertion
  • detect_vlan() helper — determines L3 offset for both tagged and untagged frames
  • Updated parse_udp_packet / parse_udp_packet_ref to handle VLAN-tagged frames (returns vlan_id: Option<u16>)
  • Updated verify_ipv4_checksum / verify_udp_checksum for correct VLAN offsets
  • Updated process_frame_zerocopy to dispatch ARP/ICMP/UDP correctly for tagged frames
  • Updated ARP parser (parse_arp_packet) and ICMP parsers (parse_icmp_packet, parse_icmp_error) for VLAN
  • UdpSocket::set_vlan() / vlan() for per-socket VLAN config
  • NetworkConfig::with_vlan() for builder-based config
  • 16 new unit tests (build/parse/checksum/roundtrip/config)

Integration Test

  • New tier4-jumbo-echo.sh — sends 1400B, 4000B, 8000B payloads via DPDK echo
  • Wired into run-integration-tests.sh as Tier 4

Test plan

  • cargo build passes (all crates)
  • cargo test passes (321 tests, 0 failures, including 16 new VLAN tests)
  • Integration tests pass (CI)
  • Performance tests show no regression

https://claude.ai/code/session_01Tumf1bXMixEaMKzgLvcBbD

…test

Add full 802.1Q VLAN support to the socket layer:

- VlanConfig type with VLAN ID (0-4094), PCP priority (0-7), DEI
- build_udp_frame_into_vlan() for VLAN-tagged frame construction
- parse_udp_packet/parse_udp_packet_ref transparently handle VLAN tags
- verify_ipv4_checksum/verify_udp_checksum work on VLAN-tagged frames
- process_frame_zerocopy dispatches ARP/ICMP/UDP correctly for tagged frames
- ARP and ICMP parsers handle VLAN-tagged frames via detect_vlan() helper
- Per-socket VLAN config via set_vlan()/vlan() and NetworkConfig::with_vlan()
- UdpSocketBuilder applies VLAN config from NetworkConfig
- 16 new unit tests covering build/parse/checksum/roundtrip/config

Also adds Tier 4 jumbo frame echo integration test that exercises the jumbo
frame feature (PR #32) with 1400/4000/8000-byte payloads on EC2.

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-02744c416e8b98ebc (DPDK ENI: 10.0.1.38)
  • Receiver: i-0db094c76cb23c61e (DPDK ENI: 10.0.1.90)
  • 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 24312137815)

Branch: 36/merge | Commit: d16440f2

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.90:9000 (MAC: 02:2f:a4:cd:53:e1)
echo listening on 10.0.1.90: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.38:9000 (MAC: 02:74:fe:61:4f:cb)
echo listening on 10.0.1.38: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.90:9000: 'arp-probe #1'
Test complete
[2026-04-12T17:37:57Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T17:37:57Z] INFO: Test: udp_send_receive
[2026-04-12T17:37:58Z] INFO: UDP send/receive succeeded
[2026-04-12T17:37:58Z] INFO: Test: echo_roundtrip
[2026-04-12T17:37:59Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T17:37:59Z] INFO: Test: payload_integrity
[2026-04-12T17:37:59Z] INFO: Response received, checking payload match...
[2026-04-12T17:37:59Z] INFO: Payload integrity verified (found in response)
[2026-04-12T17:37:59Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-12T17:37:59Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-12T17:41:36Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-12T17:41:36Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-12T17:41:36Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-12T17:41:36Z] 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.90:9000 (MAC: 02:2f:a4:cd:53:e1)
echo listening on 10.0.1.90: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.38:9000 (MAC: 02:74:fe:61:4f:cb)
echo listening on 10.0.1.38:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-12T17:30:12Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.90:9000
Bind address: 10.0.1.38: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.38:32768 (MAC: 02:74:fe:61:4f:cb)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.90:9000: 'arp-probe #1'
Test complete
[2026-04-12T17:30:13Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T17:30:13Z] INFO: Test: udp_send_receive
[2026-04-12T17:30:15Z] INFO: UDP send/receive succeeded
[2026-04-12T17:30:15Z] INFO: Test: echo_roundtrip
[2026-04-12T17:30:17Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T17:30:17Z] INFO: Test: payload_integrity
[2026-04-12T17:30:17Z] INFO: Response received, checking payload match...
[2026-04-12T17:30:17Z] INFO: Payload integrity verified (found in response)
[2026-04-12T17:30:17Z] INFO: Test: jumbo_diagnostics
[2026-04-12T17:30:17Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-12T17:30:17Z] INFO: Interface MTU:
  1500
  9001
  65536
[2026-04-12T17:30:17Z] INFO:   docker0: MTU=1500
[2026-04-12T17:30:17Z] INFO:   ens5: MTU=9001
[2026-04-12T17:30:17Z] INFO:   lo: MTU=65536
[2026-04-12T17:30:17Z] 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-12T17:30:17Z] INFO: DPDK port config (from echo server log):
[2026-04-12T17:30:17Z] INFO:   (no MTU info in echo log)
[2026-04-12T17:30:17Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-12T17:30:17Z] INFO: Test: jumbo_echo_8000
[2026-04-12T17:30:19Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.90:9000
Bind address: 10.0.1.38: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.38:32768 (MAC: 02:74:fe:61:4f:cb)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.90:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.90:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.90:9000 (expected 8000, OK)
Test complete
[2026-04-12T17:30:19Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-12T17:30:19Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-12T17:30:19Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-12T17:37:57Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.90: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.90:9000: 'arp-probe #1'
Test complete
[2026-04-12T17:37:57Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T17:37:57Z] INFO: Test: udp_send_receive
[2026-04-12T17:37:58Z] INFO: UDP send/receive succeeded
[2026-04-12T17:37:58Z] INFO: Test: echo_roundtrip
[2026-04-12T17:37:59Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T17:37:59Z] INFO: Test: payload_integrity
[2026-04-12T17:37:59Z] INFO: Response received, checking payload match...
[2026-04-12T17:37:59Z] INFO: Payload integrity verified (found in response)
[2026-04-12T17:37:59Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-12T17:37:59Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-12T17:41:33Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-12T17:41:33Z] INFO: Local IP: 10.0.1.38, Peer IP: 10.0.1.90, Port: 9000
[2026-04-12T17:41:33Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.90        0x1         0x2         02:2f:a4:cd:53:e1     *        ens5
10.0.1.14        0x1         0x2         02:e1:2a:7f:a3:4b     *        ens5
10.0.1.93        0x1         0x2         02:14:ee:9f:ea:df     *        ens5
10.0.1.1         0x1         0x2         02:ae:71:38:a4:6d     *        ens5
10.0.1.38        0x1         0x2         02:74:fe:61:4f:cb     *        ens5
[2026-04-12T17:41:33Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-12T17:41:33Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-12T17:41:33Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1920632 Apr 12 17:28 /opt/dpdk-stdlib/target/release/test-client
[2026-04-12T17:41:33Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.90 --port 9000 --bind-ip 10.0.1.38 --count 10 --delay 200
[2026-04-12T17:41:36Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.90:9000
Bind address: 10.0.1.38: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.38:32768 (MAC: 02:74:fe:61:4f:cb)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.90:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-12T17:41:36Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-12T17:41:36Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-12T17:41:36Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-12T17:41:36Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0db094c76cb23c61e (receiver)
Command ID: 0cfaa980-f6e3-4fa0-87ec-c229cec0332a

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0db094c76cb23c61e (receiver)
Command ID: 02210d8a-b944-4256-ae2c-22eb7eeceb51

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0db094c76cb23c61e (receiver)
Command ID: 3d8b8a8c-2b8d-44ba-9b1c-3730d683f775

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0db094c76cb23c61e (receiver)
Command ID: dd052447-3fd7-4f1c-b5ec-a70c29b0e513

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-02744c416e8b98ebc (sender)
Command ID: e64c311c-b90a-4a99-865d-897767617e02

=== 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:1f:cc:bd:4d:77 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-08db172e70373672b
    altname device-number-0.0
    inet 10.0.1.4/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 1971sec preferred_lft 1971sec
    inet6 fe80::1f:ccff:febd:4d77/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:fc:7c:b5:ff brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

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:23:02:13:df:b5 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0fa608f2f594ffc80
    altname device-number-0.0
    inet 10.0.1.228/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 1994sec preferred_lft 1994sec
    inet6 fe80::23:2ff:fe13:dfb5/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:90:6e:2d:5c brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-12T17:29:33Z
hostname: ip-10-0-1-4.ec2.internal
kernel: 6.1.166-197.305.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:1f:cc:bd:4d:77 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-08db172e70373672b
    altname device-number-0.0
    inet 10.0.1.4/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3305sec preferred_lft 3305sec
    inet6 fe80::1f:ccff:febd:4d77/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:fc:7c:b5:ff brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.93 dev ens5 lladdr 02:14:ee:9f:ea:df REACHABLE 
10.0.1.1 dev ens5 lladdr 02:ae:71:38:a4:6d REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:1f:cc:bd:4d:77/ 02:2f:a4:cd:53:e1/ 

--- ENI: 02:1f:cc:bd:4d:77/ ---
  device-number: 0
  local-ipv4s: 10.0.1.4
  subnet-id: subnet-070287e6d129b8cb4
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:2f:a4:cd:53:e1/ ---
  device-number: 1
  local-ipv4s: 10.0.1.90
  subnet-id: subnet-070287e6d129b8cb4
  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:ae:71:38:a4:6d REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.4 ens5
Unicast reply from 10.0.1.1 [02:AE:71:38:A4:6D]  0.539ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Apr 12 17:29 .
drwxr-xr-x. 14 root root     3100 Apr 12 17:28 ..
crw-------.  1 root root 243,   0 Apr 12 17:29 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 12 17:24 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068126] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074405] audit: type=2000 audit(1776014671.070:1): state=initialized audit_enabled=0 res=1
[    0.076798] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.101263] ACPI: Interpreter enabled
[    0.101263] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.125551] pci 0000:00:05.0: enabling Extended Tags
[    0.148727] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.178088] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.271958] IPI shorthand broadcast: enabled
[    0.272021] AES CTR mode by8 optimization enabled
[    3.295174] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.329141] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.410072] VFIO - User Level meta-driver version: 0.3
[    4.534757] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.555075] ena 0000:00:05.0: ENA device version: 0.10
[    4.555826] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.655198] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.667140] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:1f:cc:bd:4d:77
[    4.745017] ena 0000:00:05.0 ens5: renamed from eth0
[    6.171285] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.942135] pci 0000:00:06.0: enabling Extended Tags
[  210.946973] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.959951] ena 0000:00:06.0: ENA device version: 0.10
[  210.960740] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  211.061927] ena 0000:00:06.0: ENA Large LLQ is disabled
[  211.074856] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2f:a4:cd:53:e1
[  211.123202] ena 0000:00:06.0 ens6: renamed from eth0
[  211.403757] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  288.247295] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  288.248628] 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-12T17:29:25Z
hostname: ip-10-0-1-228.ec2.internal
kernel: 6.1.166-197.305.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:23:02:13:df:b5 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0fa608f2f594ffc80
    altname device-number-0.0
    inet 10.0.1.228/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3314sec preferred_lft 3314sec
    inet6 fe80::23:2ff:fe13:dfb5/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:90:6e:2d:5c brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.14 dev ens5 lladdr 02:e1:2a:7f:a3:4b STALE 
10.0.1.93 dev ens5 lladdr 02:14:ee:9f:ea:df REACHABLE 
10.0.1.1 dev ens5 lladdr 02:ae:71:38:a4:6d REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:23:02:13:df:b5/ 02:74:fe:61:4f:cb/ 

--- ENI: 02:23:02:13:df:b5/ ---
  device-number: 0
  local-ipv4s: 10.0.1.228
  subnet-id: subnet-070287e6d129b8cb4
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:74:fe:61:4f:cb/ ---
  device-number: 1
  local-ipv4s: 10.0.1.38
  subnet-id: subnet-070287e6d129b8cb4
  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:ae:71:38:a4:6d REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.228 ens5
Unicast reply from 10.0.1.1 [02:AE:71:38:A4:6D]  0.540ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Apr 12 17:29 .
drwxr-xr-x. 14 root root     3100 Apr 12 17:28 ..
crw-------.  1 root root 243,   0 Apr 12 17:29 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 12 17:24 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.071694] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.077888] audit: type=2000 audit(1776014672.119:1): state=initialized audit_enabled=0 res=1
[    0.080352] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.105560] ACPI: Interpreter enabled
[    0.105560] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.130146] pci 0000:00:05.0: enabling Extended Tags
[    0.155727] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.184671] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.287513] IPI shorthand broadcast: enabled
[    0.287582] AES CTR mode by8 optimization enabled
[    3.055207] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.089587] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.148613] VFIO - User Level meta-driver version: 0.3
[    4.229255] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.251077] ena 0000:00:05.0: ENA device version: 0.10
[    4.251822] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.353168] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.367247] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:23:02:13:df:b5
[    4.485086] ena 0000:00:05.0 ens5: renamed from eth0
[    5.869088] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  251.039552] pci 0000:00:06.0: enabling Extended Tags
[  251.043376] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  251.052680] ena 0000:00:06.0: ENA device version: 0.10
[  251.053469] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.152653] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.164883] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:74:fe:61:4f:cb
[  251.232715] ena 0000:00:06.0 ens6: renamed from eth0
[  251.585295] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  280.217137] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  280.218444] 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.074384] pid_max: default: 32768 minimum: 301
[    0.127726] iommu: Default domain type: Translated 
[    0.128487] NetLabel:  unlabeled traffic allowed by default
[    0.134384] PCI: CLS 0 bytes, default 64
[    0.197781] nvme nvme0: 2/0/0 default/read/poll queues
[    0.440692] 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.440788] systemd[1]: No hostname configured, using default hostname.
[    0.540790] systemd[1]: Queued start job for default target initrd.target.
[    2.171187] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[   10.311170] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  326.084627] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:7208)
[  790.430035] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:24813)
[ 1495.563213] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:63475)

sender-dmesg-crashes.log

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

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

[  210.944950] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  210.945971] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  210.946973] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.959951] ena 0000:00:06.0: ENA device version: 0.10
[  210.960740] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  211.061927] ena 0000:00:06.0: ENA Large LLQ is disabled
[  211.074856] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2f:a4:cd:53:e1
[  211.123202] ena 0000:00:06.0 ens6: renamed from eth0
[  211.403757] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  288.247295] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  288.248628] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  326.084627] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:7208)
[  502.455193] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  503.468344] ena 0000:00:06.0: ENA device version: 0.10
[  503.469093] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  503.570259] ena 0000:00:06.0: ENA Large LLQ is disabled
[  503.582300] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2f:a4:cd:53:e1
[  503.592200] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  658.662197] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  658.663539] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  790.430035] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:24813)
[  866.372923] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  867.386088] ena 0000:00:06.0: ENA device version: 0.10
[  867.386868] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  867.486714] ena 0000:00:06.0: ENA Large LLQ is disabled
[  867.498918] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2f:a4:cd:53:e1
[  867.507868] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1338.155693] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1338.157036] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1495.563213] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:63475)

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

[  251.585295] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  280.217137] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  280.218444] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  340.995024] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6937)
[  341.804894] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6959)
[  343.624971] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6981)
[  345.244988] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7004)
[  346.084950] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7064)
[  396.744282] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  397.757325] ena 0000:00:06.0: ENA device version: 0.10
[  397.758093] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  397.852189] ena 0000:00:06.0: ENA Large LLQ is disabled
[  397.864591] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:74:fe:61:4f:cb
[  397.875145] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  898.114479] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  898.115808] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1021.622741] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:41252)
[ 1066.272606] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:43551)
[ 1128.739606] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1129.749691] ena 0000:00:06.0: ENA device version: 0.10
[ 1129.750466] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1129.849687] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1129.861901] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:74:fe:61:4f:cb
[ 1129.875460] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1242.015457] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1242.016977] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1510.491014] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:66958)
[ 1511.290875] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:66990)
[ 1513.080909] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:67048)
[ 1514.880946] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:67107)

claude added 2 commits April 12, 2026 18:02
…ring

Add VlanMode enum matching Linux 8021q subinterface semantics:
- Access: RX accepts untagged + matching VID (strip), TX sends untagged
- Trunk: RX accepts allowed VID set + optional native VLAN, TX tags
- PortTagging (default): RX only matching VID (strip), TX always tags

RX filtering in process_frame_zerocopy drops frames before protocol
dispatch (ARP/ICMP/UDP) based on the configured mode. TX path in
send_to_addr respects mode: Access sends untagged, Trunk/PortTagging
send tagged.

28 new unit tests covering all mode/frame combinations.

https://claude.ai/code/session_01Tumf1bXMixEaMKzgLvcBbD
Measures process_frame_zerocopy throughput across all VLAN modes:
- No config baseline: ~839K PPS (untagged)
- PortTagging/Access/Trunk: ~760-853K PPS (<10% overhead)
- DROP paths: >11M PPS (early reject)

Run with: cargo test -p dpdk-stdlib-udp -- --nocapture vlan_pps_benchmark

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

Copy link
Copy Markdown

[Perf] Stage: Deploy

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

claude added 2 commits April 12, 2026 18:08
Synthetic benchmark shows ~9-10% CPU overhead for VLAN-tagged frames.
Hardware TRex results pending from perf-tests workflow.

https://claude.ai/code/session_01Tumf1bXMixEaMKzgLvcBbD
Include VLAN PPS benchmark in every perf-test-log entry going forward.
Runs in ~5s alongside cargo test, no hardware needed.

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0ff4d775b3cc3f3f3 (DPDK ENI: 10.0.1.75)
  • Receiver: i-0efcc95cb6848f675 (DPDK ENI: 10.0.1.68)
  • Both instances SSM-ready.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Instances Ready

  • TRex: i-0b0c0e9e4c65c82ce (10.0.1.91)
  • DUT: i-02dd055186bbceb1e (10.0.1.10)
  • 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:54:28:7d:eb:c3
  • RX: 0000:00:07.0 MAC: 02:17:7c:57:1c:f1
  • Gateway MAC: 02:10:77:40:00:81
    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-02dd055186bbceb1e 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:54:28:7d:eb:c3
  Port 1: 02:17:7c:57:1c:f1
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:54:28:7d:eb:c3

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,999 pps, Drop: 1.4304%, Lat avg: 272.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,999 pps, Drop: 0.7151%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 343,462 pps, Drop: 1.868%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 399,705 pps, Drop: 42.8993%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,975 pps, Drop: 0.7323%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 325,918 pps, Drop: 6.8805%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 381,816 pps, Drop: 45.4548%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,991 pps, Drop: 1.4409%, Lat avg: 278.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,978 pps, Drop: 0.7302%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 312,964 pps, Drop: 10.5819%, Lat avg: 415.0 us
  Target: 700,000 pps ... TX: 476,524 pps, RX: 403,111 pps, Drop: 15.4059%, 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,786 pps, Drop: 58.8771%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,284 pps, RX: 75,495 pps, Drop: 3.5625%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,284 pps, RX: 77,568 pps, Drop: 0.9141%, Lat avg: 0.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (2/4)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:54:28:7d:eb:c3
  Port 1: 02:17:7c:57:1c:f1
PREFLIGHT_OK

@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 24312929132)

Branch: 36/merge | Commit: 4e89dfd2

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.68:9000 (MAC: 02:aa:b5:b0:c2:33)
echo listening on 10.0.1.68: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.75:9000 (MAC: 02:4a:28:8d:88:43)
echo listening on 10.0.1.75: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.68:9000: 'arp-probe #1'
Test complete
[2026-04-12T18:18:36Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T18:18:36Z] INFO: Test: udp_send_receive
[2026-04-12T18:18:37Z] INFO: UDP send/receive succeeded
[2026-04-12T18:18:37Z] INFO: Test: echo_roundtrip
[2026-04-12T18:18:38Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T18:18:38Z] INFO: Test: payload_integrity
[2026-04-12T18:18:38Z] INFO: Response received, checking payload match...
[2026-04-12T18:18:38Z] INFO: Payload integrity verified (found in response)
[2026-04-12T18:18:38Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-12T18:18:38Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-12T18:22:51Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-12T18:22:51Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-12T18:22:51Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-12T18:22:51Z] 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.68:9000 (MAC: 02:aa:b5:b0:c2:33)
echo listening on 10.0.1.68: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.75:9000 (MAC: 02:4a:28:8d:88:43)
echo listening on 10.0.1.75:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-12T18:11:34Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.68:9000
Bind address: 10.0.1.75: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.75:32768 (MAC: 02:4a:28:8d:88:43)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.68:9000: 'arp-probe #1'
Test complete
[2026-04-12T18:11:35Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T18:11:35Z] INFO: Test: udp_send_receive
[2026-04-12T18:11:37Z] INFO: UDP send/receive succeeded
[2026-04-12T18:11:37Z] INFO: Test: echo_roundtrip
[2026-04-12T18:11:39Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T18:11:39Z] INFO: Test: payload_integrity
[2026-04-12T18:11:40Z] INFO: Response received, checking payload match...
[2026-04-12T18:11:40Z] INFO: Payload integrity verified (found in response)
[2026-04-12T18:11:40Z] INFO: Test: jumbo_diagnostics
[2026-04-12T18:11:40Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-12T18:11:40Z] INFO: Interface MTU:
  1500
  9001
  65536
[2026-04-12T18:11:40Z] INFO:   docker0: MTU=1500
[2026-04-12T18:11:40Z] INFO:   ens5: MTU=9001
[2026-04-12T18:11:40Z] INFO:   lo: MTU=65536
[2026-04-12T18:11:40Z] 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-12T18:11:40Z] INFO: DPDK port config (from echo server log):
[2026-04-12T18:11:40Z] INFO:   (no MTU info in echo log)
[2026-04-12T18:11:40Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-12T18:11:40Z] INFO: Test: jumbo_echo_8000
[2026-04-12T18:11:41Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.68:9000
Bind address: 10.0.1.75: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.75:32768 (MAC: 02:4a:28:8d:88:43)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.68:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.68:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.68:9000 (expected 8000, OK)
Test complete
[2026-04-12T18:11:41Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-12T18:11:41Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-12T18:11:41Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-12T18:18:36Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.68: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.68:9000: 'arp-probe #1'
Test complete
[2026-04-12T18:18:36Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T18:18:36Z] INFO: Test: udp_send_receive
[2026-04-12T18:18:37Z] INFO: UDP send/receive succeeded
[2026-04-12T18:18:37Z] INFO: Test: echo_roundtrip
[2026-04-12T18:18:38Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T18:18:38Z] INFO: Test: payload_integrity
[2026-04-12T18:18:38Z] INFO: Response received, checking payload match...
[2026-04-12T18:18:38Z] INFO: Payload integrity verified (found in response)
[2026-04-12T18:18:38Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-12T18:18:38Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-12T18:22:48Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-12T18:22:48Z] INFO: Local IP: 10.0.1.75, Peer IP: 10.0.1.68, Port: 9000
[2026-04-12T18:22:48Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.1         0x1         0x2         02:9e:ae:0f:32:57     *        ens5
10.0.1.193       0x1         0x2         02:68:1e:1e:16:53     *        ens5
10.0.1.68        0x1         0x2         02:aa:b5:b0:c2:33     *        ens5
10.0.1.75        0x1         0x2         02:4a:28:8d:88:43     *        ens5
10.0.1.81        0x1         0x2         02:60:3c:a9:fa:3b     *        ens5
[2026-04-12T18:22:48Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-12T18:22:48Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-12T18:22:48Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1927104 Apr 12 18:09 /opt/dpdk-stdlib/target/release/test-client
[2026-04-12T18:22:48Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.68 --port 9000 --bind-ip 10.0.1.75 --count 10 --delay 200
[2026-04-12T18:22:51Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.68:9000
Bind address: 10.0.1.75: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.75:32768 (MAC: 02:4a:28:8d:88:43)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.68:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-12T18:22:51Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-12T18:22:51Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-12T18:22:51Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-12T18:22:51Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0efcc95cb6848f675 (receiver)
Command ID: 933a76b9-f75c-48da-87a7-43422f96b7b3

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0efcc95cb6848f675 (receiver)
Command ID: adbf21cc-04c2-4d4d-8799-9138709d23cb

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0efcc95cb6848f675 (receiver)
Command ID: 7aa4b21d-c592-42d6-883b-c8bda982f137

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0efcc95cb6848f675 (receiver)
Command ID: af7d40c5-d993-44ed-99cf-3b5d001a155b

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0ff4d775b3cc3f3f3 (sender)
Command ID: 332c2f20-be4c-4c79-9bcf-9d0e354165c2

=== 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:e7:a9:6f:05:a9 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0bc18fc316517f028
    altname device-number-0.0
    inet 10.0.1.248/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2053sec preferred_lft 2053sec
    inet6 fe80::e7:a9ff:fe6f:5a9/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:d0:06:8b:0a brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:96:d1:8b:e8:55 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-01a6a7b31b64adf97
    altname device-number-0.0
    inet 10.0.1.178/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2076sec preferred_lft 2076sec
    inet6 fe80::96:d1ff:fe8b:e855/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:c7:dd:e1:d0 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-12T18:10:55Z
hostname: ip-10-0-1-248.ec2.internal
kernel: 6.1.166-197.305.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:e7:a9:6f:05:a9 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0bc18fc316517f028
    altname device-number-0.0
    inet 10.0.1.248/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3344sec preferred_lft 3344sec
    inet6 fe80::e7:a9ff:fe6f:5a9/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:d0:06:8b:0a brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:9e:ae:0f:32:57 REACHABLE 
10.0.1.193 dev ens5 lladdr 02:68:1e:1e:16:53 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:aa:b5:b0:c2:33/ 02:e7:a9:6f:05:a9/ 

--- ENI: 02:aa:b5:b0:c2:33/ ---
  device-number: 1
  local-ipv4s: 10.0.1.68
  subnet-id: subnet-018c370189d0be6ee
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:e7:a9:6f:05:a9/ ---
  device-number: 0
  local-ipv4s: 10.0.1.248
  subnet-id: subnet-018c370189d0be6ee
  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:9e:ae:0f:32:57 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.248 ens5
Unicast reply from 10.0.1.1 [02:9E:AE:0F:32:57]  0.532ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.069801] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.076005] audit: type=2000 audit(1776017193.918:1): state=initialized audit_enabled=0 res=1
[    0.078380] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.103050] ACPI: Interpreter enabled
[    0.103050] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.126864] pci 0000:00:05.0: enabling Extended Tags
[    0.150803] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.179973] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.273157] IPI shorthand broadcast: enabled
[    0.273223] AES CTR mode by8 optimization enabled
[    2.805096] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.846209] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.890734] VFIO - User Level meta-driver version: 0.3
[    3.931404] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.948833] ena 0000:00:05.0: ENA device version: 0.10
[    3.949566] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.064954] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.077133] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:e7:a9:6f:05:a9
[    4.165056] ena 0000:00:05.0 ens5: renamed from eth0
[    5.526829] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.662521] pci 0000:00:06.0: enabling Extended Tags
[  210.666460] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.679564] ena 0000:00:06.0: ENA device version: 0.10
[  210.680379] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.779558] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.791517] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:aa:b5:b0:c2:33
[  210.879581] ena 0000:00:06.0 ens6: renamed from eth0
[  211.158023] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  248.143271] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  248.144619] 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-12T18:10:47Z
hostname: ip-10-0-1-178.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:96:d1:8b:e8:55 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-01a6a7b31b64adf97
    altname device-number-0.0
    inet 10.0.1.178/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3352sec preferred_lft 3352sec
    inet6 fe80::96:d1ff:fe8b:e855/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:c7:dd:e1:d0 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:9e:ae:0f:32:57 REACHABLE 
10.0.1.193 dev ens5 lladdr 02:68:1e:1e:16:53 REACHABLE 
10.0.1.81 dev ens5 lladdr 02:60:3c:a9:fa:3b DELAY 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:4a:28:8d:88:43/ 02:96:d1:8b:e8:55/ 

--- ENI: 02:4a:28:8d:88:43/ ---
  device-number: 1
  local-ipv4s: 10.0.1.75
  subnet-id: subnet-018c370189d0be6ee
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:96:d1:8b:e8:55/ ---
  device-number: 0
  local-ipv4s: 10.0.1.178
  subnet-id: subnet-018c370189d0be6ee
  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:9e:ae:0f:32:57 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.178 ens5
Unicast reply from 10.0.1.1 [02:9E:AE:0F:32:57]  0.536ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067452] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073804] audit: type=2000 audit(1776017193.921:1): state=initialized audit_enabled=0 res=1
[    0.076136] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099631] ACPI: Interpreter enabled
[    0.099631] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123258] pci 0000:00:05.0: enabling Extended Tags
[    0.148214] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.176411] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.267733] IPI shorthand broadcast: enabled
[    0.267793] AES CTR mode by8 optimization enabled
[    2.834907] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.874022] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.931469] VFIO - User Level meta-driver version: 0.3
[    4.025391] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.035628] ena 0000:00:05.0: ENA device version: 0.10
[    4.036302] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.134896] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.146509] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:96:d1:8b:e8:55
[    4.214807] ena 0000:00:05.0 ens5: renamed from eth0
[    5.404573] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.936540] pci 0000:00:06.0: enabling Extended Tags
[  210.940453] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.952369] ena 0000:00:06.0: ENA device version: 0.10
[  210.953188] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  211.052362] ena 0000:00:06.0: ENA Large LLQ is disabled
[  211.064149] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4a:28:8d:88:43
[  211.132382] ena 0000:00:06.0 ens6: renamed from eth0
[  211.468281] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  241.197633] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  241.198959] 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.075987] pid_max: default: 32768 minimum: 301
[    0.128937] iommu: Default domain type: Translated 
[    0.129674] NetLabel:  unlabeled traffic allowed by default
[    0.136123] PCI: CLS 0 bytes, default 64
[    0.199200] nvme nvme0: 2/0/0 default/read/poll queues
[    0.440064] 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.440160] systemd[1]: No hostname configured, using default hostname.
[    0.537504] systemd[1]: Queued start job for default target initrd.target.
[    2.031991] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.814129] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  285.532108] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6725)
[  706.691903] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22158)
[ 1412.901214] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:60909)

sender-dmesg-crashes.log

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

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

[  210.664393] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  210.665441] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  210.666460] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.679564] ena 0000:00:06.0: ENA device version: 0.10
[  210.680379] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.779558] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.791517] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:aa:b5:b0:c2:33
[  210.879581] ena 0000:00:06.0 ens6: renamed from eth0
[  211.158023] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  248.143271] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  248.144619] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  285.532108] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6725)
[  454.771010] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  455.779583] ena 0000:00:06.0: ENA device version: 0.10
[  455.780413] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  455.879588] ena 0000:00:06.0: ENA Large LLQ is disabled
[  455.891955] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:aa:b5:b0:c2:33
[  455.902112] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  575.502840] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  575.504158] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  706.691903] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22158)
[  781.818057] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  782.829309] ena 0000:00:06.0: ENA device version: 0.10
[  782.830062] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  782.929276] ena 0000:00:06.0: ENA Large LLQ is disabled
[  782.941480] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:aa:b5:b0:c2:33
[  782.951982] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1291.412967] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1291.414485] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1412.901214] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:60909)

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

[  211.468281] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  241.197633] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  241.198959] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  301.484345] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6875)
[  302.304165] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6895)
[  304.134213] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6918)
[  305.734196] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6941)
[  306.564156] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7000)
[  356.532058] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  357.541535] ena 0000:00:06.0: ENA device version: 0.10
[  357.542345] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  357.641574] ena 0000:00:06.0: ENA Large LLQ is disabled
[  357.653487] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4a:28:8d:88:43
[  357.664169] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  820.452385] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  820.453671] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  975.040740] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:41099)
[ 1020.030472] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:43644)
[ 1082.875038] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1083.887605] ena 0000:00:06.0: ENA device version: 0.10
[ 1083.888421] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1083.987584] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1083.999566] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:4a:28:8d:88:43
[ 1084.012462] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1196.180654] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1196.182135] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1428.818260] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:65518)
[ 1429.678064] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:65602)
[ 1431.468136] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:65868)
[ 1433.288106] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:65927)

Explains how DPDK port 0 is selected by default (PCI bus order),
when explicit port selection is needed, and provides code examples
for all backend configurations including DPDK port selection,
AF_PACKET, MMAP, VLAN, and routing via the builder API.

https://claude.ai/code/session_01Tumf1bXMixEaMKzgLvcBbD
@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:54:28:7d:eb:c3

--- 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: 138,970 pps, Drop: 0.7361%, Lat avg: 251.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,902 pps, Drop: 0.3137%, Lat avg: 278.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 690,665 pps, Drop: 1.3336%, Lat avg: 1092.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4285%, Lat avg: 266.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,995 pps, Drop: 0.7179%, Lat avg: 266.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,824 pps, Drop: 0.336%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 692,466 pps, Drop: 1.0763%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4285%, Lat avg: 301.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,975 pps, Drop: 0.7324%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,997 pps, Drop: 0.2865%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,311 pps, RX: 474,876 pps, Drop: 0.3011%, Lat avg: 0.0 us

--- Packet size: 8500B ---
  (jumbo: capping at 418,133 pps for 30.0 Gbps limit)
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,999 pps, Drop: 1.4302%, Lat avg: 522.0 us
  Target: 140,000 pps ... TX: 78,292 pps, RX: 75,357 pps, Drop: 3.7492%, Lat avg: 14059.0 us
  Target: 350,000 pps ... TX: 78,283 pps, RX: 77,517 pps, Drop: 0.9788%, 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:54:28:7d:eb:c3
  Port 1: 02:17:7c:57:1c:f1
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-005f5f2ed978ac8e2 (DPDK ENI: 10.0.1.54)
  • Receiver: i-0c7377dcc6e4ba941 (DPDK ENI: 10.0.1.77)
  • Both instances SSM-ready.

@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:54:28:7d:eb:c3

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 38,565 pps, Drop: 44.907%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 38,165 pps, Drop: 72.7392%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 38,101 pps, Drop: 89.114%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 37,792 pps, Drop: 94.6011%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 36,912 pps, Drop: 47.2688%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 36,742 pps, Drop: 73.7559%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 36,800 pps, Drop: 89.4856%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 36,760 pps, Drop: 94.7485%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 35,699 pps, Drop: 49.0018%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 35,507 pps, Drop: 74.6379%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 35,872 pps, Drop: 89.751%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,708 pps, RX: 37,834 pps, Drop: 92.0636%, 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,972 pps, Drop: 58.6117%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,284 pps, RX: 30,843 pps, Drop: 60.6014%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,295 pps, RX: 30,822 pps, Drop: 60.6332%, 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:54:28:7d:eb:c3
  Port 1: 02:17:7c:57:1c:f1
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:54:28:7d:eb:c3

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 134.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 155.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 173.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 695,040 pps, Drop: 0.7086%, Lat avg: 405.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 135.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 159.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,992 pps, Drop: 0.0024%, Lat avg: 172.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 686,755 pps, Drop: 1.8921%, Lat avg: 933.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 147.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 172.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,984 pps, Drop: 0.0046%, Lat avg: 182.0 us
  Target: 700,000 pps ... TX: 476,299 pps, RX: 475,684 pps, Drop: 0.1291%, Lat avg: 2942.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: 158.0 us
  Target: 140,000 pps ... TX: 78,286 pps, RX: 76,211 pps, Drop: 2.6503%, Lat avg: 14090.0 us
  Target: 350,000 pps ... TX: 78,354 pps, RX: 78,190 pps, Drop: 0.2104%, Lat avg: 14266.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: 113008093      RX-dropped: 0             RX-total: 113008093
  RX-error: 402902
  RX-nombufs: 0             
  TX-packets: 112932487      TX-dropped: 75606         TX-total: 113008093
  ----------------------------------------------------------------------------

  +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
  RX-packets: 113008093      RX-dropped: 0             RX-total: 113008093
  TX-packets: 112932487      TX-dropped: 75606         TX-total: 113008093
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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)

No performance regression from 802.1Q VLAN changes. rust-dpdk delivers
690K RX at 700K PPS (1.3% drop) vs kernel's 399K (42.9% drop) — 1.73x
throughput advantage. Within 0.6% of native C DPDK (695K RX).

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

Copy link
Copy Markdown

[Perf] Stage: Results

[19:02:04] INFO Generating markdown summary...

Performance Test Results — unknown

Commit: 4f500e1a
Timestamp: 2026-04-12T19:02:04.879487+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% — — — — 134.0 623.0 35.8 35.8
native-dpdk 140,000 140,000 140,000 0.00% — — — — 155.0 411.0 71.7 71.7
native-dpdk 350,000 350,000 350,000 0.00% — — — — 173.0 1145.0 179.2 179.2
native-dpdk 700,000 700,000 695,040 0.71% — — — — 405.0 4798.0 358.4 355.9
rust-dpdk 70,000 70,000 69,000 1.43% 0 39,800 0 0 0.0 0.0 35.8 35.3
rust-dpdk 140,000 140,000 138,970 0.74% 0 35,756 0 0 251.0 0.0 71.7 71.2
rust-dpdk 350,000 350,000 348,902 0.31% 0 31,891 0 0 278.0 0.0 179.2 178.6
rust-dpdk 700,000 700,000 690,665 1.33% 0 41,569 0 0 1092.0 0.0 358.4 353.6
tokio-dpdk 70,000 70,000 38,565 44.91% 0 11,567 0 0 0.0 0.0 35.8 21.6
tokio-dpdk 140,000 140,000 38,165 72.74% 0 5,488 0 0 0.0 0.0 71.7 21.4
tokio-dpdk 350,000 350,000 38,101 89.11% 0 2,583 0 0 0.0 0.0 179.2 21.3
tokio-dpdk 700,000 700,000 37,792 94.60% 0 4,259 0 0 0.0 0.0 358.4 21.2
plain-rust 70,000 70,000 68,999 1.43% — — — — 272.0 0.0 35.8 35.3
plain-rust 140,000 140,000 138,999 0.72% — — — — 0.0 0.0 71.7 71.2
plain-rust 350,000 350,000 343,462 1.87% — — — — 0.0 0.0 179.2 175.8
plain-rust 700,000 700,000 399,705 42.90% — — — — 0.0 0.0 358.4 204.7

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% — — — — 135.0 1205.0 286.7 286.7
native-dpdk 140,000 140,000 140,000 0.00% — — — — 159.0 421.0 573.4 573.4
native-dpdk 350,000 350,000 349,992 0.00% — — — — 172.0 1575.0 1433.6 1433.6
native-dpdk 700,000 700,000 686,755 1.89% — — — — 933.0 4636.0 2867.2 2812.9
rust-dpdk 70,000 70,000 69,000 1.43% 0 33,637 0 0 266.0 0.0 286.7 282.6
rust-dpdk 140,000 140,000 138,995 0.72% 0 41,917 0 0 266.0 0.0 573.4 569.3
rust-dpdk 350,000 350,000 348,824 0.34% 0 35,507 0 0 0.0 0.0 1433.6 1428.8
rust-dpdk 700,000 700,000 692,466 1.08% 0 31,656 0 0 0.0 0.0 2867.2 2836.3
tokio-dpdk 70,000 70,000 36,912 47.27% 0 10,010 0 0 0.0 0.0 286.7 153.0
tokio-dpdk 140,000 140,000 36,742 73.76% 0 6,209 0 0 0.0 0.0 573.4 152.3
tokio-dpdk 350,000 350,000 36,800 89.49% 0 2,670 0 0 0.0 0.0 1433.6 152.5
tokio-dpdk 700,000 700,000 36,760 94.75% 0 1,937 0 0 0.0 0.0 2867.2 152.3
plain-rust 70,000 70,000 69,000 1.43% — — — — 0.0 0.0 286.7 282.6
plain-rust 140,000 140,000 138,975 0.73% — — — — 0.0 0.0 573.4 569.2
plain-rust 350,000 350,000 325,918 6.88% — — — — 0.0 0.0 1433.6 1335.0
plain-rust 700,000 700,000 381,816 45.45% — — — — 0.0 0.0 2867.2 1563.9

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% — — — — 147.0 443.0 784.0 784.0
native-dpdk 140,000 140,000 140,000 0.00% — — — — 172.0 710.0 1568.0 1568.0
native-dpdk 350,000 350,000 349,984 0.00% — — — — 182.0 2055.0 3920.0 3919.8
native-dpdk 700,000 476,299 475,684 0.13% — — — — 2942.0 4976.0 5334.6 5327.7
rust-dpdk 70,000 70,000 69,000 1.43% 0 41,859 0 0 301.0 0.0 784.0 772.8
rust-dpdk 140,000 140,000 138,975 0.73% 0 33,417 0 0 0.0 0.0 1568.0 1556.5
rust-dpdk 350,000 350,000 348,997 0.29% 0 38,512 0 0 0.0 0.0 3920.0 3908.8
rust-dpdk 700,000 476,311 474,876 0.30% 0 25,577 0 0 0.0 0.0 5334.7 5318.6
tokio-dpdk 70,000 70,000 35,699 49.00% 0 10,453 0 0 0.0 0.0 784.0 401.5
tokio-dpdk 140,000 140,000 35,507 74.64% 0 4,834 0 0 0.0 0.0 1568.0 399.4
tokio-dpdk 350,000 350,000 35,872 89.75% 0 3,175 0 0 0.0 0.0 3920.0 403.5
tokio-dpdk 700,000 476,708 37,834 92.06% 0 2,919 0 0 0.0 0.0 5339.1 425.6
plain-rust 70,000 70,000 68,991 1.44% — — — — 278.0 0.0 784.0 772.7
plain-rust 140,000 140,000 138,978 0.73% — — — — 0.0 0.0 1568.0 1556.5
plain-rust 350,000 350,000 312,964 10.58% — — — — 415.0 0.0 3920.0 3505.2
plain-rust 700,000 476,524 403,111 15.41% — — — — 0.0 0.0 5337.1 4514.8

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% — — — — 158.0 448.0 4760.0 4760.0
native-dpdk 140,000 78,286 76,211 2.65% — — — — 14090.0 15070.0 5323.4 5182.4
native-dpdk 350,000 78,354 78,190 0.21% — — — — 14266.0 15033.0 5328.1 5316.9
rust-dpdk 70,000 70,000 68,999 1.43% 0 32,242 0 0 522.0 0.0 4760.0 4691.9
rust-dpdk 140,000 78,292 75,357 3.75% 0 22,833 0 0 14059.0 0.0 5323.9 5124.2
rust-dpdk 350,000 78,283 77,517 0.98% 0 7,051 0 0 0.0 0.0 5323.3 5271.2
tokio-dpdk 70,000 70,000 28,972 58.61% 0 7,716 0 0 0.0 0.0 4760.0 1971.5
tokio-dpdk 140,000 78,284 30,843 60.60% 0 8,298 0 0 0.0 0.0 5323.3 2098.8
tokio-dpdk 350,000 78,295 30,822 60.63% 0 2,838 0 0 0.0 0.0 5324.1 2097.4
plain-rust 70,000 70,000 28,786 58.88% — — — — 0.0 0.0 4760.0 1957.5
plain-rust 140,000 78,284 75,495 3.56% — — — — 0.0 0.0 5323.3 5133.6
plain-rust 350,000 78,284 77,568 0.91% — — — — 0.0 0.0 5323.3 5274.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 402,985 / 402,985 / 0 0 / 0 / 0
tokio-dpdk OK 0 / 0 / 0 71,174 / 71,174 / 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

@github-actions

Copy link
Copy Markdown

[CI] Stage: Summary

Some tests FAILED (exit code: 1).

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

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

@github-actions

Copy link
Copy Markdown

Integration Test Failure (Run 24313040593)

Branch: 36/merge | Commit: fa28c6d07c3b40c1cc53b765fee4755b4849da80

No failure-summary.json found

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

   Compiling regex v1.12.3
   Compiling find-msvc-tools v0.1.9
   Compiling rustc-hash v1.1.0
   Compiling log v0.4.29
   Compiling bitflags v2.11.0
   Compiling cc v1.2.60
   Compiling pkg-config v0.3.33
   Compiling thiserror v1.0.69
   Compiling utf8parse v0.2.2
   Compiling anstyle-parse v1.0.0
   Compiling thiserror-impl v1.0.69
   Compiling anstyle-query v1.1.5
   Compiling is_terminal_polyfill v1.70.2
   Compiling parking_lot_core v0.9.12
   Compiling anstyle v1.0.14
   Compiling colorchoice v1.0.5
   Compiling anstream v1.0.0
   Compiling smallvec v1.15.1
   Compiling scopeguard v1.2.0
   Compiling strsim v0.11.1
   Compiling clap_lex v1.1.0
   Compiling dpdk-stdlib-sys v0.1.0 (/opt/dpdk-stdlib/dpdk-sys)
warning: unused import: `std::fs`
   --> dpdk-sys/build.rs:129:9
    |
129 |     use std::fs;
    |         ^^^^^^^
    |
    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default

   Compiling heck v0.5.0
   Compiling clap_derive v4.6.0
warning: `dpdk-stdlib-sys` (build script) generated 1 warning
   Compiling clap_builder v4.6.0
   Compiling dpdk-stdlib v0.1.0 (/opt/dpdk-stdlib/dpdk)
   Compiling lock_api v0.4.14
   Compiling errno v0.3.14
   Compiling signal-hook-registry v1.4.8
   Compiling parking_lot v0.12.5
   Compiling dpdk-stdlib-udp v0.1.0 (/opt/dpdk-stdlib/dpdk-udp)
   Compiling clap v4.6.0
   Compiling tokio-macros v2.7.0
   Compiling socket2 v0.6.3
   Compiling mio v1.2.0
   Compiling bytes v1.11.1
   Compiling pin-project-lite v0.2.17
   Compiling tokio v1.51.1
   Compiling async-trait v0.1.89
   Compiling echo v0.1.0 (/opt/dpdk-stdlib/apps/echo)
   Compiling plain-echo v0.1.0 (/opt/dpdk-stdlib/apps/plain-echo)
   Compiling dpdk-stdlib-tokio v0.1.0 (/opt/dpdk-stdlib/dpdk-tokio)
warning: variable does not need to be mutable
   --> dpdk-tokio/src/compat/tokio.rs:156:25
    |
156 |                     let mut socket = socket.blocking_lock();
    |                         ----^^^^^^
    |                         |
    |                         help: remove this `mut`
    |
    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default

warning: variable does not need to be mutable
   --> dpdk-tokio/src/socket.rs:162:17
    |
162 |             let mut socket = socket.blocking_lock();
    |                 ----^^^^^^
    |                 |
    |                 help: remove this `mut`

warning: `dpdk-stdlib-tokio` (lib) generated 2 warnings (run `cargo fix --lib -p dpdk-stdlib-tokio` to apply 2 suggestions)
   Compiling test-client v0.1.0 (/opt/dpdk-stdlib/apps/test-client)
   Compiling tokio-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-echo)
    Finished `release` profile [optimized] target(s) in 57.72s
=== Build complete ===
-rwxr-xr-x. 2 root root 1314520 Apr 12 18:42 target/release/echo
-rwxr-xr-x. 2 root root 1927104 Apr 12 18:43 target/release/test-client
=== Setup complete! ===
Rust project built successfully
Instance ready for testing
Project location: /opt/dpdk-stdlib

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

   Compiling cexpr v0.6.0
   Compiling log v0.4.29
   Compiling rustc-hash v1.1.0
   Compiling bitflags v2.11.0
   Compiling find-msvc-tools v0.1.9
   Compiling cc v1.2.60
   Compiling pkg-config v0.3.33
   Compiling utf8parse v0.2.2
   Compiling thiserror v1.0.69
   Compiling anstyle-parse v1.0.0
   Compiling thiserror-impl v1.0.69
   Compiling parking_lot_core v0.9.12
   Compiling colorchoice v1.0.5
   Compiling anstyle v1.0.14
   Compiling is_terminal_polyfill v1.70.2
   Compiling anstyle-query v1.1.5
   Compiling anstream v1.0.0
   Compiling clap_lex v1.1.0
   Compiling heck v0.5.0
   Compiling strsim v0.11.1
   Compiling scopeguard v1.2.0
   Compiling smallvec v1.15.1
   Compiling lock_api v0.4.14
   Compiling clap_builder v4.6.0
   Compiling dpdk-stdlib-sys v0.1.0 (/opt/dpdk-stdlib/dpdk-sys)
warning: unused import: `std::fs`
   --> dpdk-sys/build.rs:129:9
    |
129 |     use std::fs;
    |         ^^^^^^^
    |
    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default

warning: `dpdk-stdlib-sys` (build script) generated 1 warning
   Compiling dpdk-stdlib v0.1.0 (/opt/dpdk-stdlib/dpdk)
   Compiling clap_derive v4.6.0
   Compiling errno v0.3.14
   Compiling signal-hook-registry v1.4.8
   Compiling clap v4.6.0
   Compiling dpdk-stdlib-udp v0.1.0 (/opt/dpdk-stdlib/dpdk-udp)
   Compiling parking_lot v0.12.5
   Compiling tokio-macros v2.7.0
   Compiling mio v1.2.0
   Compiling socket2 v0.6.3
   Compiling bytes v1.11.1
   Compiling pin-project-lite v0.2.17
   Compiling tokio v1.51.1
   Compiling async-trait v0.1.89
   Compiling echo v0.1.0 (/opt/dpdk-stdlib/apps/echo)
   Compiling plain-echo v0.1.0 (/opt/dpdk-stdlib/apps/plain-echo)
   Compiling dpdk-stdlib-tokio v0.1.0 (/opt/dpdk-stdlib/dpdk-tokio)
warning: variable does not need to be mutable
   --> dpdk-tokio/src/compat/tokio.rs:156:25
    |
156 |                     let mut socket = socket.blocking_lock();
    |                         ----^^^^^^
    |                         |
    |                         help: remove this `mut`
    |
    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default

warning: variable does not need to be mutable
   --> dpdk-tokio/src/socket.rs:162:17
    |
162 |             let mut socket = socket.blocking_lock();
    |                 ----^^^^^^
    |                 |
    |                 help: remove this `mut`

warning: `dpdk-stdlib-tokio` (lib) generated 2 warnings (run `cargo fix --lib -p dpdk-stdlib-tokio` to apply 2 suggestions)
   Compiling tokio-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-echo)
   Compiling test-client v0.1.0 (/opt/dpdk-stdlib/apps/test-client)
    Finished `release` profile [optimized] target(s) in 59.80s
=== Build complete ===
-rwxr-xr-x. 2 root root 1314520 Apr 12 18:43 target/release/echo
-rwxr-xr-x. 2 root root 1927104 Apr 12 18:43 target/release/test-client
=== Setup complete! ===
Rust project built successfully
Instance ready for testing
Project location: /opt/dpdk-stdlib

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

[  199.512225] cloud-init[1805]:     |                         |
[  199.514061] cloud-init[1805]:     |                         help: remove this `mut`
[  199.516203] cloud-init[1805]:     |
[  199.518048] cloud-init[1805]:     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[  199.682567] cloud-init[1805]: warning: variable does not need to be mutable
[  199.684092] cloud-init[1805]:    --> dpdk-tokio/src/socket.rs:162:17
[  199.687246] cloud-init[1805]:     |
[  199.689095] cloud-init[1805]: 162 |             let mut socket = socket.blocking_lock();
[  199.700072] cloud-init[1805]:     |                 ----^^^^^^
[  199.700889] cloud-init[1805]:     |                 |
[  199.703920] cloud-init[1805]:     |                 help: remove this `mut`
[  202.894461] cloud-init[1805]: warning: `dpdk-stdlib-tokio` (lib) generated 2 warnings (run `cargo fix --lib -p dpdk-stdlib-tokio` to apply 2 suggestions)
[  206.682871] cloud-init[1805]:    Compiling test-client v0.1.0 (/opt/dpdk-stdlib/apps/test-client)
[  206.685015] cloud-init[1805]:    Compiling tokio-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-echo)
[  213.087769] cloud-init[1805]:     Finished `release` profile [optimized] target(s) in 57.72s
[  213.122823] cloud-init[1805]: === Build complete ===
[  213.125879] cloud-init[1805]: -rwxr-xr-x. 2 root root 1314520 Apr 12 18:42 target/release/echo
[  213.126934] cloud-init[1805]: -rwxr-xr-x. 2 root root 1927104 Apr 12 18:43 target/release/test-client
[  213.129933] cloud-init[1805]: === Setup complete! ===
[  213.130074] cloud-init[1805]: Rust project built successfully
[  213.130124] cloud-init[1805]: Instance ready for testing
[  213.130161] cloud-init[1805]: Project location: /opt/dpdk-stdlib
ci-info: +++++++++++++++++++++++++++++++++++++++++++++Authorized keys from /home/ec2-user/.ssh/authorized_keys for user ec2-user++++++++++++++++++++++++++++++++++++++++++++++
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
ci-info: | Keytype |                                       Fingerprint (sha256)                                      | Options |                   Comment                   |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
ci-info: | ssh-rsa | ae:e8:2c:e2:ec:35:41:56:b5:3c:a7:63:2c:2b:63:ed:24:de:2e:17:25:e8:ab:13:06:02:5f:bb:80:ec:5a:dd |    -    | packer_69db32b1-6078-f7c7-ab9a-486e4b8b0f63 |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
<14>Apr 12 18:43:12 cloud-init: #############################################################
<14>Apr 12 18:43:12 cloud-init: -----BEGIN SSH HOST KEY FINGERPRINTS-----
<14>Apr 12 18:43:12 cloud-init: 256 SHA256:AjrOtPftsRZRKElDxn7E3KBxqQJewAedpYthKOxGGNw root@ip-10-0-1-9.ec2.internal (ECDSA)
<14>Apr 12 18:43:12 cloud-init: 256 SHA256:+JCzieALX6kPeEqdSl2eLE/MD2WB5EEEhJgfTc0637Q root@ip-10-0-1-9.ec2.internal (ED25519)
<14>Apr 12 18:43:12 cloud-init: -----END SSH HOST KEY FINGERPRINTS-----
<14>Apr 12 18:43:12 cloud-init: #############################################################
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEIrK5QgLgQgcvPhdy+rYiOpHdl5pA4vQoAD0xBF6/1Idjw/3J0P8xl7MFk/AwlWZbnhm4YbHKyYPEvHBg5X1K8= root@ip-10-0-1-9.ec2.internal
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPIbeG0dMQ6oxMV09KB5h15gYCGsmoBq5Rjk7nGJngd/ root@ip-10-0-1-9.ec2.internal
-----END SSH HOST KEY KEYS-----
[  213.620733] cloud-init[1805]: Cloud-init v. 22.2.2 finished at Sun, 12 Apr 2026 18:43:12 +0000. Datasource DataSourceEc2.  Up 213.61 seconds
[  231.217648] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  231.218736] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  231.219795] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  231.221081] pci 0000:00:06.0: enabling Extended Tags
[  231.222907] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  231.223925] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  231.224911] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  231.237565] ena 0000:00:06.0: ENA device version: 0.10
[  231.238341] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  231.336311] ena 0000:00:06.0: ENA Large LLQ is disabled
[  231.348863] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:f8:ee:05:37:c7
[  231.422181] ena 0000:00:06.0 ens6: renamed from eth0
[  231.634278] zram_generator::config[5087]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  231.764502] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  271.188430] zram_generator::config[6126]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  272.146118] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  272.147457] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  310.523588] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6708)
[  475.780023] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  476.788801] ena 0000:00:06.0: ENA device version: 0.10
[  476.789586] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  476.888850] ena 0000:00:06.0: ENA Large LLQ is disabled
[  476.900612] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:f8:ee:05:37:c7
[  476.910045] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  476.911956] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  477.108681] zram_generator::config[9328]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  603.973485] zram_generator::config[15626]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  604.801101] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  604.802405] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  734.827837] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22750)
[  812.638070] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  813.651081] ena 0000:00:06.0: ENA device version: 0.10
[  813.651865] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  813.744193] ena 0000:00:06.0: ENA Large LLQ is disabled
[  813.756006] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:f8:ee:05:37:c7
[  813.766046] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  813.767748] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  813.972735] zram_generator::config[26957]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1261.071761] zram_generator::config[51642]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1262.021797] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1262.023130] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

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

[  212.941325] cloud-init[1800]:     |
[  212.943101] cloud-init[1800]: 162 |             let mut socket = socket.blocking_lock();
[  212.944603] cloud-init[1800]:     |                 ----^^^^^^
[  212.945597] cloud-init[1800]:     |                 |
[  212.946836] cloud-init[1800]:     |                 help: remove this `mut`
[  216.222948] cloud-init[1800]: warning: `dpdk-stdlib-tokio` (lib) generated 2 warnings (run `cargo fix --lib -p dpdk-stdlib-tokio` to apply 2 suggestions)
[  220.107917] cloud-init[1800]:    Compiling tokio-echo v0.1.0 (/opt/dpdk-stdlib/apps/tokio-echo)
[  220.111766] cloud-init[1800]:    Compiling test-client v0.1.0 (/opt/dpdk-stdlib/apps/test-client)
[  226.670074] cloud-init[1800]:     Finished `release` profile [optimized] target(s) in 59.80s
[  226.706210] cloud-init[1800]: === Build complete ===
[  226.710185] cloud-init[1800]: -rwxr-xr-x. 2 root root 1314520 Apr 12 18:43 target/release/echo
[  226.711369] cloud-init[1800]: -rwxr-xr-x. 2 root root 1927104 Apr 12 18:43 target/release/test-client
[  226.717544] cloud-init[1800]: === Setup complete! ===
[  226.719716] cloud-init[1800]: Rust project built successfully
[  226.722252] cloud-init[1800]: Instance ready for testing
[  226.724499] cloud-init[1800]: Project location: /opt/dpdk-stdlib
ci-info: +++++++++++++++++++++++++++++++++++++++++++++Authorized keys from /home/ec2-user/.ssh/authorized_keys for user ec2-user++++++++++++++++++++++++++++++++++++++++++++++
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
ci-info: | Keytype |                                       Fingerprint (sha256)                                      | Options |                   Comment                   |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
ci-info: | ssh-rsa | ae:e8:2c:e2:ec:35:41:56:b5:3c:a7:63:2c:2b:63:ed:24:de:2e:17:25:e8:ab:13:06:02:5f:bb:80:ec:5a:dd |    -    | packer_69db32b1-6078-f7c7-ab9a-486e4b8b0f63 |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
<14>Apr 12 18:43:25 cloud-init: #############################################################
<14>Apr 12 18:43:25 cloud-init: -----BEGIN SSH HOST KEY FINGERPRINTS-----
<14>Apr 12 18:43:25 cloud-init: 256 SHA256:n8n8Mheu5Fr+R5Y9WHEwPwk4t9MQHyepWgO6xEr9HCg root@ip-10-0-1-192.ec2.internal (ECDSA)
<14>Apr 12 18:43:25 cloud-init: 256 SHA256:OhM58Gx7jrqGPfjKm5EOG1vrBkZS9yKomO7l7lTXe+g root@ip-10-0-1-192.ec2.internal (ED25519)
<14>Apr 12 18:43:25 cloud-init: -----END SSH HOST KEY FINGERPRINTS-----
<14>Apr 12 18:43:25 cloud-init: #############################################################
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMY0bCZKcBeIQwV9ZP5pEu9t8ZdyUrFHQ8JpUUxXvQkZdk3c48wzxXmviTbYfdLwTVj6V5PUAEtojzoovp7IIyU= root@ip-10-0-1-192.ec2.internal
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBE01uN+L6OXRyi0l9vF81wmyvJ7IHaUW4AVFaqyUZ24 root@ip-10-0-1-192.ec2.internal
-----END SSH HOST KEY KEYS-----
[  227.257744] cloud-init[1800]: Cloud-init v. 22.2.2 finished at Sun, 12 Apr 2026 18:43:25 +0000. Datasource DataSourceEc2.  Up 227.25 seconds
[  230.815554] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  230.816623] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  230.817619] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  230.818839] pci 0000:00:06.0: enabling Extended Tags
[  230.820627] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  230.821662] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  230.822678] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  230.840475] ena 0000:00:06.0: ENA device version: 0.10
[  230.841250] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  230.934207] ena 0000:00:06.0: ENA Large LLQ is disabled
[  230.946552] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:02:41:64:a0:ff
[  230.994416] ena 0000:00:06.0 ens6: renamed from eth0
[  231.252505] zram_generator::config[4376]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  231.520144] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  264.625989] zram_generator::config[5589]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  265.468671] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  265.470020] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  326.906454] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6644)
[  327.736406] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6666)
[  329.536337] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6688)
[  331.156375] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6711)
[  331.986324] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6771)
[  382.682520] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  383.702209] ena 0000:00:06.0: ENA device version: 0.10
[  383.703015] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  383.803600] ena 0000:00:06.0: ENA Large LLQ is disabled
[  383.815844] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:02:41:64:a0:ff
[  383.826433] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  383.829506] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  383.971822] zram_generator::config[7874]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  960.591831] zram_generator::config[38220]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[  961.464913] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  961.466433] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1113.093144] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:46684)
[ 1159.642850] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:49055)
[ 1223.851592] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1224.864967] ena 0000:00:06.0: ENA device version: 0.10
[ 1224.865751] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1224.966978] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1224.980025] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:02:41:64:a0:ff
[ 1225.019941] ena 0000:00:06.0 ens6: renamed from eth0
[ 1225.051889] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1225.053963] IPv6: ADDRCONF(NETDEV_CHANGE): ens6: link becomes ready
[ 1225.267561] zram_generator::config[52757]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1254.321518] zram_generator::config[53486]: zram0: system has too much memory (5027MB), limit is 800MB, ignoring.
[ 1255.184370] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1255.185695] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

All instance-logs files

total 172
drwxr-xr-x  2 runner runner  4096 Apr 12 19:04 .
drwxr-xr-x 18 runner runner  4096 Apr 12 18:44 ..
-rw-r--r--  1 runner runner  1426 Apr 12 19:04 receiver-build-listing.log
-rw-r--r--  1 runner runner 32733 Apr 12 19:03 receiver-console-output.log
-rw-r--r--  1 runner runner  1498 Apr 12 19:04 receiver-dmesg-crashes.log
-rw-r--r--  1 runner runner   538 Apr 12 19:04 receiver-echo-server.log
-rw-r--r--  1 runner runner  1049 Apr 12 19:04 receiver-network-interfaces.log
-rw-r--r--  1 runner runner  6055 Apr 12 18:44 receiver-networking-diag-baseline.txt
-rw-r--r--  1 runner runner   821 Apr 12 19:03 receiver-ssm-failure.log
-rw-r--r--  1 runner runner   294 Apr 12 19:04 receiver-test-client-iperf.log
-rw-r--r--  1 runner runner  8237 Apr 12 19:04 receiver-user-data.log
-rw-r--r--  1 runner runner  1426 Apr 12 19:04 sender-build-listing.log
-rw-r--r--  1 runner runner 33280 Apr 12 19:03 sender-console-output.log
-rw-r--r--  1 runner runner  1413 Apr 12 19:04 sender-dmesg-crashes.log
-rw-r--r--  1 runner runner   538 Apr 12 19:04 sender-echo-server.log
-rw-r--r--  1 runner runner  1051 Apr 12 19:04 sender-network-interfaces.log
-rw-r--r--  1 runner runner  6178 Apr 12 18:44 sender-networking-diag-baseline.txt
-rw-r--r--  1 runner runner   176 Apr 12 18:59 sender-ssm-failure.log
-rw-r--r--  1 runner runner  3361 Apr 12 19:04 sender-test-client-iperf.log
-rw-r--r--  1 runner runner  5029 Apr 12 19:04 sender-test-client.log
-rw-r--r--  1 runner runner  8237 Apr 12 19:04 sender-user-data.log

@github-actions

Copy link
Copy Markdown

❌ Integration Tests Failed (Run 24313040593)

Branch: 36/merge | Commit: fa28c6d0

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
  • tier4-jumbo-echo.xml: 1 tests, 1 failures, skipped
    FAIL: ENI bind failed on receiver instance
    

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
✅ DPDK UDP socket bound to 10.0.1.77:9000 (MAC: 02:f8:ee:05:37:c7)
echo listening on 10.0.1.77: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.54:9000 (MAC: 02:02:41:64:a0:ff)
echo listening on 10.0.1.54: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.77:9000: 'arp-probe #1'
Test complete
[2026-04-12T18:52:09Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T18:52:09Z] INFO: Test: udp_send_receive
[2026-04-12T18:52:10Z] INFO: UDP send/receive succeeded
[2026-04-12T18:52:10Z] INFO: Test: echo_roundtrip
[2026-04-12T18:52:11Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T18:52:11Z] INFO: Test: payload_integrity
[2026-04-12T18:52:11Z] INFO: Response received, checking payload match...
[2026-04-12T18:52:11Z] INFO: Payload integrity verified (found in response)
[2026-04-12T18:52:11Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-12T18:52:11Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-12T18:58:13Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-12T18:58:13Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-12T18:58:13Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-12T18:58:13Z] 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.77:9000 (MAC: 02:f8:ee:05:37:c7)
echo listening on 10.0.1.77: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.54:9000 (MAC: 02:02:41:64:a0:ff)
echo listening on 10.0.1.54:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-12T18:45:04Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.77:9000
Bind address: 10.0.1.54: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.54:32768 (MAC: 02:02:41:64:a0:ff)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.77:9000: 'arp-probe #1'
Test complete
[2026-04-12T18:45:05Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T18:45:05Z] INFO: Test: udp_send_receive
[2026-04-12T18:45:07Z] INFO: UDP send/receive succeeded
[2026-04-12T18:45:07Z] INFO: Test: echo_roundtrip
[2026-04-12T18:45:09Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T18:45:09Z] INFO: Test: payload_integrity
[2026-04-12T18:45:10Z] INFO: Response received, checking payload match...
[2026-04-12T18:45:10Z] INFO: Payload integrity verified (found in response)
[2026-04-12T18:45:10Z] INFO: Test: jumbo_diagnostics
[2026-04-12T18:45:10Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-12T18:45:10Z] INFO: Interface MTU:
  1500
  9001
  65536
[2026-04-12T18:45:10Z] INFO:   docker0: MTU=1500
[2026-04-12T18:45:10Z] INFO:   ens5: MTU=9001
[2026-04-12T18:45:10Z] INFO:   lo: MTU=65536
[2026-04-12T18:45:10Z] 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-12T18:45:10Z] INFO: DPDK port config (from echo server log):
[2026-04-12T18:45:10Z] INFO:   (no MTU info in echo log)
[2026-04-12T18:45:10Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-12T18:45:10Z] INFO: Test: jumbo_echo_8000
[2026-04-12T18:45:11Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.77:9000
Bind address: 10.0.1.54: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.54:32768 (MAC: 02:02:41:64:a0:ff)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.77:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.77:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.77:9000 (expected 8000, OK)
Test complete
[2026-04-12T18:45:11Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-12T18:45:11Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-12T18:45:11Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-12T18:52:09Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.77: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.77:9000: 'arp-probe #1'
Test complete
[2026-04-12T18:52:09Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T18:52:09Z] INFO: Test: udp_send_receive
[2026-04-12T18:52:10Z] INFO: UDP send/receive succeeded
[2026-04-12T18:52:10Z] INFO: Test: echo_roundtrip
[2026-04-12T18:52:11Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T18:52:11Z] INFO: Test: payload_integrity
[2026-04-12T18:52:11Z] INFO: Response received, checking payload match...
[2026-04-12T18:52:11Z] INFO: Payload integrity verified (found in response)
[2026-04-12T18:52:11Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-12T18:52:11Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-12T18:58:11Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-12T18:58:11Z] INFO: Local IP: 10.0.1.54, Peer IP: 10.0.1.77, Port: 9000
[2026-04-12T18:58:11Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.150       0x1         0x2         02:59:b4:6c:04:45     *        ens5
10.0.1.54        0x1         0x2         02:02:41:64:a0:ff     *        ens5
10.0.1.55        0x1         0x2         02:7b:d8:3f:e7:85     *        ens5
10.0.1.77        0x1         0x2         02:f8:ee:05:37:c7     *        ens5
10.0.1.1         0x1         0x2         02:0b:18:51:5f:69     *        ens5
[2026-04-12T18:58:11Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-12T18:58:11Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-12T18:58:11Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1927104 Apr 12 18:43 /opt/dpdk-stdlib/target/release/test-client
[2026-04-12T18:58:11Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.77 --port 9000 --bind-ip 10.0.1.54 --count 10 --delay 200
[2026-04-12T18:58:13Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.77:9000
Bind address: 10.0.1.54: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.54:32768 (MAC: 02:02:41:64:a0:ff)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.77:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-12T18:58:13Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-12T18:58:13Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-12T18:58:13Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-12T18:58:13Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c7377dcc6e4ba941 (receiver)
Command ID: 00552ade-33a7-4a2d-a0ea-12bd4b378318

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c7377dcc6e4ba941 (receiver)
Command ID: 07407eb4-b421-43bb-a93d-cfa6eb88a3ab

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c7377dcc6e4ba941 (receiver)
Command ID: 95cf3716-8f73-49e1-9919-ad50f3e1cff1

=== STDOUT ===


=== STDERR ===


=== Polling timeout 120s (SSM timeout: 90s, command: cd /opt/dpdk-stdlib && bash scripts/integration-tests/configure-eni.sh --action bind) ===
Status: InProgress
Instance: i-0c7377dcc6e4ba941 (receiver)
Command ID: 345b5a08-5c13-4bfc-87ff-442f69bc78a5

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-005f5f2ed978ac8e2 (sender)
Command ID: 610d75f5-dabd-481a-b4e8-b8aff0c3f146

=== 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:11:18:a6:59:45 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0a1f7b267fc490021
    altname device-number-0.0
    inet 10.0.1.9/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2110sec preferred_lft 2110sec
    inet6 fe80::11:18ff:fea6:5945/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:9d:0d:fb:de brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:2a:c2:c6:16:85 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-056a43d49f6a0393f
    altname device-number-0.0
    inet 10.0.1.192/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2133sec preferred_lft 2133sec
    inet6 fe80::2a:c2ff:fec6:1685/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:34:2b:8d:6e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-12T18:44:24Z
hostname: ip-10-0-1-9.ec2.internal
kernel: 6.1.166-197.305.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:11:18:a6:59:45 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0a1f7b267fc490021
    altname device-number-0.0
    inet 10.0.1.9/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3320sec preferred_lft 3320sec
    inet6 fe80::11:18ff:fea6:5945/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:9d:0d:fb:de brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:0b:18:51:5f:69 REACHABLE 
10.0.1.55 dev ens5 lladdr 02:7b:d8:3f:e7:85 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:11:18:a6:59:45/ 02:f8:ee:05:37:c7/ 

--- ENI: 02:11:18:a6:59:45/ ---
  device-number: 0
  local-ipv4s: 10.0.1.9
  subnet-id: subnet-0de86fcc90889e2f5
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:f8:ee:05:37:c7/ ---
  device-number: 1
  local-ipv4s: 10.0.1.77
  subnet-id: subnet-0de86fcc90889e2f5
  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:0b:18:51:5f:69 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.9 ens5
Unicast reply from 10.0.1.1 [02:0B:18:51:5F:69]  0.534ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.061007] x2apic enabled
[    0.068500] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074754] audit: type=2000 audit(1776019178.849:1): state=initialized audit_enabled=0 res=1
[    0.077206] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.101422] ACPI: Interpreter enabled
[    0.101422] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.127811] pci 0000:00:05.0: enabling Extended Tags
[    0.159597] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.188934] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.280459] IPI shorthand broadcast: enabled
[    0.280523] AES CTR mode by8 optimization enabled
[    2.625152] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.722499] VFIO - User Level meta-driver version: 0.3
[    3.952084] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.963554] ena 0000:00:05.0: ENA device version: 0.10
[    3.964329] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.065009] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.076882] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:11:18:a6:59:45
[    4.145047] ena 0000:00:05.0 ens5: renamed from eth0
[    5.271533] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  231.221081] pci 0000:00:06.0: enabling Extended Tags
[  231.224911] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  231.237565] ena 0000:00:06.0: ENA device version: 0.10
[  231.238341] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  231.336311] ena 0000:00:06.0: ENA Large LLQ is disabled
[  231.348863] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:f8:ee:05:37:c7
[  231.422181] ena 0000:00:06.0 ens6: renamed from eth0
[  231.764502] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  272.146118] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  272.147457] 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-12T18:44:16Z
hostname: ip-10-0-1-192.ec2.internal
kernel: 6.1.166-197.305.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:2a:c2:c6:16:85 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-056a43d49f6a0393f
    altname device-number-0.0
    inet 10.0.1.192/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3328sec preferred_lft 3328sec
    inet6 fe80::2a:c2ff:fec6:1685/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:34:2b:8d:6e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.150 dev ens5 lladdr 02:59:b4:6c:04:45 REACHABLE 
10.0.1.55 dev ens5 lladdr 02:7b:d8:3f:e7:85 REACHABLE 
10.0.1.1 dev ens5 lladdr 02:0b:18:51:5f:69 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:02:41:64:a0:ff/ 02:2a:c2:c6:16:85/ 

--- ENI: 02:02:41:64:a0:ff/ ---
  device-number: 1
  local-ipv4s: 10.0.1.54
  subnet-id: subnet-0de86fcc90889e2f5
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:2a:c2:c6:16:85/ ---
  device-number: 0
  local-ipv4s: 10.0.1.192
  subnet-id: subnet-0de86fcc90889e2f5
  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:0b:18:51:5f:69 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.192 ens5
Unicast reply from 10.0.1.1 [02:0B:18:51:5F:69]  0.538ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.073322] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.079310] audit: type=2000 audit(1776019178.429:1): state=initialized audit_enabled=0 res=1
[    0.081710] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.106692] ACPI: Interpreter enabled
[    0.106692] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.131609] pci 0000:00:05.0: enabling Extended Tags
[    0.154302] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.183636] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.278399] IPI shorthand broadcast: enabled
[    0.278469] AES CTR mode by8 optimization enabled
[    2.675256] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.711348] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.790726] VFIO - User Level meta-driver version: 0.3
[    3.814937] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.825761] ena 0000:00:05.0: ENA device version: 0.10
[    3.826491] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.971574] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.984689] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:2a:c2:c6:16:85
[    4.085259] ena 0000:00:05.0 ens5: renamed from eth0
[    5.212885] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  230.818839] pci 0000:00:06.0: enabling Extended Tags
[  230.822678] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  230.840475] ena 0000:00:06.0: ENA device version: 0.10
[  230.841250] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  230.934207] ena 0000:00:06.0: ENA Large LLQ is disabled
[  230.946552] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:02:41:64:a0:ff
[  230.994416] ena 0000:00:06.0 ens6: renamed from eth0
[  231.520144] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  265.468671] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  265.470020] 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.074733] pid_max: default: 32768 minimum: 301
[    0.129904] iommu: Default domain type: Translated 
[    0.130634] NetLabel:  unlabeled traffic allowed by default
[    0.144104] PCI: CLS 0 bytes, default 64
[    0.207555] nvme nvme0: 2/0/0 default/read/poll queues
[    0.451033] 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.451125] systemd[1]: No hostname configured, using default hostname.
[    0.548258] systemd[1]: Queued start job for default target initrd.target.
[    1.765676] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.629552] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  310.523588] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6708)
[  734.827837] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22750)

sender-dmesg-crashes.log

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

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

[  231.221081] pci 0000:00:06.0: enabling Extended Tags
[  231.222907] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  231.223925] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  231.224911] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  231.237565] ena 0000:00:06.0: ENA device version: 0.10
[  231.238341] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  231.336311] ena 0000:00:06.0: ENA Large LLQ is disabled
[  231.348863] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:f8:ee:05:37:c7
[  231.422181] ena 0000:00:06.0 ens6: renamed from eth0
[  231.764502] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  272.146118] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  272.147457] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  310.523588] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6708)
[  475.780023] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  476.788801] ena 0000:00:06.0: ENA device version: 0.10
[  476.789586] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  476.888850] ena 0000:00:06.0: ENA Large LLQ is disabled
[  476.900612] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:f8:ee:05:37:c7
[  476.910045] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  604.801101] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  604.802405] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  734.827837] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22750)
[  812.638070] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  813.651081] ena 0000:00:06.0: ENA device version: 0.10
[  813.651865] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  813.744193] ena 0000:00:06.0: ENA Large LLQ is disabled
[  813.756006] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:f8:ee:05:37:c7
[  813.766046] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1262.021797] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1262.023130] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

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

[  230.934207] ena 0000:00:06.0: ENA Large LLQ is disabled
[  230.946552] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:02:41:64:a0:ff
[  230.994416] ena 0000:00:06.0 ens6: renamed from eth0
[  231.520144] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  265.468671] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  265.470020] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  326.906454] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6644)
[  327.736406] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6666)
[  329.536337] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6688)
[  331.156375] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6711)
[  331.986324] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6771)
[  382.682520] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  383.702209] ena 0000:00:06.0: ENA device version: 0.10
[  383.703015] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  383.803600] ena 0000:00:06.0: ENA Large LLQ is disabled
[  383.815844] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:02:41:64:a0:ff
[  383.826433] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  961.464913] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  961.466433] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1113.093144] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:46684)
[ 1159.642850] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:49055)
[ 1223.851592] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1224.864967] ena 0000:00:06.0: ENA device version: 0.10
[ 1224.865751] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1224.966978] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1224.980025] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:02:41:64:a0:ff
[ 1225.019941] ena 0000:00:06.0 ens6: renamed from eth0
[ 1225.051889] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1255.184370] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1255.185695] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0c8f4da0b698d8faf (DPDK ENI: 10.0.1.173)
  • Receiver: i-052127f169cad66e8 (DPDK ENI: 10.0.1.119)
  • 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 24314062570)

Branch: 36/merge | Commit: e7fc550f

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.119:9000 (MAC: 02:1b:8e:75:de:89)
echo listening on 10.0.1.119: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.173:9000 (MAC: 02:6f:b8:12:43:5d)
echo listening on 10.0.1.173: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.119:9000: 'arp-probe #1'
Test complete
[2026-04-12T19:20:03Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T19:20:03Z] INFO: Test: udp_send_receive
[2026-04-12T19:20:04Z] INFO: UDP send/receive succeeded
[2026-04-12T19:20:04Z] INFO: Test: echo_roundtrip
[2026-04-12T19:20:05Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T19:20:05Z] INFO: Test: payload_integrity
[2026-04-12T19:20:05Z] INFO: Response received, checking payload match...
[2026-04-12T19:20:05Z] INFO: Payload integrity verified (found in response)
[2026-04-12T19:20:05Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-12T19:20:05Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-12T19:25:33Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-12T19:25:33Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-12T19:25:33Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-12T19:25:33Z] 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.119:9000 (MAC: 02:1b:8e:75:de:89)
echo listening on 10.0.1.119: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.173:9000 (MAC: 02:6f:b8:12:43:5d)
echo listening on 10.0.1.173:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-12T19:16:38Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.119:9000
Bind address: 10.0.1.173: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.173:32768 (MAC: 02:6f:b8:12:43:5d)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.119:9000: 'arp-probe #1'
Test complete
[2026-04-12T19:16:39Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T19:16:39Z] INFO: Test: udp_send_receive
[2026-04-12T19:16:41Z] INFO: UDP send/receive succeeded
[2026-04-12T19:16:41Z] INFO: Test: echo_roundtrip
[2026-04-12T19:16:42Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T19:16:42Z] INFO: Test: payload_integrity
[2026-04-12T19:16:43Z] INFO: Response received, checking payload match...
[2026-04-12T19:16:43Z] INFO: Payload integrity verified (found in response)
[2026-04-12T19:16:43Z] INFO: Test: jumbo_diagnostics
[2026-04-12T19:16:43Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-12T19:16:43Z] INFO: Interface MTU:
  1500
  9001
  65536
[2026-04-12T19:16:43Z] INFO:   docker0: MTU=1500
[2026-04-12T19:16:43Z] INFO:   ens5: MTU=9001
[2026-04-12T19:16:43Z] INFO:   lo: MTU=65536
[2026-04-12T19:16:43Z] 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-12T19:16:43Z] INFO: DPDK port config (from echo server log):
[2026-04-12T19:16:43Z] INFO:   (no MTU info in echo log)
[2026-04-12T19:16:43Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-12T19:16:43Z] INFO: Test: jumbo_echo_8000
[2026-04-12T19:16:45Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.119:9000
Bind address: 10.0.1.173: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.173:32768 (MAC: 02:6f:b8:12:43:5d)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.119:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.119:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.119:9000 (expected 8000, OK)
Test complete
[2026-04-12T19:16:45Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-12T19:16:45Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-12T19:16:45Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-12T19:20:02Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.119: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.119:9000: 'arp-probe #1'
Test complete
[2026-04-12T19:20:03Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-12T19:20:03Z] INFO: Test: udp_send_receive
[2026-04-12T19:20:04Z] INFO: UDP send/receive succeeded
[2026-04-12T19:20:04Z] INFO: Test: echo_roundtrip
[2026-04-12T19:20:05Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-12T19:20:05Z] INFO: Test: payload_integrity
[2026-04-12T19:20:05Z] INFO: Response received, checking payload match...
[2026-04-12T19:20:05Z] INFO: Payload integrity verified (found in response)
[2026-04-12T19:20:05Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-12T19:20:05Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-12T19:25:30Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-12T19:25:30Z] INFO: Local IP: 10.0.1.173, Peer IP: 10.0.1.119, Port: 9000
[2026-04-12T19:25:30Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.53        0x1         0x2         02:9b:7d:b3:9a:5d     *        ens5
10.0.1.187       0x1         0x2         02:4d:c8:8a:19:23     *        ens5
10.0.1.1         0x1         0x2         02:4d:b0:f3:52:b7     *        ens5
10.0.1.119       0x1         0x2         02:1b:8e:75:de:89     *        ens5
10.0.1.173       0x1         0x2         02:6f:b8:12:43:5d     *        ens5
[2026-04-12T19:25:30Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-12T19:25:30Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-12T19:25:30Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1927104 Apr 12 19:14 /opt/dpdk-stdlib/target/release/test-client
[2026-04-12T19:25:30Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.119 --port 9000 --bind-ip 10.0.1.173 --count 10 --delay 200
[2026-04-12T19:25:33Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.119:9000
Bind address: 10.0.1.173: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.173:32768 (MAC: 02:6f:b8:12:43:5d)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.119:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-12T19:25:33Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-12T19:25:33Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-12T19:25:33Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-12T19:25:33Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-052127f169cad66e8 (receiver)
Command ID: b4a8dab6-bf62-4d47-9142-c178eb3f5937

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-052127f169cad66e8 (receiver)
Command ID: 9a7226cf-f470-421a-a355-3de5aebdf7b2

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-052127f169cad66e8 (receiver)
Command ID: 3188eaf6-0078-4443-ab47-998d3d1d61be

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-052127f169cad66e8 (receiver)
Command ID: fcac4941-e458-471e-8a29-77c0e1a81303

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c8f4da0b698d8faf (sender)
Command ID: 01907472-0767-4938-b869-2345184df30c

=== 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:bb:2a:47:a4:0f brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0d4fee82bcc191e25
    altname device-number-0.0
    inet 10.0.1.198/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2389sec preferred_lft 2389sec
    inet6 fe80::bb:2aff:fe47:a40f/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:5f:c0:a7:de brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:5c:e5:a6:09:7d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0d12b96b1d7c98687
    altname device-number-0.0
    inet 10.0.1.254/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2413sec preferred_lft 2413sec
    inet6 fe80::5c:e5ff:fea6:97d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:92:da:55:29 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-12T19:15:59Z
hostname: ip-10-0-1-198.ec2.internal
kernel: 6.1.166-197.305.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:bb:2a:47:a4:0f brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0d4fee82bcc191e25
    altname device-number-0.0
    inet 10.0.1.198/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3321sec preferred_lft 3321sec
    inet6 fe80::bb:2aff:fe47:a40f/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:5f:c0:a7:de brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:4d:b0:f3:52:b7 REACHABLE 
10.0.1.187 dev ens5 lladdr 02:4d:c8:8a:19:23 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:1b:8e:75:de:89/ 02:bb:2a:47:a4:0f/ 

--- ENI: 02:1b:8e:75:de:89/ ---
  device-number: 1
  local-ipv4s: 10.0.1.119
  subnet-id: subnet-0ecc3128a384be704
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:bb:2a:47:a4:0f/ ---
  device-number: 0
  local-ipv4s: 10.0.1.198
  subnet-id: subnet-0ecc3128a384be704
  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:4d:b0:f3:52:b7 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.198 ens5
Unicast reply from 10.0.1.1 [02:4D:B0:F3:52:B7]  0.546ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Apr 12 19:15 .
drwxr-xr-x. 14 root root     3100 Apr 12 19:15 ..
crw-------.  1 root root 243,   0 Apr 12 19:15 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 12 19:11 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.069267] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.075446] audit: type=2000 audit(1776021074.086:1): state=initialized audit_enabled=0 res=1
[    0.077842] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.102441] ACPI: Interpreter enabled
[    0.102441] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.126587] pci 0000:00:05.0: enabling Extended Tags
[    0.149961] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.179476] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.273392] IPI shorthand broadcast: enabled
[    0.273454] AES CTR mode by8 optimization enabled
[    2.505207] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.547116] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.600796] VFIO - User Level meta-driver version: 0.3
[    3.606057] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.625500] ena 0000:00:05.0: ENA device version: 0.10
[    3.626254] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.733166] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.745813] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:bb:2a:47:a4:0f
[    3.795255] ena 0000:00:05.0 ens5: renamed from eth0
[    4.957773] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  231.325692] pci 0000:00:06.0: enabling Extended Tags
[  231.329500] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  231.342234] ena 0000:00:06.0: ENA device version: 0.10
[  231.343021] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  231.444251] ena 0000:00:06.0: ENA Large LLQ is disabled
[  231.456431] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:1b:8e:75:de:89
[  231.504545] ena 0000:00:06.0 ens6: renamed from eth0
[  231.782694] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  271.635134] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  271.636462] 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-12T19:15:51Z
hostname: ip-10-0-1-254.ec2.internal
kernel: 6.1.166-197.305.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:e5:a6:09:7d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0d12b96b1d7c98687
    altname device-number-0.0
    inet 10.0.1.254/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3330sec preferred_lft 3330sec
    inet6 fe80::5c:e5ff:fea6:97d/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:92:da:55:29 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.187 dev ens5 lladdr 02:4d:c8:8a:19:23 REACHABLE 
10.0.1.53 dev ens5 lladdr 02:9b:7d:b3:9a:5d REACHABLE 
10.0.1.1 dev ens5 lladdr 02:4d:b0:f3:52:b7 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:5c:e5:a6:09:7d/ 02:6f:b8:12:43:5d/ 

--- ENI: 02:5c:e5:a6:09:7d/ ---
  device-number: 0
  local-ipv4s: 10.0.1.254
  subnet-id: subnet-0ecc3128a384be704
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:6f:b8:12:43:5d/ ---
  device-number: 1
  local-ipv4s: 10.0.1.173
  subnet-id: subnet-0ecc3128a384be704
  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:4d:b0:f3:52:b7 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.254 ens5
Unicast reply from 10.0.1.1 [02:4D:B0:F3:52:B7]  0.536ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Apr 12 19:15 .
drwxr-xr-x. 14 root root     3100 Apr 12 19:15 ..
crw-------.  1 root root 243,   0 Apr 12 19:15 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 12 19:11 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.069915] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.076114] audit: type=2000 audit(1776021074.502:1): state=initialized audit_enabled=0 res=1
[    0.078503] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.103061] ACPI: Interpreter enabled
[    0.103061] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.127269] pci 0000:00:05.0: enabling Extended Tags
[    0.150388] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.179913] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.275641] IPI shorthand broadcast: enabled
[    0.275711] AES CTR mode by8 optimization enabled
[    2.565228] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.611419] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.650875] VFIO - User Level meta-driver version: 0.3
[    3.724920] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.735135] ena 0000:00:05.0: ENA device version: 0.10
[    3.735882] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.862504] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.875555] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:5c:e5:a6:09:7d
[    3.935104] ena 0000:00:05.0 ens5: renamed from eth0
[    5.129986] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  232.085477] pci 0000:00:06.0: enabling Extended Tags
[  232.089241] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  232.102421] ena 0000:00:06.0: ENA device version: 0.10
[  232.103216] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  232.203454] ena 0000:00:06.0: ENA Large LLQ is disabled
[  232.215699] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:6f:b8:12:43:5d
[  232.293529] ena 0000:00:06.0 ens6: renamed from eth0
[  232.592557] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  264.327857] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  264.329183] 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.075433] pid_max: default: 32768 minimum: 301
[    0.128709] iommu: Default domain type: Translated 
[    0.129451] NetLabel:  unlabeled traffic allowed by default
[    0.135433] PCI: CLS 0 bytes, default 64
[    0.198358] nvme nvme0: 2/0/0 default/read/poll queues
[    0.441686] 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.441783] systemd[1]: No hostname configured, using default hostname.
[    0.529242] systemd[1]: Queued start job for default target initrd.target.
[    1.722100] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.032965] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  308.976872] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6645)
[  513.146331] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:9974)
[ 1076.894873] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:19459)

sender-dmesg-crashes.log

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

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

[  231.329500] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  231.342234] ena 0000:00:06.0: ENA device version: 0.10
[  231.343021] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  231.444251] ena 0000:00:06.0: ENA Large LLQ is disabled
[  231.456431] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:1b:8e:75:de:89
[  231.504545] ena 0000:00:06.0 ens6: renamed from eth0
[  231.782694] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  271.635134] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  271.636462] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  308.976872] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6645)
[  460.720362] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  461.733542] ena 0000:00:06.0: ENA device version: 0.10
[  461.734327] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  461.833909] ena 0000:00:06.0: ENA Large LLQ is disabled
[  461.845828] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:1b:8e:75:de:89
[  461.903938] ena 0000:00:06.0 ens6: renamed from eth0
[  461.975959] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  481.558060] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  481.559407] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  513.146331] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:9974)
[  588.508247] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  589.521393] ena 0000:00:06.0: ENA device version: 0.10
[  589.522188] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  589.623405] ena 0000:00:06.0: ENA Large LLQ is disabled
[  589.635529] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:1b:8e:75:de:89
[  589.683630] ena 0000:00:06.0 ens6: renamed from eth0
[  589.735428] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1002.027246] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1002.028599] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1076.894873] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:19459)

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

[  264.327857] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  264.329183] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  324.505456] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6908)
[  325.315371] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6929)
[  327.135376] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6951)
[  328.735428] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6974)
[  329.575340] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7034)
[  379.937679] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  380.950709] ena 0000:00:06.0: ENA device version: 0.10
[  380.951488] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  381.052438] ena 0000:00:06.0: ENA Large LLQ is disabled
[  381.064662] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:6f:b8:12:43:5d
[  381.074738] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  609.014518] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  609.015850] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  856.651731] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:33291)
[  901.411338] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:35831)
[  963.858956] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  964.870349] ena 0000:00:06.0: ENA device version: 0.10
[  964.871109] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  964.968300] ena 0000:00:06.0: ENA Large LLQ is disabled
[  964.980489] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:6f:b8:12:43:5d
[  965.058393] ena 0000:00:06.0 ens6: renamed from eth0
[  965.090073] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  994.654513] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  994.655822] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1092.440077] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:41520)
[ 1093.259947] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:41540)
[ 1095.089960] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:41563)
[ 1096.889913] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:41823)

@gspivey
gspivey merged commit 3a5b9b8 into main Apr 12, 2026
4 checks passed
@gspivey
gspivey deleted the claude/roadmap-feature-testing-X8mVR branch April 12, 2026 23:40
gspivey pushed a commit that referenced this pull request Jun 9, 2026
Performance test results from GH Actions run 27177086098.
No regressions — native-dpdk shows 0% drop at 350K PPS across
all packet sizes. rust-dpdk at 700K/64B: 698,303 RX (0.2% drop),
identical to Run #34 baseline.

Mark roadmap item 9 (dpdk-stdlib-quic: Provider and builder)
complete with PR #73.
gspivey pushed a commit that referenced this pull request Aug 16, 2026
ROADMAP item #36: EC2 integration test CI jobs with non-blocking TCP.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Implements ROADMAP item #36: **dpdk-stdlib-tcp: EC2 CI jobs and remove
continue-on-error gate**.

Spec: `.kiro/specs/tcp-support/` tasks 15.4, 16.1

### Changes

**`integration-tests.yml`:**
- Added `tcp-synthetic-perf` job: runs `tcp-synthetic-bench` (mock
PacketBackend, no AWS needed) on every PR. Posts markdown results as a
PR comment. Uploads results as artifacts with 30-day retention.
- Added `tcp-integration-tests` job with `continue-on-error: true`: runs
the full TCP test suite (tier1-tcp-handshake, tier1-tcp-echo,
tier1-tcp-shutdown, tier2-tcp-retransmit, tier2-tcp-flow-control,
tier3-tcp-kernel-interop, tier3-tcp-std-parity) on EC2. Uses
`dorny/test-reporter` for PR checks UI. Posts structured PR comments
with pass/fail/skip counts, app logs, and network state. Uploads JUnit
XML + instance logs with 30-day retention.

**`scripts/run-integration-tests.sh`:**
- Added `--tier tcp-full` option for running the complete TCP test
suite.
- Added `run_tcp_full()` orchestrator function that sequences all TCP
test tiers with proper ENI bind/unbind between each.
- Added `_run_tcp_dpdk_pair()` helper (server/client roles) and
`_run_tcp_dpdk_pair_lr()` helper (listener/sender roles) for DPDK↔DPDK
tests.
- Added `_run_tcp_kernel_interop()` helper for kernel↔DPDK tests.

### Task 16.1 (gate removal)

The `continue-on-error: true` gate stays until ≥10/10 recent scheduled
CI runs pass all MVP requirements. Recent runs show TCP tests are not
yet passing consistently — gate removal will be a follow-up once the TCP
stack matures.

### Tests

- `cargo build && cargo test` pass locally (all 394+ tests, 0 failures)
- This is a CI/scripts-only change — no Rust code modified

---------

Co-authored-by: Agent Router <agent@agent-router.dev>
gspivey added a commit that referenced this pull request Aug 18, 2026
## Summary

Marks ROADMAP item #36 (**dpdk-stdlib-tcp: EC2 CI jobs and remove
continue-on-error gate**) as complete.

### Context

The implementation was delivered in PR #120 (merged to development),
which added:
- `tcp-integration-tests` job with `continue-on-error: true`
- PR comments with pass/fail/skip counts, app logs, network state
- JUnit XML artifacts with 30-day retention
- `dorny/test-reporter` for PR checks UI

However, PR #120 did not update ROADMAP.md or tasks.md. This PR closes
that gap.

### Changes

- **ROADMAP.md**: Mark item #36 as `[x] Complete · PR: #120`
- **tasks.md**: Mark task 15.4 as complete

### Task 16.1 (gate removal)

Task 16.1 (remove `continue-on-error: true`) remains unchecked. The
prerequisite (≥10/10 recent TCP CI runs passing) is not yet met — recent
runs show TCP integration tests still failing. Gate removal will happen
in a future session once the TCP stack matures.

### Tests

- `cargo build && cargo test` pass (all tests ok, 0 failures)
- Docs-only change — no Rust code modified

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