[Libwebsockets] Starting on QUIC Transport role
andy at warmcat.com
Thu May 17 04:43:41 CEST 2018
Last week I made a start on a QUIC Transport
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
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
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).
More information about the Libwebsockets