Skip to content

docs: add scope, limitations, and roadmap to README - #28

Merged
gspivey merged 8 commits into
mainfrom
claude/analyze-networking-architecture-X8YvL
Mar 26, 2026
Merged

gspivey merged 8 commits into
mainfrom
claude/analyze-networking-architecture-X8YvL

Conversation

@gspivey

@gspivey gspivey commented Mar 26, 2026

Copy link
Copy Markdown
Owner

Honest documentation of what this library is (high-performance UDP endpoint)
and what it isn't (general-purpose network stack). Includes detailed comparison
against Linux kernel UDP implementation, documents VPC-specific assumptions,
and establishes roadmap for physical hardware support and kernel bake-off.

https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax

claude added 7 commits March 26, 2026 12:30
Honest documentation of what this library is (high-performance UDP endpoint)
and what it isn't (general-purpose network stack). Includes detailed comparison
against Linux kernel UDP implementation, documents VPC-specific assumptions,
and establishes roadmap for physical hardware support and kernel bake-off.

https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
…ake-off

IPv6 (with NDP, ICMPv6) and UDP encapsulation (VXLAN/GUE/GENEVE) are now
planned features. Removed kernel bake-off as a separate item since the
existing performance test suite already covers that comparison.

https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
The Status section duplicated information already covered in the
What's Implemented table. Removing it to keep the README concise.

https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
Added TOS/DSCP, VLAN, Cork/MSG_MORE to Not Currently Planned list.
Moved jumbo frames to Planned (under Physical Hardware Support
which already covers configurable MTU).

https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
Physical hardware deployments need VLAN tagging in the socket layer.

https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
Feature names now match exactly between the What's Not Implemented
table and the Planned/Not Currently Planned roadmap sections. Table
is reordered to list all Planned items first (matching roadmap order),
then all Not Planned items. Added contribution note after Not Planned.

https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
We include rte_flow.h in bindgen but expose no safe wrapper or stubs.
Users would need raw unsafe FFI calls. Updated wording to be accurate.

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0537d1ffb30feff48 (DPDK ENI: 10.0.1.243)
  • Receiver: i-0a71ad7b40ec6ecd4 (DPDK ENI: 10.0.1.142)
  • Both instances SSM-ready.

@gspivey
gspivey merged commit d833e21 into main Mar 26, 2026
1 check passed
@gspivey
gspivey deleted the claude/analyze-networking-architecture-X8YvL branch March 26, 2026 13:05
@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 23595212875)

Branch: 28/merge | Commit: 31601d7d

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.142:9000 (MAC: 02:1a:d1:7d:de:8b)
echo listening on 10.0.1.142: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.243:9000 (MAC: 02:db:43:ce:18:25)
echo listening on 10.0.1.243: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.142:9000: 'arp-probe #1'
Test complete
[2026-03-26T13:07:31Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-26T13:07:31Z] INFO: Test: udp_send_receive
[2026-03-26T13:07:32Z] INFO: UDP send/receive succeeded
[2026-03-26T13:07:32Z] INFO: Test: echo_roundtrip
[2026-03-26T13:07:33Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-26T13:07:33Z] INFO: Test: payload_integrity
[2026-03-26T13:07:33Z] INFO: Response received, checking payload match...
[2026-03-26T13:07:33Z] INFO: Payload integrity verified (found in response)
[2026-03-26T13:07:33Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-26T13:07:33Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-26T13:13:39Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-26T13:13:39Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-26T13:13:39Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-26T13:13:39Z] 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.142:9000 (MAC: 02:1a:d1:7d:de:8b)
echo listening on 10.0.1.142: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.243:9000 (MAC: 02:db:43:ce:18:25)
echo listening on 10.0.1.243:9000
Shutting down gracefully...

sender-test-client.log

