Skip to content

Improve recursive DNS tunnel stability#87

Open
Udjin79 wants to merge 19 commits into
Mygod:mainfrom
Udjin79:fix/recursive-dns-stability
Open

Improve recursive DNS tunnel stability#87
Udjin79 wants to merge 19 commits into
Mygod:mainfrom
Udjin79:fix/recursive-dns-stability

Conversation

@Udjin79
Copy link
Copy Markdown

@Udjin79 Udjin79 commented May 14, 2026

Summary

  • make QUIC idle timeout configurable on both client and server and enable server-side keep-alive
  • add nonce/cache-busting labels for DNS query transport while keeping server decode compatibility
  • improve recursive DNS path handling: rotate stalled handshakes, avoid disabling merely slow paths, keep alternate paths usable, honor cooldown during refresh, and lengthen cooldown for flapping paths
  • improve close/error labels and document the new options

Validation

Local checks:

  • cargo fmt --check
  • cargo test -p slipstream-dns -p slipstream-client
  • cargo test -p slipstream-client
  • cargo clippy -p slipstream-dns -p slipstream-client -p slipstream-server --all-targets -- -D warnings
  • cargo clippy -p slipstream-client -p slipstream-server --all-targets -- -D warnings
  • cargo build --release -p slipstream-client -p slipstream-server

Production smoke test over public recursive DNS resolvers (Selectel client -> Hetzner server, domain delegated through Cloudflare):

  • previous behavior: fast bursts were possible, but later transfers often stalled at 0 bytes, reset, or closed on idle timeout
  • with a stable public recursive pool (1.1.1.1, 1.0.0.1, 9.9.9.9, 149.112.112.112): 6 x 10 MB transfers completed with http=200 and curl_exit=0
  • observed throughput is stable but modest (~125-152 KB/s), so this PR improves reliability rather than solving throughput optimization completely

Notes

Some public resolvers tested from the production client were not suitable for this transport profile: Yandex stalled after a few KB, Google-only failed to become ready reliably, and UltraDNS-only stalled mid-transfer. The longer cooldown avoids repeatedly spending probe/poll work on flapping recursive paths.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1463d2414c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/slipstream-client/src/runtime.rs Outdated
Copy link
Copy Markdown
Contributor

@aminvakil aminvakil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disclaimer: Not a maintainer here.

Comment thread crates/slipstream-client/src/runtime.rs Outdated
@Udjin79 Udjin79 requested a review from aminvakil May 14, 2026 19:47
@tannisroot
Copy link
Copy Markdown

Was this written with AI? How involved was it in this PR?

@Udjin79
Copy link
Copy Markdown
Author

Udjin79 commented May 22, 2026

Was this written with AI? How involved was it in this PR?

Yes. I was testing and stabilizing build, in order to be more steady and reliable in work.
Any problems with it?

@Mygod
Copy link
Copy Markdown
Owner

Mygod commented May 22, 2026

I can't speak for this PR but just so you know, this repo is 100% AI. You are welcome to leave.

@tannisroot
Copy link
Copy Markdown

I can't speak for this PR but just so you know, this repo is 100% AI. You are welcome to leave.

Oh I wasn't implying it's an inherently bad thing, your project is evidence it isn't, I was just curious.

@tannisroot
Copy link
Copy Markdown

Was this written with AI? How involved was it in this PR?

Yes. I was testing and stabilizing build, in order to be more steady and reliable in work.
Any problems with it?

Not at all!

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.

4 participants