SlideShare a Scribd company logo
1 of 61
Download to read offline
DanielStenberg–SVT-January21st
,2020
and streaming!
Daniel Stenberg
@bagderhttps://daniel.haxx.se
Daniel Stenberg
@bagder
Daniel Stenberg
@bagder
HTTP 1 to 2 to 3HTTP 1 to 2 to 3
ProblemsProblems
Why QUIC and how it worksWhy QUIC and how it works
HTTP/3HTTP/3
ChallengesChallenges
StreamingStreaming
Coming soon!Coming soon!
@bagder@bagder
HTTP started done over TCP
@bagder@bagder
TCPTCP
TCP/IP works over IP
Establishes a “connection”
3-way handshake
Resends lost packages
Delivers a byte stream
Clear text
@bagder@bagder
HTTPS means TCP + TLS + HTTP
@bagder@bagder
@bagder@bagder
Web pages over HTTPS in Firefox
@bagder@bagder
Web pages over HTTPS in Chrome
TLSTLS
TLS is done over TCP for HTTP/1 or 2
Transport Layer Security
Additional handshake
Privacy and security
@bagder@bagder
Classic HTTP Network Stack
IP
TCP
TLS 1.2+
HTTP
@bagder@bagder
HTTP over TCP
@bagder@bagder
HTTP/1.1HTTP/1.1
Shipped January 1997
Many parallel TCP connections
Better but ineffective TCP use
HTTP head-of-line-blocking
Numerous work-arounds
@bagder@bagder
HTTP/2HTTP/2
Shipped May 2015
Uses single connection per host
Many parallel streams
TCP head-of-line-blocking
@bagder@bagder
OssificationOssification
Internet is full of boxes
Routers, gateways, firewalls, load balancers,
NATs...
Boxes run software to handle network data
Middle-boxes work on existing protocols
Upgrade much slower than edges
@bagder@bagder
Internet
WWW
@bagder@bagder
Ossification casualties
HTTP/2 in clear textHTTP/2 in clear text
TCP improvements like TFOTCP improvements like TFO
TCP/UDP replacementsTCP/UDP replacements
HTTP brotliHTTP brotli
Future innovationsFuture innovations
…… unless encryptedunless encrypted
@bagder@bagder
Improvement in spite of ossification
@bagder@bagder
@bagder@bagder
@bagder@bagder
A new transport protocol
@bagder@bagder
Built on experiences by Google QUIC
Google deployed “http2 frames over UDP”-QUIC in 2013Google deployed “http2 frames over UDP”-QUIC in 2013
Widely used clientWidely used client
Widely used web servicesWidely used web services
Proven to work at web scaleProven to work at web scale
Taken to the IETF in 2015Taken to the IETF in 2015
QUIC working group started 2016QUIC working group started 2016
IETF QUIC is now very different than Google QUIC wasIETF QUIC is now very different than Google QUIC was
@bagder@bagder
Improvements
TCP head of line blockingTCP head of line blocking
Faster handshakesFaster handshakes
Earlier dataEarlier data
Connection-IDConnection-ID
More encryption, alwaysMore encryption, always
Future developmentFuture development
@bagder@bagder
Build on top of UDP
TCP and UDP remain “the ones”TCP and UDP remain “the ones”
Use UDP instead of IPUse UDP instead of IP
Reliable transport protocol - inReliable transport protocol - in
user-spaceuser-space
A little like TCP + TLSA little like TCP + TLS
@bagder@bagder
UDP isn’t reliable, QUIC is
UDP
Connectionless
No resends
No flow control
No ordering
@bagder@bagder
QUIC
Uses UDP like TCP uses IP
Adds connections,
reliability,
flow control,
security
QUIC streamsQUIC streams
Many logical flows within a single connectionMany logical flows within a single connection
Similar to HTTP/2 but in the transport layerSimilar to HTTP/2 but in the transport layer
IndependentIndependent streamsstreams
Client or server initiatedClient or server initiated
Bidirectional or unidirectionalBidirectional or unidirectional
@bagder@bagder
Independent streamsIndependent streams
TCPTCP
QUICQUIC
@bagder@bagder
Application protocols over QUICApplication protocols over QUIC
Streams for free
Could be any protocol
HTTP worked on as the first
Others are planned to follow
@bagder@bagder
HTTP/3 = HTTP over QUIC
@bagder@bagder
HTTP – same but different
RequestRequest
- method + path- method + path
- headers- headers
- body- body
ResponseResponse
- response code- response code
- headers- headers
- body- body
@bagder@bagder
HTTP – same but different
HTTP/1 – in ASCII over TCP
HTTP/2 – binary multiplexed over TCP
HTTP/3 – binary over multiplexed QUIC
@bagder@bagder
Stacks: old vs new
TCP
TLS 1.2+
HTTP/2
UDP
HTTP/3
QUIC
TLS 1.3
IP
HTTP/1
@bagder@bagder
streams
HTTP feature comparison
@bagder@bagder
HTTP/2 HTTP/3
Transport TCP QUIC
Streams HTTP/2 QUIC
Clear-text version Yes No
Independent streams No Yes
Header compression HPACK QPACK
Server push Yes Yes
Early data In theory Yes
0-RTT Handshake No Yes
Prioritization Messy Changes
HTTP/3 is fasterHTTP/3 is faster
Faster handshakes
Early data that works
The independent streams
By how much remains to be measured!
@bagder@bagder
(Thanks to QUIC)(Thanks to QUIC)
HTTPS is TCP?
HTTPS:// URLs are everywhereHTTPS:// URLs are everywhere
TCP (and TLS) on TCP port 443TCP (and TLS) on TCP port 443
@bagder@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@bagder
Race connection attempts?
Might be faster
Needed occasionally anyway
QUIC connections verify the host cert
HTTPSSVC
@bagder@bagder
Will HTTP/3 deliver?
@bagder@bagder
Eight HTTP/3 challenges
3-7% of QUIC attempts fail
Clients need fall back algorithms
1 2 3 4 5 6 7 8
@bagder@bagder
Eight HTTP/3 challenges
CPU intensive
Unoptimized UDP stacks
1 2 3 4 5 6 7 8
@bagder@bagder
Eight HTTP/3 challenges
“Funny” TLS layer
1 2 3 4 5 6 7 8
@bagder@bagder
Eight HTTP/3 challenges
All QUIC stacks are user-land
No standard QUIC API
1 2 3 4 5 6 7 8
@bagder@bagder
Eight HTTP/3 challenges
Lack of tooling
1 2 3 4 5 6 7 8
@bagder@bagder
Ship date
@bagder@bagder
20192020
Implementations
Over a dozen QUIC and HTTP/3 implementations
Google, Mozilla, Apple, Facebook, Microsoft, Akamai,
Fastly, Cloudflare, F5, LiteSpeed, Apache, and more
C, C++, Go, Rust, Python, Java, TypeScript, Erlang
Monthly interops
@bagder@bagder
Implementation Status
curl
Chrome and Edge Canary,
Firefox Nightly
Caddy and LiteSpeed
nginx-patch + quiche
@bagder@bagder
No Safari
No Apache, IIS or official
nginx
OpenSSL PR #8797
Browsers: bleeding edge h3
--enable-quic
--quic-version=h3-24
@bagder@bagder
about:config
network.http.http3.enabled
@bagder@bagder
streaming!
HTTP/3 streaming
“a 15-18% drop in rebuffering in YouTube”*
Jana Iyengar (then at Google)
@bagder@bagder
Why QUIC streams vs [something else]
Sane security story
IETF standard
Proven at web scale
Many implementations
Extensible
Independent streams
@bagder@bagder
More [coming?] over QUIC
DATAGRAM frameDATAGRAM frame
RTP over QUICRTP over QUIC
Partial reliabilityPartial reliability
MultipathMultipath
HTTP over multicast QUICHTTP over multicast QUIC
@bagder@bagder
Alternatives
@bagder@bagder
SRT - Secure Reliable
Transport
RIST - Reliable Internet
Stream Transport
HTTP/3 will take timeHTTP/3 will take time
HTTP/3 will grow slowerHTTP/3 will grow slower
Some will stick to HTTP/2Some will stick to HTTP/2
QUIC is for the long termQUIC is for the long term
@bagder@bagder
FutureFuture
MultipathMultipath
Forward error correctionForward error correction
Unreliable streamsUnreliable streams
More application protocolsMore application protocols
@bagder@bagder
Websockets?
Not actually a part of HTTP(/3)
RFC 8441 took a long time for HTTP/2
Can probably be updated for HTTP/3
draft-vvv-webtransport-http3-01
Still in progress
@bagder@bagder
Take-aways
HTTP/3 is comingHTTP/3 is coming
HTTP/3 is always encryptedHTTP/3 is always encrypted
Similar to HTTP/2 but over QUICSimilar to HTTP/2 but over QUIC
QUIC is transport over UDPQUIC is transport over UDP
Challenges to overcomeChallenges to overcome
Mid 2020?Mid 2020?
@bagder@bagder
HTTP/3 Explained
https://daniel.haxx.se/http3-explained
@bagder@bagder
Daniel Stenberg
@bagder
https://daniel.haxx.se/
Thank you!Thank you!
Questions?Questions?
@bagder@bagder
License
This presentation is provided under the Creative Commons Attribution 4.0
International Public License
@bagder@bagder
Links
QUIC drafts: https://quicwg.github.io/
DATAGRAM: https://tools.ietf.org/html/draft-pauly-quic-datagram-05
QUIC multipath: https://tools.ietf.org/html/draft-deconinck-quic-multipath-03
RTP over QUIC: https://tools.ietf.org/id/draft-rtpfolks-quic-rtp-over-quic-01.html
HTTP over multicast QUIC: https://www.ietf.org/id/draft-pardue-quic-http-mcast-05.txt
SRT: https://www.srtalliance.org/
RIST: http://www.videoservicesforum.org/RIST.shtml
Web Transport: https://tools.ietf.org/html/draft-vvv-webtransport-http3-01
HTTPS stats Firefox: https://letsencrypt.org/stats/#percent-pageloads
HTTPS stats Chrome: https://transparencyreport.google.com/https/overview?hl=en
Images: http://www.simonstalenhag.se/ and https://pixabay.com/
HTTP/3 Explained: https://http3-explained.haxx.se/
QUIC implementations: https://github.com/quicwg/base-drafts/wiki/Implementations
Nginx + quiche: https://github.com/cloudflare/quiche/tree/master/extras/nginx
HTTPSSVC: https://tools.ietf.org/html/draft-nygren-dnsop-svcb-httpssvc-00
Build curl with HTTP/3: https://github.com/curl/curl/blob/master/docs/HTTP3.md
Lucas Pardue’s talk “There and back again: reinventing UDP streaming with QUIC”: https://youtu.be/Zdkjd7-EWmQ
@bagder@bagder