[2026-03-26T12:59:59Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.142:9000
Bind address: 10.0.1.243: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.243:32768 (MAC: 02:db:43:ce:18:25)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.142:9000: 'arp-probe #1'
Test complete
[2026-03-26T13:00:01Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-26T13:00:01Z] INFO: Test: udp_send_receive
[2026-03-26T13:00:02Z] INFO: UDP send/receive succeeded
[2026-03-26T13:00:02Z] INFO: Test: echo_roundtrip
[2026-03-26T13:00:04Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-26T13:00:04Z] INFO: Test: payload_integrity
[2026-03-26T13:00:05Z] INFO: Response received, checking payload match...
[2026-03-26T13:00:05Z] INFO: Payload integrity verified (found in response)
[2026-03-26T13:00:05Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-26T13:00:05Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-26T13:07:31Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.142: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.142:9000: 'arp-probe #1'
Test complete
[2026-03-26T13:07:31Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-26T13:07:31Z] INFO: Test: udp_send_receive
[2026-03-26T13:07:32Z] INFO: UDP send/receive succeeded
[2026-03-26T13:07:32Z] INFO: Test: echo_roundtrip
[2026-03-26T13:07:33Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-26T13:07:33Z] INFO: Test: payload_integrity
[2026-03-26T13:07:33Z] INFO: Response received, checking payload match...
[2026-03-26T13:07:33Z] INFO: Payload integrity verified (found in response)
[2026-03-26T13:07:33Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-26T13:07:33Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-03-26T13:13:37Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-03-26T13:13:37Z] INFO: Local IP: 10.0.1.243, Peer IP: 10.0.1.142, Port: 9000
[2026-03-26T13:13:37Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.142       0x1         0x2         02:1a:d1:7d:de:8b     *        ens5
10.0.1.243       0x1         0x2         02:db:43:ce:18:25     *        ens5
10.0.1.63        0x1         0x2         02:d9:6b:2e:a0:49     *        ens5
10.0.1.1         0x1         0x2         02:09:6e:99:bd:49     *        ens5
[2026-03-26T13:13:37Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-03-26T13:13:37Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-03-26T13:13:37Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1859432 Mar 26 12:58 /opt/dpdk-stdlib/target/release/test-client
[2026-03-26T13:13:37Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.142 --port 9000 --bind-ip 10.0.1.243 --count 10 --delay 200
[2026-03-26T13:13:39Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.142:9000
Bind address: 10.0.1.243: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.243:32768 (MAC: 02:db:43:ce:18:25)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.142:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-26T13:13:39Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-26T13:13:39Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-26T13:13:39Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-26T13:13:39Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0a71ad7b40ec6ecd4 (receiver)
Command ID: 05180274-3ecc-4fc3-8901-f5305009ad03

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0a71ad7b40ec6ecd4 (receiver)
Command ID: 37b5a535-d5d4-49d5-bdc8-0e1888dda96e

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0a71ad7b40ec6ecd4 (receiver)
Command ID: f456c652-adcd-4c0d-a09a-33235b00babb

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0537d1ffb30feff48 (sender)
Command ID: 72051d64-92db-43e8-8e7b-ffd18b64cb0e

=== 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:ef:d2:f8:ed:91 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-06c82616fc84ca6e4
    altname device-number-0.0
    inet 10.0.1.181/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2301sec preferred_lft 2301sec
    inet6 fe80::ef:d2ff:fef8:ed91/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:52:20:c3:d3 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:1a:d1:7d:de:8b brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname eni-00eceb8b0f83def65
    altname device-number-1.0
    inet 10.0.1.142/24 brd 10.0.1.255 scope global ens6
       valid_lft forever preferred_lft forever
    inet6 fe80::1a:d1ff:fe7d:de8b/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:25:85:78:0d:35 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-010ecc95cc5a5d042
    altname device-number-0.0
    inet 10.0.1.209/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2319sec preferred_lft 2319sec
    inet6 fe80::25:85ff:fe78:d35/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:7d:b6:6e:aa 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-26T12:59:19Z
hostname: ip-10-0-1-181.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:ef:d2:f8:ed:91 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-06c82616fc84ca6e4
    altname device-number-0.0
    inet 10.0.1.181/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3342sec preferred_lft 3342sec
    inet6 fe80::ef:d2ff:fef8:ed91/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:52:20:c3:d3 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.62 dev ens5 lladdr 02:fe:d5:53:37:c5 STALE 
10.0.1.63 dev ens5 lladdr 02:d9:6b:2e:a0:49 REACHABLE 
10.0.1.117 dev ens5 lladdr 02:55:40:ad:7b:df STALE 
10.0.1.1 dev ens5 lladdr 02:09:6e:99:bd:49 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.181 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.181 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.181 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.181 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:1a:d1:7d:de:8b/ 02:ef:d2:f8:ed:91/ 

--- ENI: 02:1a:d1:7d:de:8b/ ---
  device-number: 1
  local-ipv4s: 10.0.1.142
  subnet-id: subnet-08622a4adcaf0cbe2
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:ef:d2:f8:ed:91/ ---
  device-number: 0
  local-ipv4s: 10.0.1.181
  subnet-id: subnet-08622a4adcaf0cbe2
  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:09:6e:99:bd:49 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.181 ens5
Unicast reply from 10.0.1.1 [02:09:6E:99:BD:49]  0.541ms
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 26 12:59 .
drwxr-xr-x. 14 root root     3100 Mar 26 12:58 ..
crw-------.  1 root root 243,   0 Mar 26 12:59 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Mar 26 12:54 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067481] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073732] audit: type=2000 audit(1774529696.519:1): state=initialized audit_enabled=0 res=1
[    0.075221] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099822] ACPI: Interpreter enabled
[    0.099822] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123775] pci 0000:00:05.0: enabling Extended Tags
[    0.155834] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.204444] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.256412] IPI shorthand broadcast: enabled
[    0.256479] AES CTR mode by8 optimization enabled
[    2.425244] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.469542] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.526342] VFIO - User Level meta-driver version: 0.3
[    3.531350] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.546356] ena 0000:00:05.0: ENA device version: 0.10
[    3.547157] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.665042] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.676892] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:ef:d2:f8:ed:91
[    3.765111] ena 0000:00:05.0 ens5: renamed from eth0
[    4.518048] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  188.152251] pci 0000:00:06.0: enabling Extended Tags
[  188.156075] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  188.165174] ena 0000:00:06.0: ENA device version: 0.10
[  188.165926] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  188.265161] ena 0000:00:06.0: ENA Large LLQ is disabled
[  188.277067] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:1a:d1:7d:de:8b
[  188.335493] ena 0000:00:06.0 ens6: renamed from eth0
[  188.830620] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  249.505311] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  249.506670] 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-26T12:59:11Z
hostname: ip-10-0-1-209.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:25:85:78:0d:35 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-010ecc95cc5a5d042
    altname device-number-0.0
    inet 10.0.1.209/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3346sec preferred_lft 3346sec
    inet6 fe80::25:85ff:fe78:d35/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:7d:b6:6e:aa 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.117 dev ens5 lladdr 02:55:40:ad:7b:df STALE 
