Deno: QUIC support

Created on 22 Jan 2019  路  9Comments  路  Source: denoland/deno

It would be nice if the Deno standard library had QUIC protocol support out-of-the-box, implemented in Rust underneath. QUIC will likely be the UDP-based alternative to TCP used as the foundation for the Internet Engineering Task Force (IETF)'s upcoming HTTP3 spec. Essentially QUIC is a more efficient implementation of the combined capabilities of TCP and TLS, and a less mature version of QUIC has been used by Google for years in requests from Chrome to its own webservers. Node.js has an open issue for adding in QUIC support, but based on the discussion there I'm assuming that the priority is low for them. They may not understand the significance of adding support.

Most helpful comment

Maybe we can also consider https://github.com/cloudflare/quiche

All 9 comments

I agree - would be great - and seems relatively accessible with
https://github.com/djc/quinn
I鈥檓 open to anyone who wants to attempt this. And if someone doesn鈥檛 pick it up, I would try myself once a few other things have been taken care of (We still don鈥檛 have basic TLS support for example- that should come first)

Maybe we can also consider https://github.com/cloudflare/quiche

Existing implementations of QUIC: https://github.com/quicwg/base-drafts/wiki/Implementations

The ones (under active development) in Rust:

quiche seems to expose only mio based non-blocking API and not an async API.

From my experience with quiche, it's only the CPU bound parts, you bring your own network IO. I have used it with a Tokio UDP socket and converted it to a modern Rust async futures stream+sink. The library is basically only the hard parts of state machine, parsing, and crypto pieces.

The bigger problem with using quiche is that they require BoringSSL and have multiple times stated they are unlikely to change (see https://github.com/cloudflare/quiche/issues/129#issuecomment-524035205 and https://github.com/cloudflare/quiche/issues/16#issuecomment-460205108). But there is an old PR open yet on hold for OpenSSL so maybe there's hope for rustls.

@ry Is anyone working on this issue? I could give this a shot. Can't give any guarantees though.

Make sure you check out #3995 as it is more comprehensive of an issue (I missed this one when I opened that) and Ry had some thoughts on implementation.

An empirical study on QUIC implementations that's worth reading https://qlog.edm.uhasselt.be/epiq
And a summary if you don't have much time https://qlog.edm.uhasselt.be/epiq/images/summary.png

Even though #3995 came after this one, let's close it in lieu of #3995 as it is more comprehensive.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

sh7dm picture sh7dm  路  3Comments

CruxCv picture CruxCv  路  3Comments

ry picture ry  路  3Comments

JosephAkayesi picture JosephAkayesi  路  3Comments

metakeule picture metakeule  路  3Comments