Skip to content
Snippets Groups Projects
Commit 242ec5c6 authored by Maxb's avatar Maxb
Browse files

Add QUIC dialer + listener

This adds the option to use QUIC as a replacement dialer+listener for
our obfs4 connection.

Because we have already implemented this pattern for KCP it was
relatively straightforward to add QUIC as this "inner transport". That
is, our network stack looks like:

┌──────────────┐      ┌──────────────┐
│OpenVPN client│      │OpenVPN server│
└──▲───────────┘      └──▲───────────┘
   │                     │
   │ UDP                 │ UDP
┌──▼───────────┐      ┌──▼───────────┐
│obfsvpn client│      │obfsvpn server│
└──▲───────────┘      └──▲───────────┘
   │                     │
   │                     │
┌──▼─────────┐        ┌──▼───────────┐
│obfs4 dialer│        │obfs4 listener│
└──▲─────────┘        └───▲──────────┘
   │                      │
   │ obfs4                │ obfs4
 ┌─▼─────────┐  QUIC   ┌──▼──────────┐
 │QUIC dialer├◄───────►│QUIC listener│
 └───────────┘         └─────────────┘

This makes the obfs4 layer and the QUIC layer somewhat duplicative in
that they're both technically "obfuscation" layers (a censor won't see
any obfs4 traffic because it's already wrapped in the QUIC layer).

This commit is more of a spike to prove that QUIC can easily be
swapped/added as a circumvention protocol layer/technique and the next
work can be refactoring our code such that we can optionally swap the
obfs4 layer entirely with our QUIC one.
parent a1760d0e
Branches
Tags
1 merge request!65Add QUIC dialer + listener
Pipeline #243276 failed
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment