Skip to content

feat: add 8500B jumbo frame packet size to perf tests - #31

Merged
gspivey merged 19 commits into
mainfrom
claude/add-jumbo-frame-packets-xAGz6
Apr 10, 2026
Merged

gspivey merged 19 commits into
mainfrom
claude/add-jumbo-frame-packets-xAGz6

Conversation

@gspivey

@gspivey gspivey commented Mar 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add 8500B to default TRex packet sizes (64,512,1400,8500) to benchmark jumbo frame throughput
  • Increase echo app recv buffers from 2048 to 10000 bytes for jumbo payloads
  • Set MTU 9001 on DUT kernel interfaces in dut_bind_kernel()
  • Add --max-pkt-len=9100 --mbuf-size=10240 to testpmd for jumbo frame support
  • Add --mbuf-factor 8 to TRex startup for large packet memory allocation

Motivation

With 1400B packets we're hitting 6.5-7 Gbps. Jumbo frames (8500B) should dramatically increase bandwidth by amortizing per-packet overhead over ~6x more payload. Theoretical max on c5n.2xlarge at 25 Gbps = ~367K PPS at 8500B.

Test plan

  • cargo build && cargo test — all 252 tests pass
  • Integration tests
  • Performance tests with 8500B packet size

https://claude.ai/code/session_01294ECCWxYiENcnK5HVVyoL

- Add 8500 to default TREX packet sizes (64,512,1400,8500)
- Increase echo app recv buffers from 2048 to 10000 bytes for jumbo payloads
- Set MTU 9001 on DUT kernel interfaces for jumbo frame support
- Add --max-pkt-len=9100 --mbuf-size=10240 to testpmd for jumbo frames
- Add --mbuf-factor 8 to TRex startup for large packet memory allocation

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-08a9eaca7f786ac57 (DPDK ENI: 10.0.1.156)
  • Receiver: i-0c80e75813bfd0c6a (DPDK ENI: 10.0.1.150)
  • Both instances SSM-ready.

@github-actions

Copy link
Copy Markdown

[CI] Stage: Summary

All tests PASSED.

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

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

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 23693401580)

Branch: 31/merge | Commit: 98bb6dbd

Test Results

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

Application Logs (last 20 lines)

receiver-echo-server.log

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

sender-echo-server.log

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

sender-test-client.log

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

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-28T20:49:26Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-28T20:49:26Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-28T20:49:26Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-28T20:49:26Z] 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.150:9000 (MAC: 02:a3:d1:78:26:6b)
echo listening on 10.0.1.150:9000
Shutting down gracefully...

sender-echo-server.log

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

sender-test-client.log

[2026-03-28T20:38:31Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.150:9000
Bind address: 10.0.1.156: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.156:32768 (MAC: 02:41:a0:d8:d8:3d)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.150:9000: 'arp-probe #1'
Test complete
[2026-03-28T20:38:32Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-28T20:38:32Z] INFO: Test: udp_send_receive
[2026-03-28T20:38:33Z] INFO: UDP send/receive succeeded
[2026-03-28T20:38:33Z] INFO: Test: echo_roundtrip
[2026-03-28T20:38:35Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-28T20:38:35Z] INFO: Test: payload_integrity
[2026-03-28T20:38:36Z] INFO: Response received, checking payload match...
[2026-03-28T20:38:36Z] INFO: Payload integrity verified (found in response)
[2026-03-28T20:38:36Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-28T20:38:36Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-28T20:44:33Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.150: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.150:9000: 'arp-probe #1'
Test complete
[2026-03-28T20:44:33Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-28T20:44:33Z] INFO: Test: udp_send_receive
[2026-03-28T20:44:34Z] INFO: UDP send/receive succeeded
[2026-03-28T20:44:34Z] INFO: Test: echo_roundtrip
[2026-03-28T20:44:35Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-28T20:44:35Z] INFO: Test: payload_integrity
[2026-03-28T20:44:35Z] INFO: Response received, checking payload match...
[2026-03-28T20:44:35Z] INFO: Payload integrity verified (found in response)
[2026-03-28T20:44:35Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-28T20:44:35Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-03-28T20:49:23Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-03-28T20:49:23Z] INFO: Local IP: 10.0.1.156, Peer IP: 10.0.1.150, Port: 9000
[2026-03-28T20:49:23Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.150       0x1         0x2         02:a3:d1:78:26:6b     *        ens5
10.0.1.156       0x1         0x2         02:41:a0:d8:d8:3d     *        ens5
10.0.1.215       0x1         0x2         02:0a:7b:27:d0:3f     *        ens5
10.0.1.1         0x1         0x2         02:e1:da:16:61:27     *        ens5
10.0.1.143       0x1         0x2         02:13:9f:fb:1a:f3     *        ens5
[2026-03-28T20:49:23Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-03-28T20:49:23Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-03-28T20:49:23Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1870432 Mar 28 20:36 /opt/dpdk-stdlib/target/release/test-client
[2026-03-28T20:49:23Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.150 --port 9000 --bind-ip 10.0.1.156 --count 10 --delay 200
[2026-03-28T20:49:26Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.150:9000
Bind address: 10.0.1.156: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.156:32768 (MAC: 02:41:a0:d8:d8:3d)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.150:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-28T20:49:26Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-28T20:49:26Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-28T20:49:26Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-28T20:49:26Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c80e75813bfd0c6a (receiver)
Command ID: 07ac4af9-bf5d-4c5d-a965-0878349d4252

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c80e75813bfd0c6a (receiver)
Command ID: 9ac0be49-d7c9-41b0-a5da-334d858e9a3e

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0c80e75813bfd0c6a (receiver)
Command ID: e53452aa-336e-415d-9792-9ac7ae40ea52

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-08a9eaca7f786ac57 (sender)
Command ID: 0b49c347-66a1-4996-ae04-eb300e6305a1

=== 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:d3:60:f5:c7:c1 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0f8da1227f6940ec3
    altname device-number-0.0
    inet 10.0.1.151/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2504sec preferred_lft 2504sec
    inet6 fe80::d3:60ff:fef5:c7c1/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:7c:9c:eb:ad brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 02:a3:d1:78:26:6b brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname ens6
    inet 10.0.1.150/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a3:d1ff:fe78:266b/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:cb:27:4f:c5:8b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-04c3bc9639cdddfd8
    altname device-number-0.0
    inet 10.0.1.168/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2526sec preferred_lft 2526sec
    inet6 fe80::cb:27ff:fe4f:c58b/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:9e:e6:36:df brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-28T20:37:51Z
hostname: ip-10-0-1-151.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:d3:60:f5:c7:c1 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0f8da1227f6940ec3
    altname device-number-0.0
    inet 10.0.1.151/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3381sec preferred_lft 3381sec
    inet6 fe80::d3:60ff:fef5:c7c1/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:7c:9c:eb:ad brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.26 dev ens5 lladdr 02:f3:4c:ce:d3:d1 STALE 
10.0.1.143 dev ens5 lladdr 02:13:9f:fb:1a:f3 REACHABLE 
10.0.1.1 dev ens5 lladdr 02:e1:da:16:61:27 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.151 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.151 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.151 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.151 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:a3:d1:78:26:6b/ 02:d3:60:f5:c7:c1/ 

--- ENI: 02:a3:d1:78:26:6b/ ---
  device-number: 1
  local-ipv4s: 10.0.1.150
  subnet-id: subnet-0d661e0eb834a9721
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:d3:60:f5:c7:c1/ ---
  device-number: 0
  local-ipv4s: 10.0.1.151
  subnet-id: subnet-0d661e0eb834a9721
  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:e1:da:16:61:27 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.151 ens5
Unicast reply from 10.0.1.1 [02:E1:DA:16:61:27]  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 Mar 28 20:37 .
drwxr-xr-x. 14 root root     3100 Mar 28 20:36 ..
crw-------.  1 root root 243,   0 Mar 28 20:37 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 28 20:34 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067296] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073526] audit: type=2000 audit(1774730047.414:1): state=initialized audit_enabled=0 res=1
[    0.074933] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099550] ACPI: Interpreter enabled
[    0.099550] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123570] pci 0000:00:05.0: enabling Extended Tags
[    0.156119] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.186532] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.249908] IPI shorthand broadcast: enabled
[    0.249969] AES CTR mode by8 optimization enabled
[    2.335144] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.376630] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.423110] VFIO - User Level meta-driver version: 0.3
[    3.551893] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.572622] ena 0000:00:05.0: ENA device version: 0.10
[    3.573423] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.675014] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.686800] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:d3:60:f5:c7:c1
[    3.845693] ena 0000:00:05.0 ens5: renamed from eth0
[    4.389583] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  170.754992] pci 0000:00:06.0: enabling Extended Tags
[  170.758860] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  170.771809] ena 0000:00:06.0: ENA device version: 0.10
[  170.772603] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  170.873838] ena 0000:00:06.0: ENA Large LLQ is disabled
[  170.886626] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:d1:78:26:6b
[  170.934786] ena 0000:00:06.0 ens6: renamed from eth0
[  171.269014] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  209.950179] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  209.951476] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

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

=== END DIAGNOSTICS ===

sender-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-28T20:37:43Z
hostname: ip-10-0-1-168.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:cb:27:4f:c5:8b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-04c3bc9639cdddfd8
    altname device-number-0.0
    inet 10.0.1.168/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3389sec preferred_lft 3389sec
    inet6 fe80::cb:27ff:fe4f:c58b/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:9e:e6:36:df 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.215 dev ens5 lladdr 02:0a:7b:27:d0:3f STALE 
10.0.1.1 dev ens5 lladdr 02:e1:da:16:61:27 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:41:a0:d8:d8:3d/ 02:cb:27:4f:c5:8b/ 

--- ENI: 02:41:a0:d8:d8:3d/ ---
  device-number: 1
  local-ipv4s: 10.0.1.156
  subnet-id: subnet-0d661e0eb834a9721
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:cb:27:4f:c5:8b/ ---
  device-number: 0
  local-ipv4s: 10.0.1.168
  subnet-id: subnet-0d661e0eb834a9721
  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:e1:da:16:61:27 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.168 ens5
Unicast reply from 10.0.1.1 [02:E1:DA:16:61:27]  0.533ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 28 20:37 .
drwxr-xr-x. 14 root root     3100 Mar 28 20:36 ..
crw-------.  1 root root 243,   0 Mar 28 20:37 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 28 20:34 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.066731] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.072972] audit: type=2000 audit(1774730046.630:1): state=initialized audit_enabled=0 res=1
[    0.074392] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099026] ACPI: Interpreter enabled
[    0.099026] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123017] pci 0000:00:05.0: enabling Extended Tags
[    0.155323] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.186110] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.250393] IPI shorthand broadcast: enabled
[    0.250455] AES CTR mode by8 optimization enabled
[    2.455113] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.501756] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.530865] VFIO - User Level meta-driver version: 0.3
[    3.753954] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.797906] ena 0000:00:05.0: ENA device version: 0.10
[    3.798661] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.910531] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.923136] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:cb:27:4f:c5:8b
[    3.965037] ena 0000:00:05.0 ens5: renamed from eth0
[    4.835927] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  170.034252] pci 0000:00:06.0: enabling Extended Tags
[  170.038073] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  170.050690] ena 0000:00:06.0: ENA device version: 0.10
[  170.051459] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  170.152663] ena 0000:00:06.0: ENA Large LLQ is disabled
[  170.165429] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:41:a0:d8:d8:3d
[  170.204828] ena 0000:00:06.0 ens6: renamed from eth0
[  170.521394] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  203.738890] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  203.740209] 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.073507] pid_max: default: 32768 minimum: 301
[    0.125639] iommu: Default domain type: Translated 
[    0.126362] NetLabel:  unlabeled traffic allowed by default
[    0.133507] PCI: CLS 0 bytes, default 64
[    0.205059] nvme nvme0: 2/0/0 default/read/poll queues
[    0.415251] 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.415348] systemd[1]: No hostname configured, using default hostname.
[    0.537216] systemd[1]: Queued start job for default target initrd.target.
[    1.615701] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    7.501023] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  248.357157] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6589)
[  610.206613] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:19721)

sender-dmesg-crashes.log

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

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