More Related Content

What's hot

Distributed Locking in Kubernetes
Distributed Locking in KubernetesDistributed Locking in Kubernetes
Distributed Locking in KubernetesRafał Leszko
 
gRPC Design and Implementation
gRPC Design and ImplementationgRPC Design and Implementation
gRPC Design and ImplementationVarun Talwar
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPThomas Graf
 
OpenvSwitch Deep Dive
OpenvSwitch Deep DiveOpenvSwitch Deep Dive
OpenvSwitch Deep Diverajdeep
 
Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCShiju Varghese
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 
Technical Overview of QUIC
Technical  Overview of QUICTechnical  Overview of QUIC
Technical Overview of QUICshigeki_ohtsu
 
REST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sREST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sLuram Archanjo
 
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATSDeploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATSNATS
 
Cassandra by example - the path of read and write requests
Cassandra by example - the path of read and write requestsCassandra by example - the path of read and write requests
Cassandra by example - the path of read and write requestsgrro
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDPDaniel T. Lee
 
Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3NGINX, Inc.
 
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConJérôme Petazzoni
 
Hardening Kafka Replication
Hardening Kafka Replication Hardening Kafka Replication
Hardening Kafka Replication confluent
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchTe-Yen Liu
 

What's hot (20)

Distributed Locking in Kubernetes
Distributed Locking in KubernetesDistributed Locking in Kubernetes
Distributed Locking in Kubernetes
 