10.0.1.63 dev ens5 lladdr 02:d9:6b:2e:a0:49 REACHABLE 
10.0.1.1 dev ens5 lladdr 02:09:6e:99:bd:49 REACHABLE 
10.0.1.62 dev ens5 lladdr 02:fe:d5:53:37:c5 STALE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:25:85:78:0d:35/ 02:db:43:ce:18:25/ 

--- ENI: 02:25:85:78:0d:35/ ---
  device-number: 0
  local-ipv4s: 10.0.1.209
  subnet-id: subnet-08622a4adcaf0cbe2
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:db:43:ce:18:25/ ---
  device-number: 1
  local-ipv4s: 10.0.1.243
  subnet-id: subnet-08622a4adcaf0cbe2
  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:09:6e:99:bd:49 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.209 ens5
Unicast reply from 10.0.1.1 [02:09:6E:99:BD:49]  0.538ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067800] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074021] audit: type=2000 audit(1774529692.946:1): state=initialized audit_enabled=0 res=1
[    0.075520] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.100293] ACPI: Interpreter enabled
[    0.100293] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124065] pci 0000:00:05.0: enabling Extended Tags
[    0.156219] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.217086] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.256707] IPI shorthand broadcast: enabled
[    0.256769] AES CTR mode by8 optimization enabled
[    2.385185] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.421540] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.477721] VFIO - User Level meta-driver version: 0.3
[    3.505153] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.527169] ena 0000:00:05.0: ENA device version: 0.10
[    3.527934] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.644987] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.657090] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:25:85:78:0d:35
[    3.695111] ena 0000:00:05.0 ens5: renamed from eth0
[    4.539904] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.295175] pci 0000:00:06.0: enabling Extended Tags
[  210.299038] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.310895] ena 0000:00:06.0: ENA device version: 0.10
[  210.311689] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.410895] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.423097] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:db:43:ce:18:25
[  210.481031] ena 0000:00:06.0 ens6: renamed from eth0
[  210.794653] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  246.175310] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  246.176674] 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.073710] pid_max: default: 32768 minimum: 301
[    0.125934] iommu: Default domain type: Translated 
[    0.126686] NetLabel:  unlabeled traffic allowed by default
[    0.133710] PCI: CLS 0 bytes, default 64
[    0.232111] nvme nvme0: 2/0/0 default/read/poll queues
[    0.422664] 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.422757] systemd[1]: No hostname configured, using default hostname.
[    0.528614] systemd[1]: Queued start job for default target initrd.target.
[    1.622140] 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.622373] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  287.127750] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6634)
[  754.287916] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:28557)

