SlideShare a Scribd company logo
Daniel
Stenberg
–
SVT
-
January
21
st
,
2020
and streaming!
Daniel Stenberg
@bagder
https://daniel.haxx.se
Daniel Stenberg
@bagder
Daniel Stenberg
@bagder
HTTP 1 to 2 to 3
HTTP 1 to 2 to 3
Problems
Problems
Why QUIC and how it works
Why QUIC and how it works
HTTP/3
HTTP/3
Challenges
Challenges
Streaming
Streaming
Coming soon!
Coming soon!
@bagder
@bagder
HTTP started done over TCP
@bagder
@bagder
TCP
TCP
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
TLS
TLS
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.1
HTTP/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/2
HTTP/2
Shipped May 2015
Uses single connection per host
Many parallel streams
TCP head-of-line-blocking
@bagder
@bagder
Ossification
Ossification
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 text
HTTP/2 in clear text
TCP improvements like TFO
TCP improvements like TFO
TCP/UDP replacements
TCP/UDP replacements
HTTP brotli
HTTP brotli
Future innovations
Future innovations
…
… unless encrypted
unless 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 2013
Google deployed “http2 frames over UDP”-QUIC in 2013
Widely used client
Widely used client
Widely used web services
Widely used web services
Proven to work at web scale
Proven to work at web scale
Taken to the IETF in 2015
Taken to the IETF in 2015
QUIC working group started 2016
QUIC working group started 2016
IETF QUIC is now very different than Google QUIC was
IETF QUIC is now very different than Google QUIC was
@bagder
@bagder
Improvements
TCP head of line blocking
TCP head of line blocking
Faster handshakes
Faster handshakes
Earlier data
Earlier data
Connection-ID
Connection-ID
More encryption, always
More encryption, always
Future development
Future development
@bagder
@bagder
Build on top of UDP
TCP and UDP remain “the ones”
TCP and UDP remain “the ones”
Use UDP instead of IP
Use UDP instead of IP
Reliable transport protocol - in
Reliable transport protocol - in
user-space
user-space
A little like TCP + TLS
A 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 streams
QUIC streams
Many logical flows within a single connection
Many logical flows within a single connection
Similar to HTTP/2 but in the transport layer
Similar to HTTP/2 but in the transport layer
Independent
Independent streams
streams
Client or server initiated
Client or server initiated
Bidirectional or unidirectional
Bidirectional or unidirectional
@bagder
@bagder
Independent streams
Independent streams
TCP
TCP
QUIC
QUIC
@bagder
@bagder
Application protocols over QUIC
Application 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
Request
Request
- method + path
- method + path
- headers
- headers
- body
- body
Response
Response
- 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 faster
HTTP/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 everywhere
HTTPS:// URLs are everywhere
TCP (and TLS) on TCP port 443
TCP (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
2019
2020
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 frame
DATAGRAM frame
RTP over QUIC
RTP over QUIC
Partial reliability
Partial reliability
Multipath
Multipath
HTTP over multicast QUIC
HTTP over multicast QUIC
@bagder
@bagder
Alternatives
@bagder
@bagder
SRT - Secure Reliable
Transport
RIST - Reliable Internet
Stream Transport
HTTP/3 will take time
HTTP/3 will take time
HTTP/3 will grow slower
HTTP/3 will grow slower
Some will stick to HTTP/2
Some will stick to HTTP/2
QUIC is for the long term
QUIC is for the long term
@bagder
@bagder
Future
Future
Multipath
Multipath
Forward error correction
Forward error correction
Unreliable streams
Unreliable streams
More application protocols
More 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 coming
HTTP/3 is coming
HTTP/3 is always encrypted
HTTP/3 is always encrypted
Similar to HTTP/2 but over QUIC
Similar to HTTP/2 but over QUIC
QUIC is transport over UDP
QUIC is transport over UDP
Challenges to overcome
Challenges 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

Similar to http3-quic-streaming-2020-200121234036.pdf

Evolving HTTP and making things QUIC
Evolving HTTP and making things QUICEvolving HTTP and making things QUIC
Evolving HTTP and making things QUIC
Natasha Rooney
 
HTTP/3 in curl 2020
HTTP/3 in curl 2020HTTP/3 in curl 2020
HTTP/3 in curl 2020
Daniel Stenberg
 
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
Daniel 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
 
From Fast To SPDY
From Fast To SPDYFrom Fast To SPDY
From Fast To SPDY
Mike Belshe
 
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
Cotendo
 
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/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
Adrian Cole
 
Http2
Http2Http2
Webrtc overview
Webrtc overviewWebrtc overview
Webrtc overview
Olle E Johansson
 
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 eraHTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
peychevi
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUIC
Shuya Osaki
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser Netwroking
Shuya Osaki
 
ACME and Let's Encrypt: HTTPS made easy
ACME and Let's Encrypt: HTTPS made easyACME and Let's Encrypt: HTTPS made easy
ACME and Let's Encrypt: HTTPS made easy
Gabriell Nascimento
 
Master Class : TCP/IP Mechanics from Scratch to Expert
Master Class : TCP/IP Mechanics from Scratch to ExpertMaster Class : TCP/IP Mechanics from Scratch to Expert
Master Class : TCP/IP Mechanics from Scratch to Expert
Abhishek Sagar
 
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
Gerardo Pardo-Castellote
 
SSL, HSTS and other stuff with two eSSes
SSL, HSTS and other stuff with two eSSesSSL, HSTS and other stuff with two eSSes
SSL, HSTS and other stuff with two eSSes
Tiago Mendo
 
Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2
Fastly
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCAlexandre Gouaillard
 
Practical non blocking microservices in java 8
Practical non blocking microservices in java 8Practical non blocking microservices in java 8
Practical non blocking microservices in java 8
Michal Balinski
 

Similar to http3-quic-streaming-2020-200121234036.pdf (20)

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 2020
HTTP/3 in curl 2020HTTP/3 in curl 2020
HTTP/3 in curl 2020
 
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)
 
From Fast To SPDY
From Fast To SPDYFrom Fast To SPDY
From Fast To SPDY
 
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
 
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/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
 
Http2
Http2Http2
Http2
 
Webrtc overview
Webrtc overviewWebrtc overview
Webrtc overview
 
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 eraHTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUIC
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser Netwroking
 
ACME and Let's Encrypt: HTTPS made easy
ACME and Let's Encrypt: HTTPS made easyACME and Let's Encrypt: HTTPS made easy
ACME and Let's Encrypt: HTTPS made easy
 
Master Class : TCP/IP Mechanics from Scratch to Expert
Master Class : TCP/IP Mechanics from Scratch to ExpertMaster Class : TCP/IP Mechanics from Scratch to Expert
Master Class : TCP/IP Mechanics from Scratch to Expert
 
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
 
SSL, HSTS and other stuff with two eSSes
SSL, HSTS and other stuff with two eSSesSSL, HSTS and other stuff with two eSSes
SSL, HSTS and other stuff with two eSSes
 
Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
 
Practical non blocking microservices in java 8
Practical non blocking microservices in java 8Practical non blocking microservices in java 8
Practical non blocking microservices in java 8
 

More from JunZhao68

1-MIV-tutorial-part-1.pdf
1-MIV-tutorial-part-1.pdf1-MIV-tutorial-part-1.pdf
1-MIV-tutorial-part-1.pdf
JunZhao68
 
GOP-Size_report_11_16.pdf
GOP-Size_report_11_16.pdfGOP-Size_report_11_16.pdf
GOP-Size_report_11_16.pdf
JunZhao68
 
02-VariableLengthCodes_pres.pdf
02-VariableLengthCodes_pres.pdf02-VariableLengthCodes_pres.pdf
02-VariableLengthCodes_pres.pdf
JunZhao68
 
MHV-Presentation-Forman (1).pdf
MHV-Presentation-Forman (1).pdfMHV-Presentation-Forman (1).pdf
MHV-Presentation-Forman (1).pdf
JunZhao68
 
CODA_presentation.pdf
CODA_presentation.pdfCODA_presentation.pdf
CODA_presentation.pdf
JunZhao68
 
NTTW4-FFmpeg.pdf
NTTW4-FFmpeg.pdfNTTW4-FFmpeg.pdf
NTTW4-FFmpeg.pdf
JunZhao68
 
03-Reznik-DASH-IF-workshop-2019-CAE.pdf
03-Reznik-DASH-IF-workshop-2019-CAE.pdf03-Reznik-DASH-IF-workshop-2019-CAE.pdf
03-Reznik-DASH-IF-workshop-2019-CAE.pdf
JunZhao68
 
Practical Programming.pdf
Practical Programming.pdfPractical Programming.pdf
Practical Programming.pdf
JunZhao68
 
Overview_of_H.264.pdf
Overview_of_H.264.pdfOverview_of_H.264.pdf
Overview_of_H.264.pdf
JunZhao68
 
20160927-tierney-improving-performance-40G-100G-data-transfer-nodes.pdf
20160927-tierney-improving-performance-40G-100G-data-transfer-nodes.pdf20160927-tierney-improving-performance-40G-100G-data-transfer-nodes.pdf
20160927-tierney-improving-performance-40G-100G-data-transfer-nodes.pdf
JunZhao68
 
Wojciech Przybyl - Efficient Trick Modes with MPEG-DASH.pdf
Wojciech Przybyl - Efficient Trick Modes with MPEG-DASH.pdfWojciech Przybyl - Efficient Trick Modes with MPEG-DASH.pdf
Wojciech Przybyl - Efficient Trick Modes with MPEG-DASH.pdf
JunZhao68
 
100G Networking Berlin.pdf
100G Networking Berlin.pdf100G Networking Berlin.pdf
100G Networking Berlin.pdf
JunZhao68
 
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf
JunZhao68
 
3 Open-Source-SYCL-Intel-Khronos-EVS-Workshop_May19.pdf
3 Open-Source-SYCL-Intel-Khronos-EVS-Workshop_May19.pdf3 Open-Source-SYCL-Intel-Khronos-EVS-Workshop_May19.pdf
3 Open-Source-SYCL-Intel-Khronos-EVS-Workshop_May19.pdf
JunZhao68
 
2020+HESP+Technical+Deck+-+HESP+Alliance.pdf
2020+HESP+Technical+Deck+-+HESP+Alliance.pdf2020+HESP+Technical+Deck+-+HESP+Alliance.pdf
2020+HESP+Technical+Deck+-+HESP+Alliance.pdf
JunZhao68
 
5 - Advanced SVE.pdf
5 - Advanced SVE.pdf5 - Advanced SVE.pdf
5 - Advanced SVE.pdf
JunZhao68
 

More from JunZhao68 (16)

1-MIV-tutorial-part-1.pdf
1-MIV-tutorial-part-1.pdf1-MIV-tutorial-part-1.pdf
1-MIV-tutorial-part-1.pdf
 
GOP-Size_report_11_16.pdf
GOP-Size_report_11_16.pdfGOP-Size_report_11_16.pdf
GOP-Size_report_11_16.pdf
 
02-VariableLengthCodes_pres.pdf
02-VariableLengthCodes_pres.pdf02-VariableLengthCodes_pres.pdf
02-VariableLengthCodes_pres.pdf
 
MHV-Presentation-Forman (1).pdf
MHV-Presentation-Forman (1).pdfMHV-Presentation-Forman (1).pdf
MHV-Presentation-Forman (1).pdf
 
CODA_presentation.pdf
CODA_presentation.pdfCODA_presentation.pdf
CODA_presentation.pdf
 
NTTW4-FFmpeg.pdf
NTTW4-FFmpeg.pdfNTTW4-FFmpeg.pdf
NTTW4-FFmpeg.pdf
 
03-Reznik-DASH-IF-workshop-2019-CAE.pdf
03-Reznik-DASH-IF-workshop-2019-CAE.pdf03-Reznik-DASH-IF-workshop-2019-CAE.pdf
03-Reznik-DASH-IF-workshop-2019-CAE.pdf
 
Practical Programming.pdf
Practical Programming.pdfPractical Programming.pdf
Practical Programming.pdf
 
Overview_of_H.264.pdf
Overview_of_H.264.pdfOverview_of_H.264.pdf
Overview_of_H.264.pdf
 
20160927-tierney-improving-performance-40G-100G-data-transfer-nodes.pdf
20160927-tierney-improving-performance-40G-100G-data-transfer-nodes.pdf20160927-tierney-improving-performance-40G-100G-data-transfer-nodes.pdf
20160927-tierney-improving-performance-40G-100G-data-transfer-nodes.pdf
 
Wojciech Przybyl - Efficient Trick Modes with MPEG-DASH.pdf
Wojciech Przybyl - Efficient Trick Modes with MPEG-DASH.pdfWojciech Przybyl - Efficient Trick Modes with MPEG-DASH.pdf
Wojciech Przybyl - Efficient Trick Modes with MPEG-DASH.pdf
 