gRPC Design and Implementation
gRPC Design and ImplementationgRPC Design and Implementation
gRPC Design and Implementation
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
Cilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
 
OpenvSwitch Deep Dive
OpenvSwitch Deep DiveOpenvSwitch Deep Dive
OpenvSwitch Deep Dive
 
gRPC Overview
gRPC OverviewgRPC Overview
gRPC Overview
 
Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPC
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Technical Overview of QUIC
Technical  Overview of QUICTechnical  Overview of QUIC
Technical Overview of QUIC
 
Git undo
Git undoGit undo
Git undo
 
REST vs gRPC: Battle of API's
REST vs gRPC: Battle of API'sREST vs gRPC: Battle of API's
REST vs gRPC: Battle of API's
 
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATSDeploy Secure and Scalable Services Across Kubernetes Clusters with NATS
Deploy Secure and Scalable Services Across Kubernetes Clusters with NATS
 
Cassandra by example - the path of read and write requests
Cassandra by example - the path of read and write requestsCassandra by example - the path of read and write requests
Cassandra by example - the path of read and write requests
 
Faster packet processing in Linux: XDP
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
 
Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3Get Hands-On with NGINX and QUIC+HTTP/3
Get Hands-On with NGINX and QUIC+HTTP/3
 
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxConAnatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic - LinuxCon
 