sender-dmesg-crashes.log

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

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

[  188.151021] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  188.152251] pci 0000:00:06.0: enabling Extended Tags
[  188.153973] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  188.155035] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  188.156075] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  188.165174] ena 0000:00:06.0: ENA device version: 0.10
[  188.165926] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  188.265161] ena 0000:00:06.0: ENA Large LLQ is disabled
[  188.277067] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:1a:d1:7d:de:8b
[  188.335493] ena 0000:00:06.0 ens6: renamed from eth0
[  188.830620] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  249.505311] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  249.506670] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  287.127750] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6634)
[  362.284626] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  363.295221] ena 0000:00:06.0: ENA device version: 0.10
[  363.296013] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  363.395217] ena 0000:00:06.0: ENA Large LLQ is disabled
[  363.407043] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:1a:d1:7d:de:8b
[  363.417212] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  501.599246] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  501.600596] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  754.287916] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:28557)
[  815.130150] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  816.143368] ena 0000:00:06.0: ENA device version: 0.10
[  816.144176] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  816.245339] ena 0000:00:06.0: ENA Large LLQ is disabled
[  816.257254] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:1a:d1:7d:de:8b
[  816.295473] ena 0000:00:06.0 ens6: renamed from eth0
[  816.418329] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels

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

[  210.291741] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  210.292839] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  210.293888] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  210.295175] pci 0000:00:06.0: enabling Extended Tags
[  210.296943] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  210.297993] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  210.299038] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.310895] ena 0000:00:06.0: ENA device version: 0.10
[  210.311689] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.410895] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.423097] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:db:43:ce:18:25
[  210.481031] ena 0000:00:06.0 ens6: renamed from eth0
[  210.794653] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  246.175310] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  246.176674] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  307.743142] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6811)
[  308.493007] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6833)
[  310.253044] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6857)
[  311.813034] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6882)
[  356.013589] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  357.026536] ena 0000:00:06.0: ENA device version: 0.10
[  357.027330] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  357.124794] ena 0000:00:06.0: ENA Large LLQ is disabled
[  357.137795] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:db:43:ce:18:25
[  357.200400] ena 0000:00:06.0 ens6: renamed from eth0
[  357.286296] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  839.612758] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  839.614237] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1124.479842] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:20241)
[ 1169.789652] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:21030)

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-08b6416403de9f5ed (DPDK ENI: 10.0.1.52)
  • Receiver: i-050254907849e9b95 (DPDK ENI: 10.0.1.254)
  • 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 23595605538)

