SlideShare a Scribd company logo
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

PDF
Apache Airflow
PDF
gRPC Overview
PDF
Apache NiFi SDLC Improvements
PDF
Scaling up uber's real time data analytics
PDF
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
PDF
Introduction to WebSockets Presentation
PDF
Grafana introduction
PDF
Machine Learning using Kubeflow and Kubernetes
Apache Airflow
gRPC Overview
Apache NiFi SDLC Improvements
Scaling up uber's real time data analytics
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
Introduction to WebSockets Presentation
Grafana introduction
Machine Learning using Kubeflow and Kubernetes

What's hot (20)

PDF
Network time protocol
PDF
Data ingestion and distribution with apache NiFi
PPTX
Real-Time Data Flows with Apache NiFi
PPTX
Vert.x vs akka
PPTX
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
PDF
Introduction to MLflow
PPTX
Introduction to Kafka Cruise Control
PDF
gRPC - RPC rebirth?
PDF
Scalable Monitoring Using Apache Spark and Friends with Utkarsh Bhatnagar
PPTX
Pub/Sub Messaging
PDF
End to end Machine Learning using Kubeflow - Build, Train, Deploy and Manage
PDF
VXLAN BGP EVPN: Technology Building Blocks
PDF
Intro to Time Series
PPT
Chapter05
PDF
Introduction to AMQP Messaging with RabbitMQ
PDF
How Uber scaled its Real Time Infrastructure to Trillion events per day
PDF
The Google Chubby lock service for loosely-coupled distributed systems
PDF
Dataflow with Apache NiFi
PDF
Zero downtime deployment of micro-services with Kubernetes
PPTX
WebRTC presentation
Network time protocol
Data ingestion and distribution with apache NiFi
Real-Time Data Flows with Apache NiFi
Vert.x vs akka
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Introduction to MLflow
Introduction to Kafka Cruise Control
gRPC - RPC rebirth?
Scalable Monitoring Using Apache Spark and Friends with Utkarsh Bhatnagar
Pub/Sub Messaging
End to end Machine Learning using Kubeflow - Build, Train, Deploy and Manage
VXLAN BGP EVPN: Technology Building Blocks
Intro to Time Series
Chapter05
Introduction to AMQP Messaging with RabbitMQ
How Uber scaled its Real Time Infrastructure to Trillion events per day
The Google Chubby lock service for loosely-coupled distributed systems
Dataflow with Apache NiFi
Zero downtime deployment of micro-services with Kubernetes
WebRTC presentation
Ad

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

PDF
http3-quic-streaming-2020-200121234036.pdf
PDF
HTTP/3 for everyone
PDF
HTTP/3 is next generation HTTP
PDF
Http3 fullstackfest-2019
PDF
HTTP/3 over QUIC. All is new but still the same!
PDF
PDF
HTTP/3 in curl 2020
PDF
HTTP/3 an early overview
PDF
HTTP/3 in curl
PDF
HTTP/3 in curl - curl up 2022
PPTX
HTTP 3.pptx
PDF
A New Internet? Introduction to HTTP/2, QUIC and DOH
PDF
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
PDF
PAC 2019 virtual Scott Moore
PDF
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
PDF
So that was HTTP/2, what's next?
PPTX
QUIC protocol.pptx
PDF
Web Performance Optimization with HTTP/3
PPTX
Next generation web protocols
http3-quic-streaming-2020-200121234036.pdf
HTTP/3 for everyone
HTTP/3 is next generation HTTP
Http3 fullstackfest-2019
HTTP/3 over QUIC. All is new but still the same!
HTTP/3 in curl 2020
HTTP/3 an early overview
HTTP/3 in curl
HTTP/3 in curl - curl up 2022
HTTP 3.pptx
A New Internet? Introduction to HTTP/2, QUIC and DOH
A new Internet? Intro to HTTP/2, QUIC, DoH and DNS over QUIC
PAC 2019 virtual Scott Moore
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
So that was HTTP/2, what's next?
QUIC protocol.pptx
Web Performance Optimization with HTTP/3
Next generation web protocols
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
rust in curl 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
Curl with rust
PDF
Getting started with libcurl
PDF
Landing code in curl
PDF
Testing curl for security
PDF
common mistakes when using libcurl
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
rust in curl 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
Curl with rust
Getting started with libcurl
Landing code in curl
Testing curl for security
common mistakes when using libcurl

Recently uploaded (20)

PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Hindi spoken digit analysis for native and non-native speakers
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
STKI Israel Market Study 2025 version august
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
Chapter 5: Probability Theory and Statistics
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
Architecture types and enterprise applications.pdf
PDF
1 - Historical Antecedents, Social Consideration.pdf
WOOl fibre morphology and structure.pdf for textiles
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Assigned Numbers - 2025 - Bluetooth® Document
Enhancing emotion recognition model for a student engagement use case through...
DP Operators-handbook-extract for the Mautical Institute
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Zenith AI: Advanced Artificial Intelligence
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Hindi spoken digit analysis for native and non-native speakers
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
observCloud-Native Containerability and monitoring.pptx
STKI Israel Market Study 2025 version august
Module 1.ppt Iot fundamentals and Architecture
Developing a website for English-speaking practice to English as a foreign la...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
A comparative study of natural language inference in Swahili using monolingua...
Chapter 5: Probability Theory and Statistics
A contest of sentiment analysis: k-nearest neighbor versus neural network
Architecture types and enterprise applications.pdf
1 - Historical Antecedents, Social Consideration.pdf

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
  • 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