#http-3 #quic #masque

bin+lib pasque

UDP and IP over HTTP/3

1 unstable release

new 0.1.0 Apr 12, 2025

#45 in #http-3

MIT license

105KB
2.5K SLoC

Pasque

An UDP over HTTP/3 (RFC 9298) and IP over HTTP/3 implementation (RFC 9484). Built using Quiche as the HTTP/3 & QUIC implementation. The project is yet under construction, which probably is obvious when browsing the code, and some features are yet missing or not yet fully functional.

Building and testing

The code is built similarly to most Rust implementations. cargo build builds the binaries, cargo test runs a few tests on the implementation. There is an example client and server that demonstrate how the crate is used. Because the TUN interface used to implement the IP tunnel requires superuser privileges, the TUN-related tests are behind "tuntest" feature, so that the other functionality can be tested with normal user rights. To run full tests: sudo cargo test --features tuntest

Starting the server:

cargo run --bin psq-server -i 10.76.0.1/24

The example program listens to UDP port 4433 for incoming HTTP/3 and QUIC connections. -i option enables the IP tunnel at given IP address. Clients are allocated IP addresses from the given IP network, hence also the prefix length is given.

Starting the client:

cargo run --bin psq-client -i -d https://localhost:4433

The example program will make a HTTP/3 CONNECT request to set up IP tunnel.

See psq-client.rs and psq-server.rs for simple examples how to use the API.

Further information

Dependencies

~45MB
~1M SLoC