Branch: 28/merge | Commit: f03e4aee

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.254:9000 (MAC: 02:69:35:94:32:09)
echo listening on 10.0.1.254: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.52:9000 (MAC: 02:32:c0:b8:ed:b5)
echo listening on 10.0.1.52: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.254:9000: 'arp-probe #1'
Test complete
[2026-03-26T13:36:44Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-26T13:36:44Z] INFO: Test: udp_send_receive
[2026-03-26T13:36:45Z] INFO: UDP send/receive succeeded
[2026-03-26T13:36:45Z] INFO: Test: echo_roundtrip
[2026-03-26T13:36:46Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-26T13:36:46Z] INFO: Test: payload_integrity
[2026-03-26T13:36:46Z] INFO: Response received, checking payload match...
[2026-03-26T13:36:46Z] INFO: Payload integrity verified (found in response)
[2026-03-26T13:36:46Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-26T13:36:46Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-26T13:41:01Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-26T13:41:01Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-26T13:41:01Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-26T13:41:01Z] 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.254:9000 (MAC: 02:69:35:94:32:09)
echo listening on 10.0.1.254: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.52:9000 (MAC: 02:32:c0:b8:ed:b5)
echo listening on 10.0.1.52:9000
Shutting down gracefully...

sender-test-client.log

[2026-03-26T13:29:38Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.254:9000
Bind address: 10.0.1.52: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.52:32768 (MAC: 02:32:c0:b8:ed:b5)
Backend: dpdk
Sending packets...
Sent 12 bytes: 'arp-probe #1'
Received 12 bytes from 10.0.1.254:9000: 'arp-probe #1'
Test complete
[2026-03-26T13:29:39Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-26T13:29:39Z] INFO: Test: udp_send_receive
[2026-03-26T13:29:40Z] INFO: UDP send/receive succeeded
[2026-03-26T13:29:40Z] INFO: Test: echo_roundtrip
[2026-03-26T13:29:42Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-26T13:29:42Z] INFO: Test: payload_integrity
[2026-03-26T13:29:43Z] INFO: Response received, checking payload match...
[2026-03-26T13:29:43Z] INFO: Payload integrity verified (found in response)
[2026-03-26T13:29:43Z] INFO: JUnit XML written to: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-26T13:29:43Z] INFO: Tier 1 sender tests complete. Results: /tmp/test-results/tier1-dpdk-echo.xml
[2026-03-26T13:36:44Z] INFO: Test: arp_resolution
UDP Test Client
Target: 10.0.1.254: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.254:9000: 'arp-probe #1'
Test complete
[2026-03-26T13:36:44Z] INFO: ARP resolution succeeded (got response from peer)
[2026-03-26T13:36:44Z] INFO: Test: udp_send_receive
[2026-03-26T13:36:45Z] INFO: UDP send/receive succeeded
[2026-03-26T13:36:45Z] INFO: Test: echo_roundtrip
[2026-03-26T13:36:46Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-03-26T13:36:46Z] INFO: Test: payload_integrity
[2026-03-26T13:36:46Z] INFO: Response received, checking payload match...
[2026-03-26T13:36:46Z] INFO: Payload integrity verified (found in response)
[2026-03-26T13:36:46Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-03-26T13:36:46Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-03-26T13:40:58Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-03-26T13:40:58Z] INFO: Local IP: 10.0.1.52, Peer IP: 10.0.1.254, Port: 9000
[2026-03-26T13:40:58Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.254       0x1         0x2         02:69:35:94:32:09     *        ens5
10.0.1.52        0x1         0x2         02:32:c0:b8:ed:b5     *        ens5
10.0.1.104       0x1         0x2         02:65:6e:ec:4c:6f     *        ens5
10.0.1.1         0x1         0x2         02:77:c4:0e:26:6d     *        ens5
10.0.1.32        0x1         0x2         02:78:db:4c:de:15     *        ens5
[2026-03-26T13:40:58Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-03-26T13:40:58Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-03-26T13:40:58Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1859432 Mar 26 13:27 /opt/dpdk-stdlib/target/release/test-client
[2026-03-26T13:40:58Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.254 --port 9000 --bind-ip 10.0.1.52 --count 10 --delay 200
[2026-03-26T13:41:01Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.254:9000
Bind address: 10.0.1.52: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.52:32768 (MAC: 02:32:c0:b8:ed:b5)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.254:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-03-26T13:41:01Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-03-26T13:41:01Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-03-26T13:41:01Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-03-26T13:41:01Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-050254907849e9b95 (receiver)
Command ID: 3d7f33dc-608c-4921-b52b-69f341a10943

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-050254907849e9b95 (receiver)
Command ID: 0a2fca97-af80-49cf-aa5d-455d7ed6f50c

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-050254907849e9b95 (receiver)
Command ID: d5e9c31b-4550-4069-8a19-a3f0ee073b8a

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-08b6416403de9f5ed (sender)
Command ID: fba9e567-bf5f-4aa5-9277-916a4b690c03

=== 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:d7:d2:c0:c3:ad brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0916d292f3eb8a133
    altname device-number-0.0
    inet 10.0.1.48/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2397sec preferred_lft 2397sec
    inet6 fe80::d7:d2ff:fec0:c3ad/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:dd:8a:3e:38 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:69:35:94:32:09 brd ff:ff:ff:ff:ff:ff
    altname enp0s6
    altname ens6
    inet 10.0.1.254/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::69:35ff:fe94:3209/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:f4:d9:92:ae:63 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0a408406a411b253c
    altname device-number-0.0
    inet 10.0.1.167/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2420sec preferred_lft 2420sec
    inet6 fe80::f4:d9ff:fe92:ae63/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:9d:df:6d:b3 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-26T13:28:58Z
hostname: ip-10-0-1-48.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:d7:d2:c0:c3:ad brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0916d292f3eb8a133
    altname device-number-0.0
    inet 10.0.1.48/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3303sec preferred_lft 3303sec
    inet6 fe80::d7:d2ff:fec0:c3ad/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:dd:8a:3e:38 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

=== ARP TABLE ===
10.0.1.1 dev ens5 lladdr 02:77:c4:0e:26:6d REACHABLE 
10.0.1.104 dev ens5 lladdr 02:65:6e:ec:4c:6f REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.48 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.48 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.48 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.48 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:69:35:94:32:09/ 02:d7:d2:c0:c3:ad/ 

--- ENI: 02:69:35:94:32:09/ ---
  device-number: 1
  local-ipv4s: 10.0.1.254
  subnet-id: subnet-0f307ad0f48d16ac0
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:d7:d2:c0:c3:ad/ ---
  device-number: 0
  local-ipv4s: 10.0.1.48
  subnet-id: subnet-0f307ad0f48d16ac0
  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:77:c4:0e:26:6d REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.48 ens5
Unicast reply from 10.0.1.1 [02:77:C4:0E:26:6D]  0.536ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067304] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.073504] audit: type=2000 audit(1774531436.198:1): state=initialized audit_enabled=0 res=1
[    0.074980] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.099589] ACPI: Interpreter enabled
[    0.099589] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.123545] pci 0000:00:05.0: enabling Extended Tags
[    0.156228] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.204791] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.251914] IPI shorthand broadcast: enabled
[    0.251977] AES CTR mode by8 optimization enabled
[    2.345170] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.387190] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.445198] VFIO - User Level meta-driver version: 0.3
[    3.538816] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.550091] ena 0000:00:05.0: ENA device version: 0.10
[    3.550826] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.653456] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.666484] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:d7:d2:c0:c3:ad
[    3.725122] ena 0000:00:05.0 ens5: renamed from eth0
[    4.585622] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  251.224550] pci 0000:00:06.0: enabling Extended Tags
[  251.228401] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  251.240314] ena 0000:00:06.0: ENA device version: 0.10
[  251.241110] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.340296] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.352095] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:69:35:94:32:09
[  251.410329] ena 0000:00:06.0 ens6: renamed from eth0
[  251.702839] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  288.381328] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  288.382748] 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-26T13:28:50Z
hostname: ip-10-0-1-167.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:f4:d9:92:ae:63 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0a408406a411b253c
    altname device-number-0.0
    inet 10.0.1.167/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3311sec preferred_lft 3311sec
    inet6 fe80::f4:d9ff:fe92:ae63/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:9d:df:6d:b3 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.104 dev ens5 lladdr 02:65:6e:ec:4c:6f REACHABLE 
