[Libwebsockets] Starting on QUIC Transport role

Andy Green andy at warmcat.com
Thu May 17 04:43:41 CEST 2018


Hi -

Last week I made a start on a QUIC Transport

https://datatracker.ietf.org/doc/draft-ietf-quic-transport/?include_text=1

role... it's the barest beginnings of it at the moment, but it can 
"listen" on udp, send one packet to a minimal server from a minimal 
client, and has some of the technical stuff like variable-length 
integers and connection ID hashtables in place.

QUIC is interesting for several reasons, but a major one is its ability 
to operate at a level above IP addresses... it can handle eg peer device 
switching networks and IP addresses seamlessly without logically 
restarting the QUIC connection.

The goal isn't to wire it up to the http/2 stuff, although when it all 
eventually works that should be possible since h2-over-QUIC is 
implemented in Chrome for a long time.  The idea at the moment is just 
to make a compliant QUIC Transport for both sever and client inside lws 
semantics.

I mention it so early for two reasons:

Firstly to see if anybody wants to cooperate with doing the work.

Secondly QUIC is a major undertaking, amongst many other angles to it 
because it's based on UDP it requires what is basically a "TCP stack" to 
be implemented on top, with explicit acks.

In one sense that's good because it lays bare the overhead that's 
normally hidden by the kernel tcp stack, and posix apis.  In another 
sense, it means the implementation is responsible for, eg, holding 
transmit packets explicitly until they are acked, in case of the need 
for retransmit.

I am wondering if anyone on the list wants to share any UDP / ack 
experience or feeling about implementing this side of it.  Or indeed 
anything else that QUIC covers (DTLS, tlsv1.3 etc).

-Andy


More information about the Libwebsockets mailing list