4. Improvements in QUIC
TCP head of line blocking
Faster handshakes
Earlier data
More encryption, always
Future development
@bagder
5. QUIC on top of UDP
TCP and UDP remain “the ones”
Use UDP instead of IP
Reliable transport protocol - in user-space
A little like TCP + TLS
@bagder
6. Streams!
QUIC provides streams
Many logical flows within a single connection
Similar to HTTP/2 but in the transport layer
Independent streams
@bagder
11. This service - over there!
The Alt-Svc: response header
Another host, protocol or port number is the
same “origin”
This site also runs on HTTP/3 “over there”, for the
next NNNN seconds
@bagder
12. HTTP/3 challenges
3-7% something of all QUIC attempts fail
Clients need “fall back” algorithms
CPU intensive
Unoptimized UDP stacks
“Funny” TLS layer
All QUIC stacks are user-land
No standard QUIC API
New tools
@bagder
18. Build curl
Requires 3rd
party libraries for low level
Selectable backend, use one out of several choices
Quiche, ngtcp2 or msh3
- Different TLS requirements
- Different APIs
@bagder
25. Looks like HTTP/1!
Like HTTP/2, HTTP/3 in curl is made to look like
HTTP/1 when curl shows and uses requests,
headers and similar. For consistency and easy of
use.
@bagder
26. Run curl
--http3
Forces curl to try QUIC and HTTP/3 on the given host name
No fallback!
--alt-svc <filename/->
Bootstraps into HTTP/3 the “standard way”
Takes an additional round-trip (curl might offer shortcut in future)
Makes the initial request HTTP/1 or HTTP/2 the “usual way”
The alt-svc file format: https://curl.se/docs/alt-svc.html
@bagder
28. Works with HTTP/3...
Connecting over IPv4 and IPv6 and “Happy eyeballs”
Funny host name/DNS tricks like --resolve and friends
HTTP GET/PUT/POST requests
HTTP header parsing, adding and removing headers
Cookies, connection caching, connection re-use etc
@bagder
29. Lacking in the HTTP/3 department
Multiplexing support
HTTPS RR
Tests and CI builds
… and probably more
@bagder
36. Ship (like in a distro)?
The specs
The libs
The servers
The browsers
libcurl
The TLS situation
Specifications
QUIC and HTTP/3 libraries
Deployed servers
Browser support
libcurl
TLS situation
@bagder