Skip to content

feat: hardware VLAN offload for NIC-assisted 802.1Q tag insert/strip - #37

Merged
gspivey merged 7 commits into
mainfrom
claude/implement-roadmap-feature-umHZq
Apr 13, 2026
Merged

gspivey merged 7 commits into
mainfrom
claude/implement-roadmap-feature-umHZq

Conversation

@gspivey

@gspivey gspivey commented Apr 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • Hardware VLAN offload on TX (NIC inserts 802.1Q tag from mbuf.vlan_tci) and RX (NIC strips tag into mbuf.vlan_tci, software re-inserts for uniform VLAN filtering)
  • Follows the existing checksum offload pattern: query NIC capabilities at port init, set mbuf flags when capable, fall back to software on unsupported NICs
  • New public API: VlanConfig::with_force_software(bool), UdpSocket::has_tx_vlan_offload() / has_rx_vlan_offload(), PortConfig::with_vlan_offload()
  • 8 new unit tests, all 358 tests pass
  • README updated: moved Hardware VLAN offload from Planned to Done, cleaned up completed items from What's Not Implemented

Changes by crate

Crate Files What changed
dpdk-sys stubs.rs, shim.rs Added RTE_MBUF_F_TX_VLAN, RTE_MBUF_F_RX_VLAN, RTE_MBUF_F_RX_VLAN_STRIPPED constants; stubs now report VLAN offload capabilities
dpdk mbuf.rs, port.rs Added vlan_tci() / set_vlan_tci() on Mbuf; added with_vlan_offload() on PortConfig
dpdk-udp lib.rs, topology.rs TX path sets mbuf VLAN metadata when HW offload available; RX path re-inserts stripped tags; VlanConfig gains force_software field; send_frame accepts optional VLAN TCI
README README.md Roadmap, What's Implemented, What's Not Implemented updated

Test plan

  • cargo build passes with no new errors
  • cargo test — all 358 tests pass (8 new)
  • Integration tests on EC2 with ENA (supports VLAN offload)
  • Performance tests to measure CPU overhead reduction on tagged frames

https://claude.ai/code/session_01WRu2gZPeAMT14C5met7oqL

Add hardware VLAN offload support following the existing checksum offload
pattern. When the NIC supports it (e.g., ENA on AWS), VLAN tags are
inserted on TX and stripped on RX in hardware, eliminating the ~10% CPU
overhead of software tag manipulation on tagged frames.

TX path: build untagged frame, set mbuf.vlan_tci + RTE_MBUF_F_TX_VLAN
RX path: NIC strips tag into mbuf.vlan_tci, software re-inserts for
uniform VLAN filtering. Falls back to software on unsupported NICs.

New public API:
- VlanConfig::with_force_software(bool) - force software mode
- UdpSocket::has_tx_vlan_offload() / has_rx_vlan_offload()
- PortConfig::with_vlan_offload()

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

Copy link
Copy Markdown

Integration Test Failure (Run 24320287292)

Branch: 37/merge | Commit: 2fdb0143a76be9b6bbd3c2a56bfdcaca226cb1b0

failure-summary.json