[  170.752630] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  170.753697] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  170.754992] pci 0000:00:06.0: enabling Extended Tags
[  170.756791] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  170.757846] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  170.758860] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  170.771809] ena 0000:00:06.0: ENA device version: 0.10
[  170.772603] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  170.873838] ena 0000:00:06.0: ENA Large LLQ is disabled
[  170.886626] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:d1:78:26:6b
[  170.934786] ena 0000:00:06.0 ens6: renamed from eth0
[  171.269014] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  209.950179] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  209.951476] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  248.357157] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6589)
[  402.234699] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  403.244376] ena 0000:00:06.0: ENA device version: 0.10
[  403.245268] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  403.344403] ena 0000:00:06.0: ENA Large LLQ is disabled
[  403.356249] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:d1:78:26:6b
[  403.366283] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  476.927853] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  476.929191] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  610.206613] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:19721)
[  686.405504] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  687.413952] ena 0000:00:06.0: ENA device version: 0.10
[  687.414734] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  687.513943] ena 0000:00:06.0: ENA Large LLQ is disabled
[  687.525814] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:d1:78:26:6b
[  687.534932] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels

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

[    4.835927] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  170.030842] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  170.031921] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  170.032966] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  170.034252] pci 0000:00:06.0: enabling Extended Tags
[  170.036052] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  170.037058] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  170.038073] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  170.050690] ena 0000:00:06.0: ENA device version: 0.10
[  170.051459] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  170.152663] ena 0000:00:06.0: ENA Large LLQ is disabled
[  170.165429] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:41:a0:d8:d8:3d
[  170.204828] ena 0000:00:06.0 ens6: renamed from eth0
[  170.521394] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  203.738890] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  203.740209] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  265.147122] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6771)
[  265.897012] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6792)
[  267.647041] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6814)
[  269.207036] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6837)
[  315.426657] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  316.439508] ena 0000:00:06.0: ENA device version: 0.10
[  316.440308] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  316.541522] ena 0000:00:06.0: ENA Large LLQ is disabled
[  316.552022] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:41:a0:d8:d8:3d
[  316.562056] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  839.357559] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  839.359011] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  917.136065] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:39641)
[  962.555984] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:42202)

…ling

- Add mbuf_9k: 4096 to trex_cfg.yaml memory config so TRex can allocate
  mbufs large enough for 8500B packets
- Remove --mbuf-factor 8 (explicit pool config is the proper fix)
- Add try/except per packet size in run_benchmark.py so one size failing
  doesn't crash the entire benchmark — partial results are still written

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

Copy link
Copy Markdown

[Perf] Stage: Deploy

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

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0936b197d755bc42e (DPDK ENI: 10.0.1.39)
  • Receiver: i-0bb7677800a127155 (DPDK ENI: 10.0.1.133)
  • Both instances SSM-ready.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Instances Ready

  • TRex: i-0857f05dd96a5a6ce (10.0.1.188)
  • DUT: i-03facb0f0ff3478f0 (10.0.1.113)

@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:b9:a1:e9:02:03
  • RX: 0000:00:07.0 MAC: 02:da:ae:20:3c:7f
  • Gateway MAC: 02:b4:d0:f6:7b:31
    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-03facb0f0ff3478f0 SSM working, build complete.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (1/3)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: plain-rust preflight

TRex API OK: 2 ports
  Port 0: 02:b9:a1:e9:02:03
  Port 1: 02:da:ae:20:3c:7f
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:b9:a1:e9:02:03

--- 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,999 pps, Drop: 0.715%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 296,050 pps, Drop: 15.4143%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 317,377 pps, Drop: 54.6605%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,999 pps, Drop: 1.4302%, Lat avg: 517.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,976 pps, Drop: 0.7317%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 281,564 pps, Drop: 19.5533%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 294,716 pps, Drop: 57.8977%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,996 pps, Drop: 1.434%, Lat avg: 402.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,947 pps, Drop: 0.7521%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 248,596 pps, Drop: 28.9726%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 284,065 pps, Drop: 59.4193%, Lat avg: 0.0 us

--- Packet size: 8500B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 37,926 pps, Drop: 45.8201%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 73,336 pps, Drop: 47.6168%, Lat avg: 0.0 us
  Target: 350,000 pps ... 
  ERROR: 8500B benchmark failed: Port 0 : *** Expected L1 B/W: '23.856 Gbps' exceeds port line rate: '16.384 Gbps'

Results written to /tmp/perf-results/plain-rust.json
WARNING: 1 packet size(s) failed: ["8500B: Port 0 : *** Expected L1 B/W: '23.856 Gbps' exceeds port line rate: '16.384 Gbps'"]
EXIT_CODE=0

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (2/3)

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

@github-actions

Copy link
Copy Markdown

[CI] Stage: Summary

All tests PASSED.

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

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:b9:a1:e9:02:03
  Port 1: 02:da:ae:20:3c:7f
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 23694538130)

Branch: 31/merge | Commit: 344a387d

Test Results

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

Application Logs (last 20 lines)

receiver-echo-server.log

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

sender-echo-server.log

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

sender-test-client.log

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

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-28T21:36:35Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-28T21:36:35Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-28T21:36:35Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-28T21:36:35Z] 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.133:9000 (MAC: 02:92:a1:d8:b5:63)
echo listening on 10.0.1.133:9000
Shutting down gracefully...

sender-echo-server.log

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

sender-test-client.log

[2026-03-28T21:27:05Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.133:9000
Bind address: 10.0.1.39: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.39:32768 (MAC: 02:cd:bf:4c:d8:71)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.133:9000: 'arp-probe #1'
Test complete
[2026-03-28T21:27:06Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-28T21:27:06Z] INFO: Test: udp_send_receive
[2026-03-28T21:27:08Z] INFO: UDP send/receive succeeded
[2026-03-28T21:27:08Z] INFO: Test: echo_roundtrip
[2026-03-28T21:27:10Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-28T21:27:10Z] INFO: Test: payload_integrity
[2026-03-28T21:27:10Z] INFO: Response received, checking payload match...
[2026-03-28T21:27:10Z] INFO: Payload integrity verified (found in response)
[2026-03-28T21:27:10Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-28T21:27:10Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-28T21:30:36Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.133: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.133:9000: 'arp-probe #1'
Test complete
[2026-03-28T21:30:36Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-28T21:30:36Z] INFO: Test: udp_send_receive
[2026-03-28T21:30:37Z] INFO: UDP send/receive succeeded
[2026-03-28T21:30:37Z] INFO: Test: echo_roundtrip
[2026-03-28T21:30:38Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-28T21:30:38Z] INFO: Test: payload_integrity
[2026-03-28T21:30:38Z] INFO: Response received, checking payload match...
[2026-03-28T21:30:38Z] INFO: Payload integrity verified (found in response)
[2026-03-28T21:30:38Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-28T21:30:38Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-03-28T21:36:32Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-03-28T21:36:32Z] INFO: Local IP: 10.0.1.39, Peer IP: 10.0.1.133, Port: 9000
[2026-03-28T21:36:32Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.39        0x1         0x2         02:cd:bf:4c:d8:71     *        ens5
10.0.1.95        0x1         0x2         02:90:36:63:b4:11     *        ens5
10.0.1.1         0x1         0x2         02:01:c0:88:ee:4f     *        ens5
10.0.1.133       0x1         0x2         02:92:a1:d8:b5:63     *        ens5
[2026-03-28T21:36:32Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-03-28T21:36:32Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-03-28T21:36:32Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1870432 Mar 28 21:25 /opt/dpdk-stdlib/target/release/test-client
[2026-03-28T21:36:32Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.133 --port 9000 --bind-ip 10.0.1.39 --count 10 --delay 200
[2026-03-28T21:36:35Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.133:9000
Bind address: 10.0.1.39: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.39:32768 (MAC: 02:cd:bf:4c:d8:71)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.133:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-28T21:36:35Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-28T21:36:35Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-28T21:36:35Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-28T21:36:35Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0bb7677800a127155 (receiver)
Command ID: a76dbeb1-d863-4260-a6b9-e2f8c0e9d83d

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0bb7677800a127155 (receiver)
Command ID: d8308a9f-bece-42f4-bf6a-22a042911770

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0bb7677800a127155 (receiver)
Command ID: 42d1cce0-9cf6-43a2-b6a3-8625ccb8bea6

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0936b197d755bc42e (sender)
Command ID: 65ab26cf-8c34-41c9-b64c-c7f7dae2cc63

=== 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:57:3a:62:91:d3 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-067e7244db1d3dc98
    altname device-number-0.0
    inet 10.0.1.83/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2560sec preferred_lft 2560sec
    inet6 fe80::57:3aff:fe62:91d3/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:37:2b:e4:0b brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
6: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:92:a1:d8:b5:63 brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname eni-02d399d4f9de87582
    altname device-number-1.0
    inet 10.0.1.133/24 brd 10.0.1.255 scope global ens6
       valid_lft forever preferred_lft forever
    inet6 fe80::92:a1ff:fed8:b563/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:7b:4e:3d:f3:f3 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0a23ca7a99bedd0da
    altname device-number-0.0
    inet 10.0.1.193/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2584sec preferred_lft 2584sec
    inet6 fe80::7b:4eff:fe3d:f3f3/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:77:f4:85:95 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-28T21:26:24Z
hostname: ip-10-0-1-83.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:57:3a:62:91:d3 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-067e7244db1d3dc98
    altname device-number-0.0
    inet 10.0.1.83/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3359sec preferred_lft 3359sec
    inet6 fe80::57:3aff:fe62:91d3/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:37:2b:e4:0b 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.95 dev ens5 lladdr 02:90:36:63:b4:11 REACHABLE 
10.0.1.244 dev ens5 lladdr 02:ec:8b:df:59:2b STALE 
10.0.1.1 dev ens5 lladdr 02:01:c0:88:ee:4f REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.83 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.83 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.83 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.83 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:57:3a:62:91:d3/ 02:92:a1:d8:b5:63/ 

--- ENI: 02:57:3a:62:91:d3/ ---
  device-number: 0
  local-ipv4s: 10.0.1.83
  subnet-id: subnet-0e3ce054709942755
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:92:a1:d8:b5:63/ ---
  device-number: 1
  local-ipv4s: 10.0.1.133
  subnet-id: subnet-0e3ce054709942755
  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:01:c0:88:ee:4f REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.83 ens5
Unicast reply from 10.0.1.1 [02:01:C0:88:EE:4F]  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 Mar 28 21:26 .
drwxr-xr-x. 14 root root     3100 Mar 28 21:25 ..
crw-------.  1 root root 243,   0 Mar 28 21:26 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 28 21:22 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.070483] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.077587] audit: type=2000 audit(1774732938.215:1): state=initialized audit_enabled=0 res=1
[    0.078275] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.103245] ACPI: Interpreter enabled
[    0.103245] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.126835] pci 0000:00:05.0: enabling Extended Tags
[    0.169857] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.200599] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.267026] IPI shorthand broadcast: enabled
[    0.267091] AES CTR mode by8 optimization enabled
[    2.355198] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.393547] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.442569] VFIO - User Level meta-driver version: 0.3
[    3.598751] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.613447] ena 0000:00:05.0: ENA device version: 0.10
[    3.614208] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.725158] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.737898] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:57:3a:62:91:d3
[    3.785140] ena 0000:00:05.0 ens5: renamed from eth0
[    4.568743] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  190.819364] pci 0000:00:06.0: enabling Extended Tags
[  190.823236] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.833006] ena 0000:00:06.0: ENA device version: 0.10
[  190.833804] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.933000] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.945215] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:92:a1:d8:b5:63
[  191.003078] ena 0000:00:06.0 ens6: renamed from eth0
[  191.416468] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  231.497276] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  231.498640] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device

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

=== END DIAGNOSTICS ===

sender-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-03-28T21:26:15Z
hostname: ip-10-0-1-193.ec2.internal
kernel: 6.1.163-186.299.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:7b:4e:3d:f3:f3 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0a23ca7a99bedd0da
    altname device-number-0.0
    inet 10.0.1.193/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3369sec preferred_lft 3369sec
    inet6 fe80::7b:4eff:fe3d:f3f3/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:77:f4:85:95 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.95 dev ens5 lladdr 02:90:36:63:b4:11 REACHABLE 
10.0.1.244 dev ens5 lladdr 02:ec:8b:df:59:2b STALE 
10.0.1.1 dev ens5 lladdr 02:01:c0:88:ee:4f REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.193 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.193 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.193 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.193 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:7b:4e:3d:f3:f3/ 02:cd:bf:4c:d8:71/ 

--- ENI: 02:7b:4e:3d:f3:f3/ ---
  device-number: 0
  local-ipv4s: 10.0.1.193
  subnet-id: subnet-0e3ce054709942755
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:cd:bf:4c:d8:71/ ---
  device-number: 1
  local-ipv4s: 10.0.1.39
  subnet-id: subnet-0e3ce054709942755
  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:01:c0:88:ee:4f REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.193 ens5
