Repository navigation
dpdk-stdlib-tcp: EC2 tier-2 and tier-3 integration test scripts - #117
Conversation
Tier-2 scripts: - tier2-tcp-retransmit.sh: loss injection via tc/netem, verifies retransmission occurs and recovery time is bounded - tier2-tcp-flow-control.sh: exercises zero-window condition with large bursts, verifies persist probe and data integrity Tier-3 scripts: - tier3-tcp-kernel-interop.sh: ncat/iperf3 interoperability tests (kernel TCP ↔ DPDK TCP in both directions) - tier3-tcp-std-parity.sh: byte-for-byte comparison between dpdk-stdlib-tcp and std::net::TcpStream across payload sizes All scripts follow the existing harness pattern: source harness-common.sh, produce JUnit XML, 60s timeout per test, server/client role separation.
Synthetic Performance Results (run)Commit: ✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01) Synthetic UDP Performance ResultsMeasures framework overhead: sync IPv4 Baseline
IPv6
IPv6 vs IPv4 Comparison (sync path)
IPv4 avg sync/async ratio: 1.0x, worst: 1.1x | IPv6 vs IPv4 worst ratio: 1.29x (OK)
|
Synthetic Performance Results — Graviton (run)Commit: ✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01) Synthetic UDP Performance ResultsMeasures framework overhead: sync IPv4 Baseline
IPv6
IPv6 vs IPv4 Comparison (sync path)
IPv4 avg sync/async ratio: 0.9x, worst: 1.0x | IPv6 vs IPv4 worst ratio: 1.38x (OK)
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
[CI] Stage: SummarySome tests FAILED (exit code: 1). ARP seeding: kernel /proc/net/arp (automatic)
|
✅ Integration Tests Passed — Graviton (run)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-echo-server.log sender-test-client.log |
Integration Test Failure (Run 31855637896)Branch: No failure-summary.json found receiver-user-data.log (6885 bytes, last 80 lines)sender-user-data.log (6879 bytes, last 80 lines)receiver-console-output.log (44031 bytes, last 80 lines)sender-console-output.log (44641 bytes, last 80 lines)All instance-logs files |
❌ Integration Tests Failed (Run 31855637896)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-test-client.log Full Application Logs (last 200 lines each)receiver-echo-server.logsender-test-client.log
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
✅ Integration Tests Passed (Run 31855637896)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-echo-server.log sender-test-client.log receiver-test-client-iperf.log sender-test-client-iperf.log Full Application Logs (last 200 lines each)receiver-echo-server.logsender-echo-server.logsender-test-client.logreceiver-test-client-iperf.logsender-test-client-iperf.log
|
[Perf] Stage: DeployDeploying |
[Perf] Stage: Instances Ready
|
[Perf] Stage: TRex ConfigStarting TRex configuration (MAC discovery + NIC binding)... |
[Perf] Stage: TRex Config OK
|
[Perf] Stage: TRex StartedTRex server running. Beginning benchmarks... |
[Perf] DUT ReadyDUT instance |
[Perf] Stage: Benchmark (1/4)Running |
[Perf] Benchmark Diag:
|
[Perf] Benchmark Diag:
|
[Perf] Stage: Benchmark (2/4)Running |
[Perf] Benchmark Diag:
|
[Perf] Benchmark Diag:
|
[Perf] Stage: Benchmark (3/4)Running |
[Perf] Benchmark Diag:
|
[Perf] Benchmark Diag:
|
[Perf] Stage: Benchmark (4/4)Running |
[Perf] Benchmark Diag:
|
[Perf] Benchmark Diag:
|
[Perf] Diag: testpmd logtestpmd output (last 30 lines) |
[Perf] Stage: Results[03:09:34] INFO Generating markdown summary... Performance Test Results — c6in.xlargeCommit: 64B packets
512B packets
1400B packets
8500B packets
NIC Drops Instrumentation Self-CheckCompares
plain-rust Kernel NIC Drops (ethtool -S delta)ethtool snapshots not available — baseline or final file missing in |
ROADMAP item #36: EC2 integration test CI jobs with non-blocking TCP. Changes: 1. TCP tier orchestration (scripts/run-integration-tests.sh): - Added run_tcp_tier1, run_tcp_tier2, run_tcp_tier3 functions - TCP tier 1: handshake, echo, shutdown (DPDK<->DPDK) - TCP tier 2: retransmission under loss, flow control/persist probes - TCP tier 3: kernel interop (ncat/iperf3), std-parity - Extended --tier filter to accept tcp1, tcp1a, tcp2, tcp3 - TCP tiers run after UDP tier 4 when no filter is specified - tcp_cleanup_processes() kills stale DPDK processes before/between TCP tests to prevent /dev/vfio/noiommu-0 busy errors - DELETE_FAILED stack state recovery before CDK deploy 2. Non-blocking exit code (print_summary): - TCP test results (*tcp*.xml) excluded from exit code - TCP failures reported but don't block CI 3. Dedicated TCP workflow (scripts/ci/tcp-integration-tests.yml): - Ready-to-activate workflow with continue-on-error: true - Blocked by PAT lacking 'workflow' scope; staged for manual move 4. CI workflow fixes (.github/workflows/integration-tests.yml): - Exclude TCP tier XMLs from dorny fail-on-error reporter - Only UDP tier patterns in path glob (TCP handled separately) 5. tier1-tcp-echo.sh: accept server/client role aliases (was listener/sender), fixing 'Invalid role' errors that prevented TCP echo tests from running 6. ROADMAP housekeeping: ticked #35 (PR #117), tasks 15.2-15.4 Spec: .kiro/specs/tcp-support/ tasks 15.4, 16.1
ROADMAP item #36: EC2 integration test CI jobs with non-blocking TCP. Changes: 1. TCP tier orchestration (scripts/run-integration-tests.sh): - Added run_tcp_tier1, run_tcp_tier2, run_tcp_tier3 functions - TCP tier 1: handshake, echo, shutdown (DPDK<->DPDK) - TCP tier 2: retransmission under loss, flow control/persist probes - TCP tier 3: kernel interop (ncat/iperf3), std-parity - Extended --tier filter to accept tcp1, tcp1a, tcp2, tcp3 - TCP tiers run after UDP tier 4 when no filter is specified - tcp_cleanup_processes() kills stale DPDK processes before/between TCP tests to prevent /dev/vfio/noiommu-0 busy errors - DELETE_FAILED stack state recovery before CDK deploy 2. Non-blocking exit code (print_summary): - TCP test results (*tcp*.xml) excluded from exit code - TCP failures reported but don't block CI 3. Dedicated TCP workflow (scripts/ci/tcp-integration-tests.yml): - Ready-to-activate workflow with continue-on-error: true - Blocked by PAT lacking 'workflow' scope; staged for manual move 4. CI workflow fixes (.github/workflows/integration-tests.yml): - Exclude TCP tier XMLs from dorny fail-on-error reporter - Only UDP tier patterns in path glob (TCP handled separately) 5. tier1-tcp-echo.sh: accept server/client role aliases (was listener/sender), fixing 'Invalid role' errors that prevented TCP echo tests from running 6. ROADMAP housekeeping: ticked #35 (PR #117), tasks 15.2-15.4 Spec: .kiro/specs/tcp-support/ tasks 15.4, 16.1
ROADMAP item #36: EC2 integration test CI jobs with non-blocking TCP. Changes: 1. TCP tier orchestration (scripts/run-integration-tests.sh): - Added run_tcp_tier1, run_tcp_tier2, run_tcp_tier3 functions - TCP tier 1: handshake, echo, shutdown (DPDK<->DPDK) - TCP tier 2: retransmission under loss, flow control/persist probes - TCP tier 3: kernel interop (ncat/iperf3), std-parity - Extended --tier filter to accept tcp1, tcp1a, tcp2, tcp3 - TCP tiers run after UDP tier 4 when no filter is specified - tcp_cleanup_processes() kills stale DPDK processes before/between TCP tests to prevent /dev/vfio/noiommu-0 busy errors - DELETE_FAILED stack state recovery before CDK deploy 2. Non-blocking exit code (print_summary): - TCP test results (*tcp*.xml) excluded from exit code - TCP failures reported but don't block CI 3. Dedicated TCP workflow (scripts/ci/tcp-integration-tests.yml): - Ready-to-activate workflow with continue-on-error: true - Blocked by PAT lacking 'workflow' scope; staged for manual move 4. CI workflow fixes (.github/workflows/integration-tests.yml): - Exclude TCP tier XMLs from dorny fail-on-error reporter - Only UDP tier patterns in path glob (TCP handled separately) 5. tier1-tcp-echo.sh: accept server/client role aliases (was listener/sender), fixing 'Invalid role' errors that prevented TCP echo tests from running 6. ROADMAP housekeeping: ticked #35 (PR #117), tasks 15.2-15.4 Spec: .kiro/specs/tcp-support/ tasks 15.4, 16.1
## Roadmap Item ROADMAP #35: `dpdk-stdlib-tcp: EC2 tier-2 and tier-3 integration test scripts` Spec: `.kiro/specs/tcp-support/` tasks 15.2, 15.3 ## Summary PR #117 implemented and merged the tier-2 and tier-3 TCP integration test scripts but did not update ROADMAP.md or tasks.md. This PR finalizes the bookkeeping: - **ROADMAP.md**: marks item #35 as `[x] Complete · PR: #117` - **tasks.md**: checks off tasks 15.2 and 15.3 ## Tests No code changes — docs-only. All 1041 existing tests pass locally (`cargo build && cargo test`). --------- Co-authored-by: Agent Router <agent@gspivey.com>
Roadmap Item
ROADMAP #35:
dpdk-stdlib-tcp: EC2 tier-2 and tier-3 integration test scriptsSpec:
.kiro/specs/tcp-support/tasks 15.2, 15.3Changes
Adds four new integration test scripts for EC2:
Tier-2: Reliability under adverse conditions
tier2-tcp-retransmit.sh — Injects packet loss via tc/netem (default 10%), runs bidirectional echo transfer, and verifies:
tier2-tcp-flow-control.sh — Exercises TCP flow control by sending large bursts (1400B × 200–500) that overflow receive buffers, verifying:
Tier-3: Cross-stack interoperability
tier3-tcp-kernel-interop.sh — Tests kernel TCP ↔ DPDK TCP interop:
tier3-tcp-std-parity.sh — Byte-for-byte comparison between dpdk-stdlib-tcp and std::net::TcpStream using
tcp-test-client --mode std-parity:Pattern
All scripts follow the established harness pattern:
harness-common.shfor JUnit XML generation--roleflag--bind-ip,--peer-ip,--port,--gateway-mac,--outputflagscheck_process_crashTests
cargo build && cargo testpasses (1040+ tests, 0 failures). These are pure shell scripts — no Rust code changes.