SlideShare a Scribd company logo
1 of 61
Download to read offline
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 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
 
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
 
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 WhyAdrian Cole
 
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 erapeychevi
 
Introduction to QUIC
Introduction to QUICIntroduction to QUIC
Introduction to QUICShuya Osaki
 
Primer to Browser Netwroking
Primer to Browser NetwrokingPrimer to Browser Netwroking
Primer to Browser NetwrokingShuya 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 easyGabriell 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 ExpertAbhishek 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 CommunicationsGerardo 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 eSSesTiago Mendo
 
Revisiting HTTP/2
Revisiting HTTP/2Revisiting HTTP/2
Revisiting HTTP/2Fastly
 
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 8Michal 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)
 
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
 
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.pdfJunZhao68
 
GOP-Size_report_11_16.pdf
GOP-Size_report_11_16.pdfGOP-Size_report_11_16.pdf
GOP-Size_report_11_16.pdfJunZhao68
 
02-VariableLengthCodes_pres.pdf
02-VariableLengthCodes_pres.pdf02-VariableLengthCodes_pres.pdf
02-VariableLengthCodes_pres.pdfJunZhao68
 
MHV-Presentation-Forman (1).pdf
MHV-Presentation-Forman (1).pdfMHV-Presentation-Forman (1).pdf
MHV-Presentation-Forman (1).pdfJunZhao68
 
CODA_presentation.pdf
CODA_presentation.pdfCODA_presentation.pdf
CODA_presentation.pdfJunZhao68
 
NTTW4-FFmpeg.pdf
NTTW4-FFmpeg.pdfNTTW4-FFmpeg.pdf
NTTW4-FFmpeg.pdfJunZhao68
 
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.pdfJunZhao68
 
Practical Programming.pdf
Practical Programming.pdfPractical Programming.pdf
Practical Programming.pdfJunZhao68
 
Overview_of_H.264.pdf
Overview_of_H.264.pdfOverview_of_H.264.pdf
Overview_of_H.264.pdfJunZhao68
 
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.pdfJunZhao68
 
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.pdfJunZhao68
 
100G Networking Berlin.pdf
100G Networking Berlin.pdf100G Networking Berlin.pdf
100G Networking Berlin.pdfJunZhao68
 
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdf
20230320-信息技术-人工智能系列深度报告:AIGC行业综述篇——开启AI新篇章-国海证券.pdfJunZhao68
 
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.pdfJunZhao68
 
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.pdfJunZhao68
 
5 - Advanced SVE.pdf
5 - Advanced SVE.pdf5 - Advanced SVE.pdf
5 - Advanced SVE.pdfJunZhao68
 

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

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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

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
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

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