AwalaApp / specs

Awala Protocol Suite Specifications
https://specs.awala.network
Creative Commons Attribution Share Alike 4.0 International
5 stars 1 forks source link

Replace TCP with QUIC in bindings #72

Open gnarea opened 4 years ago

gnarea commented 4 years ago

Executive summary

QUIC offers much better performance in a connection with a large latency by reducing the number of roundtrips, at the expense of slightly increased bandwidth for error correction purposes. This is the appropriate tradeoff in a Delay-Tolerant Network like Relaynet, so we should try to migrate to QUIC once its supported in all the third party dependencies used in Relaycorp's implementations. We should still support TCP for backwards compatibility.

The problem you're trying to solve

TCP and TLS handshakes require a series of roundtrips before the first byte is transmitted, which can be noticeable in a connection with a large latency. QUIC solves this issue by effectively "combining" the handshakes into one and doing fewer roundtrips (TLS 1.3 helps with the latter).

The solution you'd like

Migrate all bindings to QUIC, once all the dependencies below support QUIC:

We also need WebSocket itself to run over HTTP/3, but it doesn't even support HTTP/2 as of this writing. Alternatively, we could replace WebSocket with a generic or purpose-built L7 protocol.

We'll still support TCP for backwards compatibility, especially with public endpoints.