Power-up services with gRPC
Power-up services with gRPCPower-up services with gRPC
Power-up services with gRPC
 
gRPC with java
gRPC with javagRPC with java
gRPC with java
 
Hardening Kafka Replication
Hardening Kafka Replication Hardening Kafka Replication
Hardening Kafka Replication
 
The Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitchThe Basic Introduction of Open vSwitch
The Basic Introduction of Open vSwitch
 

Similar to HTTP/3, QUIC and streaming

http3-quic-streaming-2020-200121234036.pdf
http3-quic-streaming-2020-200121234036.pdfhttp3-quic-streaming-2020-200121234036.pdf
http3-quic-streaming-2020-200121234036.pdfJunZhao68
 
HTTP/3 over QUIC. All is new but still the same!
HTTP/3 over QUIC. All is new but still the same!HTTP/3 over QUIC. All is new but still the same!
HTTP/3 over QUIC. All is new but still the same!Daniel Stenberg
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPDaniel Stenberg
 
Http3 fullstackfest-2019
Http3 fullstackfest-2019Http3 fullstackfest-2019
Http3 fullstackfest-2019Daniel Stenberg
 
Solving HTTP Problems With Code and Protocols
Solving HTTP Problems With Code and ProtocolsSolving HTTP Problems With Code and Protocols
Solving HTTP Problems With Code and ProtocolsNatasha Rooney
 
Evolving HTTP and making things QUIC
Evolving HTTP and making things QUICEvolving HTTP and making things QUIC
Evolving HTTP and making things QUICNatasha Rooney
 
HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022Daniel Stenberg
 
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)Igalia
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUICShuya Osaki
 
Improving performance by changing the rules from fast to SPDY
Improving performance by changing the rules   from fast to SPDYImproving performance by changing the rules   from fast to SPDY
Improving performance by changing the rules from fast to SPDYCotendo
 
From Fast To SPDY
From Fast To SPDYFrom Fast To SPDY
From Fast To SPDYMike Belshe
 
HTTP/2 What's inside and Why
HTTP/2 What's inside and WhyHTTP/2 What's inside and Why
HTTP/2 What's inside and WhyAdrian Cole
 
So that was HTTP/2, what's next?
So that was HTTP/2, what's next?So that was HTTP/2, what's next?
So that was HTTP/2, what's next?Daniel Stenberg
 
