SlideShare a Scribd company logo
in
2022
Agenda
HTTP/3 differs from HTTP/1 and HTTP/2
Build curl to enable HTTP/3
HTTP/3 transfers with the curl tool
HTTP/3 transfers with libcurl
@bagder
@bagder
Improvements in QUIC
TCP head of line blocking
Faster handshakes
Earlier data
More encryption, always
Future development
@bagder
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
Streams!
QUIC provides streams
Many logical flows within a single connection
Similar to HTTP/2 but in the transport layer
Independent streams
@bagder
HTTP/1, HTTP/2, HTTP/3
IP
TCP
TLS 1.2+
HTTP/2
UDP
HTTP/3
QUIC
IP
streams
streams
connections
connections
HTTP/1
@bagder
TLS 1.3
HTTP/1, HTTP/2, HTTP/3
IPv4 / IPv6
TCP
TLS 1.2+
HTTP/2
UDP
HTTP/3
QUIC
streams
streams
connections
connections
HTTP/1
@bagder
TLS 1.3
HTTP Semantics
Kernel space
HTTP/1, HTTP/2, HTTP/3
IPv4 / IPv6
TLS 1.2+
UDP
HTTP/3
HTTP/2
streams
TCP
connections
HTTP/1
@bagder
QUIC
streams
connections
TLS 1.3
HTTP Semantics
header compression
header compression
server push
server push
User
space
HTTPS is TCP?
HTTPS:// URLs are everywhere
TCP (and TLS) on TCP port 443
@bagder
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
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
All browsers support HTTP/3
@bagder
28%
@bagder
HTTP/3 use in Firefox beta 101
25% of top websites
@bagder
Build curl with HTTP/3 support
@bagder
HTTP/3 and QUIC support is EXPERIMENTAL
@bagder
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
@bagder
libcurl backends
libidn2
winidn
Hyper
built-in
threaded
c-ares
sync
msh3
ngtcp2 +
nghttp3
libssh2
wolfSSH
libssh
BearSSL
Gskit
GnuTLS
mbedSSL NSS
OpenSSL Schannel
wolfSSL
Secure Transport
rustls
application
HTTP
API
TLS
API
IDN API
SSH API
HTTP/3
API
Resolver
API
Public API
libcurl
Content encoding
API
brotli
zstd
zlib
= just one
= one or more
nghttp2
quiche
@bagder
libcurl backends
libidn2
winidn
threaded
c-ares
sync
msh3
nghttp3 libssh2
wolfSSH
libssh
BearSSL
Gskit
GnuTLS
mbedSSL NSS
OpenSSL Schannel
wolfSSL
Secure Transport
rustls
application
HTTP
API
TLS
API
IDN API
SSH API
HTTP/3
API
Resolver
API
Public API
libcurl
Content encoding
API
brotli
zstd
zlib
= just one
= one or more
Hyper
built-in
nghttp2
quiche
BoringSSL libressl AmiSSL
@bagder
libcurl backends
libidn2
winidn
threaded
c-ares
sync
libssh2
wolfSSH
libssh
application
HTTP
HTTP/3
TLS
SSH
IDN
Resolver
Public API
libcurl
Content encoding
brotli
zstd
zlib
= just one
= one or more
Hyper
built-in
nghttp2
msh3
nghttp3
quiche
BearSSL
Gskit
GnuTLS
mbedSSL
NSS
OpenSSL
Schannel
wolfSSL
Secure Transport
rustls
BoringSSL
libressl
AmiSSL
@bagder
libcurl backends
libidn2
winidn
threaded
c-ares
sync
libssh2
wolfSSH
libssh
application
HTTP
HTTP/3
TLS
SSH
IDN
Resolver
Public API
libcurl
Content encoding
brotli
zstd
zlib
= just one
= one or more
Hyper
built-in
nghttp2
msh3
nghttp3
quiche
BearSSL
Gskit
GnuTLS
mbedSSL
NSS
OpenSSL
Schannel
wolfSSL
Secure Transport
rustls
BoringSSL
libressl
AmiSSL
@bagder
msh3 nghttp3
ngtcp2
HTTP/3 components
HTTP/3
QUIC
TLS
msquic
HTTP
quictls
BoringSSL
quictls
BoringSSL
Schannel
quictls
BoringSSL
GnuTLS
wolfSSL
quiche
PicoTLS
Using curl with HTTP/3
@bagder
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
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
Run curl
$ curl –-http3 https://quic.tech:8443/ -v
$ curl –-alt-svc alt.txt https://quic.tech:8443/ -v
$ curl --version
…
Features: alt-svc ... HTTP3 ...
@bagder
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
Lacking in the HTTP/3 department
Multiplexing support
HTTPS RR
Tests and CI builds
… and probably more
@bagder
HTTP/3 with libcurl
@bagder
curl is powered by libcurl
All the previously mentioned features are in libcurl
… with a few more knobs to tweak
@bagder
“Force” HTTP/3
@bagder
Alt-Svc style
@bagder
Check for support
@bagder
When
... will curl with
HTTP/3 support
ship?
@bagder
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
Ship
Specifications
QUIC and HTTP/3 libraries
libcurl
TLS situation
@bagder
Deployed servers
Browser support
It will take a while
@bagder
HTTP/3 remains EXPERIMENTAL
For now
@bagder
HTTP/3 Explained
https://http3-explained.haxx.se/
@bagder

