Repository navigation
docs: add scope, limitations, and roadmap to README - #28
Merged
Merged
Conversation
Honest documentation of what this library is (high-performance UDP endpoint) and what it isn't (general-purpose network stack). Includes detailed comparison against Linux kernel UDP implementation, documents VPC-specific assumptions, and establishes roadmap for physical hardware support and kernel bake-off. https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
…ake-off IPv6 (with NDP, ICMPv6) and UDP encapsulation (VXLAN/GUE/GENEVE) are now planned features. Removed kernel bake-off as a separate item since the existing performance test suite already covers that comparison. https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
The Status section duplicated information already covered in the What's Implemented table. Removing it to keep the README concise. https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
Added TOS/DSCP, VLAN, Cork/MSG_MORE to Not Currently Planned list. Moved jumbo frames to Planned (under Physical Hardware Support which already covers configurable MTU). https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
Physical hardware deployments need VLAN tagging in the socket layer. https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
Feature names now match exactly between the What's Not Implemented table and the Planned/Not Currently Planned roadmap sections. Table is reordered to list all Planned items first (matching roadmap order), then all Not Planned items. Added contribution note after Not Planned. https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
We include rte_flow.h in bindgen but expose no safe wrapper or stubs. Users would need raw unsafe FFI calls. Updated wording to be accurate. https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
✅ Integration Tests Passed (Run 23595212875)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
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
✅ Integration Tests Passed (Run 23595605538)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
|
gspivey
pushed a commit
that referenced
this pull request
Jun 5, 2026
gspivey
pushed a commit
that referenced
this pull request
Jun 14, 2026
Performance tests show no regression — TCP engine code has zero impact on UDP datapath. rust-dpdk results consistent with Run #27.
gspivey
pushed a commit
that referenced
this pull request
Jun 18, 2026
gspivey
added a commit
that referenced
this pull request
Jun 18, 2026
) ## ROADMAP Item **#28**: `dpdk-stdlib-tcp`: Sync socket — TcpStream and TcpListener public API Spec: `.kiro/specs/tcp-support/` · tasks 8.4, 8.5 ## Changes ### TcpStream (`tcp_stream.rs`) - `enum Inner { Dpdk(DpdkTcpStream), Std(std::net::TcpStream) }` with v4→DPDK / v6→kernel dispatch - Full `std::net::TcpStream` surface: `connect`, `connect_timeout`, `shutdown`, `peer_addr`, `local_addr`, `set_read_timeout`/`set_write_timeout`, `set_nodelay`/`nodelay`, `set_ttl`/`ttl`, `set_linger`/`linger`, `set_nonblocking`, `take_error`, `peek`, `try_clone` (returns `Unsupported` on DPDK arm) - `impl Read/Write for TcpStream` and `impl Read/Write for &TcpStream` (serialized via read_mutex/write_mutex per P0-C) - Process-wide `TcpContext` + `init_tcp_context()` for engine bootstrapping ### TcpListener (`tcp_listener.rs`) - `enum Inner { Dpdk(DpdkTcpListener), Std(std::net::TcpListener) }` - `bind<A: ToSocketAddrs>` with v4/v6 dispatch - `accept() -> (TcpStream, SocketAddr)` - `local_addr()`, `set_ttl()`, `ttl()`, `incoming() -> Incoming` ### SpscByteRing (`ring.rs`) - Added `peek(&self, buf: &mut [u8]) -> usize` for non-destructive read (used by `TcpStream::peek`) ## Tests Added - `tcp_stream_try_clone_dpdk_returns_unsupported` - `tcp_stream_peer_addr_and_local_addr` - `tcp_stream_shutdown_sends_command` - `tcp_stream_set_linger_updates_handle` - `tcp_stream_take_error_returns_none_initially` - `tcp_stream_take_error_returns_latched_error` - `tcp_stream_read_write_dpdk` - `tcp_stream_try_clone_std_works` (v6 dispatch path) - TcpListener bind tests (v4 without context, v6 fallback) ## Tradeoffs - `set_linger`/`linger` on the Std (kernel) arm is a no-op since `tcp_linger` is unstable in std - `try_clone()` on DPDK arm returns `Unsupported` — documented divergence; `into_split()` is the intended concurrent pattern for SPSC - `peek()` on DPDK arm returns `WouldBlock` when ring is empty (in blocking mode, full blocking peek would require additional condvar wait logic) All 666+ existing tests pass locally (`cargo build && cargo test`). --------- Co-authored-by: Agent Router <agent@agent-router.dev>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Honest documentation of what this library is (high-performance UDP endpoint)
and what it isn't (general-purpose network stack). Includes detailed comparison
against Linux kernel UDP implementation, documents VPC-specific assumptions,
and establishes roadmap for physical hardware support and kernel bake-off.
https://claude.ai/code/session_01UxPq4BTVzDJsWsMBH9mTax