HTTP and 5G (fixed1)
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)dynamis
 
UAV Data Link Design for Dependable Real-Time Communications
UAV Data Link Design for Dependable Real-Time CommunicationsUAV Data Link Design for Dependable Real-Time Communications
UAV Data Link Design for Dependable Real-Time CommunicationsGerardo Pardo-Castellote
 
Quick QUIC Technical Update (2017)
Quick QUIC Technical Update (2017)Quick QUIC Technical Update (2017)
Quick QUIC Technical Update (2017)Taisuke Yamada
 

Similar to HTTP/3, QUIC and streaming (20)

http3-quic-streaming-2020-200121234036.pdf
http3-quic-streaming-2020-200121234036.pdfhttp3-quic-streaming-2020-200121234036.pdf
http3-quic-streaming-2020-200121234036.pdf
 
HTTP/3 over QUIC. All is new but still the same!
HTTP/3 over QUIC. All is new but still the same!HTTP/3 over QUIC. All is new but still the same!
HTTP/3 over QUIC. All is new but still the same!
 
HTTP/3 is next generation HTTP
HTTP/3 is next generation HTTPHTTP/3 is next generation HTTP
HTTP/3 is next generation HTTP
 
Http3 fullstackfest-2019
Http3 fullstackfest-2019Http3 fullstackfest-2019
Http3 fullstackfest-2019
 
HTTP/3
HTTP/3HTTP/3
HTTP/3
 
HTTP/3 in curl
HTTP/3 in curlHTTP/3 in curl
HTTP/3 in curl
 
Solving HTTP Problems With Code and Protocols
Solving HTTP Problems With Code and ProtocolsSolving HTTP Problems With Code and Protocols
Solving HTTP Problems With Code and Protocols
 
HTTP/3 in curl 2020
HTTP/3 in curl 2020HTTP/3 in curl 2020
HTTP/3 in curl 2020
 
Evolving HTTP and making things QUIC
Evolving HTTP and making things QUICEvolving HTTP and making things QUIC
Evolving HTTP and making things QUIC
 
HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022HTTP/3 in curl - curl up 2022
HTTP/3 in curl - curl up 2022
 
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
DIY Internet: Snappy, Secure Networking with MinimaLT (JSConf EU 2013)
 
Http2
Http2Http2
Http2
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUIC
 
Improving performance by changing the rules from fast to SPDY
Improving performance by changing the rules   from fast to SPDYImproving performance by changing the rules   from fast to SPDY
Improving performance by changing the rules from fast to SPDY
 
From Fast To SPDY
From Fast To SPDYFrom Fast To SPDY
From Fast To SPDY
 
HTTP/2 What's inside and Why
HTTP/2 What's inside and WhyHTTP/2 What's inside and Why
HTTP/2 What's inside and Why
 
So that was HTTP/2, what's next?
So that was HTTP/2, what's next?So that was HTTP/2, what's next?
So that was HTTP/2, what's next?
 
HTTP and 5G (fixed1)
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)
 
UAV Data Link Design for Dependable Real-Time Communications
UAV Data Link Design for Dependable Real-Time CommunicationsUAV Data Link Design for Dependable Real-Time Communications
UAV Data Link Design for Dependable Real-Time Communications
 
Quick QUIC Technical Update (2017)
Quick QUIC Technical Update (2017)Quick QUIC Technical Update (2017)
Quick QUIC Technical Update (2017)
 

More from Daniel Stenberg

More from Daniel Stenberg (20)

mastering libcurl part 2
mastering libcurl part 2mastering libcurl part 2
mastering libcurl part 2
 
mastering libcurl part 1
mastering libcurl part 1mastering libcurl part 1
mastering libcurl part 1
 
curl - openfourm europe.pdf
curl - openfourm europe.pdfcurl - openfourm europe.pdf
curl - openfourm europe.pdf
 
curl experiments - curl up 2022
curl experiments - curl up 2022curl experiments - curl up 2022
curl experiments - curl up 2022
 