More Related Content

PPTX
Fortinet
PDF
Hping, TCP/IP Paket Üretici
PDF
MikroTik & RouterOS
PPT
Chapter06
PPTX
SDN Architecture & Ecosystem
PPTX
Cisco ASA Firewalls
PDF
Palo Alto Virtual firewall deployment guide on OpenStack Cloud
PDF
Firewall Best Practices for VoIP on pfSense - pfSense Hangout October 2017
Fortinet
Hping, TCP/IP Paket Üretici
MikroTik & RouterOS
Chapter06
SDN Architecture & Ecosystem
Cisco ASA Firewalls
Palo Alto Virtual firewall deployment guide on OpenStack Cloud
Firewall Best Practices for VoIP on pfSense - pfSense Hangout October 2017

What's hot (20)

PDF
Network Monitoring Tools
DOC
How to configure inband management for huawei ma5616
PDF
Introduction to QUIC
PDF
TRex Traffic Generator - Hanoch Haim
PDF
Demystifying EVPN in the data center: Part 1 in 2 episode series
PPTX
All about Firewalls ,IPS IDS and the era of UTM in a nutshell
DOC
Basic command to configure mikrotik
PPTX
SD WAN
PPTX
Nat presentation
PDF
CCNAv5 - S3: Chapter 7 EIGRP
DOC
I pv4 address classes
PDF
SD WAN Overview | What is SD WAN | Benefits of SD WAN
PPTX
OSPF Basics
PDF
Janus/SIP @ OpenSIPS 2017
PDF
Janus & docker: friends or foe
PPTX
20 common port numbers and their purposes
PDF
Scaling server side web rtc applications the janus challenge by lorenzo miniero
PDF
The Art of VoIP Hacking - Defcon 23 Workshop
PPTX
Checkpoint Firewall Training | Checkpoint Firewall Online Course
PDF
Network Address Translation (NAT)
Network Monitoring Tools
How to configure inband management for huawei ma5616
Introduction to QUIC
TRex Traffic Generator - Hanoch Haim
Demystifying EVPN in the data center: Part 1 in 2 episode series
All about Firewalls ,IPS IDS and the era of UTM in a nutshell
Basic command to configure mikrotik
SD WAN
Nat presentation
CCNAv5 - S3: Chapter 7 EIGRP
I pv4 address classes
SD WAN Overview | What is SD WAN | Benefits of SD WAN
OSPF Basics
Janus/SIP @ OpenSIPS 2017
Janus & docker: friends or foe
20 common port numbers and their purposes
Scaling server side web rtc applications the janus challenge by lorenzo miniero
The Art of VoIP Hacking - Defcon 23 Workshop
Checkpoint Firewall Training | Checkpoint Firewall Online Course
Network Address Translation (NAT)
Ad

Similar to HTTP/3 in curl - curl up 2022 (20)