10.0.1.1 dev ens5 lladdr 02:77:c4:0e:26:6d REACHABLE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:32:c0:b8:ed:b5/ 02:f4:d9:92:ae:63/ 

--- ENI: 02:32:c0:b8:ed:b5/ ---
  device-number: 1
  local-ipv4s: 10.0.1.52
  subnet-id: subnet-0f307ad0f48d16ac0
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:f4:d9:92:ae:63/ ---
  device-number: 0
  local-ipv4s: 10.0.1.167
  subnet-id: subnet-0f307ad0f48d16ac0
  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:77:c4:0e:26:6d REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.167 ens5
Unicast reply from 10.0.1.1 [02:77:C4:0E:26:6D]  0.535ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068524] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074754] audit: type=2000 audit(1774531436.101:1): state=initialized audit_enabled=0 res=1
[    0.076168] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.100848] ACPI: Interpreter enabled
[    0.100848] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124803] pci 0000:00:05.0: enabling Extended Tags
[    0.156986] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.187150] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.257799] IPI shorthand broadcast: enabled
[    0.257862] AES CTR mode by8 optimization enabled
[    2.365190] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.411185] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.463617] VFIO - User Level meta-driver version: 0.3
[    3.526879] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.542489] ena 0000:00:05.0: ENA device version: 0.10
[    3.543237] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.654989] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.667382] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:f4:d9:92:ae:63
[    3.725081] ena 0000:00:05.0 ens5: renamed from eth0
[    4.726911] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  251.405783] pci 0000:00:06.0: enabling Extended Tags
[  251.409615] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  251.417706] ena 0000:00:06.0: ENA device version: 0.10
[  251.418476] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.514058] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.525889] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:32:c0:b8:ed:b5
[  251.574072] ena 0000:00:06.0 ens6: renamed from eth0
[  251.907144] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  281.478017] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  281.479370] 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.073482] pid_max: default: 32768 minimum: 301
[    0.125645] iommu: Default domain type: Translated 
[    0.126367] NetLabel:  unlabeled traffic allowed by default
[    0.133482] PCI: CLS 0 bytes, default 64
[    0.223625] nvme nvme0: 2/0/0 default/read/poll queues
[    0.417431] 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.417530] systemd[1]: No hostname configured, using default hostname.
[    0.528172] systemd[1]: Queued start job for default target initrd.target.
[    1.645564] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    8.256239] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  326.312468] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6618)
[  752.670090] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:26271)