Unicast reply from 10.0.1.1 [02:01:C0:88:EE:4F]  0.533ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Mar 28 21:26 .
drwxr-xr-x. 14 root root     3100 Mar 28 21:25 ..
crw-------.  1 root root 243,   0 Mar 28 21:26 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 28 21:22 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067724] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073759] audit: type=2000 audit(1774732938.522:1): state=initialized audit_enabled=0 res=1
[    0.075232] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.100221] ACPI: Interpreter enabled
[    0.100221] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124892] pci 0000:00:05.0: enabling Extended Tags
[    0.156160] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.205211] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.253810] IPI shorthand broadcast: enabled
[    0.253873] AES CTR mode by8 optimization enabled
[    2.405139] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.447440] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.490983] VFIO - User Level meta-driver version: 0.3
[    3.644095] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.655516] ena 0000:00:05.0: ENA device version: 0.10
[    3.656290] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.764962] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.777185] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:7b:4e:3d:f3:f3
[    3.825109] ena 0000:00:05.0 ens5: renamed from eth0
[    4.640567] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  191.015266] pci 0000:00:06.0: enabling Extended Tags
[  191.019106] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  191.032024] ena 0000:00:06.0: ENA device version: 0.10
[  191.032798] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  191.124682] ena 0000:00:06.0: ENA Large LLQ is disabled
[  191.137168] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:cd:bf:4c:d8:71
[  191.184889] ena 0000:00:06.0 ens6: renamed from eth0
[  191.560328] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  223.938248] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  223.939582] 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.076772] pid_max: default: 32768 minimum: 301
[    0.128925] iommu: Default domain type: Translated 
[    0.129640] NetLabel:  unlabeled traffic allowed by default
[    0.146299] PCI: CLS 0 bytes, default 64
[    0.220349] nvme nvme0: 2/0/0 default/read/poll queues
[    0.433576] 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.433674] systemd[1]: No hostname configured, using default hostname.
[    0.528371] systemd[1]: Queued start job for default target initrd.target.
[    1.637702] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    7.463554] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  271.214720] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6440)
[  482.302330] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:9982)

sender-dmesg-crashes.log

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

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

[  190.819364] pci 0000:00:06.0: enabling Extended Tags
[  190.821167] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  190.822198] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  190.823236] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.833006] ena 0000:00:06.0: ENA device version: 0.10
[  190.833804] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.933000] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.945215] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:92:a1:d8:b5:63
[  191.003078] ena 0000:00:06.0 ens6: renamed from eth0
[  191.416468] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  231.497276] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  231.498640] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  271.214720] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6440)
[  348.873649] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  349.886628] ena 0000:00:06.0: ENA device version: 0.10
[  349.887415] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  349.986327] ena 0000:00:06.0: ENA Large LLQ is disabled
[  349.999351] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:92:a1:d8:b5:63
[  350.061215] ena 0000:00:06.0 ens6: renamed from eth0
[  350.153431] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  370.164607] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  370.165955] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  482.302330] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:9982)
[  560.708860] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  561.718700] ena 0000:00:06.0: ENA device version: 0.10
[  561.719490] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  561.818682] ena 0000:00:06.0: ENA Large LLQ is disabled
[  561.830987] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:92:a1:d8:b5:63
[  561.878731] ena 0000:00:06.0 ens6: renamed from eth0
[  561.961613] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels

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

[  191.011922] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  191.012993] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  191.014009] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  191.015266] pci 0000:00:06.0: enabling Extended Tags
[  191.017014] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  191.018078] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  191.019106] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  191.032024] ena 0000:00:06.0: ENA device version: 0.10
[  191.032798] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  191.124682] ena 0000:00:06.0: ENA Large LLQ is disabled
[  191.137168] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:cd:bf:4c:d8:71
[  191.184889] ena 0000:00:06.0 ens6: renamed from eth0
[  191.560328] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  223.938248] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  223.939582] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  287.947148] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6526)
[  288.697005] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6548)
[  290.447068] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6618)
[  291.997080] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6641)
[  338.380448] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  339.393404] ena 0000:00:06.0: ENA device version: 0.10
[  339.394179] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  339.494423] ena 0000:00:06.0: ENA Large LLQ is disabled
[  339.506586] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:cd:bf:4c:d8:71
[  339.564468] ena 0000:00:06.0 ens6: renamed from eth0
[  339.626262] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  581.609963] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  581.611314] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  854.666207] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:15982)
[  901.646164] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:16771)

@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:b9:a1:e9:02:03

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 224.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 234.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,994 pps, Drop: 0.0017%, Lat avg: 238.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 687,910 pps, Drop: 1.7271%, Lat avg: 358.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 214.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 239.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,863 pps, Drop: 0.0392%, Lat avg: 247.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 697,816 pps, Drop: 0.3121%, Lat avg: 412.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 247.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,993 pps, Drop: 0.0052%, Lat avg: 255.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0001%, Lat avg: 282.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 447,371 pps, Drop: 36.0899%, Lat avg: 3932.0 us

--- Packet size: 8500B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 0 pps, Drop: 100.0%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 0 pps, Drop: 100.0%, Lat avg: 0.0 us
  Target: 350,000 pps ... 
  ERROR: 8500B benchmark failed: Port 0 : *** Expected L1 B/W: '23.856 Gbps' exceeds port line rate: '16.384 Gbps'

Results written to /tmp/perf-results/rust-dpdk.json
WARNING: 1 packet size(s) failed: ["8500B: Port 0 : *** Expected L1 B/W: '23.856 Gbps' exceeds port line rate: '16.384 Gbps'"]
EXIT_CODE=0

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (3/3)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: native-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:b9:a1:e9:02:03
  Port 1: 02:da:ae:20:3c:7f
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:b9:a1:e9:02:03

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 128.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 140.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 151.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 697,577 pps, Drop: 0.3461%, Lat avg: 202.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 138.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 146.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 123.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 698,542 pps, Drop: 0.2082%, Lat avg: 208.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 112.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 113.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 162.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 447,789 pps, Drop: 36.0301%, Lat avg: 3702.0 us

--- Packet size: 8500B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 203.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 73,611 pps, Drop: 47.4209%, Lat avg: 18053.0 us
  Target: 350,000 pps ... 
  ERROR: 8500B benchmark failed: Port 0 : *** Expected L1 B/W: '23.856 Gbps' exceeds port line rate: '16.384 Gbps'

Results written to /tmp/perf-results/native-dpdk.json
WARNING: 1 packet size(s) failed: ["8500B: Port 0 : *** Expected L1 B/W: '23.856 Gbps' exceeds port line rate: '16.384 Gbps'"]
EXIT_CODE=0

@github-actions

Copy link
Copy Markdown

[Perf] Diag: testpmd log

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

  Throughput (since last show)
  Rx-pps:        73567          Rx-bps:   5000232592
  Tx-pps:        73567          Tx-bps:   5000239384
  ############################################################################