PDF
HTTP/3 in curl 2020
PDF
HTTP/3 in curl
PDF
rust in curl by Daniel Stenberg from- curl up 2024
PDF
HTTP/3, QUIC and streaming
PDF
Curl with rust
PDF
HTTP/3 over QUIC. All is new but still the same!
PDF
http3-quic-streaming-2020-200121234036.pdf
PDF
HTTP/3 is next generation HTTP
PDF
PDF
HTTP/3 for everyone
PDF
Http3 fullstackfest-2019
PDF
PDF
So that was HTTP/2, what's next?
PDF
Enabling Googley microservices with HTTP/2 and gRPC.
PDF
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
PDF
CoAPing with the Internet of Things
PDF
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
PPTX
HTTP1.1/2 overview
PPTX
CocoaConf: The Language of Mobile Software is APIs
PDF
VPN - Virtual Private Network
HTTP/3 in curl 2020
HTTP/3 in curl
rust in curl by Daniel Stenberg from- curl up 2024
HTTP/3, QUIC and streaming
Curl with rust
HTTP/3 over QUIC. All is new but still the same!
http3-quic-streaming-2020-200121234036.pdf
HTTP/3 is next generation HTTP
HTTP/3 for everyone
Http3 fullstackfest-2019
So that was HTTP/2, what's next?
Enabling Googley microservices with HTTP/2 and gRPC.
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
CoAPing with the Internet of Things
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
HTTP1.1/2 overview
CocoaConf: The Language of Mobile Software is APIs
VPN - Virtual Private Network
Ad

More from Daniel Stenberg (20)

PDF
What comes after world domination with Daniel Stenberg, April 2025
PDF
digital infrastruktur är open source-1.pdf
PDF
Tightening every bolt at FOSDEM 2025 by Daniel Stenberg
PDF
curl security by Daniel Stenberg from curl up 2024
PDF
trurl 2024 by Daniel Stenberg from curl up 2024
PDF
curl future 2024 by Daniel Stenberg from curl up 2024
PDF
The state of curl 2024 by Daniel Stenberg from curl up 2024
PDF
mastering libcurl part 2
PDF
mastering libcurl part 1
PDF
curl - openfourm europe.pdf
PDF
curl experiments - curl up 2022
PDF
curl security - curl up 2022
PDF
The state of curl 2022
PDF
Let me tell you about curl
PDF
Getting started with libcurl
PDF
Landing code in curl
PDF
Testing curl for security
PDF
common mistakes when using libcurl
PDF
The state of curl 2020
PDF
curl roadmap 2020
What comes after world domination with Daniel Stenberg, April 2025
digital infrastruktur är open source-1.pdf
Tightening every bolt at FOSDEM 2025 by Daniel Stenberg
curl security by Daniel Stenberg from curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024
mastering libcurl part 2
mastering libcurl part 1
curl - openfourm europe.pdf
curl experiments - curl up 2022
curl security - curl up 2022
The state of curl 2022
Let me tell you about curl
Getting started with libcurl
Landing code in curl
Testing curl for security
common mistakes when using libcurl
The state of curl 2020
curl roadmap 2020

Recently uploaded (20)

PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
ai tools demonstartion for schools and inter college
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
medical staffing services at VALiNTRY
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Transform Your Business with a Software ERP System
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
top salesforce developer skills in 2025.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Reimagine Home Health with the Power of Agentic AI​
wealthsignaloriginal-com-DS-text-... (1).pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
CHAPTER 2 - PM Management and IT Context
ai tools demonstartion for schools and inter college
Which alternative to Crystal Reports is best for small or large businesses.pdf
PTS Company Brochure 2025 (1).pdf.......
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
medical staffing services at VALiNTRY
How Creative Agencies Leverage Project Management Software.pdf
Transform Your Business with a Software ERP System
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
top salesforce developer skills in 2025.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
L1 - Introduction to python Backend.pptx
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
2025 Textile ERP Trends: SAP, Odoo & Oracle
Adobe Illustrator 28.6 Crack My Vision of Vector Design

HTTP/3 in curl - curl up 2022