100G Networking Berlin.pdf
100G Networking Berlin.pdf100G Networking Berlin.pdf
100G Networking Berlin.pdf
 
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf
 
3 Open-Source-SYCL-Intel-Khronos-EVS-Workshop_May19.pdf
3 Open-Source-SYCL-Intel-Khronos-EVS-Workshop_May19.pdf3 Open-Source-SYCL-Intel-Khronos-EVS-Workshop_May19.pdf
3 Open-Source-SYCL-Intel-Khronos-EVS-Workshop_May19.pdf
 
2020+HESP+Technical+Deck+-+HESP+Alliance.pdf
2020+HESP+Technical+Deck+-+HESP+Alliance.pdf2020+HESP+Technical+Deck+-+HESP+Alliance.pdf
2020+HESP+Technical+Deck+-+HESP+Alliance.pdf
 
5 - Advanced SVE.pdf
5 - Advanced SVE.pdf5 - Advanced SVE.pdf
5 - Advanced SVE.pdf
 

Recently uploaded

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 

Recently uploaded (20)

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 

http3-quic-streaming-2020-200121234036.pdf

  • 5. HTTP 1 to 2 to 3 HTTP 1 to 2 to 3 Problems Problems Why QUIC and how it works Why QUIC and how it works HTTP/3 HTTP/3 Challenges Challenges Streaming Streaming Coming soon! Coming soon! @bagder @bagder
  • 6. HTTP started done over TCP @bagder @bagder
  • 7. TCP TCP 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
  • 11. TLS TLS 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.1 HTTP/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/2 HTTP/2 Shipped May 2015 Uses single connection per host Many parallel streams TCP head-of-line-blocking @bagder @bagder
  • 16. Ossification Ossification 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 text HTTP/2 in clear text TCP improvements like TFO TCP improvements like TFO TCP/UDP replacements TCP/UDP replacements HTTP brotli HTTP brotli Future innovations Future innovations … … unless encrypted unless 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 2013 Google deployed “http2 frames over UDP”-QUIC in 2013 Widely used client Widely used client Widely used web services Widely used web services Proven to work at web scale Proven to work at web scale Taken to the IETF in 2015 Taken to the IETF in 2015 QUIC working group started 2016 QUIC working group started 2016 IETF QUIC is now very different than Google QUIC was IETF QUIC is now very different than Google QUIC was @bagder @bagder
  • 24. Improvements TCP head of line blocking TCP head of line blocking Faster handshakes Faster handshakes Earlier data Earlier data Connection-ID Connection-ID More encryption, always More encryption, always Future development Future 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 IP Use UDP instead of IP Reliable transport protocol - in Reliable transport protocol - in user-space user-space A little like TCP + TLS A 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 streams QUIC streams Many logical flows within a single connection Many logical flows within a single connection Similar to HTTP/2 but in the transport layer Similar to HTTP/2 but in the transport layer Independent Independent streams streams Client or server initiated Client or server initiated Bidirectional or unidirectional Bidirectional or unidirectional @bagder @bagder
  • 29. Application protocols over QUIC Application 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 Request Request - method + path - method + path - headers - headers - body - body Response Response - 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 faster HTTP/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 everywhere HTTPS:// URLs are everywhere TCP (and TLS) on TCP port 443 TCP (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 frame DATAGRAM frame RTP over QUIC RTP over QUIC Partial reliability Partial reliability Multipath Multipath HTTP over multicast QUIC HTTP over multicast QUIC @bagder @bagder
  • 53. Alternatives @bagder @bagder SRT - Secure Reliable Transport RIST - Reliable Internet Stream Transport
  • 54. HTTP/3 will take time HTTP/3 will take time HTTP/3 will grow slower HTTP/3 will grow slower Some will stick to HTTP/2 Some will stick to HTTP/2 QUIC is for the long term QUIC is for the long term @bagder @bagder
  • 55. Future Future Multipath Multipath Forward error correction Forward error correction Unreliable streams Unreliable streams More application protocols More 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 coming HTTP/3 is coming HTTP/3 is always encrypted HTTP/3 is always encrypted Similar to HTTP/2 but over QUIC Similar to HTTP/2 but over QUIC QUIC is transport over UDP QUIC is transport over UDP Challenges to overcome Challenges 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