{
  "failed_step": "deploy_infrastructure",
  "error": "Infrastructure deployment failed",
  "exit_code": 2,
  "timestamp": "2026-04-13T00:42:30.348269Z",
  "sender_instance_id": "",
  "receiver_instance_id": "",
  "commit": "2fdb0143a76be9b6bbd3c2a56bfdcaca226cb1b0",
  "run_url": "https://github.com/gspivey/dpdk-stdlib-rust/actions/runs/24320287292"
}```

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

Compiling either v1.15.0
Compiling bindgen v0.70.1
Compiling shlex v1.3.0
Compiling itertools v0.13.0
Compiling regex v1.12.3
Compiling cexpr v0.6.0
Compiling bitflags v2.11.0
Compiling find-msvc-tools v0.1.9
Compiling log v0.4.29
Compiling rustc-hash v1.1.0
Compiling cc v1.2.60
Compiling pkg-config v0.3.33
Compiling utf8parse v0.2.2
Compiling thiserror v1.0.69
Compiling anstyle-parse v1.0.0
Compiling thiserror-impl v1.0.69
Compiling parking_lot_core v0.9.12
Compiling is_terminal_polyfill v1.70.2
Compiling colorchoice v1.0.5
Compiling anstyle v1.0.14
Compiling anstyle-query v1.1.5
Compiling anstream v1.0.0
Compiling clap_lex v1.1.0
Compiling strsim v0.11.1
Compiling smallvec v1.15.1
Compiling scopeguard v1.2.0
Compiling dpdk-stdlib-sys v0.1.0 (/opt/dpdk-stdlib/dpdk-sys)
Compiling heck v0.5.0
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 clap_derive v4.6.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 errno v0.3.14
Compiling signal-hook-registry v1.4.8
Compiling dpdk-stdlib-udp v0.1.0 (/opt/dpdk-stdlib/dpdk-udp)
error[E0308]: mismatched types
--> dpdk-udp/src/lib.rs:1414:57
|
1414 | let vlan_stripped = (ol_flags & dpdk_sys::RTE_MBUF_F_RX_VLAN_STRIPPED) != 0;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u64, found u32

error[E0277]: no implementation for u64 & u32
--> dpdk-udp/src/lib.rs:1414:55
|
1414 | let vlan_stripped = (ol_flags & dpdk_sys::RTE_MBUF_F_RX_VLAN_STRIPPED) != 0;
| ^ no implementation for u64 & u32
|
= help: the trait BitAnd<u32> is not implemented for u64
help: the following other types implement trait BitAnd<Rhs>
--> /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:22:8
|
= note: &u64 implements BitAnd<u64>
::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:33:8
|
= note: u64 implements BitAnd<&u64>
::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:44:8
|
= note: &u64 implements BitAnd
--> /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/ops/bit.rs:174:8
|
= note: u64 implements BitAnd
::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/ops/bit.rs:187:0
|
= note: in this macro invocation
= note: this error originates in the macro forward_ref_binop which comes from the expansion of the macro bitand_impl (in Nightly builds, run with -Z macro-backtrace for more info)

Compiling clap v4.6.0
Some errors have detailed explanations: E0277, E0308.
For more information about an error, try rustc --explain E0277.
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 (8667 bytes, last 80 lines)

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

warning: dpdk-stdlib-sys (build script) generated 1 warning
Compiling clap_derive 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 clap v4.6.0
Compiling dpdk-stdlib-udp v0.1.0 (/opt/dpdk-stdlib/dpdk-udp)
error[E0308]: mismatched types
--> dpdk-udp/src/lib.rs:1414:57
|
1414 | let vlan_stripped = (ol_flags & dpdk_sys::RTE_MBUF_F_RX_VLAN_STRIPPED) != 0;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u64, found u32

error[E0277]: no implementation for u64 & u32
--> dpdk-udp/src/lib.rs:1414:55
|
1414 | let vlan_stripped = (ol_flags & dpdk_sys::RTE_MBUF_F_RX_VLAN_STRIPPED) != 0;
| ^ no implementation for u64 & u32
|
= help: the trait BitAnd<u32> is not implemented for u64
help: the following other types implement trait BitAnd<Rhs>
--> /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:22:8
|
= note: &u64 implements BitAnd<u64>
::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:33:8
|
= note: u64 implements BitAnd<&u64>
::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:44:8
|
= note: &u64 implements BitAnd
--> /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/ops/bit.rs:174:8
|
= note: u64 implements BitAnd
::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/ops/bit.rs:187:0
|
= note: in this macro invocation
= note: this error originates in the macro forward_ref_binop which comes from the expansion of the macro bitand_impl (in Nightly builds, run with -Z macro-backtrace for more info)

Compiling tokio-macros v2.7.0
Some errors have detailed explanations: E0277, E0308.
For more information about an error, try rustc --explain E0277.
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 (23882 bytes, last 80 lines)

[ 159.808323] cloud-init[1851]: Downloaded async-trait v0.1.89
[ 159.814007] cloud-init[1851]: Downloaded anstyle-query v1.1.5
[ 159.817424] cloud-init[1851]: Downloaded anstyle-parse v1.0.0
[ 159.821423] cloud-init[1851]: Downloaded anstream v1.0.0
[ 159.825501] cloud-init[1851]: Downloaded smallvec v1.15.1
[ 159.829716] cloud-init[1851]: Downloaded signal-hook-registry v1.4.8
[ 159.833372] cloud-init[1851]: Downloaded scopeguard v1.2.0
[ 159.836649] cloud-init[1851]: Downloaded quote v1.0.45
[ 159.841178] cloud-init[1851]: Downloaded pkg-config v0.3.33
[ 159.844756] cloud-init[1851]: Downloaded is_terminal_polyfill v1.70.2
[ 159.848099] cloud-init[1851]: Downloaded glob v0.3.3
[ 159.851497] cloud-init[1851]: Downloaded clap_lex v1.1.0
[ 159.854563] cloud-init[1851]: Downloaded clang-sys v1.8.1
[ 159.858844] cloud-init[1851]: Downloaded cfg-if v1.0.4
[ 159.862108] cloud-init[1851]: Downloaded anstyle v1.0.14
[ 159.865533] cloud-init[1851]: Downloaded strsim v0.11.1
[ 159.868721] cloud-init[1851]: Downloaded shlex v1.3.0
[ 159.871867] cloud-init[1851]: Downloaded rustc-hash v1.1.0
[ 159.874770] cloud-init[1851]: Downloaded log v0.4.29
[ 159.879110] cloud-init[1851]: Downloaded libloading v0.8.9
[ 159.883340] cloud-init[1851]: Downloaded heck v0.5.0
[ 159.886404] cloud-init[1851]: Downloaded either v1.15.0
[ 159.889743] cloud-init[1851]: Downloaded colorchoice v1.0.5
[ 159.892852] cloud-init[1851]: Downloaded cexpr v0.6.0
[ 159.896367] cloud-init[1851]: Downloaded errno v0.3.14
[ 159.900221] cloud-init[1851]: Downloaded libc v0.2.184
[ 159.989429] cloud-init[1851]: Compiling proc-macro2 v1.0.106
[ 159.991927] cloud-init[1851]: Compiling unicode-ident v1.0.24
[ 160.409118] cloud-init[1851]: Compiling quote v1.0.45
[ 161.353729] cloud-init[1851]: Compiling libc v0.2.184
[ 162.403050] cloud-init[1851]: Compiling syn v2.0.117
[ 162.855729] cloud-init[1851]: Compiling glob v0.3.3
[ 163.191233] cloud-init[1851]: Compiling clang-sys v1.8.1
[ 163.425460] cloud-init[1851]: Compiling prettyplease v0.2.37
[ 163.789182] cloud-init[1851]: Compiling memchr v2.8.0
[ 164.510746] cloud-init[1851]: Compiling regex-syntax v0.8.10
[ 166.638641] cloud-init[1851]: Compiling minimal-lexical v0.2.1
[ 166.854590] cloud-init[1851]: Compiling cfg-if v1.0.4
[ 166.883143] cloud-init[1851]: Compiling libloading v0.8.9
[ 167.026019] cloud-init[1851]: Compiling nom v7.1.3
[ 168.065583] cloud-init[1851]: Compiling regex-automata v0.4.14
[ 170.090502] cloud-init[1851]: Compiling either v1.15.0
[ 170.247604] cloud-init[1851]: Compiling bindgen v0.70.1
[ 170.379481] cloud-init[1851]: Compiling shlex v1.3.0
[ 170.519531] cloud-init[1851]: Compiling itertools v0.13.0
[ 171.752293] cloud-init[1851]: Compiling regex v1.12.3
[ 172.203899] cloud-init[1851]: Compiling cexpr v0.6.0
[ 174.323668] cloud-init[1851]: Compiling bitflags v2.11.0
[ 174.472327] cloud-init[1851]: Compiling find-msvc-tools v0.1.9
[ 174.663910] cloud-init[1851]: Compiling log v0.4.29
[ 174.793136] cloud-init[1851]: Compiling rustc-hash v1.1.0
[ 175.217916] cloud-init[1851]: Compiling cc v1.2.60
[ 176.738454] cloud-init[1851]: Compiling pkg-config v0.3.33
[ 177.248665] cloud-init[1851]: Compiling utf8parse v0.2.2
[ 177.300828] cloud-init[1851]: Compiling thiserror v1.0.69
[ 177.511615] cloud-init[1851]: Compiling anstyle-parse v1.0.0
[ 177.702331] cloud-init[1851]: Compiling thiserror-impl v1.0.69
[ 178.907220] cloud-init[1851]: Compiling parking_lot_core v0.9.12
[ 179.027282] cloud-init[1851]: Compiling is_terminal_polyfill v1.70.2
[ 179.069715] cloud-init[1851]: Compiling colorchoice v1.0.5
[ 179.125890] cloud-init[1851]: Compiling anstyle v1.0.14
[ 179.381968] cloud-init[1851]: Compiling anstyle-query v1.1.5
[ 179.433929] cloud-init[1851]: Compiling anstream v1.0.0
[ 180.061744] cloud-init[1851]: Compiling clap_lex v1.1.0
[ 180.397916] cloud-init[1851]: Compiling strsim v0.11.1
[ 181.445191] cloud-init[1851]: Compiling smallvec v1.15.1
[ 181.675181] cloud-init[1851]: Compiling scopeguard v1.2.0
[ 181.713175] cloud-init[1851]: Compiling dpdk-stdlib-sys v0.1.0 (/opt/dpdk-stdlib/dpdk-sys)
[ 181.727820] cloud-init[1851]: Compiling heck v0.5.0
[ 181.758479] cloud-init[1851]: warning: unused import: std::fs
[ 181.761094] cloud-init[1851]: --> dpdk-sys/build.rs:129:9
[ 181.763308] cloud-init[1851]: |
[ 181.764721] cloud-init[1851]: 129 | use std::fs;
[ 181.766708] cloud-init[1851]: | ^^^^^^^
[ 181.768672] cloud-init[1851]: |
[ 181.770130] cloud-init[1851]: = note: #[warn(unused_imports)] (part of #[warn(unused)]) on by default
[ 181.914020] cloud-init[1851]: Compiling clap_derive v4.6.0
[ 182.152116] cloud-init[1851]: warning: dpdk-stdlib-sys (build script) generated 1 warning
[ 183.424545] cloud-init[1851]: Compiling lock_api v0.4.14
[ 183.779785] cloud-init[1851]: Compiling clap_builder v4.6.0


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

[ 179.654258] cloud-init[1813]: Compiling is_terminal_polyfill v1.70.2
[ 179.692675] cloud-init[1813]: Compiling colorchoice v1.0.5
[ 179.745474] cloud-init[1813]: Compiling anstream v1.0.0
[ 180.320851] cloud-init[1813]: Compiling scopeguard v1.2.0
[ 180.365887] cloud-init[1813]: Compiling strsim v0.11.1
[ 181.326682] cloud-init[1813]: Compiling smallvec v1.15.1
[ 181.572273] cloud-init[1813]: Compiling heck v0.5.0
[ 181.737581] cloud-init[1813]: Compiling clap_lex v1.1.0
[ 182.062746] cloud-init[1813]: Compiling clap_builder v4.6.0
[ 182.809898] cloud-init[1813]: Compiling dpdk-stdlib-sys v0.1.0 (/opt/dpdk-stdlib/dpdk-sys)
[ 182.847834] cloud-init[1813]: warning: unused import: std::fs
[ 182.849406] cloud-init[1813]: --> dpdk-sys/build.rs:129:9
[ 182.850790] cloud-init[1813]: |
[ 182.851667] cloud-init[1813]: 129 | use std::fs;
[ 182.852849] cloud-init[1813]: | ^^^^^^^
[ 182.853988] cloud-init[1813]: |
[ 182.854036] cloud-init[1813]: = note: #[warn(unused_imports)] (part of #[warn(unused)]) on by default
[ 183.218292] cloud-init[1813]: warning: dpdk-stdlib-sys (build script) generated 1 warning
[ 193.568366] cloud-init[1813]: Compiling clap_derive v4.6.0
[ 194.977365] cloud-init[1813]: Compiling dpdk-stdlib v0.1.0 (/opt/dpdk-stdlib/dpdk)
[ 195.634555] cloud-init[1813]: Compiling lock_api v0.4.14
[ 195.679544] cloud-init[1813]: Compiling errno v0.3.14
[ 195.787156] cloud-init[1813]: Compiling signal-hook-registry v1.4.8
[ 195.868771] cloud-init[1813]: Compiling parking_lot v0.12.5
[ 196.317242] cloud-init[1813]: Compiling clap v4.6.0
[ 196.352212] cloud-init[1813]: Compiling dpdk-stdlib-udp v0.1.0 (/opt/dpdk-stdlib/dpdk-udp)
[ 196.703632] cloud-init[1813]: error[E0308]: mismatched types
[ 196.706138] cloud-init[1813]: --> dpdk-udp/src/lib.rs:1414:57
[ 196.708684] cloud-init[1813]: |
[ 196.710251] cloud-init[1813]: 1414 | let vlan_stripped = (ol_flags & dpdk_sys::RTE_MBUF_F_RX_VLAN_STRIPPED) != 0;
[ 196.715276] cloud-init[1813]: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u64, found u32
[ 196.755089] cloud-init[1813]: error[E0277]: no implementation for u64 & u32
[ 196.758214] cloud-init[1813]: --> dpdk-udp/src/lib.rs:1414:55
[ 196.760850] cloud-init[1813]: |
[ 196.762383] cloud-init[1813]: 1414 | let vlan_stripped = (ol_flags & dpdk_sys::RTE_MBUF_F_RX_VLAN_STRIPPED) != 0;
[ 196.767410] cloud-init[1813]: | ^ no implementation for u64 & u32
[ 196.772239] cloud-init[1813]: |
[ 196.775290] cloud-init[1813]: = help: the trait BitAnd<u32> is not implemented for u64
[ 196.778943] cloud-init[1813]: help: the following other types implement trait BitAnd<Rhs>
[ 196.790109] cloud-init[1813]: --> /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:22:8
[ 196.794786] cloud-init[1813]: |
[ 196.796305] cloud-init[1813]: = note: &u64 implements BitAnd<u64>
[ 196.799122] cloud-init[1813]: ::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:33:8
[ 196.803782] cloud-init[1813]: |
[ 196.805314] cloud-init[1813]: = note: u64 implements BitAnd<&u64>
[ 196.808122] cloud-init[1813]: ::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/internal_macros.rs:44:8
[ 196.820083] cloud-init[1813]: |
[ 196.821631] cloud-init[1813]: = note: &u64 implements BitAnd
[ 196.824284] cloud-init[1813]: --> /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/ops/bit.rs:174:8
[ 196.828714] cloud-init[1813]: |
[ 196.830265] cloud-init[1813]: = note: u64 implements BitAnd
[ 196.832905] cloud-init[1813]: ::: /rustc/e408947bfd200af42db322daf0fadfe7e26d3bd1/library/core/src/ops/bit.rs:187:0
[ 196.837250] cloud-init[1813]: |
[ 196.838784] cloud-init[1813]: = note: in this macro invocation
[ 196.841412] cloud-init[1813]: = note: this error originates in the macro forward_ref_binop which comes from the expansion of the macro bitand_impl (in Nightly builds, run with -Z macro-backtrace for more info)
[ 197.032700] cloud-init[1813]: Compiling tokio-macros v2.7.0
[ 197.172015] cloud-init[1813]: Some errors have detailed explanations: E0277, E0308.
[ 197.175518] cloud-init[1813]: For more information about an error, try rustc --explain E0277.
[ 197.190321] cloud-init[1813]: error: could not compile dpdk-stdlib-udp (lib) due to 2 previous errors
[ 197.194296] cloud-init[1813]: warning: build failed, waiting for other jobs to finish...
[ 198.544586] cloud-init[1813]: 2026-04-13 00:41:19,453 - cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
[ 198.550718] cloud-init[1813]: 2026-04-13 00:41:19,453 - util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python3.9/site-packages/cloudinit/config/cc_scripts_user.py'>) failed
ci-info: +++++++++++++++++++++++++++++++++++++++++++++Authorized keys from /home/ec2-user/.ssh/authorized_keys for user ec2-user++++++++++++++++++++++++++++++++++++++++++++++
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
ci-info: | Keytype | Fingerprint (sha256) | Options | Comment |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
ci-info: | ssh-rsa | ae:e8:2c:e2:ec:35:41:56:b5:3c:a7:63:2c:2b:63:ed:24:de:2e:17:25:e8:ab:13:06:02:5f:bb:80:ec:5a:dd | - | packer_69db32b1-6078-f7c7-ab9a-486e4b8b0f63 |
ci-info: +---------+-------------------------------------------------------------------------------------------------+---------+---------------------------------------------+
<14>Apr 13 00:41:19 cloud-init: #############################################################
<14>Apr 13 00:41:19 cloud-init: -----BEGIN SSH HOST KEY FINGERPRINTS-----
<14>Apr 13 00:41:19 cloud-init: 256 SHA256:M93XMWtdFwaHBWUHEdVYkdKfKY5/XmChzu2QRsrGlWE root@ip-10-0-1-93.ec2.internal (ECDSA)
<14>Apr 13 00:41:19 cloud-init: 256 SHA256:/iXv/ZSrizQs8c6XGzWcs3ze5mi/r6NN9OrTHgEZevI root@ip-10-0-1-93.ec2.internal (ED25519)
<14>Apr 13 00:41:19 cloud-init: -----END SSH HOST KEY FINGERPRINTS-----
<14>Apr 13 00:41:19 cloud-init: #############################################################
-----BEGIN SSH HOST KEY KEYS-----
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCg/MXJ8U3SgMcvFUR90RUEjbn7Aq6q23Y2ptk21llTjm0+yE+c+47xU/O/vXeQSFJbag3JZBk3TnnGL6SUylLI= root@ip-10-0-1-93.ec2.internal
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJxg0n32ebGd6EaaRFXxOTnNS6Nya2r9XdC4iytdCL3 root@ip-10-0-1-93.ec2.internal
-----END SSH HOST KEY KEYS-----
[ 198.738532] cloud-init[1813]: Cloud-init v. 22.2.2 finished at Mon, 13 Apr 2026 00:41:19 +0000. Datasource DataSourceEc2. Up 198.73 seconds
[�[0;1;31mFAILED�[0m] Failed to start �[0;1;39mcloud-fina… Execute cloud user/final scripts.


### All instance-logs files

total 116
drwxr-xr-x 2 runner runner 4096 Apr 13 00:42 .
drwxr-xr-x 17 runner runner 4096 Apr 13 00:41 ..
-rw-r--r-- 1 runner runner 354 Apr 13 00:42 failure-summary.json
-rw-r--r-- 1 runner runner 570 Apr 13 00:42 instance-0-build-listing.log
-rw-r--r-- 1 runner runner 23882 Apr 13 00:41 instance-0-console-output.log
-rw-r--r-- 1 runner runner 1327 Apr 13 00:42 instance-0-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1051 Apr 13 00:42 instance-0-network-interfaces.log
-rw-r--r-- 1 runner runner 8683 Apr 13 00:41 instance-0-user-data.log
-rw-r--r-- 1 runner runner 570 Apr 13 00:42 instance-1-build-listing.log
-rw-r--r-- 1 runner runner 30023 Apr 13 00:41 instance-1-console-output.log
-rw-r--r-- 1 runner runner 1327 Apr 13 00:42 instance-1-dmesg-crashes.log
-rw-r--r-- 1 runner runner 1050 Apr 13 00:42 instance-1-network-interfaces.log
-rw-r--r-- 1 runner runner 8667 Apr 13 00:42 instance-1-user-data.log

@github-actions

Copy link
Copy Markdown

❌ Integration Tests Failed (Run 24320287292)

Branch: 37/merge | Commit: 2fdb0143

Test Results

Application Logs (last 20 lines)

Full Application Logs (last 200 lines each)
Network & PCI State

instance-0-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:bc:89:7c:73:1b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-043f4eeee37b456ec
    altname device-number-0.0
    inet 10.0.1.153/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3372sec preferred_lft 3372sec
    inet6 fe80::bc:89ff:fe7c:731b/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:a7:52:11:52 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

instance-1-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:58:98:48:db brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0aeb7ba24482d2a65
    altname device-number-0.0
    inet 10.0.1.93/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3347sec preferred_lft 3347sec
    inet6 fe80::f4:58ff:fe98:48db/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:34:2a:02:c1 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
⚠️ Crash Diagnostics

instance-0-dmesg-crashes.log

[    0.077466] pid_max: default: 32768 minimum: 301
[    0.132958] iommu: Default domain type: Translated 
[    0.133714] NetLabel:  unlabeled traffic allowed by default
[    0.148633] PCI: CLS 0 bytes, default 64
[    0.211834] nvme nvme0: 2/0/0 default/read/poll queues
[    0.457115] 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.457215] systemd[1]: No hostname configured, using default hostname.
[    0.549461] systemd[1]: Queued start job for default target initrd.target.
[    1.928181] 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.368944] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.

instance-1-dmesg-crashes.log

[    0.073995] pid_max: default: 32768 minimum: 301
[    0.127310] iommu: Default domain type: Translated 
[    0.128043] NetLabel:  unlabeled traffic allowed by default
[    0.133995] PCI: CLS 0 bytes, default 64
[    0.200454] nvme nvme0: 2/0/0 default/read/poll queues
[    0.439109] 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.439204] systemd[1]: No hostname configured, using default hostname.
[    0.538790] systemd[1]: Queued start job for default target initrd.target.
[    1.933998] 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.930576] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
Kernel Console (dmesg)

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

[    3.799942] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.811421] ena 0000:00:05.0: ENA device version: 0.10
[    3.812188] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.915165] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.927725] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:bc:89:7c:73:1b
[    3.995091] ena 0000:00:05.0 ens5: renamed from eth0
[    5.145284] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels

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

[    4.053972] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.065179] ena 0000:00:05.0: ENA device version: 0.10
[    4.065929] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.164984] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.177213] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:f4:58:98:48:db
[    4.235063] ena 0000:00:05.0 ens5: renamed from eth0
[    5.423617] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels

When building with real DPDK, bindgen may generate RTE_MBUF_F_RX_VLAN_STRIPPED
and similar offload constants as u32 (from anonymous C enums), while ol_flags
and offload capability fields are u64. Adding explicit `as u64` casts at all
usage sites ensures the code compiles correctly with both stubs and real DPDK.

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-0e48099d259ad5223 (DPDK ENI: 10.0.1.120)
  • Receiver: i-0b5d3170a3f63ca3f (DPDK ENI: 10.0.1.138)
  • 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,tokio-dpdk,native-dpdk
Packet sizes: 64,512,1400,8500

@github-actions

Copy link
Copy Markdown

✅ Integration Tests Passed (Run 24320661951)

Branch: 37/merge | Commit: 43a71b09

Test Results

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

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.138:9000 (MAC: 02:18:ca:87:fb:cb)
echo listening on 10.0.1.138:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.120:9000 (MAC: 02:47:f3:89:2a:1b)
echo listening on 10.0.1.120: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.138:9000: 'arp-probe #1'
Test complete
[2026-04-13T01:07:29Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-13T01:07:29Z] INFO: Test: udp_send_receive
[2026-04-13T01:07:31Z] INFO: UDP send/receive succeeded
[2026-04-13T01:07:31Z] INFO: Test: echo_roundtrip
[2026-04-13T01:07:32Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-13T01:07:32Z] INFO: Test: payload_integrity
[2026-04-13T01:07:32Z] INFO: Response received, checking payload match...
[2026-04-13T01:07:32Z] INFO: Payload integrity verified (found in response)
[2026-04-13T01:07:32Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-13T01:07:32Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.138:9000 (MAC: 02:18:ca:87:fb:cb)
echo listening on 10.0.1.138:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.120:9000 (MAC: 02:47:f3:89:2a:1b)
echo listening on 10.0.1.120:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

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

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-13T01:11:24Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-13T01:11:24Z] INFO: Local IP: 10.0.1.120, Peer IP: 10.0.1.138, Port: 9000
[2026-04-13T01:11:24Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.120       0x1         0x2         02:47:f3:89:2a:1b     *        ens5
10.0.1.108       0x1         0x2         02:82:ba:94:a2:11     *        ens5
10.0.1.1         0x1         0x2         02:6a:58:66:3b:df     *        ens5
10.0.1.132       0x1         0x2         02:f1:52:6a:fa:f7     *        ens5
10.0.1.138       0x1         0x2         02:18:ca:87:fb:cb     *        ens5
[2026-04-13T01:11:24Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-13T01:11:24Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-13T01:11:24Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1928464 Apr 13 00:58 /opt/dpdk-stdlib/target/release/test-client
[2026-04-13T01:11:24Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.138 --port 9000 --bind-ip 10.0.1.120 --count 10 --delay 200
[2026-04-13T01:11:26Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.138:9000
Bind address: 10.0.1.120:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.120:32768 (MAC: 02:47:f3:89:2a:1b)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.138:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-13T01:11:26Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-13T01:11:26Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-13T01:11:27Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-13T01:11:27Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b5d3170a3f63ca3f (receiver)
Command ID: f8fdce0a-f233-4f5f-90f5-a5a683ded529

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b5d3170a3f63ca3f (receiver)
Command ID: cfe608b0-6917-4d01-930a-2b8130d7822f

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b5d3170a3f63ca3f (receiver)
Command ID: b4906ee4-3f0d-44e0-891c-b92f1ca75892

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b5d3170a3f63ca3f (receiver)
Command ID: 02bf16cf-5f53-47e1-9d08-7d02e879a240

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0e48099d259ad5223 (sender)
Command ID: fd0c38e1-18f3-40f1-a9b0-898be0cd62b3

=== 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:7c:90:55:d8:49 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0c9024e5e07f1a533
    altname device-number-0.0
    inet 10.0.1.246/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2042sec preferred_lft 2042sec
    inet6 fe80::7c:90ff:fe55:d849/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:b4:12:7a:57 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:1c:3f:7a:b8:2d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-006145074d6ac66ef
    altname device-number-0.0
    inet 10.0.1.32/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2064sec preferred_lft 2064sec
    inet6 fe80::1c:3fff:fe7a:b82d/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:47:53:fc:fc brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-13T00:59:48Z
hostname: ip-10-0-1-246.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:7c:90:55:d8:49 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0c9024e5e07f1a533
    altname device-number-0.0
    inet 10.0.1.246/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3343sec preferred_lft 3343sec
    inet6 fe80::7c:90ff:fe55:d849/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:b4:12:7a:57 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.132 dev ens5 lladdr 02:f1:52:6a:fa:f7 REACHABLE 
10.0.1.1 dev ens5 lladdr 02:6a:58:66:3b:df REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.246 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.246 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.246 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.246 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:18:ca:87:fb:cb/ 02:7c:90:55:d8:49/ 

--- ENI: 02:18:ca:87:fb:cb/ ---
  device-number: 1
  local-ipv4s: 10.0.1.138
  subnet-id: subnet-08baeae8057788a28
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:7c:90:55:d8:49/ ---
  device-number: 0
  local-ipv4s: 10.0.1.246
  subnet-id: subnet-08baeae8057788a28
  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:6a:58:66:3b:df REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.246 ens5
Unicast reply from 10.0.1.1 [02:6A:58:66:3B:DF]  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 Apr 13 00:59 .
drwxr-xr-x. 14 root root     3100 Apr 13 00:58 ..
crw-------.  1 root root 243,   0 Apr 13 00:59 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 13 00:55 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068305] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074539] audit: type=2000 audit(1776041724.973:1): state=initialized audit_enabled=0 res=1
[    0.076982] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.101340] ACPI: Interpreter enabled
[    0.101340] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.125672] pci 0000:00:05.0: enabling Extended Tags
[    0.159153] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.188419] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.279087] IPI shorthand broadcast: enabled
[    0.279149] AES CTR mode by8 optimization enabled
[    2.635118] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.672428] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.722635] VFIO - User Level meta-driver version: 0.3
[    3.748151] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.754972] ena 0000:00:05.0: ENA device version: 0.10
[    3.755740] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.854953] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.866756] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:7c:90:55:d8:49
[    3.965131] ena 0000:00:05.0 ens5: renamed from eth0
[    5.084524] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.307837] pci 0000:00:06.0: enabling Extended Tags
[  210.311684] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.324393] ena 0000:00:06.0: ENA device version: 0.10
[  210.325197] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.424593] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.436401] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:18:ca:87:fb:cb
[  210.494593] ena 0000:00:06.0 ens6: renamed from eth0
[  210.811872] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  248.928335] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  248.929609] 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-13T00:59:39Z
hostname: ip-10-0-1-32.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:1c:3f:7a:b8:2d brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-006145074d6ac66ef
    altname device-number-0.0
    inet 10.0.1.32/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3350sec preferred_lft 3350sec
    inet6 fe80::1c:3fff:fe7a:b82d/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:47:53:fc:fc 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.108 dev ens5 lladdr 02:82:ba:94:a2:11 STALE 
10.0.1.1 dev ens5 lladdr 02:6a:58:66:3b:df REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.32 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.32 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.32 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.32 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:1c:3f:7a:b8:2d/ 02:47:f3:89:2a:1b/ 

--- ENI: 02:1c:3f:7a:b8:2d/ ---
  device-number: 0
  local-ipv4s: 10.0.1.32
  subnet-id: subnet-08baeae8057788a28
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:47:f3:89:2a:1b/ ---
  device-number: 1
  local-ipv4s: 10.0.1.120
  subnet-id: subnet-08baeae8057788a28
  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:6a:58:66:3b:df REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.32 ens5
Unicast reply from 10.0.1.1 [02:6A:58:66:3B:DF]  0.539ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

=== VFIO STATUS ===
total 0
drwxr-xr-x.  2 root root       80 Apr 13 00:59 .
drwxr-xr-x. 14 root root     3100 Apr 13 00:58 ..
crw-------.  1 root root 243,   0 Apr 13 00:59 noiommu-0
crw-rw-rw-.  1 root root  10, 196 Apr 13 00:55 vfio

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.071269] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.078352] audit: type=2000 audit(1776041723.805:1): state=initialized audit_enabled=0 res=1
[    0.080020] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.105567] ACPI: Interpreter enabled
[    0.105567] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.129780] pci 0000:00:05.0: enabling Extended Tags
[    0.162280] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.191725] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.289052] IPI shorthand broadcast: enabled
[    0.289114] AES CTR mode by8 optimization enabled
[    2.595170] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.628760] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.690084] VFIO - User Level meta-driver version: 0.3
[    3.662144] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.678995] ena 0000:00:05.0: ENA device version: 0.10
[    3.679759] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.785265] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.797538] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:1c:3f:7a:b8:2d
[    3.845146] ena 0000:00:05.0 ens5: renamed from eth0
[    4.972298] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.117312] pci 0000:00:06.0: enabling Extended Tags
[  210.121125] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.134279] ena 0000:00:06.0: ENA device version: 0.10
[  210.135099] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.229704] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.243073] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:47:f3:89:2a:1b
[  210.294380] ena 0000:00:06.0 ens6: renamed from eth0
[  210.616856] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  243.009067] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  243.010416] 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.074519] pid_max: default: 32768 minimum: 301
[    0.127760] iommu: Default domain type: Translated 
[    0.128468] NetLabel:  unlabeled traffic allowed by default
[    0.144356] PCI: CLS 0 bytes, default 64
[    0.207148] nvme nvme0: 2/0/0 default/read/poll queues
[    0.445885] 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.445976] systemd[1]: No hostname configured, using default hostname.
[    0.557676] systemd[1]: Queued start job for default target initrd.target.
[    1.898872] 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.702865] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  288.016936] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6374)
[  708.996010] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22698)
[ 1418.154453] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:61522)

sender-dmesg-crashes.log

[    0.077526] pid_max: default: 32768 minimum: 301
[    0.131931] iommu: Default domain type: Translated 
[    0.132689] NetLabel:  unlabeled traffic allowed by default
[    0.147399] PCI: CLS 0 bytes, default 64
[    0.211950] nvme nvme0: 2/0/0 default/read/poll queues
[    0.458814] 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.458911] systemd[1]: No hostname configured, using default hostname.
[    0.570660] systemd[1]: Queued start job for default target initrd.target.
[    1.804725] 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.048782] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 1007.763589] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:42274)
Kernel Console (dmesg)

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

[  210.309619] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  210.310663] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  210.311684] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.324393] ena 0000:00:06.0: ENA device version: 0.10
[  210.325197] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.424593] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.436401] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:18:ca:87:fb:cb
[  210.494593] ena 0000:00:06.0 ens6: renamed from eth0
[  210.811872] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  248.928335] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  248.929609] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  288.016936] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6374)
[  437.993171] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  439.004063] ena 0000:00:06.0: ENA device version: 0.10
[  439.004868] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  439.104107] ena 0000:00:06.0: ENA Large LLQ is disabled
[  439.115894] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:18:ca:87:fb:cb
[  439.125886] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  579.587557] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  579.588863] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  708.996010] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:22698)
[  786.561643] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  787.573297] ena 0000:00:06.0: ENA device version: 0.10
[  787.574080] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  787.672087] ena 0000:00:06.0: ENA Large LLQ is disabled
[  787.684736] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:18:ca:87:fb:cb
[  787.694934] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1273.825747] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1273.827219] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1418.154453] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:61522)

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

[  210.616856] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  243.009067] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  243.010416] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  305.276610] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6652)
[  306.086529] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6672)
[  307.966477] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6919)
[  309.586544] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6972)
[  310.436485] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7032)
[  362.425478] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  363.433607] ena 0000:00:06.0: ENA device version: 0.10
[  363.434405] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  363.533647] ena 0000:00:06.0: ENA Large LLQ is disabled
[  363.546170] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:47:f3:89:2a:1b
[  363.556887] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  820.985639] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  820.987131] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  960.853856] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:39649)
[ 1007.763589] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:42274)
[ 1072.658496] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1073.670585] ena 0000:00:06.0: ENA device version: 0.10
[ 1073.671376] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1073.766610] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1073.779946] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:47:f3:89:2a:1b
[ 1073.790152] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1182.903934] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1182.905267] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1435.431857] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:65581)
[ 1436.241734] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:65615)
[ 1438.061759] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:65674)
[ 1439.861730] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:65731)

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Instances Ready

  • TRex: i-082ab355c4b5563ad (10.0.1.39)
  • DUT: i-063c4e8bd6ad23dd1 (10.0.1.73)
  • 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:dc:34:1d:d3:f1
  • RX: 0000:00:07.0 MAC: 02:5d:a6:03:b6:57
  • Gateway MAC: 02:51:0e:ac:eb:29
    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-063c4e8bd6ad23dd1 SSM working, build complete.

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (1/4)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: plain-rust preflight

TRex API OK: 2 ports
  Port 0: 02:dc:34:1d:d3:f1
  Port 1: 02:5d:a6:03:b6:57
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:dc:34:1d:d3:f1

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4284%, Lat avg: 268.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,985 pps, Drop: 0.7249%, Lat avg: 330.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 319,812 pps, Drop: 8.6251%, Lat avg: 599.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 344,251 pps, Drop: 50.8213%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,998 pps, Drop: 1.432%, Lat avg: 324.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,979 pps, Drop: 0.7291%, Lat avg: 317.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 332,089 pps, Drop: 5.1174%, Lat avg: 326.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 319,268 pps, Drop: 54.3903%, Lat avg: 601.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4293%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,968 pps, Drop: 0.7373%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 319,140 pps, Drop: 8.817%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,208 pps, RX: 339,628 pps, Drop: 28.6806%, 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: 36,158 pps, Drop: 48.3462%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,314 pps, RX: 77,715 pps, Drop: 0.7643%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,291 pps, RX: 77,667 pps, Drop: 0.7971%, Lat avg: 0.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (2/4)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: rust-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:dc:34:1d:d3:f1
  Port 1: 02:5d:a6:03:b6:57
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:dc:34:1d:d3:f1

--- 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,955 pps, Drop: 0.7465%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,614 pps, Drop: 0.3959%, Lat avg: 244.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 665,692 pps, Drop: 4.9012%, Lat avg: 422.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 138,972 pps, Drop: 0.7343%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,768 pps, Drop: 0.352%, Lat avg: 192.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 657,380 pps, Drop: 6.0886%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 68,997 pps, Drop: 1.4325%, Lat avg: 262.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 139,000 pps, Drop: 0.7143%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 348,848 pps, Drop: 0.3292%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,510 pps, RX: 470,522 pps, Drop: 1.2566%, Lat avg: 0.0 us

--- Packet size: 8500B ---
  (jumbo: capping at 418,133 pps for 30.0 Gbps limit)
  Target: 70,000 pps ... TX: 70,000 pps, RX: 69,000 pps, Drop: 1.4286%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,294 pps, RX: 77,678 pps, Drop: 0.7865%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,290 pps, RX: 77,203 pps, Drop: 1.3879%, Lat avg: 0.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (3/4)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: tokio-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:dc:34:1d:d3:f1
  Port 1: 02:5d:a6:03:b6:57
PREFLIGHT_OK

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: tokio-dpdk result

SSM exit: 0

Output (last 30 lines)
Duration per step: 30s
Source MAC: 02:dc:34:1d:d3:f1

--- Packet size: 64B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 37,867 pps, Drop: 45.9039%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 37,261 pps, Drop: 73.385%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 37,373 pps, Drop: 89.3221%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 37,239 pps, Drop: 94.6801%, Lat avg: 0.0 us

--- Packet size: 512B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 35,995 pps, Drop: 48.5787%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 36,023 pps, Drop: 74.2694%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 36,198 pps, Drop: 89.6576%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 36,226 pps, Drop: 94.8249%, Lat avg: 0.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 34,987 pps, Drop: 50.0191%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 35,154 pps, Drop: 74.8903%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 35,244 pps, Drop: 89.9302%, Lat avg: 0.0 us
  Target: 700,000 pps ... TX: 476,343 pps, RX: 37,371 pps, Drop: 92.1547%, Lat avg: 0.0 us

--- Packet size: 8500B ---
  (jumbo: capping at 418,133 pps for 30.0 Gbps limit)
  Target: 70,000 pps ... TX: 70,000 pps, RX: 28,608 pps, Drop: 59.1321%, Lat avg: 0.0 us
  Target: 140,000 pps ... TX: 78,322 pps, RX: 30,406 pps, Drop: 61.1781%, Lat avg: 0.0 us
  Target: 350,000 pps ... TX: 78,282 pps, RX: 30,334 pps, Drop: 61.2502%, Lat avg: 0.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Benchmark (4/4)

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

@github-actions

Copy link
Copy Markdown

[Perf] Benchmark Diag: native-dpdk preflight

TRex API OK: 2 ports
  Port 0: 02:dc:34:1d:d3:f1
  Port 1: 02:5d:a6:03:b6:57
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:dc:34:1d:d3:f1

--- 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: 150.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 170.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 685,259 pps, Drop: 2.1058%, Lat avg: 246.0 us

--- Packet size: 512B ---
  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: 151.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 349,987 pps, Drop: 0.0037%, Lat avg: 171.0 us
  Target: 700,000 pps ... TX: 700,000 pps, RX: 686,081 pps, Drop: 1.9884%, Lat avg: 414.0 us

--- Packet size: 1400B ---
  Target: 70,000 pps ... TX: 70,000 pps, RX: 70,000 pps, Drop: 0.0%, Lat avg: 134.0 us
  Target: 140,000 pps ... TX: 140,000 pps, RX: 140,000 pps, Drop: 0.0%, Lat avg: 154.0 us
  Target: 350,000 pps ... TX: 350,000 pps, RX: 350,000 pps, Drop: 0.0%, Lat avg: 171.0 us
  Target: 700,000 pps ... TX: 475,199 pps, RX: 459,298 pps, Drop: 3.3462%, Lat avg: 2686.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: 155.0 us
  Target: 140,000 pps ... TX: 78,305 pps, RX: 78,294 pps, Drop: 0.014%, Lat avg: 14490.0 us
  Target: 350,000 pps ... TX: 78,355 pps, RX: 78,127 pps, Drop: 0.2909%, Lat avg: 14218.0 us
  Target: 700,000 pps ... SKIPPED (exceeds 30.0 Gbps cap)

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

@github-actions

Copy link
Copy Markdown

[Perf] Diag: testpmd log

testpmd output (last 30 lines)
=== testpmd stats (last 30 lines) ===
  ############################################################################
Telling cores to stop...
Waiting for lcores to finish...

  ---------------------- Forward statistics for port 0  ----------------------
  RX-packets: 113454597      RX-dropped: 0             RX-total: 113454597
  RX-error: 403582
  RX-nombufs: 0             
  TX-packets: 113454597      TX-dropped: 0             TX-total: 113454597
  ----------------------------------------------------------------------------

  +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++
  RX-packets: 113454597      RX-dropped: 0             RX-total: 113454597
  TX-packets: 113454597      TX-dropped: 0             TX-total: 113454597
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Done.

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

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

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

@github-actions

Copy link
Copy Markdown

[Perf] Stage: Results

[02:18:20] INFO Generating markdown summary...

Performance Test Results — unknown

Commit: a44728b0
Timestamp: 2026-04-13T02:18:20.564708+00:00

64B packets

Config Target PPS TX pps RX pps Drop % NIC imissed NIC ierrors NIC nombuf App Drops Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% — — — — 128.0 380.0 35.8 35.8
native-dpdk 140,000 140,000 140,000 0.00% — — — — 150.0 2075.0 71.7 71.7
native-dpdk 350,000 350,000 350,000 0.00% — — — — 170.0 1345.0 179.2 179.2
native-dpdk 700,000 700,000 685,259 2.11% — — — — 246.0 4635.0 358.4 350.9
rust-dpdk 70,000 70,000 69,000 1.43% 0 30,367 0 0 0.0 0.0 35.8 35.3
rust-dpdk 140,000 140,000 138,955 0.75% 0 41,902 0 0 0.0 0.0 71.7 71.1
rust-dpdk 350,000 350,000 348,614 0.40% 0 32,253 0 0 244.0 0.0 179.2 178.5
rust-dpdk 700,000 700,000 665,692 4.90% 0 41,877 0 0 422.0 0.0 358.4 340.8
tokio-dpdk 70,000 70,000 37,867 45.90% 0 11,263 0 0 0.0 0.0 35.8 21.2
tokio-dpdk 140,000 140,000 37,261 73.39% 0 6,446 0 0 0.0 0.0 71.7 20.9
tokio-dpdk 350,000 350,000 37,373 89.32% 0 2,730 0 0 0.0 0.0 179.2 20.9
tokio-dpdk 700,000 700,000 37,239 94.68% 0 4,108 0 0 0.0 0.0 358.4 20.9
plain-rust 70,000 70,000 69,000 1.43% — — — — 268.0 0.0 35.8 35.3
plain-rust 140,000 140,000 138,985 0.72% — — — — 330.0 0.0 71.7 71.2
plain-rust 350,000 350,000 319,812 8.63% — — — — 599.0 0.0 179.2 163.7
plain-rust 700,000 700,000 344,251 50.82% — — — — 0.0 0.0 358.4 176.3

512B packets

Config Target PPS TX pps RX pps Drop % NIC imissed NIC ierrors NIC nombuf App Drops Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% — — — — 128.0 385.0 286.7 286.7
native-dpdk 140,000 140,000 140,000 0.00% — — — — 151.0 1354.0 573.4 573.4
native-dpdk 350,000 350,000 349,987 0.00% — — — — 171.0 1864.0 1433.6 1433.5
native-dpdk 700,000 700,000 686,081 1.99% — — — — 414.0 3256.0 2867.2 2810.2
rust-dpdk 70,000 70,000 69,000 1.43% 0 34,217 0 0 0.0 0.0 286.7 282.6
rust-dpdk 140,000 140,000 138,972 0.73% 0 31,913 0 0 0.0 0.0 573.4 569.2
rust-dpdk 350,000 350,000 348,768 0.35% 0 41,851 0 0 192.0 0.0 1433.6 1428.5
rust-dpdk 700,000 700,000 657,380 6.09% 0 32,043 0 0 0.0 0.0 2867.2 2692.6
tokio-dpdk 70,000 70,000 35,995 48.58% 0 9,671 0 0 0.0 0.0 286.7 149.2
tokio-dpdk 140,000 140,000 36,023 74.27% 0 6,208 0 0 0.0 0.0 573.4 149.3
tokio-dpdk 350,000 350,000 36,198 89.66% 0 2,567 0 0 0.0 0.0 1433.6 150.0
tokio-dpdk 700,000 700,000 36,226 94.82% 0 1,823 0 0 0.0 0.0 2867.2 150.1
plain-rust 70,000 70,000 68,998 1.43% — — — — 324.0 0.0 286.7 282.6
plain-rust 140,000 140,000 138,979 0.73% — — — — 317.0 0.0 573.4 569.3
plain-rust 350,000 350,000 332,089 5.12% — — — — 326.0 0.0 1433.6 1360.2
plain-rust 700,000 700,000 319,268 54.39% — — — — 601.0 0.0 2867.2 1307.7

1400B packets

Config Target PPS TX pps RX pps Drop % NIC imissed NIC ierrors NIC nombuf App Drops Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% — — — — 134.0 737.0 784.0 784.0
native-dpdk 140,000 140,000 140,000 0.00% — — — — 154.0 734.0 1568.0 1568.0
native-dpdk 350,000 350,000 350,000 0.00% — — — — 171.0 777.0 3920.0 3920.0
native-dpdk 700,000 475,199 459,298 3.35% — — — — 2686.0 5746.0 5322.2 5144.1
rust-dpdk 70,000 70,000 68,997 1.43% 0 42,101 0 0 262.0 0.0 784.0 772.8
rust-dpdk 140,000 140,000 139,000 0.71% 0 34,024 0 0 0.0 0.0 1568.0 1556.8
rust-dpdk 350,000 350,000 348,848 0.33% 0 31,920 0 0 0.0 0.0 3920.0 3907.1
rust-dpdk 700,000 476,510 470,522 1.26% 0 32,119 0 0 0.0 0.0 5336.9 5269.9
tokio-dpdk 70,000 70,000 34,987 50.02% 0 10,219 0 0 0.0 0.0 784.0 393.5
tokio-dpdk 140,000 140,000 35,154 74.89% 0 4,750 0 0 0.0 0.0 1568.0 395.4
tokio-dpdk 350,000 350,000 35,244 89.93% 0 3,456 0 0 0.0 0.0 3920.0 396.4
tokio-dpdk 700,000 476,343 37,371 92.15% 0 2,688 0 0 0.0 0.0 5335.1 420.4
plain-rust 70,000 70,000 69,000 1.43% — — — — 0.0 0.0 784.0 772.8
plain-rust 140,000 140,000 138,968 0.74% — — — — 0.0 0.0 1568.0 1556.4
plain-rust 350,000 350,000 319,140 8.82% — — — — 0.0 0.0 3920.0 3574.4
plain-rust 700,000 476,208 339,628 28.68% — — — — 0.0 0.0 5333.5 3803.8

8500B packets

Config Target PPS TX pps RX pps Drop % NIC imissed NIC ierrors NIC nombuf App Drops Lat Avg (us) Lat Max (us) TX Mbps RX Mbps
native-dpdk 70,000 70,000 70,000 0.00% — — — — 155.0 440.0 4760.0 4760.0
native-dpdk 140,000 78,305 78,294 0.01% — — — — 14490.0 15471.0 5324.7 5324.0
native-dpdk 350,000 78,355 78,127 0.29% — — — — 14218.0 14885.0 5328.1 5312.6
rust-dpdk 70,000 70,000 69,000 1.43% 0 32,169 0 0 0.0 0.0 4760.0 4692.0
rust-dpdk 140,000 78,294 77,678 0.79% 0 22,381 0 0 0.0 0.0 5324.0 5282.1
rust-dpdk 350,000 78,290 77,203 1.39% 0 6,760 0 0 0.0 0.0 5323.7 5249.8
tokio-dpdk 70,000 70,000 28,608 59.13% 0 7,543 0 0 0.0 0.0 4760.0 1946.7
tokio-dpdk 140,000 78,322 30,406 61.18% 0 8,373 0 0 0.0 0.0 5325.9 2069.1
tokio-dpdk 350,000 78,282 30,334 61.25% 0 2,910 0 0 0.0 0.0 5323.2 2064.2
plain-rust 70,000 70,000 36,158 48.35% — — — — 0.0 0.0 4760.0 2458.7
plain-rust 140,000 78,314 77,715 0.76% — — — — 0.0 0.0 5325.3 5284.6
plain-rust 350,000 78,291 77,667 0.80% — — — — 0.0 0.0 5323.8 5281.4

NIC Drops Instrumentation Self-Check

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

Config Status imissed (expected / actual / Δ) ierrors (expected / actual / Δ) rx_nombuf (expected / actual / Δ)
native-dpdk no instrumentation — — —
rust-dpdk OK 0 / 0 / 0 403,444 / 403,444 / 0 0 / 0 / 0
tokio-dpdk OK 0 / 0 / 0 71,363 / 71,363 / 0 0 / 0 / 0
plain-rust no instrumentation — — —

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

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

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

Full results artifact

No regression from hardware VLAN offload changes. At 700K PPS with 64B
packets: rust-dpdk 665K RX (4.9% drop) vs native-dpdk 685K (2.1% drop)
vs kernel 344K (50.8% drop). 1.93x throughput advantage over kernel.

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-04443f5c9874b6784 (DPDK ENI: 10.0.1.135)
  • Receiver: i-0dcf9810ec8e51198 (DPDK ENI: 10.0.1.33)
  • 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 24322652114)

Branch: 37/merge | Commit: 90d89879

Test Results

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

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.33:9000 (MAC: 02:8f:69:7e:53:75)
echo listening on 10.0.1.33:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.135:9000 (MAC: 02:a3:e9:73:30:d5)
echo listening on 10.0.1.135: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.33:9000: 'arp-probe #1'
Test complete
[2026-04-13T02:34:27Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-13T02:34:27Z] INFO: Test: udp_send_receive
[2026-04-13T02:34:28Z] INFO: UDP send/receive succeeded
[2026-04-13T02:34:28Z] INFO: Test: echo_roundtrip
[2026-04-13T02:34:29Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-13T02:34:29Z] INFO: Test: payload_integrity
[2026-04-13T02:34:29Z] INFO: Response received, checking payload match...
[2026-04-13T02:34:29Z] INFO: Payload integrity verified (found in response)
[2026-04-13T02:34:29Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-13T02:34:29Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.33:9000 (MAC: 02:8f:69:7e:53:75)
echo listening on 10.0.1.33:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.135:9000 (MAC: 02:a3:e9:73:30:d5)
echo listening on 10.0.1.135:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

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

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-13T02:39:41Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-13T02:39:41Z] INFO: Local IP: 10.0.1.135, Peer IP: 10.0.1.33, Port: 9000
[2026-04-13T02:39:41Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.33        0x1         0x2         02:8f:69:7e:53:75     *        ens5
10.0.1.1         0x1         0x2         02:c0:1c:be:1f:1d     *        ens5
10.0.1.135       0x1         0x2         02:a3:e9:73:30:d5     *        ens5
10.0.1.138       0x1         0x2         02:11:79:0d:a5:7d     *        ens5
[2026-04-13T02:39:41Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-13T02:39:41Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-13T02:39:41Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1928464 Apr 13 02:25 /opt/dpdk-stdlib/target/release/test-client
[2026-04-13T02:39:41Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.33 --port 9000 --bind-ip 10.0.1.135 --count 10 --delay 200
[2026-04-13T02:39:44Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.33:9000
Bind address: 10.0.1.135:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.135:32768 (MAC: 02:a3:e9:73:30:d5)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.33:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-13T02:39:44Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-13T02:39:44Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-13T02:39:44Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-13T02:39:44Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0dcf9810ec8e51198 (receiver)
Command ID: 245411ed-3f65-4fde-b402-f96f851730c6

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0dcf9810ec8e51198 (receiver)
Command ID: cc243912-bf87-4d36-b5e4-97b4bab24afe

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0dcf9810ec8e51198 (receiver)
Command ID: 1cde6b69-8ef9-4e0b-ae19-6ba2e8fa32d6

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0dcf9810ec8e51198 (receiver)
Command ID: 45bfa0e5-ae2a-4a45-9b93-eb9a03234b36

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-04443f5c9874b6784 (sender)
Command ID: c8c04f61-f76c-4440-b036-4357f4e8cca9

=== 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:c8:84:cf:f5:a3 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-041e2d42ae92d130c
    altname device-number-0.0
    inet 10.0.1.118/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2229sec preferred_lft 2229sec
    inet6 fe80::c8:84ff:fecf:f5a3/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:04:b9:5e:db brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:be:ed:c0:2e:7b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-059b18f55a88d8da1
    altname device-number-0.0
    inet 10.0.1.23/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2250sec preferred_lft 2250sec
    inet6 fe80::be:edff:fec0:2e7b/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:4e:2c:ae:a6 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-13T02:26:52Z
hostname: ip-10-0-1-118.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:c8:84:cf:f5:a3 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-041e2d42ae92d130c
    altname device-number-0.0
    inet 10.0.1.118/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3361sec preferred_lft 3361sec
    inet6 fe80::c8:84ff:fecf:f5a3/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:04:b9:5e:db 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.181 dev ens5 lladdr 02:40:f9:ee:7d:4f STALE 
10.0.1.138 dev ens5 lladdr 02:11:79:0d:a5:7d REACHABLE 
10.0.1.1 dev ens5 lladdr 02:c0:1c:be:1f:1d REACHABLE 
10.0.1.202 dev ens5 lladdr 02:f5:ab:a5:7e:45 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.118 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.118 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.118 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.118 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:8f:69:7e:53:75/ 02:c8:84:cf:f5:a3/ 

--- ENI: 02:8f:69:7e:53:75/ ---
  device-number: 1
  local-ipv4s: 10.0.1.33
  subnet-id: subnet-08aa4fa91faf40ddd
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:c8:84:cf:f5:a3/ ---
  device-number: 0
  local-ipv4s: 10.0.1.118
  subnet-id: subnet-08aa4fa91faf40ddd
  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:c0:1c:be:1f:1d REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.118 ens5
Unicast reply from 10.0.1.1 [02:C0:1C:BE:1F:1D]  0.534ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068055] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074259] audit: type=2000 audit(1776046968.008:1): state=initialized audit_enabled=0 res=1
[    0.076601] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.100815] ACPI: Interpreter enabled
[    0.100815] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124321] pci 0000:00:05.0: enabling Extended Tags
[    0.148621] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.177928] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.269725] IPI shorthand broadcast: enabled
[    0.269791] AES CTR mode by8 optimization enabled
[    2.555153] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.591717] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.695220] VFIO - User Level meta-driver version: 0.3
[    3.752746] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.763971] ena 0000:00:05.0: ENA device version: 0.10
[    3.764781] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.864954] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.876770] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:c8:84:cf:f5:a3
[    3.945138] ena 0000:00:05.0 ens5: renamed from eth0
[    5.044487] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  190.631071] pci 0000:00:06.0: enabling Extended Tags
[  190.635186] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.647765] ena 0000:00:06.0: ENA device version: 0.10
[  190.648559] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.749050] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.760786] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:8f:69:7e:53:75
[  190.819050] ena 0000:00:06.0 ens6: renamed from eth0
[  191.148439] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  231.332809] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  231.334140] 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-13T02:26:44Z
hostname: ip-10-0-1-23.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:be:ed:c0:2e:7b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-059b18f55a88d8da1
    altname device-number-0.0
    inet 10.0.1.23/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3368sec preferred_lft 3368sec
    inet6 fe80::be:edff:fec0:2e7b/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:4e:2c:ae:a6 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.181 dev ens5 lladdr 02:40:f9:ee:7d:4f REACHABLE 
10.0.1.1 dev ens5 lladdr 02:c0:1c:be:1f:1d REACHABLE 
10.0.1.202 dev ens5 lladdr 02:f5:ab:a5:7e:45 DELAY 
10.0.1.138 dev ens5 lladdr 02:11:79:0d:a5:7d REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.23 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.23 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.23 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.23 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:e9:73:30:d5/ 02:be:ed:c0:2e:7b/ 

--- ENI: 02:a3:e9:73:30:d5/ ---
  device-number: 1
  local-ipv4s: 10.0.1.135
  subnet-id: subnet-08aa4fa91faf40ddd
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:be:ed:c0:2e:7b/ ---
  device-number: 0
  local-ipv4s: 10.0.1.23
  subnet-id: subnet-08aa4fa91faf40ddd
  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:c0:1c:be:1f:1d REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.23 ens5
Unicast reply from 10.0.1.1 [02:C0:1C:BE:1F:1D]  0.536ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068846] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.075088] audit: type=2000 audit(1776046967.918:1): state=initialized audit_enabled=0 res=1
[    0.077466] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.102193] ACPI: Interpreter enabled
[    0.102193] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.126238] pci 0000:00:05.0: enabling Extended Tags
[    0.149457] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.179565] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.271658] IPI shorthand broadcast: enabled
[    0.271719] AES CTR mode by8 optimization enabled
[    2.285183] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.321833] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.375000] VFIO - User Level meta-driver version: 0.3
[    3.524937] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.534991] ena 0000:00:05.0: ENA device version: 0.10
[    3.535727] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.636430] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.647176] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:be:ed:c0:2e:7b
[    3.735060] ena 0000:00:05.0 ens5: renamed from eth0
[    4.536254] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  191.691024] pci 0000:00:06.0: enabling Extended Tags
[  191.694825] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  191.707797] ena 0000:00:06.0: ENA device version: 0.10
[  191.708581] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  191.800638] ena 0000:00:06.0: ENA Large LLQ is disabled
[  191.813150] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:e9:73:30:d5
[  191.840765] ena 0000:00:06.0 ens6: renamed from eth0
[  192.273209] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  224.567458] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  224.568838] 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.074259] pid_max: default: 32768 minimum: 301
[    0.126435] iommu: Default domain type: Translated 
[    0.127183] NetLabel:  unlabeled traffic allowed by default
[    0.134259] PCI: CLS 0 bytes, default 64
[    0.209246] nvme nvme0: 2/0/0 default/read/poll queues
[    0.436948] 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.437040] systemd[1]: No hostname configured, using default hostname.
[    0.547865] systemd[1]: Queued start job for default target initrd.target.
[    1.703066] 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.931767] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  268.440959] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6220)
[  683.458083] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:25196)
[ 1237.714275] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:37494)

sender-dmesg-crashes.log

[    0.075069] pid_max: default: 32768 minimum: 301
[    0.128362] iommu: Default domain type: Translated 
[    0.129115] NetLabel:  unlabeled traffic allowed by default
[    0.135069] PCI: CLS 0 bytes, default 64
[    0.187948] nvme nvme0: 2/0/0 default/read/poll queues
[    0.439927] 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.440026] systemd[1]: No hostname configured, using default hostname.
[    0.529184] systemd[1]: Queued start job for default target initrd.target.
[    1.630940] 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.588312] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 1058.240545] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:19634)
Kernel Console (dmesg)

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

[  190.633791] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  190.635186] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.647765] ena 0000:00:06.0: ENA device version: 0.10
[  190.648559] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.749050] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.760786] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:8f:69:7e:53:75
[  190.819050] ena 0000:00:06.0 ens6: renamed from eth0
[  191.148439] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  231.332809] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  231.334140] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  268.440959] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6220)
[  349.033185] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  350.046055] ena 0000:00:06.0: ENA device version: 0.10
[  350.046837] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  350.146529] ena 0000:00:06.0: ENA Large LLQ is disabled
[  350.159224] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:8f:69:7e:53:75
[  350.169319] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  399.691383] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  399.692702] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  683.458083] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:25196)
[  758.392973] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  759.405043] ena 0000:00:06.0: ENA device version: 0.10
[  759.405836] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  759.505029] ena 0000:00:06.0: ENA Large LLQ is disabled
[  759.516858] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:8f:69:7e:53:75
[  759.585082] ena 0000:00:06.0 ens6: renamed from eth0
[  759.684150] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1157.577360] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1157.578678] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1237.714275] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:37494)

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

[  224.568838] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  284.412942] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6610)
[  285.242766] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6631)
[  287.062870] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6653)
[  288.692779] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6676)
[  289.522828] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6736)
[  339.228178] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  340.250120] ena 0000:00:06.0: ENA device version: 0.10
[  340.250941] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  340.350154] ena 0000:00:06.0: ENA Large LLQ is disabled
[  340.362427] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:e9:73:30:d5
[  340.410237] ena 0000:00:06.0 ens6: renamed from eth0
[  340.451955] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  779.332700] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  779.334055] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1013.860475] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:18828)
[ 1058.240545] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:19634)
[ 1120.383316] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1121.396483] ena 0000:00:06.0: ENA device version: 0.10
[ 1121.397372] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1121.497619] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1121.509956] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:a3:e9:73:30:d5
[ 1121.567648] ena 0000:00:06.0 ens6: renamed from eth0
[ 1121.619384] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1151.019256] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1151.020820] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1253.750051] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:22983)
[ 1254.569665] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:23003)
[ 1256.379578] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:23026)
[ 1258.169669] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:23049)

Adds hw_vlan_strip_benchmark test that measures the performance difference
between reconstructing tagged frames (current approach) and passing
hw_vlan_tci directly to detect_vlan (proposed approach). Results show
18x speedup by eliminating the per-packet Vec allocation.

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

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-08bcebda73a1ac8fa (DPDK ENI: 10.0.1.18)
  • Receiver: i-05db087cf030e88b5 (DPDK ENI: 10.0.1.57)
  • Both instances SSM-ready.

claude added 3 commits April 13, 2026 12:01
Replace per-packet frame reconstruction with direct hw_vlan_tci
passthrough. When the NIC strips VLAN tags, recv_frames() no longer
rebuilds tagged frames from untagged bytes + mbuf metadata. Instead,
detect_vlan() accepts an optional hw_vlan_tci parameter that carries the
hardware-provided TCI directly to VLAN filtering.

Changes:
- detect_vlan(frame, hw_vlan_tci) - new parameter overrides vlan_tci in
  FrameLayout for NIC-stripped frames without modifying frame bytes
- process_frame_zerocopy() threads hw_vlan_tci from mbuf to detect_vlan
- recv_frames() simplified: no more Vec allocation + memcpy per packet
- New test: process_frame_zerocopy_hw_vlan_tci_filters_correctly
- Updated test: test_rx_hw_vlan_strip_direct_tci (was reconstruction)
- HW VLAN strip benchmark added as standard perf regression guard

Benchmark: 1.26x speedup (980K vs 780K PPS), 262 ns saved per packet.

https://claude.ai/code/session_01WRu2gZPeAMT14C5met7oqL
Explains how DPDK mbuf metadata drives hardware offloads for both
checksum and VLAN operations. Covers the rte_mbuf layout, TX checksum
offload (ol_flags + tx_offload bit-fields), TX VLAN insert (vlan_tci),
and RX VLAN strip with direct TCI passthrough. Updates the HW VLAN
offload roadmap entry to reflect the zero-allocation approach.

https://claude.ai/code/session_01WRu2gZPeAMT14C5met7oqL
@gspivey
gspivey merged commit 6ba6b79 into main Apr 13, 2026
1 check passed
@gspivey
gspivey deleted the claude/implement-roadmap-feature-umHZq branch April 13, 2026 12:13
@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 24341884663)

Branch: 37/merge | Commit: b8ef0928

Test Results

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

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.57:9000 (MAC: 02:fe:e8:bf:d6:b7)
echo listening on 10.0.1.57:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.18:9000 (MAC: 02:11:aa:d8:ff:0b)
echo listening on 10.0.1.18: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.57:9000: 'arp-probe #1'
Test complete
[2026-04-13T12:04:24Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-13T12:04:24Z] INFO: Test: udp_send_receive
[2026-04-13T12:04:26Z] INFO: UDP send/receive succeeded
[2026-04-13T12:04:26Z] INFO: Test: echo_roundtrip
[2026-04-13T12:04:26Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-13T12:04:26Z] INFO: Test: payload_integrity
[2026-04-13T12:04:27Z] INFO: Response received, checking payload match...
[2026-04-13T12:04:27Z] INFO: Payload integrity verified (found in response)
[2026-04-13T12:04:27Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-13T12:04:27Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.57:9000 (MAC: 02:fe:e8:bf:d6:b7)
echo listening on 10.0.1.57:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.18:9000 (MAC: 02:11:aa:d8:ff:0b)
echo listening on 10.0.1.18:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

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

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-13T12:09:43Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-13T12:09:43Z] INFO: Local IP: 10.0.1.18, Peer IP: 10.0.1.57, Port: 9000
[2026-04-13T12:09:43Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.1         0x1         0x2         02:ba:29:70:66:19     *        ens5
10.0.1.105       0x1         0x2         02:3d:8d:47:76:4b     *        ens5
10.0.1.57        0x1         0x2         02:fe:e8:bf:d6:b7     *        ens5
10.0.1.49        0x1         0x2         02:2c:f4:13:93:25     *        ens5
10.0.1.18        0x1         0x2         02:11:aa:d8:ff:0b     *        ens5
[2026-04-13T12:09:43Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-13T12:09:43Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-13T12:09:43Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1928416 Apr 13 11:59 /opt/dpdk-stdlib/target/release/test-client
[2026-04-13T12:09:43Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.57 --port 9000 --bind-ip 10.0.1.18 --count 10 --delay 200
[2026-04-13T12:09:46Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.57:9000
Bind address: 10.0.1.18:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.18:32768 (MAC: 02:11:aa:d8:ff:0b)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.57:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-13T12:09:46Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-13T12:09:46Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-13T12:09:46Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-13T12:09:46Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-05db087cf030e88b5 (receiver)
Command ID: fc03afd2-5feb-4612-9670-95504a09060d

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-05db087cf030e88b5 (receiver)
Command ID: 638eff38-c836-43f6-b7b3-a15cbf626c60

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-05db087cf030e88b5 (receiver)
Command ID: 27046e14-547c-43bc-9b63-3ade0c6276c0

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-05db087cf030e88b5 (receiver)
Command ID: 28f0a4b4-2cac-4c4b-80ea-17819eb21516

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-08bcebda73a1ac8fa (sender)
Command ID: 6dab0eee-9456-4d7b-b727-71d25ec30360

=== 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:ea:24:a3:68:99 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-01a1c7034dbf7ff79
    altname device-number-0.0
    inet 10.0.1.250/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2209sec preferred_lft 2209sec
    inet6 fe80::ea:24ff:fea3:6899/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:ff:24:99:98 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:f1:49:39:8a:1b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0dc2d1ad7b6cb233e
    altname device-number-0.0
    inet 10.0.1.107/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 2233sec preferred_lft 2233sec
    inet6 fe80::f1:49ff:fe39:8a1b/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:d9:f6:d8:39 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-13T12:00:42Z
hostname: ip-10-0-1-250.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:ea:24:a3:68:99 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-01a1c7034dbf7ff79
    altname device-number-0.0
    inet 10.0.1.250/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3355sec preferred_lft 3355sec
    inet6 fe80::ea:24ff:fea3:6899/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:ff:24:99:98 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:ba:29:70:66:19 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.250 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.250 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.250 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.250 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:ea:24:a3:68:99/ 02:fe:e8:bf:d6:b7/ 

--- ENI: 02:ea:24:a3:68:99/ ---
  device-number: 0
  local-ipv4s: 10.0.1.250
  subnet-id: subnet-0d68ef9dcf62c3c17
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:fe:e8:bf:d6:b7/ ---
  device-number: 1
  local-ipv4s: 10.0.1.57
  subnet-id: subnet-0d68ef9dcf62c3c17
  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:ba:29:70:66:19 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.250 ens5
Unicast reply from 10.0.1.1 [02:BA:29:70:66:19]  0.543ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.068838] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.075020] audit: type=2000 audit(1776081393.123:1): state=initialized audit_enabled=0 res=1
[    0.077346] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.101556] ACPI: Interpreter enabled
[    0.101556] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.128122] pci 0000:00:05.0: enabling Extended Tags
[    0.159603] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.188800] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.286854] IPI shorthand broadcast: enabled
[    0.286916] AES CTR mode by8 optimization enabled
[    2.405208] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.445879] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.490108] VFIO - User Level meta-driver version: 0.3
[    3.785702] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.795013] ena 0000:00:05.0: ENA device version: 0.10
[    3.795778] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.895009] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.907127] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:ea:24:a3:68:99
[    3.985093] ena 0000:00:05.0 ens5: renamed from eth0
[    4.833707] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  169.884706] pci 0000:00:06.0: enabling Extended Tags
[  169.888489] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  169.901284] ena 0000:00:06.0: ENA device version: 0.10
[  169.902077] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  170.003296] ena 0000:00:06.0: ENA Large LLQ is disabled
[  170.016106] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:fe:e8:bf:d6:b7
[  170.054799] ena 0000:00:06.0 ens6: renamed from eth0
[  170.386575] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  236.089925] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  236.091261] 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-13T12:00:34Z
hostname: ip-10-0-1-107.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:f1:49:39:8a:1b brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0dc2d1ad7b6cb233e
    altname device-number-0.0
    inet 10.0.1.107/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3365sec preferred_lft 3365sec
    inet6 fe80::f1:49ff:fe39:8a1b/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:d9:f6:d8:39 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:ba:29:70:66:19 REACHABLE 
10.0.1.105 dev ens5 lladdr 02:3d:8d:47:76:4b STALE 

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

=== IMDS: ENI INFORMATION ===
ENI MACs found: 02:11:aa:d8:ff:0b/ 02:f1:49:39:8a:1b/ 

--- ENI: 02:11:aa:d8:ff:0b/ ---
  device-number: 1
  local-ipv4s: 10.0.1.18
  subnet-id: subnet-0d68ef9dcf62c3c17
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:f1:49:39:8a:1b/ ---
  device-number: 0
  local-ipv4s: 10.0.1.107
  subnet-id: subnet-0d68ef9dcf62c3c17
  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:ba:29:70:66:19 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.107 ens5
Unicast reply from 10.0.1.1 [02:BA:29:70:66:19]  0.538ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.069204] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.075483] audit: type=2000 audit(1776081393.604:1): state=initialized audit_enabled=0 res=1
[    0.077977] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.102623] ACPI: Interpreter enabled
[    0.102623] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.126625] pci 0000:00:05.0: enabling Extended Tags
[    0.153517] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.194027] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.289175] IPI shorthand broadcast: enabled
[    0.289241] AES CTR mode by8 optimization enabled
[    2.695198] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.747024] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.805356] VFIO - User Level meta-driver version: 0.3
[    3.961751] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.973010] ena 0000:00:05.0: ENA device version: 0.10
[    3.973802] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.074997] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.087210] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:f1:49:39:8a:1b
[    4.145064] ena 0000:00:05.0 ens5: renamed from eth0
[    5.463481] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  190.767523] pci 0000:00:06.0: enabling Extended Tags
[  190.771322] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  190.788118] ena 0000:00:06.0: ENA device version: 0.10
[  190.788869] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  190.882409] ena 0000:00:06.0: ENA Large LLQ is disabled
[  190.894984] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:11:aa:d8:ff:0b
[  190.942657] ena 0000:00:06.0 ens6: renamed from eth0
[  191.377745] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  228.696000] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  228.697346] 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.075020] pid_max: default: 32768 minimum: 301
[    0.130279] iommu: Default domain type: Translated 
[    0.131026] NetLabel:  unlabeled traffic allowed by default
[    0.144449] PCI: CLS 0 bytes, default 64
[    0.200290] nvme nvme0: 2/0/0 default/read/poll queues
[    0.455658] 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.455754] systemd[1]: No hostname configured, using default hostname.
[    0.549435] systemd[1]: Queued start job for default target initrd.target.
[    1.737422] 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.083009] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  274.147426] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6918)
[  455.887809] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:9978)
[ 1255.509633] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:23508)

sender-dmesg-crashes.log

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

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

[  169.888489] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  169.901284] ena 0000:00:06.0: ENA device version: 0.10
[  169.902077] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  170.003296] ena 0000:00:06.0: ENA Large LLQ is disabled
[  170.016106] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:fe:e8:bf:d6:b7
[  170.054799] ena 0000:00:06.0 ens6: renamed from eth0
[  170.386575] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  236.089925] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  236.091261] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  274.147426] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6918)
[  403.176216] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  404.185161] ena 0000:00:06.0: ENA device version: 0.10
[  404.185956] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  404.285139] ena 0000:00:06.0: ENA Large LLQ is disabled
[  404.297040] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:fe:e8:bf:d6:b7
[  404.375287] ena 0000:00:06.0 ens6: renamed from eth0
[  404.417077] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  424.264290] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  424.265886] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  455.887809] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:9978)
[  532.015061] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  533.025430] ena 0000:00:06.0: ENA device version: 0.10
[  533.026228] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  533.125405] ena 0000:00:06.0: ENA Large LLQ is disabled
[  533.137302] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:fe:e8:bf:d6:b7
[  533.185474] ena 0000:00:06.0 ens6: renamed from eth0
[  533.237350] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1120.781237] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1120.782571] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1255.509633] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:23508)

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

[  191.377745] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  228.696000] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  228.697346] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  290.693563] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6747)
[  291.523448] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6769)
[  293.313428] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7028)
[  294.913430] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7051)
[  295.743314] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7111)
[  345.376875] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  346.390099] ena 0000:00:06.0: ENA device version: 0.10
[  346.390896] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  346.490118] ena 0000:00:06.0: ENA Large LLQ is disabled
[  346.502263] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:11:aa:d8:ff:0b
[  346.512619] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  552.510707] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  552.512040] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  790.426165] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:31418)
[  835.755472] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:33685)
[  898.756893] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  899.769756] ena 0000:00:06.0: ENA device version: 0.10
[  899.770553] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  899.871809] ena 0000:00:06.0: ENA Large LLQ is disabled
[  899.884027] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:11:aa:d8:ff:0b
[  899.894875] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1024.483895] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1024.485412] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1270.958905] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:57626)
[ 1271.748826] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:57677)
[ 1273.558866] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:57766)
[ 1275.338799] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:57855)

@github-actions

Copy link
Copy Markdown

[CI] Stage: Deploy

Infrastructure ready.

  • Sender: i-06e077ea5ac90e243 (DPDK ENI: 10.0.1.101)
  • Receiver: i-0b1a0d0562930acbe (DPDK ENI: 10.0.1.246)
  • 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 24342480342)

Branch: 37/merge | Commit: 7000f118

Test Results

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

Application Logs (last 20 lines)

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.246:9000 (MAC: 02:b7:f0:92:24:01)
echo listening on 10.0.1.246:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.101:9000 (MAC: 02:2d:95:47:11:ed)
echo listening on 10.0.1.101: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.246:9000: 'arp-probe #1'
Test complete
[2026-04-13T12:41:06Z] INFO: ARP resolution succeeded (got response from peer)
[2026-04-13T12:41:06Z] INFO: Test: udp_send_receive
[2026-04-13T12:41:07Z] INFO: UDP send/receive succeeded
[2026-04-13T12:41:07Z] INFO: Test: echo_roundtrip
[2026-04-13T12:41:08Z] INFO: Echo roundtrip succeeded: 5/5 responses received
[2026-04-13T12:41:08Z] INFO: Test: payload_integrity
[2026-04-13T12:41:08Z] INFO: Response received, checking payload match...
[2026-04-13T12:41:08Z] INFO: Payload integrity verified (found in response)
[2026-04-13T12:41:08Z] INFO: JUnit XML written to: /tmp/test-results/tier2-kernel-interop.xml
[2026-04-13T12:41:08Z] INFO: Tier 2 sender tests complete. Results: /tmp/test-results/tier2-kernel-interop.xml

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

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

receiver-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.246:9000 (MAC: 02:b7:f0:92:24:01)
echo listening on 10.0.1.246:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-echo-server.log

EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.101:9000 (MAC: 02:2d:95:47:11:ed)
echo listening on 10.0.1.101:9000 (MTU=9001, max_udp_payload=8973)
Shutting down gracefully...

sender-test-client.log

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

receiver-test-client-iperf.log

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

sender-test-client-iperf.log

[2026-04-13T12:47:16Z] INFO: Pre-flight: checking DPDK state and ARP cache...
[2026-04-13T12:47:16Z] INFO: Local IP: 10.0.1.101, Peer IP: 10.0.1.246, Port: 9000
[2026-04-13T12:47:16Z] INFO: /proc/net/arp contents:
IP address       HW type     Flags       HW address            Mask     Device
10.0.1.244       0x1         0x2         02:1d:84:71:77:d9     *        ens5
10.0.1.246       0x1         0x2         02:b7:f0:92:24:01     *        ens5
10.0.1.1         0x1         0x2         02:7f:c9:53:31:69     *        ens5
10.0.1.101       0x1         0x2         02:2d:95:47:11:ed     *        ens5
10.0.1.41        0x1         0x2         02:63:1d:bc:1a:df     *        ens5
[2026-04-13T12:47:16Z] INFO: DPDK runtime state:
No /var/run/dpdk/ directory
[2026-04-13T12:47:16Z] INFO: vfio-pci bindings:
0000:00:06.0
bind
module
new_id
remove_id
uevent
unbind
[2026-04-13T12:47:16Z] INFO: Test binary: /opt/dpdk-stdlib/target/release/test-client
-rwxr-xr-x. 2 root root 1927936 Apr 13 12:31 /opt/dpdk-stdlib/target/release/test-client
[2026-04-13T12:47:16Z] INFO: Launching test-client: /opt/dpdk-stdlib/target/release/test-client --target 10.0.1.246 --port 9000 --bind-ip 10.0.1.101 --count 10 --delay 200
[2026-04-13T12:47:19Z] INFO: Test client output: UDP Test Client
Target: 10.0.1.246:9000
Bind address: 10.0.1.101:0
Message: 'dpdk-to-kernel-test-payload'
Count: 10
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: VFIO support initialized
EAL: Using IOMMU type 8 (No-IOMMU)
EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
Warning: Some RX offloads not supported by device (flags: 0x1)
Warning: Some TX offloads not supported by device (flags: 0x1)
✅ DPDK UDP socket bound to 10.0.1.101:32768 (MAC: 02:2d:95:47:11:ed)
Backend: dpdk
Sending packets...
Sent 30 bytes: 'dpdk-to-kernel-test-payload #1'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #1'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #2'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #2'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #3'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #3'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #4'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #4'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #5'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #5'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #6'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #6'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #7'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #7'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #8'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #8'
Sent 30 bytes: 'dpdk-to-kernel-test-payload #9'
Received 30 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #9'
Sent 31 bytes: 'dpdk-to-kernel-test-payload #10'
Received 31 bytes from 10.0.1.246:9000: 'dpdk-to-kernel-test-payload #10'
Test complete
[2026-04-13T12:47:19Z] INFO: our-app-sends: sent 10 packets, received 10 responses
[2026-04-13T12:47:19Z] INFO: our-app-sends: PASS (sent >= 5 packets)
[2026-04-13T12:47:19Z] INFO: JUnit XML written to: /tmp/test-results/tier3-our-app-sends.xml
[2026-04-13T12:47:19Z] INFO: our-app-sends test complete
⚠️ SSM Command Failures (receiver-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b1a0d0562930acbe (receiver)
Command ID: 4d04d358-773c-4c02-8ddc-3abe38532cbc

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b1a0d0562930acbe (receiver)
Command ID: c9d40667-ffdf-4858-bb0c-2e9e4d5ffb27

=== STDOUT ===


=== STDERR ===


=== Polling timeout 120s (SSM timeout: 90s, command: pkill -f 'target/release/echo' 2>/dev/null || true; pkill -f 'target/release/test-client' 2>/dev/null || true; pkill -f 'target/release/tokio-echo' 2>/dev/null || true; pkill -f 'python3.*udp_echo' 2>/dev/null || true; sleep 2; rm -rf /var/run/dpdk/ 2>/dev/null || true; cd /opt/dpdk-stdlib && bash scripts/integration-tests/configure-eni.sh --action unbind && bash scripts/integration-tests/configure-eni.sh --action assign-ip --ip 10.0.1.246) ===
Status: InProgress
Instance: i-0b1a0d0562930acbe (receiver)
Command ID: 9f246b40-c323-4afd-bf76-43c7bc6a3521

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b1a0d0562930acbe (receiver)
Command ID: f63d5731-4f47-425f-a64c-ec4038c333ec

=== STDOUT ===


=== STDERR ===


=== Polling timeout after 30s ===
Status: InProgress
Instance: i-0b1a0d0562930acbe (receiver)
Command ID: 3a3bbf23-de95-41e5-96ef-f6d244b3f98c

=== STDOUT ===


=== STDERR ===


⚠️ SSM Command Failures (sender-ssm-failure.log)
=== Polling timeout after 30s ===
Status: InProgress
Instance: i-06e077ea5ac90e243 (sender)
Command ID: 6cf28dbf-eb13-4395-85ee-2d405190a127

=== 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:16:b1:ca:4a:37 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0fdb1c4a5de064e7e
    altname device-number-0.0
    inet 10.0.1.236/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 1836sec preferred_lft 1836sec
    inet6 fe80::16:b1ff:feca:4a37/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:9f:4a:0a:8e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

sender-network-interfaces.log

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:db:ec:86:53:cb brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-045fa43af7e2e1dca
    altname device-number-0.0
    inet 10.0.1.87/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 1857sec preferred_lft 1857sec
    inet6 fe80::db:ecff:fe86:53cb/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:ed:81:6c:42 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

receiver-networking-diag-baseline.txt

=== NETWORKING DIAGNOSTICS ===
timestamp: 2026-04-13T12:32:39Z
hostname: ip-10-0-1-236.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:16:b1:ca:4a:37 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-0fdb1c4a5de064e7e
    altname device-number-0.0
    inet 10.0.1.236/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3325sec preferred_lft 3325sec
    inet6 fe80::16:b1ff:feca:4a37/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:9f:4a:0a:8e 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.244 dev ens5 lladdr 02:1d:84:71:77:d9 REACHABLE 
10.0.1.248 dev ens5 lladdr 02:17:f5:b9:f7:e3 STALE 
10.0.1.1 dev ens5 lladdr 02:7f:c9:53:31:69 REACHABLE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.236 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.236 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.236 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.236 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:16:b1:ca:4a:37/ 02:b7:f0:92:24:01/ 

--- ENI: 02:16:b1:ca:4a:37/ ---
  device-number: 0
  local-ipv4s: 10.0.1.236
  subnet-id: subnet-0d430efb4de9c178f
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:b7:f0:92:24:01/ ---
  device-number: 1
  local-ipv4s: 10.0.1.246
  subnet-id: subnet-0d430efb4de9c178f
  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:7f:c9:53:31:69 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.236 ens5
Unicast reply from 10.0.1.1 [02:7F:C9:53:31:69]  0.538ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.069925] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.076088] audit: type=2000 audit(1776083277.452:1): state=initialized audit_enabled=0 res=1
[    0.078485] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.102955] ACPI: Interpreter enabled
[    0.102955] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.129140] pci 0000:00:05.0: enabling Extended Tags
[    0.168241] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.197952] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.286890] IPI shorthand broadcast: enabled
[    0.286954] AES CTR mode by8 optimization enabled
[    2.925209] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.988502] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    3.027783] VFIO - User Level meta-driver version: 0.3
[    4.027011] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    4.036684] ena 0000:00:05.0: ENA device version: 0.10
[    4.037446] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    4.195972] ena 0000:00:05.0: ENA Large LLQ is disabled
[    4.211154] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:16:b1:ca:4a:37
[    4.265916] ena 0000:00:05.0 ens5: renamed from eth0
[    5.675296] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  210.749220] pci 0000:00:06.0: enabling Extended Tags
[  210.752982] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.765640] ena 0000:00:06.0: ENA device version: 0.10
[  210.766353] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.865654] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.877502] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:b7:f0:92:24:01
[  210.925790] ena 0000:00:06.0 ens6: renamed from eth0
[  211.244536] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  267.700457] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  267.701803] 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-13T12:32:31Z
hostname: ip-10-0-1-87.ec2.internal
kernel: 6.1.166-197.305.amzn2023.x86_64

=== DPDK PORT STATUS ===

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

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

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

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

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

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

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

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

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

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

=== IP ADDRESSES ===
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 02:db:ec:86:53:cb brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname eni-045fa43af7e2e1dca
    altname device-number-0.0
    inet 10.0.1.87/24 metric 512 brd 10.0.1.255 scope global dynamic ens5
       valid_lft 3330sec preferred_lft 3330sec
    inet6 fe80::db:ecff:fe86:53cb/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:ed:81:6c:42 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.244 dev ens5 lladdr 02:1d:84:71:77:d9 REACHABLE 
10.0.1.1 dev ens5 lladdr 02:7f:c9:53:31:69 REACHABLE 
10.0.1.248 dev ens5 lladdr 02:17:f5:b9:f7:e3 STALE 
10.0.1.41 dev ens5 lladdr 02:63:1d:bc:1a:df STALE 

=== ROUTE TABLE ===
default via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.87 metric 512 
10.0.0.2 via 10.0.1.1 dev ens5 proto dhcp src 10.0.1.87 metric 512 
10.0.1.0/24 dev ens5 proto kernel scope link src 10.0.1.87 metric 512 
10.0.1.1 dev ens5 proto dhcp scope link src 10.0.1.87 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:2d:95:47:11:ed/ 02:db:ec:86:53:cb/ 

--- ENI: 02:2d:95:47:11:ed/ ---
  device-number: 1
  local-ipv4s: 10.0.1.101
  subnet-id: subnet-0d430efb4de9c178f
  subnet-cidr: 10.0.1.0/24

--- ENI: 02:db:ec:86:53:cb/ ---
  device-number: 0
  local-ipv4s: 10.0.1.87
  subnet-id: subnet-0d430efb4de9c178f
  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:7f:c9:53:31:69 REACHABLE 

arping result:
ARPING 10.0.1.1 from 10.0.1.87 ens5
Unicast reply from 10.0.1.1 [02:7F:C9:53:31:69]  0.536ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

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

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

noiommu mode:
Y

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

=== DPDK-RELATED DMESG (last 30 lines) ===
[    0.067917] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format.
[    0.074146] audit: type=2000 audit(1776083276.329:1): state=initialized audit_enabled=0 res=1
[    0.076525] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.100967] ACPI: Interpreter enabled
[    0.100967] ACPI: Enabled 2 GPEs in block 00 to 0F
[    0.124196] pci 0000:00:05.0: enabling Extended Tags
[    0.159088] SGI XFS with ACLs, security attributes, quota, no debug enabled
[    0.188468] ACPI: \_SB_.LNKD: Enabled at IRQ 11
[    0.279195] IPI shorthand broadcast: enabled
[    0.279256] AES CTR mode by8 optimization enabled
[    2.305188] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    2.349688] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    2.388470] VFIO - User Level meta-driver version: 0.3
[    3.410284] ena 0000:00:05.0: Elastic Network Adapter (ENA) v2.16.1g
[    3.423415] ena 0000:00:05.0: ENA device version: 0.10
[    3.424167] ena 0000:00:05.0: ENA controller version: 0.0.1 implementation version 1
[    3.525171] ena 0000:00:05.0: ENA Large LLQ is disabled
[    3.537379] ena 0000:00:05.0: Elastic Network Adapter (ENA) found at mem c0500000, mac addr 02:db:ec:86:53:cb
[    3.595019] ena 0000:00:05.0 ens5: renamed from eth0
[    4.624866] ena 0000:00:05.0 ens5: Local page cache is disabled for less than 16 channels
[  230.773224] pci 0000:00:06.0: enabling Extended Tags
[  230.777012] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  230.785532] ena 0000:00:06.0: ENA device version: 0.10
[  230.786313] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  230.885554] ena 0000:00:06.0: ENA Large LLQ is disabled
[  230.897644] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2d:95:47:11:ed
[  230.945623] ena 0000:00:06.0 ens6: renamed from eth0
[  231.218424] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  261.490423] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  261.491755] 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.076073] pid_max: default: 32768 minimum: 301
[    0.131284] iommu: Default domain type: Translated 
[    0.132044] NetLabel:  unlabeled traffic allowed by default
[    0.151373] PCI: CLS 0 bytes, default 64
[    0.217233] nvme nvme0: 2/0/0 default/read/poll queues
[    0.457240] 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.457341] systemd[1]: No hostname configured, using default hostname.
[    0.550604] systemd[1]: Queued start job for default target initrd.target.
[    1.988741] systemd[1]: systemd 252.23-11.amzn2023 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP -GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN -IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 -BZIP2 -LZ4 +XZ +ZLIB -ZSTD +BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    9.916354] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  306.898523] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6447)
[  772.849734] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:27736)
[ 1625.382112] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:71069)

sender-dmesg-crashes.log

[    0.074134] pid_max: default: 32768 minimum: 301
[    0.126285] iommu: Default domain type: Translated 
[    0.127013] NetLabel:  unlabeled traffic allowed by default
[    0.143547] PCI: CLS 0 bytes, default 64
[    0.207831] nvme nvme0: 2/0/0 default/read/poll queues
[    0.446562] 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.446654] systemd[1]: No hostname configured, using default hostname.
[    0.547756] systemd[1]: Queued start job for default target initrd.target.
[    1.618741] 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.257999] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 1207.905162] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:21726)
Kernel Console (dmesg)

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

[  210.751058] pci 0000:00:06.0: BAR 2: assigned [mem 0xc0600000-0xc06fffff pref]
[  210.752027] pci 0000:00:06.0: BAR 0: assigned [mem 0xc0508000-0xc050bfff]
[  210.752982] ena 0000:00:06.0: enabling device (0000 -> 0002)
[  210.765640] ena 0000:00:06.0: ENA device version: 0.10
[  210.766353] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  210.865654] ena 0000:00:06.0: ENA Large LLQ is disabled
[  210.877502] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:b7:f0:92:24:01
[  210.925790] ena 0000:00:06.0 ens6: renamed from eth0
[  211.244536] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[  267.700457] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  267.701803] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  306.898523] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:6447)
[  390.568409] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  391.582511] ena 0000:00:06.0: ENA device version: 0.10
[  391.583320] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  391.683181] ena 0000:00:06.0: ENA Large LLQ is disabled
[  391.695885] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:b7:f0:92:24:01
[  391.706491] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[  545.561553] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  545.562876] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  772.849734] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:27736)
[  850.953987] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  851.967054] ena 0000:00:06.0: ENA device version: 0.10
[  851.967828] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  852.067323] ena 0000:00:06.0: ENA Large LLQ is disabled
[  852.079258] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:b7:f0:92:24:01
[  852.092235] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1475.513715] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1475.515234] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1625.382112] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:71069)

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

[  261.490423] vfio-pci 0000:00:06.0: Adding to iommu group 0
[  261.491755] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[  324.037810] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6897)
[  324.837751] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6918)
[  326.637757] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6940)
[  328.267722] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:6963)
[  329.117766] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:7023)
[  381.484913] vfio-pci 0000:00:06.0: Removing from iommu group 0
[  382.495047] ena 0000:00:06.0: ENA device version: 0.10
[  382.495850] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[  382.595029] ena 0000:00:06.0: ENA Large LLQ is disabled
[  382.607218] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2d:95:47:11:ed
[  382.655071] ena 0000:00:06.0 ens6: renamed from eth0
[  382.706891] ena 0000:00:06.0 ens6: Local page cache is disabled for less than 16 channels
[ 1014.347399] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1014.348730] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1160.885260] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:21170)
[ 1207.905162] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (echo:21726)
[ 1273.149033] vfio-pci 0000:00:06.0: Removing from iommu group 0
[ 1274.162316] ena 0000:00:06.0: ENA device version: 0.10
[ 1274.163081] ena 0000:00:06.0: ENA controller version: 0.0.1 implementation version 1
[ 1274.262311] ena 0000:00:06.0: ENA Large LLQ is disabled
[ 1274.274524] ena 0000:00:06.0: Elastic Network Adapter (ENA) found at mem c0508000, mac addr 02:2d:95:47:11:ed
[ 1274.283990] ena 0000:00:06.0 eth0: Local page cache is disabled for less than 16 channels
[ 1383.866846] vfio-pci 0000:00:06.0: Adding to iommu group 0
[ 1383.868176] vfio-pci 0000:00:06.0: Adding kernel taint for vfio-noiommu group on device
[ 1642.623824] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42087)
[ 1643.433713] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42135)
[ 1645.253694] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42225)
[ 1647.053719] vfio-pci 0000:00:06.0: vfio-noiommu device opened by user (tokio-rt-worker:42314)

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