Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PoC for a masque proxy #7793

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft

PoC for a masque proxy #7793

wants to merge 3 commits into from

Conversation

pinkisemils
Copy link
Collaborator

@pinkisemils pinkisemils commented Mar 10, 2025

This is a small PoC implementation of a masque. We could use a masque proxy almost as is, if it wasn't for the exorbitant header sizes which interfere with multihop. For the larger packet sizes for multihop, which then enables DAITA, we are looking to extend the protocol to support fragmented packets.

We are looking to use masque to obfuscate our traffic to make it appear as though it was regular QUIC traffic. I'm laying this here so that we have a clear path towards implementing a QUIC Masque proxy for ourselves in the upcoming quarter - we don't need to merge this code as is.

In terms of libraries, I've had to extend h3 to make use of it, namely, exposing QUIC datagrams to client connections. Other than that, we should be able to use off-the-shelf libraries. For TLS, this is using the exact same rustls as we're using in mullvad-api. We could move the whole implementation into the obfuscation crate for cleanliness.

I have tested this with local iperf2, the performance isn't that great, 500mbit/s, yet to test the impact on WireGuard traffic


This change is Reviewable

@pinkisemils
Copy link
Collaborator Author

Whilst the crate here depends on a fork of ours, we can use upstream h3,as the changes we needed have been merged. They just have not made a release with them yet.

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.

1 participant