curl security - curl up 2022
curl security - curl up 2022curl security - curl up 2022
curl security - curl up 2022
 
The state of curl 2022
The state of curl 2022The state of curl 2022
The state of curl 2022
 
Let me tell you about curl
Let me tell you about curlLet me tell you about curl
Let me tell you about curl
 
Curl with rust
Curl with rustCurl with rust
Curl with rust
 
Getting started with libcurl
Getting started with libcurlGetting started with libcurl
Getting started with libcurl
 
Landing code in curl
Landing code in curlLanding code in curl
Landing code in curl
 
Testing curl for security
Testing curl for securityTesting curl for security
Testing curl for security
 
common mistakes when using libcurl
common mistakes when using libcurlcommon mistakes when using libcurl
common mistakes when using libcurl
 
The state of curl 2020
The state of curl 2020The state of curl 2020
The state of curl 2020
 
curl roadmap 2020
curl roadmap 2020curl roadmap 2020
curl roadmap 2020
 
curl better
curl bettercurl better
curl better
 
Just curl it!
Just curl it!Just curl it!
Just curl it!
 
curl - a hobby project that conquered the world
curl - a hobby project that conquered the worldcurl - a hobby project that conquered the world
curl - a hobby project that conquered the world
 
Writing safe and secure code
Writing safe and secure codeWriting safe and secure code
Writing safe and secure code
 
The state of curl 2019
The state of curl 2019The state of curl 2019
The state of curl 2019
 
DNS over HTTPS
DNS over HTTPSDNS over HTTPS
DNS over HTTPS
 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

HTTP/3, QUIC and streaming

  • 5. HTTP 1 to 2 to 3HTTP 1 to 2 to 3 ProblemsProblems Why QUIC and how it worksWhy QUIC and how it works HTTP/3HTTP/3 ChallengesChallenges StreamingStreaming Coming soon!Coming soon! @bagder@bagder
  • 6. HTTP started done over TCP @bagder@bagder
  • 7. TCPTCP TCP/IP works over IP Establishes a “connection” 3-way handshake Resends lost packages Delivers a byte stream Clear text @bagder@bagder
  • 8. HTTPS means TCP + TLS + HTTP @bagder@bagder
  • 9. @bagder@bagder Web pages over HTTPS in Firefox
  • 10. @bagder@bagder Web pages over HTTPS in Chrome
  • 11. TLSTLS TLS is done over TCP for HTTP/1 or 2 Transport Layer Security Additional handshake Privacy and security @bagder@bagder
  • 12. Classic HTTP Network Stack IP TCP TLS 1.2+ HTTP @bagder@bagder
  • 14. HTTP/1.1HTTP/1.1 Shipped January 1997 Many parallel TCP connections Better but ineffective TCP use HTTP head-of-line-blocking Numerous work-arounds @bagder@bagder
  • 15. HTTP/2HTTP/2 Shipped May 2015 Uses single connection per host Many parallel streams TCP head-of-line-blocking @bagder@bagder
  • 16. OssificationOssification Internet is full of boxes Routers, gateways, firewalls, load balancers, NATs... Boxes run software to handle network data Middle-boxes work on existing protocols Upgrade much slower than edges @bagder@bagder
  • 18. Ossification casualties HTTP/2 in clear textHTTP/2 in clear text TCP improvements like TFOTCP improvements like TFO TCP/UDP replacementsTCP/UDP replacements HTTP brotliHTTP brotli Future innovationsFuture innovations …… unless encryptedunless encrypted @bagder@bagder
  • 19. Improvement in spite of ossification @bagder@bagder
  • 22. A new transport protocol @bagder@bagder
  • 23. Built on experiences by Google QUIC Google deployed “http2 frames over UDP”-QUIC in 2013Google deployed “http2 frames over UDP”-QUIC in 2013 Widely used clientWidely used client Widely used web servicesWidely used web services Proven to work at web scaleProven to work at web scale Taken to the IETF in 2015Taken to the IETF in 2015 QUIC working group started 2016QUIC working group started 2016 IETF QUIC is now very different than Google QUIC wasIETF QUIC is now very different than Google QUIC was @bagder@bagder
  • 24. Improvements TCP head of line blockingTCP head of line blocking Faster handshakesFaster handshakes Earlier dataEarlier data Connection-IDConnection-ID More encryption, alwaysMore encryption, always Future developmentFuture development @bagder@bagder
  • 25. Build on top of UDP TCP and UDP remain “the ones”TCP and UDP remain “the ones” Use UDP instead of IPUse UDP instead of IP Reliable transport protocol - inReliable transport protocol - in user-spaceuser-space A little like TCP + TLSA little like TCP + TLS @bagder@bagder
  • 26. UDP isn’t reliable, QUIC is UDP Connectionless No resends No flow control No ordering @bagder@bagder QUIC Uses UDP like TCP uses IP Adds connections, reliability, flow control, security
  • 27. QUIC streamsQUIC streams Many logical flows within a single connectionMany logical flows within a single connection Similar to HTTP/2 but in the transport layerSimilar to HTTP/2 but in the transport layer IndependentIndependent streamsstreams Client or server initiatedClient or server initiated Bidirectional or unidirectionalBidirectional or unidirectional @bagder@bagder
  • 29. Application protocols over QUICApplication protocols over QUIC Streams for free Could be any protocol HTTP worked on as the first Others are planned to follow @bagder@bagder
  • 30. HTTP/3 = HTTP over QUIC @bagder@bagder
  • 31. HTTP – same but different RequestRequest - method + path- method + path - headers- headers - body- body ResponseResponse - response code- response code - headers- headers - body- body @bagder@bagder
  • 32. HTTP – same but different HTTP/1 – in ASCII over TCP HTTP/2 – binary multiplexed over TCP HTTP/3 – binary over multiplexed QUIC @bagder@bagder
  • 33. Stacks: old vs new TCP TLS 1.2+ HTTP/2 UDP HTTP/3 QUIC TLS 1.3 IP HTTP/1 @bagder@bagder streams
  • 34. HTTP feature comparison @bagder@bagder HTTP/2 HTTP/3 Transport TCP QUIC Streams HTTP/2 QUIC Clear-text version Yes No Independent streams No Yes Header compression HPACK QPACK Server push Yes Yes Early data In theory Yes 0-RTT Handshake No Yes Prioritization Messy Changes
  • 35. HTTP/3 is fasterHTTP/3 is faster Faster handshakes Early data that works The independent streams By how much remains to be measured! @bagder@bagder (Thanks to QUIC)(Thanks to QUIC)
  • 36. HTTPS is TCP? HTTPS:// URLs are everywhereHTTPS:// URLs are everywhere TCP (and TLS) on TCP port 443TCP (and TLS) on TCP port 443 @bagder@bagder
  • 37. 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@bagder
  • 38. Race connection attempts? Might be faster Needed occasionally anyway QUIC connections verify the host cert HTTPSSVC @bagder@bagder
  • 40. Eight HTTP/3 challenges 3-7% of QUIC attempts fail Clients need fall back algorithms 1 2 3 4 5 6 7 8 @bagder@bagder
  • 41. Eight HTTP/3 challenges CPU intensive Unoptimized UDP stacks 1 2 3 4 5 6 7 8 @bagder@bagder
  • 42. Eight HTTP/3 challenges “Funny” TLS layer 1 2 3 4 5 6 7 8 @bagder@bagder
  • 43. Eight HTTP/3 challenges All QUIC stacks are user-land No standard QUIC API 1 2 3 4 5 6 7 8 @bagder@bagder
  • 44. Eight HTTP/3 challenges Lack of tooling 1 2 3 4 5 6 7 8 @bagder@bagder
  • 46. Implementations Over a dozen QUIC and HTTP/3 implementations Google, Mozilla, Apple, Facebook, Microsoft, Akamai, Fastly, Cloudflare, F5, LiteSpeed, Apache, and more C, C++, Go, Rust, Python, Java, TypeScript, Erlang Monthly interops @bagder@bagder
  • 47. Implementation Status curl Chrome and Edge Canary, Firefox Nightly Caddy and LiteSpeed nginx-patch + quiche @bagder@bagder No Safari No Apache, IIS or official nginx OpenSSL PR #8797
  • 48. Browsers: bleeding edge h3 --enable-quic --quic-version=h3-24 @bagder@bagder about:config network.http.http3.enabled
  • 50. HTTP/3 streaming “a 15-18% drop in rebuffering in YouTube”* Jana Iyengar (then at Google) @bagder@bagder
  • 51. Why QUIC streams vs [something else] Sane security story IETF standard Proven at web scale Many implementations Extensible Independent streams @bagder@bagder
  • 52. More [coming?] over QUIC DATAGRAM frameDATAGRAM frame RTP over QUICRTP over QUIC Partial reliabilityPartial reliability MultipathMultipath HTTP over multicast QUICHTTP over multicast QUIC @bagder@bagder
  • 53. Alternatives @bagder@bagder SRT - Secure Reliable Transport RIST - Reliable Internet Stream Transport
  • 54. HTTP/3 will take timeHTTP/3 will take time HTTP/3 will grow slowerHTTP/3 will grow slower Some will stick to HTTP/2Some will stick to HTTP/2 QUIC is for the long termQUIC is for the long term @bagder@bagder
  • 55. FutureFuture MultipathMultipath Forward error correctionForward error correction Unreliable streamsUnreliable streams More application protocolsMore application protocols @bagder@bagder
  • 56. Websockets? Not actually a part of HTTP(/3) RFC 8441 took a long time for HTTP/2 Can probably be updated for HTTP/3 draft-vvv-webtransport-http3-01 Still in progress @bagder@bagder
  • 57. Take-aways HTTP/3 is comingHTTP/3 is coming HTTP/3 is always encryptedHTTP/3 is always encrypted Similar to HTTP/2 but over QUICSimilar to HTTP/2 but over QUIC QUIC is transport over UDPQUIC is transport over UDP Challenges to overcomeChallenges to overcome Mid 2020?Mid 2020? @bagder@bagder
  • 59. Daniel Stenberg @bagder https://daniel.haxx.se/ Thank you!Thank you! Questions?Questions? @bagder@bagder
  • 60. License This presentation is provided under the Creative Commons Attribution 4.0 International Public License @bagder@bagder
  • 61. Links QUIC drafts: https://quicwg.github.io/ DATAGRAM: https://tools.ietf.org/html/draft-pauly-quic-datagram-05 QUIC multipath: https://tools.ietf.org/html/draft-deconinck-quic-multipath-03 RTP over QUIC: https://tools.ietf.org/id/draft-rtpfolks-quic-rtp-over-quic-01.html HTTP over multicast QUIC: https://www.ietf.org/id/draft-pardue-quic-http-mcast-05.txt SRT: https://www.srtalliance.org/ RIST: http://www.videoservicesforum.org/RIST.shtml Web Transport: https://tools.ietf.org/html/draft-vvv-webtransport-http3-01 HTTPS stats Firefox: https://letsencrypt.org/stats/#percent-pageloads HTTPS stats Chrome: https://transparencyreport.google.com/https/overview?hl=en Images: http://www.simonstalenhag.se/ and https://pixabay.com/ HTTP/3 Explained: https://http3-explained.haxx.se/ QUIC implementations: https://github.com/quicwg/base-drafts/wiki/Implementations Nginx + quiche: https://github.com/cloudflare/quiche/tree/master/extras/nginx HTTPSSVC: https://tools.ietf.org/html/draft-nygren-dnsop-svcb-httpssvc-00 Build curl with HTTP/3: https://github.com/curl/curl/blob/master/docs/HTTP3.md Lucas Pardue’s talk “There and back again: reinventing UDP streaming with QUIC”: https://youtu.be/Zdkjd7-EWmQ @bagder@bagder