sender-dmesg-crashes.log

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

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

[  251.222206] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  251.223271] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  251.224550] pci 0000:00:06.0: enabling Extended Tags
[  251.226370] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  251.227412] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  251.228401] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  251.240314] ena 0000:00:06.0: ENA device version: 0.10
[  251.241110] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.340296] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.352095] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:69:35:94:32:09
[  251.410329] ena 0000:00:06.0 ens6: renamed from eth0
[  251.702839] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  288.381328] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  288.382748] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  326.312468] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6618)
[  402.407275] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  403.419492] ena 0000:00:06.0: ENA device version: 0.10
[  403.420294] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  403.519527] ena 0000:00:06.0: ENA Large LLQ is disabled
[  403.531335] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:69:35:94:32:09
[  403.540656] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  494.872853] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  494.874214] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  752.670090] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:26271)
[  828.908512] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  829.927144] ena 0000:00:06.0: ENA device version: 0.10
[  829.927912] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  830.027118] ena 0000:00:06.0: ENA Large LLQ is disabled
[  830.039014] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:69:35:94:32:09
[  830.048972] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels

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

[  251.402402] pci 0000:00:06.0: [1d0f:ec20] type 00 class 0x020000
[  251.403487] pci 0000:00:06.0: reg 0x10: [mem 0x00000000-0x00003fff]
[  251.404527] pci 0000:00:06.0: reg 0x18: [mem 0x00000000-0x000fffff pref]
[  251.405783] pci 0000:00:06.0: enabling Extended Tags
[  251.407523] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  251.408584] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  251.409615] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  251.417706] ena 0000:00:06.0: ENA device version: 0.10
[  251.418476] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  251.514058] ena 0000:00:06.0: ENA Large LLQ is disabled
[  251.525889] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:32:c0:b8:ed:b5
[  251.574072] ena 0000:00:06.0 ens6: renamed from eth0
[  251.907144] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  281.478017] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  281.479370] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  342.476210] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6631)
[  343.226089] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6653)
[  344.976104] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6676)
[  346.526099] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6701)
[  392.594875] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  393.603487] ena 0000:00:06.0: ENA device version: 0.10
[  393.604292] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  393.703497] ena 0000:00:06.0: ENA Large LLQ is disabled
[  393.715307] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:32:c0:b8:ed:b5
[  393.773529] ena 0000:00:06.0 ens6: renamed from eth0
[  393.835371] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  861.925772] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  861.927108] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1022.893498] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:18072)
[ 1068.533334] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:18860)