�[2J�[1;1H
Port statistics ====================================
  ######################## NIC statistics for port 0  ########################
  RX-packets: 109734734  RX-missed: 464        RX-bytes:  96824140892
  RX-errors: 375926
  RX-nombuf:  0         
  TX-packets: 109734734  TX-errors: 0          TX-bytes:  96824140892

  Throughput (since last show)
  Rx-pps:        73567          Rx-bps:   5000241256
  Tx-pps:        73567          Tx-bps:   5000241256
  ############################################################################
�[2J�[1;1H
Port statistics ====================================
  ######################## NIC statistics for port 0  ########################
  RX-packets: 110141505  RX-missed: 464        RX-bytes:  100280067308
  RX-errors: 377325
  RX-nombuf:  0         
  TX-packets: 110141505  TX-errors: 0          TX-bytes:  100280067308

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Results

[21:58:57] INFO Generating markdown summary...

Performance Test Results — c5n.2xlarge

Commit: f6002f27
Timestamp: 2026-03-28T21:58:57.632593+00:00

1400B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 112.0 2059.0 784.0 784.0
native-dpdk 140,000 140,000 140,000 0.00% 113.0 353.0 1568.0 1568.0
native-dpdk 350,000 350,000 350,000 0.00% 162.0 1814.0 3920.0 3920.0
native-dpdk 700,000 700,000 447,789 36.03% 3702.0 3992.0 7840.0 5015.2
rust-dpdk 70,000 70,000 70,000 0.00% 247.0 3209.0 784.0 784.0
rust-dpdk 140,000 140,000 139,993 0.01% 255.0 8297.0 1568.0 1567.9
rust-dpdk 350,000 350,000 350,000 0.00% 282.0 2528.0 3920.0 3920.0
rust-dpdk 700,000 700,000 447,371 36.09% 3932.0 5447.0 7840.0 5010.6
plain-rust 70,000 70,000 68,996 1.43% 402.0 0.0 784.0 772.8
plain-rust 140,000 140,000 138,947 0.75% 0.0 0.0 1568.0 1556.2
plain-rust 350,000 350,000 248,596 28.97% 0.0 0.0 3920.0 2784.3
plain-rust 700,000 700,000 284,065 59.42% 0.0 0.0 7840.0 3181.5

512B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 138.0 2129.0 286.7 286.7
native-dpdk 140,000 140,000 140,000 0.00% 146.0 359.0 573.4 573.4
native-dpdk 350,000 350,000 350,000 0.00% 123.0 1563.0 1433.6 1433.6
native-dpdk 700,000 700,000 698,542 0.21% 208.0 1469.0 2867.2 2861.2
rust-dpdk 70,000 70,000 70,000 0.00% 214.0 3914.0 286.7 286.7
rust-dpdk 140,000 140,000 140,000 0.00% 239.0 4586.0 573.4 573.4
rust-dpdk 350,000 350,000 349,863 0.04% 247.0 14191.0 1433.6 1433.0
rust-dpdk 700,000 700,000 697,816 0.31% 412.0 2849.0 2867.2 2858.2
plain-rust 70,000 70,000 68,999 1.43% 517.0 0.0 286.7 282.6
plain-rust 140,000 140,000 138,976 0.73% 0.0 0.0 573.4 569.2
plain-rust 350,000 350,000 281,564 19.55% 0.0 0.0 1433.6 1153.3
plain-rust 700,000 700,000 294,716 57.90% 0.0 0.0 2867.2 1207.2

64B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 128.0 286.0 35.8 35.8
native-dpdk 140,000 140,000 140,000 0.00% 140.0 2012.0 71.7 71.7
native-dpdk 350,000 350,000 350,000 0.00% 151.0 620.0 179.2 179.2
native-dpdk 700,000 700,000 697,577 0.35% 202.0 3124.0 358.4 357.2
rust-dpdk 70,000 70,000 70,000 0.00% 224.0 11766.0 35.8 35.8
rust-dpdk 140,000 140,000 140,000 0.00% 234.0 3692.0 71.7 71.7
rust-dpdk 350,000 350,000 349,994 0.00% 238.0 2595.0 179.2 179.2
rust-dpdk 700,000 700,000 687,910 1.73% 358.0 2858.0 358.4 352.2
plain-rust 70,000 70,000 69,000 1.43% 0.0 0.0 35.8 35.3
plain-rust 140,000 140,000 138,999 0.71% 0.0 0.0 71.7 71.2
plain-rust 350,000 350,000 296,050 15.41% 0.0 0.0 179.2 151.6
plain-rust 700,000 700,000 317,377 54.66% 0.0 0.0 358.4 162.5

Full results artifact

- Set DPDK port MTU to 9001 (AWS VPC max) in both the UdpSocket and
  DpdkBackend paths so the NIC accepts jumbo frames
- Increase mempool data_room_size from 2176 to 9344 bytes (9216 + headroom)
  so mbufs can hold full jumbo frames without truncation
- Use force=True in TRex client.start() to bypass the 16 Gbps line rate
  check — ENA PMD falsely reports 16 Gbps but c5n actually has 25 Gbps

Root cause of 100% drop for rust-dpdk 8500B: the DPDK port's default MTU
was 1500, so the NIC silently dropped all jumbo frames on RX.

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

Copy link
Copy Markdown

[Perf] Stage: Deploy

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

claude added 2 commits March 28, 2026 22:04
- Change instance type from c5n.2xlarge to c6in.xlarge
- Remove force=True from TRex to see if c6in ENA reports accurate line rate
- c6in.xlarge: 4 vCPUs, 8 GB, 30 Gbps — $0.284/hr vs $0.432/hr

https://claude.ai/code/session_01294ECCWxYiENcnK5HVVyoL
- Move try/except to per-rate-step so partial results (e.g. 70K, 140K
  succeed but 350K hits line rate) are still saved to the JSON
- Sort packet sizes numerically in the summary table (64B < 512B < 1400B
  < 8500B) instead of lexicographic string sort

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

Copy link
Copy Markdown

Integration Test Failure (Run 23695262254)

Branch: 31/merge | Commit: c9f6f9d7c322f6704a19edc659177cebd356c0bf

failure-summary.json

{
  "failed_step": "deploy_infrastructure",
  "error": "Infrastructure deployment failed",
  "exit_code": 2,
  "timestamp": "2026-03-28T22:07:48.749420Z",
  "sender_instance_id": "",
  "receiver_instance_id": "",
  "commit": "c9f6f9d7c322f6704a19edc659177cebd356c0bf",
  "run_url": "https://github.com/gspivey/dpdk-stdlib-rust/actions/runs/23695262254"
}```

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

Compiling cexpr v0.6.0
Compiling regex v1.12.3
Compiling bitflags v2.11.0
Compiling find-msvc-tools v0.1.9
Compiling rustc-hash v1.1.0
Compiling log v0.4.29
Compiling cc v1.2.58
Compiling pkg-config v0.3.32
Compiling thiserror v1.0.69
Compiling utf8parse v0.2.2
Compiling anstyle-parse v1.0.0
Compiling thiserror-impl v1.0.69
Compiling anstyle v1.0.14
Compiling colorchoice v1.0.5
Compiling parking_lot_core v0.9.12
Compiling anstyle-query v1.1.5
Compiling is_terminal_polyfill v1.70.2
Compiling anstream v1.0.0
Compiling scopeguard v1.2.0
Compiling clap_lex v1.1.0
Compiling strsim v0.11.1
Compiling smallvec v1.15.1
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)
error[E0308]: mismatched types
--> dpdk-udp/src/backend_dpdk.rs:48:38
|
48 | .with_data_room_size(9216 + dpdk_sys::RTE_PKTMBUF_HEADROOM),
| ------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u16, found u32
| |
| arguments to this method are incorrect
|
note: method defined here
--> dpdk/src/mbuf.rs:191:12
|
191 | pub fn with_data_room_size(mut self, size: u16) -> Self {
| ^^^^^^^^^^^^^^^^^^^
help: you can convert a u32 to a u16 and panic if the converted value doesn't fit
|
48 | .with_data_room_size((9216 + dpdk_sys::RTE_PKTMBUF_HEADROOM).try_into().unwrap()),
| + +++++++++++++++++++++

error[E0308]: mismatched types
--> dpdk-udp/src/lib.rs:730:34
|
730 | .with_data_room_size(9216 + dpdk_sys::RTE_PKTMBUF_HEADROOM),
| ------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u16, found u32
| |
| arguments to this method are incorrect
|
note: method defined here
--> dpdk/src/mbuf.rs:191:12
|
191 | pub fn with_data_room_size(mut self, size: u16) -> Self {
| ^^^^^^^^^^^^^^^^^^^
help: you can convert a u32 to a u16 and panic if the converted value doesn't fit
|
730 | .with_data_room_size((9216 + dpdk_sys::RTE_PKTMBUF_HEADROOM).try_into().unwrap()),
| + +++++++++++++++++++++

For more information about this error, try rustc --explain E0308.
error: could not compile dpdk-stdlib-udp (lib) due to 2 previous errors
warning: build failed, waiting for other jobs to finish...


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

Compiling regex v1.12.3
Compiling cexpr v0.6.0
Compiling find-msvc-tools v0.1.9
Compiling log v0.4.29
Compiling rustc-hash v1.1.0
Compiling bitflags v2.11.0
Compiling cc v1.2.58
Compiling pkg-config v0.3.32
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 colorchoice v1.0.5
Compiling anstyle v1.0.14
Compiling parking_lot_core v0.9.12
Compiling is_terminal_polyfill v1.70.2
Compiling anstream v1.0.0
Compiling heck v0.5.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 smallvec v1.15.1
Compiling scopeguard v1.2.0
warning: dpdk-stdlib-sys (build script) generated 1 warning
Compiling lock_api v0.4.14
Compiling clap_builder v4.6.0
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)
error[E0308]: mismatched types
--> dpdk-udp/src/backend_dpdk.rs:48:38
|
48 | .with_data_room_size(9216 + dpdk_sys::RTE_PKTMBUF_HEADROOM),
| ------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u16, found u32
| |
| arguments to this method are incorrect
|
note: method defined here
--> dpdk/src/mbuf.rs:191:12
|
191 | pub fn with_data_room_size(mut self, size: u16) -> Self {
| ^^^^^^^^^^^^^^^^^^^
help: you can convert a u32 to a u16 and panic if the converted value doesn't fit
|
48 | .with_data_room_size((9216 + dpdk_sys::RTE_PKTMBUF_HEADROOM).try_into().unwrap()),
| + +++++++++++++++++++++

error[E0308]: mismatched types
--> dpdk-udp/src/lib.rs:730:34
|
730 | .with_data_room_size(9216 + dpdk_sys::RTE_PKTMBUF_HEADROOM),
| ------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u16, found u32
| |
| arguments to this method are incorrect
|
note: method defined here
--> dpdk/src/mbuf.rs:191:12
|
191 | pub fn with_data_room_size(mut self, size: u16) -> Self {
| ^^^^^^^^^^^^^^^^^^^
help: you can convert a u32 to a u16 and panic if the converted value doesn't fit
|
730 | .with_data_room_size((9216 + dpdk_sys::RTE_PKTMBUF_HEADROOM).try_into().unwrap()),
| + +++++++++++++++++++++

For more information about this error, try rustc --explain E0308.
error: could not compile dpdk-stdlib-udp (lib) due to 2 previous errors
warning: build failed, waiting for other jobs to finish...


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

[ 101.646945] cloud-init[1750]: Downloaded unicode-ident v1.0.24
[ 101.653086] cloud-init[1750]: Downloaded smallvec v1.15.1
[ 101.657621] cloud-init[1750]: Downloaded socket2 v0.6.3
[ 101.661964] cloud-init[1750]: Downloaded regex v1.12.3
[ 101.671416] cloud-init[1750]: Downloaded nom v7.1.3
[ 101.681190] cloud-init[1750]: Downloaded itertools v0.13.0
[ 101.691546] cloud-init[1750]: Downloaded mio v1.2.0
[ 101.700416] cloud-init[1750]: Downloaded clap_builder v4.6.0
[ 101.709703] cloud-init[1750]: Downloaded prettyplease v0.2.37
[ 101.717710] cloud-init[1750]: Downloaded syn v2.0.117
[ 101.731370] cloud-init[1750]: Downloaded regex-syntax v0.8.10
[ 101.742109] cloud-init[1750]: Downloaded memchr v2.8.0
[ 101.751234] cloud-init[1750]: Downloaded bytes v1.11.1
[ 101.759078] cloud-init[1750]: Downloaded minimal-lexical v0.2.1
[ 101.766341] cloud-init[1750]: Downloaded anstyle-parse v1.0.0
[ 101.771527] cloud-init[1750]: Downloaded bindgen v0.70.1
[ 101.780323] cloud-init[1750]: Downloaded lock_api v0.4.14
[ 101.783813] cloud-init[1750]: Downloaded clap_derive v4.6.0
[ 101.788189] cloud-init[1750]: Downloaded bitflags v2.11.0
[ 101.794192] cloud-init[1750]: Downloaded pkg-config v0.3.32
[ 101.797899] cloud-init[1750]: Downloaded parking_lot_core v0.9.12
[ 101.802296] cloud-init[1750]: Downloaded find-msvc-tools v0.1.9
[ 101.807826] cloud-init[1750]: Downloaded either v1.15.0
[ 101.811937] cloud-init[1750]: Downloaded clap_lex v1.1.0
[ 101.816550] cloud-init[1750]: Downloaded clap v4.6.0
[ 101.828169] cloud-init[1750]: Downloaded anstream v1.0.0
[ 101.832178] cloud-init[1750]: Downloaded strsim v0.11.1
[ 101.836045] cloud-init[1750]: Downloaded pin-project-lite v0.2.17
[ 101.843408] cloud-init[1750]: Downloaded parking_lot v0.12.5
[ 101.848035] cloud-init[1750]: Downloaded libc v0.2.183
[ 101.884515] cloud-init[1750]: Downloaded libloading v0.8.9
[ 101.889063] cloud-init[1750]: Downloaded errno v0.3.14
[ 101.892582] cloud-init[1750]: Downloaded colorchoice v1.0.5
[ 101.895807] cloud-init[1750]: Downloaded async-trait v0.1.89
[ 101.901453] cloud-init[1750]: Downloaded signal-hook-registry v1.4.8
[ 101.905111] cloud-init[1750]: Downloaded shlex v1.3.0
[ 101.908684] cloud-init[1750]: Downloaded scopeguard v1.2.0
[ 101.911984] cloud-init[1750]: Downloaded regex-automata v0.4.14
[ 101.929162] cloud-init[1750]: Downloaded log v0.4.29
[ 101.933484] cloud-init[1750]: Downloaded glob v0.3.3
[ 101.936908] cloud-init[1750]: Downloaded clang-sys v1.8.1
[ 101.941284] cloud-init[1750]: Downloaded anstyle v1.0.14
[ 101.944812] cloud-init[1750]: Downloaded aho-corasick v1.1.4
[ 101.952458] cloud-init[1750]: Downloaded thiserror v1.0.69
[ 101.959284] cloud-init[1750]: Downloaded quote v1.0.45
[ 101.963784] cloud-init[1750]: Downloaded heck v0.5.0
[ 101.966903] cloud-init[1750]: Downloaded cc v1.2.58
[ 101.972018] cloud-init[1750]: Downloaded anstyle-query v1.1.5
[ 101.975642] cloud-init[1750]: Downloaded tokio v1.50.0
[ 102.066800] cloud-init[1750]: Compiling proc-macro2 v1.0.106
[ 102.069298] cloud-init[1750]: Compiling quote v1.0.45
[ 102.877741] cloud-init[1750]: Compiling unicode-ident v1.0.24
[ 102.971138] cloud-init[1750]: Compiling libc v0.2.183
[ 103.934160] cloud-init[1750]: Compiling syn v2.0.117
[ 104.416502] cloud-init[1750]: Compiling glob v0.3.3
[ 104.734382] cloud-init[1750]: Compiling clang-sys v1.8.1
[ 104.952058] cloud-init[1750]: Compiling prettyplease v0.2.37
[ 105.305657] cloud-init[1750]: Compiling cfg-if v1.0.4
[ 105.333507] cloud-init[1750]: Compiling minimal-lexical v0.2.1
[ 105.545507] cloud-init[1750]: Compiling memchr v2.8.0
[ 106.259719] cloud-init[1750]: Compiling regex-syntax v0.8.10
[ 108.326470] cloud-init[1750]: Compiling regex-automata v0.4.14
[ 109.428030] cloud-init[1750]: Compiling nom v7.1.3
[ 110.758675] cloud-init[1750]: Compiling libloading v0.8.9
[ 111.280328] cloud-init[1750]: Compiling bindgen v0.70.1
[ 111.407396] cloud-init[1750]: Compiling shlex v1.3.0
[ 111.546062] cloud-init[1750]: Compiling either v1.15.0
[ 111.699879] cloud-init[1750]: Compiling itertools v0.13.0
[ 112.862477] cloud-init[1750]: Compiling cexpr v0.6.0
[ 113.654766] cloud-init[1750]: Compiling regex v1.12.3
[ 115.452053] cloud-init[1750]: Compiling bitflags v2.11.0
[ 115.601424] cloud-init[1750]: Compiling find-msvc-tools v0.1.9
[ 115.792838] cloud-init[1750]: Compiling rustc-hash v1.1.0
[ 115.840091] cloud-init[1750]: Compiling log v0.4.29
[ 116.582294] cloud-init[1750]: Compiling cc v1.2.58
[ 118.047392] cloud-init[1750]: Compiling pkg-config v0.3.32
[ 118.553814] cloud-init[1750]: Compiling thiserror v1.0.69
[ 118.717048] cloud-init[1750]: Compiling utf8parse v0.2.2
[ 118.768411] cloud-init[1750]: Compiling anstyle-parse v1.0.0
[ 119.002342] cloud-init[1750]: Compiling thiserror-impl v1.0.69


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

[ 103.193734] cloud-init[1767]: Downloaded socket2 v0.6.3
[ 103.196989] cloud-init[1767]: Downloaded anstyle-parse v1.0.0
[ 103.201146] cloud-init[1767]: Downloaded proc-macro2 v1.0.106
[ 103.208504] cloud-init[1767]: Downloaded minimal-lexical v0.2.1
[ 103.221656] cloud-init[1767]: Downloaded tokio-macros v2.6.1
[ 103.225425] cloud-init[1767]: Downloaded heck v0.5.0
[ 103.228475] cloud-init[1767]: Downloaded unicode-ident v1.0.24
[ 103.233760] cloud-init[1767]: Downloaded thiserror v1.0.69
[ 103.243832] cloud-init[1767]: Downloaded tokio v1.50.0
[ 103.288381] cloud-init[1767]: Downloaded strsim v0.11.1
[ 103.292630] cloud-init[1767]: Downloaded prettyplease v0.2.37
[ 103.297524] cloud-init[1767]: Downloaded regex-syntax v0.8.10
[ 103.307274] cloud-init[1767]: Downloaded find-msvc-tools v0.1.9
[ 103.312046] cloud-init[1767]: Downloaded thiserror-impl v1.0.69
[ 103.315054] cloud-init[1767]: Downloaded signal-hook-registry v1.4.8
[ 103.318025] cloud-init[1767]: Downloaded utf8parse v0.2.2
[ 103.320461] cloud-init[1767]: Downloaded nom v7.1.3
[ 103.329175] cloud-init[1767]: Downloaded bytes v1.11.1
[ 103.335073] cloud-init[1767]: Downloaded quote v1.0.45
[ 103.338871] cloud-init[1767]: Downloaded pin-project-lite v0.2.17
[ 103.346278] cloud-init[1767]: Downloaded itertools v0.13.0
[ 103.355910] cloud-init[1767]: Downloaded mio v1.2.0
[ 103.363300] cloud-init[1767]: Downloaded colorchoice v1.0.5
[ 103.366900] cloud-init[1767]: Downloaded regex-automata v0.4.14
[ 103.383763] cloud-init[1767]: Downloaded libloading v0.8.9
[ 103.387994] cloud-init[1767]: Downloaded aho-corasick v1.1.4
[ 103.394811] cloud-init[1767]: Downloaded bitflags v2.11.0
[ 103.400586] cloud-init[1767]: Downloaded clap_builder v4.6.0
[ 103.408200] cloud-init[1767]: Downloaded bindgen v0.70.1
[ 103.416169] cloud-init[1767]: Downloaded smallvec v1.15.1
[ 103.419862] cloud-init[1767]: Downloaded shlex v1.3.0
[ 103.422394] cloud-init[1767]: Downloaded cexpr v0.6.0
[ 103.425348] cloud-init[1767]: Downloaded async-trait v0.1.89
[ 103.429966] cloud-init[1767]: Downloaded anstream v1.0.0
[ 103.433282] cloud-init[1767]: Downloaded errno v0.3.14
[ 103.436005] cloud-init[1767]: Downloaded clap_lex v1.1.0
[ 103.438507] cloud-init[1767]: Downloaded clap_derive v4.6.0
[ 103.442007] cloud-init[1767]: Downloaded clap v4.6.0
[ 103.451462] cloud-init[1767]: Downloaded anstyle-query v1.1.5
[ 103.454072] cloud-init[1767]: Downloaded libc v0.2.183
[ 103.489778] cloud-init[1767]: Downloaded memchr v2.8.0
[ 103.495937] cloud-init[1767]: Downloaded syn v2.0.117
[ 103.507418] cloud-init[1767]: Downloaded scopeguard v1.2.0
[ 103.509813] cloud-init[1767]: Downloaded regex v1.12.3
[ 103.516369] cloud-init[1767]: Downloaded pkg-config v0.3.32
[ 103.519203] cloud-init[1767]: Downloaded parking_lot_core v0.9.12
[ 103.522621] cloud-init[1767]: Downloaded parking_lot v0.12.5
[ 103.526336] cloud-init[1767]: Downloaded either v1.15.0
[ 103.529016] cloud-init[1767]: Downloaded anstyle v1.0.14
[ 103.531720] cloud-init[1767]: Downloaded log v0.4.29
[ 103.535307] cloud-init[1767]: Downloaded is_terminal_polyfill v1.70.2
[ 103.537758] cloud-init[1767]: Downloaded cc v1.2.58
[ 103.542073] cloud-init[1767]: Downloaded lock_api v0.4.14
[ 103.544657] cloud-init[1767]: Downloaded clang-sys v1.8.1
[ 103.598209] cloud-init[1767]: Compiling proc-macro2 v1.0.106
[ 103.599732] cloud-init[1767]: Compiling quote v1.0.45
[ 104.509456] cloud-init[1767]: Compiling unicode-ident v1.0.24
[ 104.602263] cloud-init[1767]: Compiling libc v0.2.183
[ 105.563834] cloud-init[1767]: Compiling syn v2.0.117
[ 106.035071] cloud-init[1767]: Compiling glob v0.3.3
[ 106.351778] cloud-init[1767]: Compiling clang-sys v1.8.1
[ 106.570739] cloud-init[1767]: Compiling prettyplease v0.2.37
[ 106.918929] cloud-init[1767]: Compiling regex-syntax v0.8.10
[ 108.985930] cloud-init[1767]: Compiling cfg-if v1.0.4
[ 109.012787] cloud-init[1767]: Compiling memchr v2.8.0
[ 109.723581] cloud-init[1767]: Compiling minimal-lexical v0.2.1
[ 109.931201] cloud-init[1767]: Compiling nom v7.1.3
[ 111.010571] cloud-init[1767]: Compiling libloading v0.8.9
[ 111.144287] cloud-init[1767]: Compiling regex-automata v0.4.14
[ 112.810886] cloud-init[1767]: Compiling either v1.15.0
[ 112.959608] cloud-init[1767]: Compiling shlex v1.3.0
[ 113.091451] cloud-init[1767]: Compiling bindgen v0.70.1
[ 113.220565] cloud-init[1767]: Compiling itertools v0.13.0
[ 114.358640] cloud-init[1767]: Compiling regex v1.12.3
[ 114.780514] cloud-init[1767]: Compiling cexpr v0.6.0
[ 116.850475] cloud-init[1767]: Compiling find-msvc-tools v0.1.9
[ 117.037111] cloud-init[1767]: Compiling log v0.4.29
[ 117.161133] cloud-init[1767]: Compiling rustc-hash v1.1.0
[ 117.207329] cloud-init[1767]: Compiling bitflags v2.11.0
[ 117.949412] cloud-init[1767]: Compiling cc v1.2.58


### All instance-logs files

total 108
drwxr-xr-x 2 runner runner 4096 Mar 28 22:07 .
drwxr-xr-x 17 runner runner 4096 Mar 28 22:07 ..
-rw-r--r-- 1 runner runner 354 Mar 28 22:07 failure-summary.json
-rw-r--r-- 1 runner runner 570 Mar 28 22:07 instance-0-build-listing.log
-rw-r--r-- 1 runner runner 22092 Mar 28 22:07 instance-0-console-output.log
-rw-r--r-- 1 runner runner 1327 Mar 28 22:07 instance-0-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1051 Mar 28 22:07 instance-0-network-interfaces.log
-rw-r--r-- 1 runner runner 8463 Mar 28 22:07 instance-0-user-data.log
-rw-r--r-- 1 runner runner 570 Mar 28 22:07 instance-1-build-listing.log
-rw-r--r-- 1 runner runner 21891 Mar 28 22:07 instance-1-console-output.log
-rw-r--r-- 1 runner runner 1327 Mar 28 22:07 instance-1-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1051 Mar 28 22:07 instance-1-network-interfaces.log
-rw-r--r-- 1 runner runner 8455 Mar 28 22:07 instance-1-user-data.log

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0a6f655dc03656473 (DPDK ENI: 10.0.1.200)
  • Receiver: i-0639298b8a69af7d6 (DPDK ENI: 10.0.1.209)
  • Both instances SSM-ready.

@github-actions

Copy link
Copy Markdown

[CI] Stage: Summary

All tests PASSED.

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

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Deploy

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

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 24240693445)

Branch: 31/merge | Commit: eea0fb9f

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.209:9000 (MAC: 02:eb:a0:85:eb:f9)
echo listening on 10.0.1.209: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.200:9000 (MAC: 02:60:21:b5:ed:15)
echo listening on 10.0.1.200: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.209:9000: 'arp-probe #1'
Test complete
[2026-04-10T11:42:07Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-10T11:42:07Z] INFO: Test: udp_send_receive
[2026-04-10T11:42:08Z] INFO: UDP send/receive succeeded
[2026-04-10T11:42:08Z] INFO: Test: echo_roundtrip
[2026-04-10T11:42:09Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-10T11:42:09Z] INFO: Test: payload_integrity
[2026-04-10T11:42:09Z] INFO: Response received, checking payload match...
[2026-04-10T11:42:09Z] INFO: Payload integrity verified (found in response)
[2026-04-10T11:42:09Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-10T11:42:09Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-10T11:47:51Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-10T11:47:51Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-10T11:47:51Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-10T11:47: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.209:9000 (MAC: 02:eb:a0:85:eb:f9)
echo listening on 10.0.1.209: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.200:9000 (MAC: 02:60:21:b5:ed:15)
echo listening on 10.0.1.200:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

[2026-04-10T11:38:15Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.209:9000
Bind address: 10.0.1.200: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.200:32768 (MAC: 02:60:21:b5:ed:15)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.209:9000: 'arp-probe #1'
Test complete
[2026-04-10T11:38:18Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-10T11:38:18Z] INFO: Test: udp_send_receive
[2026-04-10T11:38:20Z] INFO: UDP send/receive succeeded
[2026-04-10T11:38:20Z] INFO: Test: echo_roundtrip
[2026-04-10T11:38:22Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-10T11:38:22Z] INFO: Test: payload_integrity
[2026-04-10T11:38:23Z] INFO: Response received, checking payload match...
[2026-04-10T11:38:23Z] INFO: Payload integrity verified (found in response)
[2026-04-10T11:38:23Z] INFO: Test: jumbo_diagnostics
[2026-04-10T11:38:23Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-10T11:38:23Z] INFO: Interface MTU:
  9001
  65536
[2026-04-10T11:38:23Z] INFO:   ens5: MTU=9001
[2026-04-10T11:38:23Z] INFO:   lo: MTU=65536
[2026-04-10T11:38:23Z] 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-10T11:38:23Z] INFO: DPDK port config (from echo server log):
[2026-04-10T11:38:23Z] INFO:   (no MTU info in echo log)
[2026-04-10T11:38:23Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-10T11:38:23Z] INFO: Test: jumbo_echo_8000
[2026-04-10T11:38:24Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.209:9000
Bind address: 10.0.1.200: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.200:32768 (MAC: 02:60:21:b5:ed:15)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.209:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.209:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.209:9000 (expected 8000, OK)
Test complete
[2026-04-10T11:38:24Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-10T11:38:24Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-10T11:38:24Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-10T11:42:06Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.209: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.209:9000: 'arp-probe #1'
Test complete
[2026-04-10T11:42:07Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-10T11:42:07Z] INFO: Test: udp_send_receive
[2026-04-10T11:42:08Z] INFO: UDP send/receive succeeded
[2026-04-10T11:42:08Z] INFO: Test: echo_roundtrip
[2026-04-10T11:42:09Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-10T11:42:09Z] INFO: Test: payload_integrity
[2026-04-10T11:42:09Z] INFO: Response received, checking payload match...
[2026-04-10T11:42:09Z] INFO: Payload integrity verified (found in response)
[2026-04-10T11:42:09Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-10T11:42:09Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-10T11:47:48Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-10T11:47:48Z] INFO: Local IP: 10.0.1.200, Peer IP: 10.0.1.209, Port: 9000
[2026-04-10T11:47:48Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.209       0x1         0x2         02:eb:a0:85:eb:f9     *        ens5
10.0.1.1         0x1         0x2         02:ae:4a:17:1c:79     *        ens5
10.0.1.36        0x1         0x2         02:56:33:dd:1f:99     *        ens5
10.0.1.200       0x1         0x2         02:60:21:b5:ed:15     *        ens5
10.0.1.218       0x1         0x2         02:c2:ec:60:cd:03     *        ens5
[2026-04-10T11:47:48Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-10T11:47:48Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-10T11:47:48Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1887592 Apr 10 11:36 /opt/dpdk-stdlib/target/release/test-client
[2026-04-10T11:47:48Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.209 --port 9000 --bind-ip 10.0.1.200 --count 10 --delay 200
[2026-04-10T11:47:51Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.209:9000
Bind address: 10.0.1.200: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.200:32768 (MAC: 02:60:21:b5:ed:15)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.209:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-10T11:47:51Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-10T11:47:51Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-10T11:47:51Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-10T11:47:51Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0639298b8a69af7d6 (receiver)
Command ID: dfd784ff-5e54-4e2f-b6f5-6ea2840d7e6c

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0639298b8a69af7d6 (receiver)
Command ID: 26b31ff3-c20d-4a59-a4e2-6745c9ff2b0a

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0639298b8a69af7d6 (receiver)
Command ID: 908c2c25-a985-431d-a997-9049b347b51d

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0a6f655dc03656473 (sender)
Command ID: 946d269f-b66f-4e03-bfb2-edfc07d3ca98

=== 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:c4:4d:91:a5:35 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-06849c7d16bb6a90b
    altname device-number-0.0
    inet 10.0.1.197/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2440sec preferred_lft 2440sec
    inet6 fe80::c4:4dff:fe91:a535/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
5: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:eb:a0:85:eb:f9 brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname eni-072af34dd674de881
    altname device-number-1.0
    inet 10.0.1.209/24 brd 10.0.1.255 scope global ens6
       valid_lft forever preferred_lft forever
    inet6 fe80::eb:a0ff:fe85:ebf9/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:5a:80:d9:b2:83 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0896bc09fef1b8cd6
    altname device-number-0.0
    inet 10.0.1.169/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2464sec preferred_lft 2464sec
    inet6 fe80::5a:80ff:fed9:b283/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-10T11:37:34Z
hostname: ip-10-0-1-197.ec2.internal
kernel: 6.18.16-18.222.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:c4:4d:91:a5:35 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-06849c7d16bb6a90b
    altname device-number-0.0
    inet 10.0.1.197/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3248sec preferred_lft 3248sec
    inet6 fe80::c4:4dff:fe91:a535/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.36 dev ens5 lladdr 02:56:33:dd:1f:99 REACHABLE 
10.0.1.1 dev ens5 lladdr 02:ae:4a:17:1c:79 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:c4:4d:91:a5:35/ 02:eb:a0:85:eb:f9/ 

--- ENI: 02:c4:4d:91:a5:35/ ---
  device-number: 0
  local-ipv4s: 10.0.1.197
  subnet-id: subnet-0244c32ac1dd63b6a
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:eb:a0:85:eb:f9/ ---
  device-number: 1
  local-ipv4s: 10.0.1.209
  subnet-id: subnet-0244c32ac1dd63b6a
  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:4a:17:1c:79 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.197 ens5
Unicast reply from 10.0.1.1 [02:AE:4A:17:1C:79]  0.532ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.052638] printk: legacy console [ttyS0] enabled
[    0.053742] x2apic enabled
[    0.058422] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.058534] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.068104] audit: type=2000 audit(1775820688.320:1): state=initialized audit_enabled=0 res=1
[    0.070141] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.132883] ACPI: Interpreter enabled
[    0.132883] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.147396] pci 0000:00:05.0: enabling Extended Tags
[    0.223826] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.229900] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.233737] IPI shorthand broadcast: enabled
[   10.116364] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[   10.152061] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[   10.336010] VFIO - User Level meta-driver version: 0.3
[   11.044489] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[   11.056790] ena 0000:00:05.0: ENA device version: 0.10
[   11.057518] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[   11.155045] ena 0000:00:05.0: ENA Large LLQ is disabled
[   11.167288] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:c4:4d:91:a5:35
[   11.222090] ena 0000:00:05.0 ens5: renamed from eth0
[  309.163945] pci 0000:00:06.0: enabling Extended Tags
[  309.168082] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  309.181048] ena 0000:00:06.0: ENA device version: 0.10
[  309.181834] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  309.283041] ena 0000:00:06.0: ENA Large LLQ is disabled
[  309.295852] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:eb:a0:85:eb:f9
[  309.303644] ena 0000:00:06.0 ens6: renamed from eth0
[  351.590563] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  351.592052] 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-10T11:37:25Z
hostname: ip-10-0-1-169.ec2.internal
kernel: 6.18.16-18.222.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:5a:80:d9:b2:83 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0896bc09fef1b8cd6
    altname device-number-0.0
    inet 10.0.1.169/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3257sec preferred_lft 3257sec
    inet6 fe80::5a:80ff:fed9:b283/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:ae:4a:17:1c:79 REACHABLE 
10.0.1.36 dev ens5 lladdr 02:56:33:dd:1f:99 REACHABLE 
10.0.1.218 dev ens5 lladdr 02:c2:ec:60:cd:03 REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:5a:80:d9:b2:83/ 02:60:21:b5:ed:15/ 

--- ENI: 02:5a:80:d9:b2:83/ ---
  device-number: 0
  local-ipv4s: 10.0.1.169
  subnet-id: subnet-0244c32ac1dd63b6a
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:60:21:b5:ed:15/ ---
  device-number: 1
  local-ipv4s: 10.0.1.200
  subnet-id: subnet-0244c32ac1dd63b6a
  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:4a:17:1c:79 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.169 ens5
Unicast reply from 10.0.1.1 [02:AE:4A:17:1C:79]  0.533ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.050640] printk: legacy console [ttyS0] enabled
[    0.051738] x2apic enabled
[    0.056396] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.056507] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.066074] audit: type=2000 audit(1775820688.316:1): state=initialized audit_enabled=0 res=1
[    0.068142] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.129377] ACPI: Interpreter enabled
[    0.129377] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.143543] pci 0000:00:05.0: enabling Extended Tags
[    0.213873] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.219554] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.225382] IPI shorthand broadcast: enabled
[   10.095306] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[   10.124763] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[   10.327702] VFIO - User Level meta-driver version: 0.3
[   11.028138] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[   11.036115] ena 0000:00:05.0: ENA device version: 0.10
[   11.036863] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[   11.135008] ena 0000:00:05.0: ENA Large LLQ is disabled
[   11.147063] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:5a:80:d9:b2:83
[   11.200215] ena 0000:00:05.0 ens5: renamed from eth0
[  309.272555] pci 0000:00:06.0: enabling Extended Tags
[  309.277892] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  309.291105] ena 0000:00:06.0: ENA device version: 0.10
[  309.291914] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  309.393157] ena 0000:00:06.0: ENA Large LLQ is disabled
[  309.405583] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:60:21:b5:ed:15
[  309.413213] ena 0000:00:06.0 ens6: renamed from eth0
[  344.087279] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  344.088785] 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.067483] pid_max: default: 32768 minimum: 301
[    0.151346] iommu: Default domain type: Translated
[    0.151373] NetLabel:  unlabeled traffic allowed by default
[    0.202534] PCI: CLS 0 bytes, default 64
[    0.245603] nvme nvme0: 2/0/0 default/read/poll queues
[    0.446642] 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.446759] systemd[1]: No hostname configured, using default hostname.
[    0.526271] systemd[1]: Queued start job for default target initrd.target.
[    7.229212] 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)
[  392.047267] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4199)
[  622.776579] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4682)

sender-dmesg-crashes.log

[    0.065485] pid_max: default: 32768 minimum: 301
[    0.147540] iommu: Default domain type: Translated
[    0.147562] NetLabel:  unlabeled traffic allowed by default
[    0.191234] PCI: CLS 0 bytes, default 64
[    0.233242] nvme nvme0: 2/0/0 default/read/poll queues
[    0.401640] 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.401758] systemd[1]: No hostname configured, using default hostname.
[    0.467599] systemd[1]: Queued start job for default target initrd.target.
[    7.231872] 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)
[ 1027.733324] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5448)
Kernel Console (dmesg)

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

[  309.181834] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  309.283041] ena 0000:00:06.0: ENA Large LLQ is disabled
[  309.295852] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:eb:a0:85:eb:f9
[  309.303644] ena 0000:00:06.0 ens6: renamed from eth0
[  351.590563] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  351.592052] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  391.829179] vfio-pci 0000:00:06.0: resetting
[  392.045646] vfio-pci 0000:00:06.0: reset done
[  392.047267] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4199)
[  392.048801] vfio-pci 0000:00:06.0: resetting
[  392.265520] vfio-pci 0000:00:06.0: reset done
[  476.249038] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  477.262089] ena 0000:00:06.0: ENA device version: 0.10
[  477.262871] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  477.363735] ena 0000:00:06.0: ENA Large LLQ is disabled
[  477.375817] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:eb:a0:85:eb:f9
[  477.387647] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  497.598807] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  497.600223] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  622.562720] vfio-pci 0000:00:06.0: resetting
[  622.774945] vfio-pci 0000:00:06.0: reset done
[  622.776579] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4682)
[  622.778101] vfio-pci 0000:00:06.0: resetting
[  622.994744] vfio-pci 0000:00:06.0: reset done
[  701.370205] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  702.383003] ena 0000:00:06.0: ENA device version: 0.10
[  702.383775] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  702.482987] ena 0000:00:06.0: ENA Large LLQ is disabled
[  702.495190] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:eb:a0:85:eb:f9
[  702.506674] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)

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

[  412.688184] vfio-pci 0000:00:06.0: resetting
[  412.904553] vfio-pci 0000:00:06.0: reset done
[  414.057568] vfio-pci 0000:00:06.0: resetting
[  414.274637] vfio-pci 0000:00:06.0: reset done
[  414.276355] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4318)
[  414.278167] vfio-pci 0000:00:06.0: resetting
[  414.494510] vfio-pci 0000:00:06.0: reset done
[  414.882368] vfio-pci 0000:00:06.0: resetting
[  415.104607] vfio-pci 0000:00:06.0: reset done
[  415.106301] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4374)
[  415.108121] vfio-pci 0000:00:06.0: resetting
[  415.324541] vfio-pci 0000:00:06.0: reset done
[  465.904246] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  466.912959] ena 0000:00:06.0: ENA device version: 0.10
[  466.913764] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  467.012939] ena 0000:00:06.0: ENA Large LLQ is disabled
[  467.025213] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:60:21:b5:ed:15
[  467.036593] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  722.765667] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  722.767137] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  980.251160] vfio-pci 0000:00:06.0: resetting
[  980.471998] vfio-pci 0000:00:06.0: reset done
[  980.473675] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:5410)
[  980.475503] vfio-pci 0000:00:06.0: resetting
[  980.691737] vfio-pci 0000:00:06.0: reset done
[ 1027.512373] vfio-pci 0000:00:06.0: resetting
[ 1027.731751] vfio-pci 0000:00:06.0: reset done
[ 1027.733324] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5448)
[ 1027.734801] vfio-pci 0000:00:06.0: resetting
[ 1027.951560] vfio-pci 0000:00:06.0: reset done

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Instances Ready

  • TRex: i-0c66820b197e725ad (10.0.1.43)
  • DUT: i-0e429724f9c597f85 (10.0.1.95)
  • 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:fb:5d:ba:13:03
  • RX: 0000:00:07.0 MAC: 02:ed:1a:cd:77:c9
  • Gateway MAC: 02:19:0b:ad:43:2f
    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-0e429724f9c597f85 SSM working, build complete.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (1/3)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: plain-rust preflight

TRex API OK: 2 ports
  Port 0: 02:fb:5d:ba:13:03
  Port 1: 02:ed:1a:cd:77:c9
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:fb:5d:ba:13:03

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4285%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7142%, Lat avg: 137.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,000 pps, Drop: 0.2857%, Lat avg: 214.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 565,192 pps, Drop: 19.2582%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 144.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,351 pps, Drop: 0.4712%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 430,070 pps, Drop: 38.5615%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7144%, Lat avg: 187.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,874 pps, Drop: 0.3217%, Lat avg: 135.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 428,256 pps, Drop: 38.8206%, 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: 35,450 pps, Drop: 49.3578%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 125,213 pps, RX: 124,216 pps, Drop: 0.7959%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 125,232 pps, RX: 120,736 pps, Drop: 3.5903%, Lat avg: 0.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (2/3)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:fb:5d:ba:13:03
  Port 1: 02:ed:1a:cd:77:c9
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk result

SSM exit: 0

Output (last 30 lines)
Duration per step: 30s
Source MAC: 02:fb:5d:ba:13:03

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 152.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 161.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,977 pps, Drop: 0.0065%, Lat avg: 193.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 691,877 pps, Drop: 1.1604%, Lat avg: 324.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 148.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 162.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,507 pps, Drop: 0.1408%, Lat avg: 231.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 646,875 pps, Drop: 7.5893%, Lat avg: 1172.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 152.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: 349,897 pps, Drop: 0.0293%, Lat avg: 204.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 605,400 pps, Drop: 13.5142%, Lat avg: 1006.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: 343.0 us
  Target: 140,000 pps ... TX: 125,218 pps, RX: 125,216 pps, Drop: 0.0011%, Lat avg: 8714.0 us
  Target: 350,000 pps ... TX: 125,211 pps, RX: 124,808 pps, Drop: 0.3215%, Lat avg: 8926.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (3/3)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: native-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:fb:5d:ba:13:03
  Port 1: 02:ed:1a:cd:77:c9
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:fb:5d:ba:13:03

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 72.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 69.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,996 pps, Drop: 0.0012%, Lat avg: 61.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 679,529 pps, Drop: 2.9245%, Lat avg: 139.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 55.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 67.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 76.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 695,684 pps, Drop: 0.6165%, Lat avg: 221.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 63.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 72.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 84.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 640,352 pps, Drop: 8.5211%, Lat avg: 900.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: 76.0 us
  Target: 140,000 pps ... TX: 125,208 pps, RX: 125,202 pps, Drop: 0.0052%, Lat avg: 8495.0 us
  Target: 350,000 pps ... TX: 125,228 pps, RX: 124,849 pps, Drop: 0.3027%, Lat avg: 8899.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Diag: testpmd log

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

  Throughput (since last show)
  Rx-pps:       117696          Rx-bps:   7999622560
  Tx-pps:       117696          Tx-bps:   7999629360
  ############################################################################
�[2J�[1;1H
Port statistics ====================================
  ######################## NIC statistics for port 0  ########################
  RX-packets: 119854590  RX-missed: 0          RX-bytes:  147663826778
  RX-errors: 421448
  RX-nombuf:  0         
  TX-packets: 119815308  TX-errors: 0          TX-bytes:  147645320315

  Throughput (since last show)
  Rx-pps:       117697          Rx-bps:   7999633088
  Tx-pps:       117697          Tx-bps:   7999633088
  ############################################################################
�[2J�[1;1H
Port statistics ====================================
  ######################## NIC statistics for port 0  ########################
  RX-packets: 120521905  RX-missed: 0          RX-bytes:  153333267050
  RX-errors: 423342
  RX-nombuf:  0         
  TX-packets: 120482615  TX-errors: 0          TX-bytes:  153314760587

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Results

[12:34:49] INFO Generating markdown summary...

Performance Test Results — unknown

Commit: 47f14a64
Timestamp: 2026-04-10T12:34:49.352625+00:00

64B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 72.0 305.0 35.8 35.8
native-dpdk 140,000 140,000 140,000 0.00% 69.0 431.0 71.7 71.7
native-dpdk 350,000 350,000 349,996 0.00% 61.0 1238.0 179.2 179.2
native-dpdk 700,000 700,000 679,529 2.92% 139.0 2825.0 358.4 347.9
rust-dpdk 70,000 70,000 70,000 0.00% 152.0 458.0 35.8 35.8
rust-dpdk 140,000 140,000 140,000 0.00% 161.0 1612.0 71.7 71.7
rust-dpdk 350,000 350,000 349,977 0.01% 193.0 1552.0 179.2 179.2
rust-dpdk 700,000 700,000 691,877 1.16% 324.0 2802.0 358.4 354.2
plain-rust 70,000 70,000 69,000 1.43% 0.0 0.0 35.8 35.3
plain-rust 140,000 140,000 139,000 0.71% 137.0 0.0 71.7 71.2
plain-rust 350,000 350,000 349,000 0.29% 214.0 0.0 179.2 178.7
plain-rust 700,000 700,000 565,192 19.26% 0.0 0.0 358.4 289.4

512B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 55.0 285.0 286.7 286.7
native-dpdk 140,000 140,000 140,000 0.00% 67.0 239.0 573.4 573.4
native-dpdk 350,000 350,000 350,000 0.00% 76.0 341.0 1433.6 1433.6
native-dpdk 700,000 700,000 695,684 0.62% 221.0 2413.0 2867.2 2849.5
rust-dpdk 70,000 70,000 70,000 0.00% 148.0 503.0 286.7 286.7
rust-dpdk 140,000 140,000 140,000 0.00% 162.0 746.0 573.4 573.4
rust-dpdk 350,000 350,000 349,507 0.14% 231.0 5488.0 1433.6 1431.6
rust-dpdk 700,000 700,000 646,875 7.59% 1172.0 3460.0 2867.2 2649.6
plain-rust 70,000 70,000 69,000 1.43% 0.0 0.0 286.7 282.6
plain-rust 140,000 140,000 139,000 0.71% 144.0 0.0 573.4 569.3
plain-rust 350,000 350,000 348,351 0.47% 0.0 0.0 1433.6 1426.8
plain-rust 700,000 700,000 430,070 38.56% 0.0 0.0 2867.2 1761.6

1400B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 63.0 660.0 784.0 784.0
native-dpdk 140,000 140,000 140,000 0.00% 72.0 201.0 1568.0 1568.0
native-dpdk 350,000 350,000 350,000 0.00% 84.0 334.0 3920.0 3920.0
native-dpdk 700,000 700,000 640,352 8.52% 900.0 2599.0 7840.0 7171.9
rust-dpdk 70,000 70,000 70,000 0.00% 152.0 776.0 784.0 784.0
rust-dpdk 140,000 140,000 140,000 0.00% 155.0 1019.0 1568.0 1568.0
rust-dpdk 350,000 350,000 349,897 0.03% 204.0 2623.0 3920.0 3918.8
rust-dpdk 700,000 700,000 605,400 13.51% 1006.0 3156.0 7840.0 6780.5
plain-rust 70,000 70,000 69,000 1.43% 0.0 0.0 784.0 772.8
plain-rust 140,000 140,000 139,000 0.71% 187.0 0.0 1568.0 1556.8
plain-rust 350,000 350,000 348,874 0.32% 135.0 0.0 3920.0 3907.4
plain-rust 700,000 700,000 428,256 38.82% 0.0 0.0 7840.0 4796.5

8500B packets

Config Target PPS TX pps RX pps Drop % Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% 76.0 232.0 4760.0 4760.0
native-dpdk 140,000 125,208 125,202 0.01% 8495.0 9773.0 8514.1 8513.7
native-dpdk 350,000 125,228 124,849 0.30% 8899.0 9267.0 8515.5 8489.8
rust-dpdk 70,000 70,000 70,000 0.00% 343.0 1561.0 4760.0 4760.0
rust-dpdk 140,000 125,218 125,216 0.00% 8714.0 9459.0 8514.8 8514.7
rust-dpdk 350,000 125,211 124,808 0.32% 8926.0 9293.0 8514.3 8487.0
plain-rust 70,000 70,000 35,450 49.36% 0.0 0.0 4760.0 2410.6
plain-rust 140,000 125,213 124,216 0.80% 0.0 0.0 8514.5 8446.7
plain-rust 350,000 125,232 120,736 3.59% 0.0 0.0 8515.8 8210.0

Full results artifact

8500B jumbo frames on c6in.xlarge: rust-dpdk delivers 125K PPS at
8.5 Gbps with 0.00% drop, matching native-dpdk (testpmd). Jumbo
frames achieve higher sustained bandwidth than 1400B with 6x fewer
packets. Bandwidth ceiling is ENA single-flow limit, not our stack.

Also documents ENA Express MTU <= 8900 incompatibility finding.

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0a220df32e5c6d9a7 (DPDK ENI: 10.0.1.94)
  • Receiver: i-092dd6ec5939e8c2b (DPDK ENI: 10.0.1.70)
  • 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 24244488181)

Branch: 31/merge | Commit: 281df616

Test Results

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

Application Logs (last 20 lines)

receiver-echo-server.log

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

sender-echo-server.log

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

sender-test-client.log

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

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

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

sender-echo-server.log

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

sender-test-client.log

[2026-04-10T13:18:02Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.70:9000
Bind address: 10.0.1.94: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.94:32768 (MAC: 02:fd:6d:5d:7f:41)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.70:9000: 'arp-probe #1'
Test complete
[2026-04-10T13:18:05Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-10T13:18:05Z] INFO: Test: udp_send_receive
[2026-04-10T13:18:07Z] INFO: UDP send/receive succeeded
[2026-04-10T13:18:07Z] INFO: Test: echo_roundtrip
[2026-04-10T13:18:08Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-10T13:18:08Z] INFO: Test: payload_integrity
[2026-04-10T13:18:09Z] INFO: Response received, checking payload match...
[2026-04-10T13:18:09Z] INFO: Payload integrity verified (found in response)
[2026-04-10T13:18:09Z] INFO: Test: jumbo_diagnostics
[2026-04-10T13:18:09Z] INFO: === JUMBO FRAME DIAGNOSTICS ===
[2026-04-10T13:18:09Z] INFO: Interface MTU:
  9001
  65536
[2026-04-10T13:18:09Z] INFO:   ens5: MTU=9001
[2026-04-10T13:18:09Z] INFO:   lo: MTU=65536
[2026-04-10T13:18:09Z] 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-10T13:18:09Z] INFO: DPDK port config (from echo server log):
[2026-04-10T13:18:09Z] INFO:   (no MTU info in echo log)
[2026-04-10T13:18:09Z] INFO: === END JUMBO DIAGNOSTICS ===
[2026-04-10T13:18:09Z] INFO: Test: jumbo_echo_8000
[2026-04-10T13:18:11Z] INFO: Jumbo output: UDP Test Client
Target: 10.0.1.70:9000
Bind address: 10.0.1.94: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.94:32768 (MAC: 02:fd:6d:5d:7f:41)
Backend: dpdk
Sending packets...
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.70:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.70:9000 (expected 8000, OK)
Sent 8000 bytes (binary payload)
Received 8000 bytes from 10.0.1.70:9000 (expected 8000, OK)
Test complete
[2026-04-10T13:18:11Z] INFO: Jumbo frame echo succeeded: 3/3 responses with correct size
[2026-04-10T13:18:11Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-10T13:18:11Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-04-10T13:22:14Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.70:9000
Bind address: 0.0.0.0:0
Message: 'arp-probe'
Count: 1
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
TELEMETRY: No legacy callbacks, legacy socket not created
DPDK bind failed (Port init failed: Invalid port ID: 0), falling back to tokio
Backend: tokio
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.70:9000: 'arp-probe #1'
Test complete
[2026-04-10T13:22:14Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-10T13:22:14Z] INFO: Test: udp_send_receive
[2026-04-10T13:22:15Z] INFO: UDP send/receive succeeded
[2026-04-10T13:22:15Z] INFO: Test: echo_roundtrip
[2026-04-10T13:22:16Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-10T13:22:16Z] INFO: Test: payload_integrity
[2026-04-10T13:22:16Z] INFO: Response received, checking payload match...
[2026-04-10T13:22:16Z] INFO: Payload integrity verified (found in response)
[2026-04-10T13:22:16Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-10T13:22:16Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-10T13:28:11Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-10T13:28:11Z] INFO: Local IP: 10.0.1.94, Peer IP: 10.0.1.70, Port: 9000
[2026-04-10T13:28:11Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.70        0x1         0x2         02:73:5b:3a:f0:bb     *        ens5
10.0.1.1         0x1         0x2         02:d8:81:06:de:8f     *        ens5
10.0.1.4         0x1         0x2         02:91:f6:ec:6e:bf     *        ens5
10.0.1.94        0x1         0x2         02:fd:6d:5d:7f:41     *        ens5
[2026-04-10T13:28:11Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-10T13:28:11Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-10T13:28:11Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1887592 Apr 10 13:15 /opt/dpdk-stdlib/target/release/test-client
[2026-04-10T13:28:11Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.70 --port 9000 --bind-ip 10.0.1.94 --count 10 --delay 200
[2026-04-10T13:28:14Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.70:9000
Bind address: 10.0.1.94: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.94:32768 (MAC: 02:fd:6d:5d:7f:41)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.70:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-10T13:28:14Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-10T13:28:14Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-10T13:28:14Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-10T13:28:14Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-092dd6ec5939e8c2b (receiver)
Command ID: f1ccccb4-1ab7-4b5b-b3d4-a35c03cc15ea

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-092dd6ec5939e8c2b (receiver)
Command ID: 304318ca-4d42-4d6a-9baf-3ddfbf799e81

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-092dd6ec5939e8c2b (receiver)
Command ID: cf7794fe-9135-416d-9360-8ce71695422f

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0a220df32e5c6d9a7 (sender)
Command ID: 1ede7e97-2f61-467d-9030-0c38c88df6bf

=== 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:a8:78:f6:6b:2b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0ea065dac35db072c
    altname device-number-0.0
    inet 10.0.1.85/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2475sec preferred_lft 2475sec
    inet6 fe80::a8:78ff:fef6:6b2b/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
5: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:73:5b:3a:f0:bb brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname eni-0ed65c5d405a3f625
    altname device-number-1.0
    inet 10.0.1.70/24 brd 10.0.1.255 scope global ens6
       valid_lft forever preferred_lft forever
    inet6 fe80::73:5bff:fe3a:f0bb/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:74:73:ab:80:d5 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0d096e8251ca36537
    altname device-number-0.0
    inet 10.0.1.105/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2498sec preferred_lft 2498sec
    inet6 fe80::74:73ff:feab:80d5/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-10T13:17:23Z
hostname: ip-10-0-1-85.ec2.internal
kernel: 6.18.16-18.222.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:a8:78:f6:6b:2b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0ea065dac35db072c
    altname device-number-0.0
    inet 10.0.1.85/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3306sec preferred_lft 3306sec
    inet6 fe80::a8:78ff:fef6:6b2b/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.56 dev ens5 lladdr 02:3d:ea:98:4c:ef STALE 
10.0.1.4 dev ens5 lladdr 02:91:f6:ec:6e:bf REACHABLE 
10.0.1.1 dev ens5 lladdr 02:d8:81:06:de:8f REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:73:5b:3a:f0:bb/ 02:a8:78:f6:6b:2b/ 

--- ENI: 02:73:5b:3a:f0:bb/ ---
  device-number: 1
  local-ipv4s: 10.0.1.70
  subnet-id: subnet-0c3573d7f6f95f379
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:a8:78:f6:6b:2b/ ---
  device-number: 0
  local-ipv4s: 10.0.1.85
  subnet-id: subnet-0c3573d7f6f95f379
  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:d8:81:06:de:8f REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.85 ens5
Unicast reply from 10.0.1.1 [02:D8:81:06:DE:8F]  0.532ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.052429] printk: legacy console [ttyS0] enabled
[    0.053533] x2apic enabled
[    0.058219] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.058331] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.067900] audit: type=2000 audit(1775826742.737:1): state=initialized audit_enabled=0 res=1
[    0.069959] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.132512] ACPI: Interpreter enabled
[    0.132512] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.146682] pci 0000:00:05.0: enabling Extended Tags
[    0.214265] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.239606] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.242958] IPI shorthand broadcast: enabled
[    3.885760] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    3.917622] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    4.006577] VFIO - User Level meta-driver version: 0.3
[    4.533975] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.554074] ena 0000:00:05.0: ENA device version: 0.10
[    4.554827] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.655022] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.667009] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:a8:78:f6:6b:2b
[    4.696653] ena 0000:00:05.0 ens5: renamed from eth0
[  250.409279] pci 0000:00:06.0: enabling Extended Tags
[  250.413491] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  250.424286] ena 0000:00:06.0: ENA device version: 0.10
[  250.425089] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  250.524266] ena 0000:00:06.0: ENA Large LLQ is disabled
[  250.535999] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:73:5b:3a:f0:bb
[  250.543336] ena 0000:00:06.0 ens6: renamed from eth0
[  287.234647] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  287.236111] 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-10T13:17:15Z
hostname: ip-10-0-1-105.ec2.internal
kernel: 6.18.16-18.222.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:74:73:ab:80:d5 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0d096e8251ca36537
    altname device-number-0.0
    inet 10.0.1.105/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3314sec preferred_lft 3314sec
    inet6 fe80::74:73ff:feab:80d5/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:d8:81:06:de:8f REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:74:73:ab:80:d5/ 02:fd:6d:5d:7f:41/ 

--- ENI: 02:74:73:ab:80:d5/ ---
  device-number: 0
  local-ipv4s: 10.0.1.105
  subnet-id: subnet-0c3573d7f6f95f379
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:fd:6d:5d:7f:41/ ---
  device-number: 1
  local-ipv4s: 10.0.1.94
  subnet-id: subnet-0c3573d7f6f95f379
  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:d8:81:06:de:8f REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.105 ens5
Unicast reply from 10.0.1.1 [02:D8:81:06:DE:8F]  0.532ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.052222] printk: legacy console [ttyS0] enabled
[    0.053325] x2apic enabled
[    0.057975] mitigations: Enabled attack vectors: user_kernel, user_user, guest_host, guest_guest, SMT mitigations: auto
[    0.058089] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.067691] audit: type=2000 audit(1775826743.068:1): state=initialized audit_enabled=0 res=1
[    0.069692] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.132564] ACPI: Interpreter enabled
[    0.132564] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.147030] pci 0000:00:05.0: enabling Extended Tags
[    0.213558] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.227437] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.235222] IPI shorthand broadcast: enabled
[    4.076954] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    4.113921] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    4.195289] VFIO - User Level meta-driver version: 0.3
[    4.667964] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.675540] ena 0000:00:05.0: ENA device version: 0.10
[    4.676316] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.774988] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.787242] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:74:73:ab:80:d5
[    4.842383] ena 0000:00:05.0 ens5: renamed from eth0
[  230.537111] pci 0000:00:06.0: enabling Extended Tags
[  230.541254] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  230.552576] ena 0000:00:06.0: ENA device version: 0.10
[  230.553387] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  230.652556] ena 0000:00:06.0: ENA Large LLQ is disabled
[  230.664751] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:fd:6d:5d:7f:41
[  230.673049] ena 0000:00:06.0 ens6: renamed from eth0
[  279.821437] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  279.822922] 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.067281] pid_max: default: 32768 minimum: 301
[    0.150684] iommu: Default domain type: Translated
[    0.150709] NetLabel:  unlabeled traffic allowed by default
[    0.186789] PCI: CLS 0 bytes, default 64
[    0.290707] nvme nvme0: 2/0/0 default/read/poll queues
[    0.391667] 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.391787] systemd[1]: No hostname configured, using default hostname.
[    0.457030] systemd[1]: Queued start job for default target initrd.target.
[    3.023533] 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)
[  324.627314] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4209)
[  576.026533] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4642)

sender-dmesg-crashes.log

[    0.067047] pid_max: default: 32768 minimum: 301
[    0.150990] iommu: Default domain type: Translated
[    0.151017] NetLabel:  unlabeled traffic allowed by default
[    0.190146] PCI: CLS 0 bytes, default 64
[    0.250745] nvme nvme0: 2/0/0 default/read/poll queues
[    0.412030] 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.412153] systemd[1]: No hostname configured, using default hostname.
[    0.469843] systemd[1]: Queued start job for default target initrd.target.
[    2.860690] 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)
[  993.949957] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5469)
Kernel Console (dmesg)

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

[  250.425089] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  250.524266] ena 0000:00:06.0: ENA Large LLQ is disabled
[  250.535999] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:73:5b:3a:f0:bb
[  250.543336] ena 0000:00:06.0 ens6: renamed from eth0
[  287.234647] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  287.236111] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  324.405765] vfio-pci 0000:00:06.0: resetting
[  324.625692] vfio-pci 0000:00:06.0: reset done
[  324.627314] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4209)
[  324.628830] vfio-pci 0000:00:06.0: resetting
[  324.845479] vfio-pci 0000:00:06.0: reset done
[  405.702039] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  406.713808] ena 0000:00:06.0: ENA device version: 0.10
[  406.714620] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  406.813824] ena 0000:00:06.0: ENA Large LLQ is disabled
[  406.825593] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:73:5b:3a:f0:bb
[  406.836581] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  426.647508] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  426.648923] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  575.805806] vfio-pci 0000:00:06.0: resetting
[  576.024898] vfio-pci 0000:00:06.0: reset done
[  576.026533] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:4642)
[  576.028057] vfio-pci 0000:00:06.0: resetting
[  576.244729] vfio-pci 0000:00:06.0: reset done
[  651.383518] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  652.393268] ena 0000:00:06.0: ENA device version: 0.10
[  652.394072] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  652.493246] ena 0000:00:06.0: ENA Large LLQ is disabled
[  652.505038] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:73:5b:3a:f0:bb
[  652.516560] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)

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

[  344.256648] vfio-pci 0000:00:06.0: resetting
[  344.473229] vfio-pci 0000:00:06.0: reset done
[  345.603110] vfio-pci 0000:00:06.0: resetting
[  345.823269] vfio-pci 0000:00:06.0: reset done
[  345.824887] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4335)
[  345.826605] vfio-pci 0000:00:06.0: resetting
[  346.043224] vfio-pci 0000:00:06.0: reset done
[  346.396457] vfio-pci 0000:00:06.0: resetting
[  346.613255] vfio-pci 0000:00:06.0: reset done
[  346.614864] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:4391)
[  346.616603] vfio-pci 0000:00:06.0: resetting
[  346.833219] vfio-pci 0000:00:06.0: reset done
[  395.500794] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  396.511275] ena 0000:00:06.0: ENA device version: 0.10
[  396.512076] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  396.611249] ena 0000:00:06.0: ENA Large LLQ is disabled
[  396.623407] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:fd:6d:5d:7f:41
[  396.634583] ena 0000:00:06.0 ens6: renamed from eth0 (while UP)
[  671.905218] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  671.906603] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  948.767838] vfio-pci 0000:00:06.0: resetting
[  948.988749] vfio-pci 0000:00:06.0: reset done
[  948.990346] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:5379)
[  948.992088] vfio-pci 0000:00:06.0: resetting
[  949.208606] vfio-pci 0000:00:06.0: reset done
[  993.727697] vfio-pci 0000:00:06.0: resetting
[  993.948414] vfio-pci 0000:00:06.0: reset done
[  993.949957] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:5469)
[  993.951515] vfio-pci 0000:00:06.0: resetting
[  994.168283] vfio-pci 0000:00:06.0: reset done

@gspivey
gspivey merged commit 18dc20e into main Apr 10, 2026
4 checks passed
@gspivey
gspivey deleted the claude/add-jumbo-frame-packets-xAGz6 branch April 15, 2026 06:34
gspivey pushed a commit that referenced this pull request Jun 6, 2026
- Append Run #31 results to docs/perf-test-log.md (no regression)
- Mark ROADMAP item #4 (Frame building with TOS/ECN) as complete with PR #68
gspivey pushed a commit that referenced this pull request Jun 18, 2026
gspivey added a commit that referenced this pull request Jun 19, 2026
## ROADMAP Item #31

Implements `dpdk-stdlib-tcp: DUT test binaries and synthetic benchmark`
from ROADMAP.md.

**Spec:** `.kiro/specs/tcp-support/` tasks 12.1, 12.2, 13.1, 13.2, 13.3

### Changes

1. **apps/tcp-echo** — Sync TCP echo server with `--ip`/`--port` flags
and graceful SIGTERM/SIGINT shutdown
2. **apps/tcp-test-client** — TCP client with 4 test modes: `handshake`
(connect-then-close), `bidir` (bidirectional echo verification),
`shutdown` (graceful FIN teardown), `std-parity` (byte-for-byte
comparison vs std::net::TcpStream)
3. **apps/tokio-tcp-echo** — Async TCP echo server via dpdk-tokio compat
layer
4. **apps/tcp-synthetic-bench** — Mock PacketBackend benchmark measuring
connection establishment latency, single-stream throughput, and engine
tick processing time. Outputs markdown (stdout) + JSON (stderr)

### CI Workflow (requires manual apply)

The `tcp-synthetic-perf` job for `integration-tests.yml` is prepared but
cannot be pushed due to PAT `workflow` scope limitation. The job
definition:
- Runs on `ubuntu-latest` (no AWS needed)
- Builds and runs `tcp-synthetic-bench` in release mode
- Posts results as PR comment with commit hash and run link
- Uploads results artifact with 30-day retention

The workflow change is included as a local diff and should be applied by
a human maintainer or token with `workflow` scope.

### Tests

- `cargo build` — all workspace crates compile cleanly
- `cargo test` — all existing tests pass (0 failures)

### Tradeoffs

- `tcp-synthetic-bench` drives the TcpEngine directly (no real TCP
connections) to measure pure framework overhead
- `MockBackend` struct is defined for spec compliance but the benchmark
uses engine-direct approach for deterministic measurements
- `try_clone()` in tcp-test-client's std-parity mode works because the
std fallback path is used for the kernel comparison

---------

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants