Conversation
Add irpc-uds crate implementing QUIC-over-Unix-sockets with plaintext crypto. Uses quinn's AsyncUdpSocket trait over UnixDatagram, requiring zero changes to irpc core. Includes tests and server-actor example. Add irpc-bench crate comparing all four transports: local, quinn, iroh, and UDS across sequential RPCs, concurrent RPCs, and large payloads. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Tune QUIC transport for local IPC: 1ms RTT, 16MB stream windows, 64MB send window - Increase socket buffers to 2MB via SO_SNDBUF/SO_RCVBUF - Remove seahash checksums (tag_len=0) since UDS is reliable - Fix flaky concurrent clients test with larger channel buffer Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Increase MTU from 1200 to 8192 with matching EndpointConfig (quinn hangs above ~12K for unknown reasons, 8K is safe) - Add pseudo-GSO: max_transmit_segments=32, split batched transmits into individual datagrams in poll_send - Add batched poll_recv: receive multiple datagrams per poll call when data is immediately available - Results: +17% concurrent small RPCs, +13% large payload throughput vs no-MTU baseline. UDS now beats quinn on all benchmarks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Gate all irpc-uds exports, modules, and deps on cfg(unix) so the crate compiles as an empty lib on Windows and wasm32 - Gate irpc-bench's irpc-uds dep and UDS bench calls on cfg(unix) - Exclude irpc-uds and irpc-bench from wasm32 CI build - Rewrite irpc-bench to match examples/compute.rs: replace broken large-payload Echo benchmark with bidi streaming (Multiply), use n=100K default, fix clippy warnings Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
This adds
irpc-uds, a new transport crate that runs QUIC over Unix datagram sockets with plaintext crypto. The implementation uses quinn'sAsyncUdpSockettrait overtokio::net::UnixDatagramwith a fakeSocketAddrmapping layer, so no changes to irpc core are needed.(impl'd by Claude Opus, wanted to try this for quite a while)
Bench results:
so, it is a bit faster than quinn over localhost with TLS, but not super much. Still, a unix domain socket has other advantages (e.g. file-level permissioning).