gspivey pushed a commit that referenced this pull request Jun 14, 2026
Performance tests show no regression — TCP engine code has zero impact
on UDP datapath. rust-dpdk results consistent with Run #27.
gspivey pushed a commit that referenced this pull request Jun 18, 2026
gspivey added a commit that referenced this pull request Jun 18, 2026
)

## ROADMAP Item

**#28**: `dpdk-stdlib-tcp`: Sync socket — TcpStream and TcpListener
public API
Spec: `.kiro/specs/tcp-support/` · tasks 8.4, 8.5

## Changes

### TcpStream (`tcp_stream.rs`)
- `enum Inner { Dpdk(DpdkTcpStream), Std(std::net::TcpStream) }` with
v4→DPDK / v6→kernel dispatch
- Full `std::net::TcpStream` surface: `connect`, `connect_timeout`,
`shutdown`, `peer_addr`, `local_addr`,
`set_read_timeout`/`set_write_timeout`, `set_nodelay`/`nodelay`,
`set_ttl`/`ttl`, `set_linger`/`linger`, `set_nonblocking`, `take_error`,
`peek`, `try_clone` (returns `Unsupported` on DPDK arm)
- `impl Read/Write for TcpStream` and `impl Read/Write for &TcpStream`
(serialized via read_mutex/write_mutex per P0-C)
- Process-wide `TcpContext` + `init_tcp_context()` for engine
bootstrapping

### TcpListener (`tcp_listener.rs`)
- `enum Inner { Dpdk(DpdkTcpListener), Std(std::net::TcpListener) }`
- `bind<A: ToSocketAddrs>` with v4/v6 dispatch
- `accept() -> (TcpStream, SocketAddr)`
- `local_addr()`, `set_ttl()`, `ttl()`, `incoming() -> Incoming`

### SpscByteRing (`ring.rs`)
- Added `peek(&self, buf: &mut [u8]) -> usize` for non-destructive read
(used by `TcpStream::peek`)

## Tests Added
- `tcp_stream_try_clone_dpdk_returns_unsupported`
- `tcp_stream_peer_addr_and_local_addr`
- `tcp_stream_shutdown_sends_command`
- `tcp_stream_set_linger_updates_handle`
- `tcp_stream_take_error_returns_none_initially`
- `tcp_stream_take_error_returns_latched_error`
- `tcp_stream_read_write_dpdk`
- `tcp_stream_try_clone_std_works` (v6 dispatch path)
- TcpListener bind tests (v4 without context, v6 fallback)

## Tradeoffs
- `set_linger`/`linger` on the Std (kernel) arm is a no-op since
`tcp_linger` is unstable in std
- `try_clone()` on DPDK arm returns `Unsupported` — documented
divergence; `into_split()` is the intended concurrent pattern for SPSC
- `peek()` on DPDK arm returns `WouldBlock` when ring is empty (in
blocking mode, full blocking peek would require additional condvar wait
logic)

All 666+ existing tests pass locally (`cargo build && cargo test`).

---------

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants