Slides 98: EDU SESSF Quic Tutorial - Data Tracker
Transcript of Slides 98: EDU SESSF Quic Tutorial - Data Tracker
![Page 1: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/1.jpg)
QUIC TutorialA New Internet Transport
![Page 2: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/2.jpg)
● Brief history● Motivations● High-level overview of work● Where the working group is today
● You may find this tutorial useful if:○ HTTP/2 and QUIC are buzzwords to you○ You can break BGP but think of TCP as too high-level○ You can write a mobile app in 15 mins but have never
seen a tcpdump trace
What to expect in the next hour
2
![Page 3: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/3.jpg)
● This is not a QUIC working group meeting
● If you are already participating in QUIC work○ Feel free to offer clarifications at any time○ No questions for you! (Wouldn't you much rather be staring at your laptop?)
Caveat Emptor
3
![Page 4: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/4.jpg)
● Experimental protocol, deployed at Google starting in 2014○ Between Google services and Chrome○ Improved page load latency, video rebuffer rate○ Successful experiment today○ ~35% of Google's egress traffic (~7% of Internet traffic)○ Akamai deployment in 2016
● QUIC wg formed in Oct 2016○ Modularize and standardize QUIC in parts○ HTTP as initial application
A QUIC history
4
![Page 5: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/5.jpg)
What's HTTP/2?
5
● Q: What does a webpage look like?● A: Containers, scripts, many objects
![Page 6: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/6.jpg)
First, how does HTTP/1 work?
6
● Connection setup… the long way○ 1 round-trip to set up a TCP connection ○ 2 round-trips to set up a TLS 1.2 connection○ (before you rush to the mic, TFO and TLS 1.3 shortly)
● After setup, HTTP requests/responses flow over connection
![Page 7: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/7.jpg)
First, how does HTTP/1 work?
7
TLS/TCP TLS/TCP
Client (Browser) Web ServerCan we do better?
![Page 8: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/8.jpg)
Dealing with head-of-line (HoL) blocking
8
TCP TCP
Client (Browser) Web Server
TCP TCPTLS/TCP TLS/TCP
Can we do better?
![Page 9: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/9.jpg)
Better handling of HoL blocking: HTTP/2
9
TLS/TCP TLS/TCP
Client (Browser) Web ServerCan we do better?
HTTP/2 stream
![Page 10: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/10.jpg)
How does HTTP over QUIC work?
10
● Connection setup… the QUIC way○ 0 round-trips to a known server (common)○ 1 round-trip if crypto keys are not new○ 2 round-trips if QUIC version negotiation needed○ (I haven't forgotten about TFO and TLS 1.3)
● After setup, HTTP requests/responses flow over connection
![Page 11: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/11.jpg)
What's HTTP over QUIC?
11
Client (Browser) Web Server
QUIC QUIC
QUIC stream
HTTP/2 stream
![Page 12: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/12.jpg)
Old Google QUIC
TLS
HTTP/2
TCP
IP
QUIC
TCP-like congestion control, loss recovery
UDP
HTTP over QUIC
QUIC Crypto
12
![Page 13: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/13.jpg)
QUIC working group
TLS
HTTP/2
TCP
IP
QUIC
TCP-like congestion control, loss recovery
UDP
HTTP over QUIC
13
QUIC Crypto
![Page 14: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/14.jpg)
QUIC working group
TLS
HTTP/2
TCP
IP
QUIC
TCP-like congestion control, loss recovery
UDP
HTTP over QUIC
TLS 1.3
14
![Page 15: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/15.jpg)
An integrated, modularized protocol
TLS
Application
TCP
IP
QUIC
TCP-like congestion control, loss recovery
UDP
Application
Crypto handshake
15
![Page 16: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/16.jpg)
Yes!
We're replaying hits from the 1990s and 2000s(and adding some new things)
Hang on … some of this sounds familiar
16
![Page 17: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/17.jpg)
TLS 1.3Ongoing QUIC work uses TLS 1.3
TCP Fast Open (remember T/TCP?)Needs support in client-OS and middleboxesLimited to one packet
SCTP, SST, TCP Session, …Shared ideas, but many subtle differencesWe're happy to steal ideas!
Hang on … some of this sounds familiar
17
![Page 18: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/18.jpg)
● Deployability and evolvability● Low latency connection establishment● Multistreaming● Better loss recovery and flexible congestion control● Resilience to NAT-rebinding (Connection IDs vs. 4-tuple)● Multipath for resilience and load sharing
QUIC Design Aspirations
18
![Page 19: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/19.jpg)
Uses UDP as the substrateenables deployment through middleboxesallows userspace implementation
Version negotiationenables protocol wire format evolution
Fully authenticated and mostly encrypted headersavoids network ossificationbefuddles network operators :-(
Deployability and Evolvability
19
![Page 20: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/20.jpg)
QUIC packets (previous)
20
Flags Connection ID (opt)Version (opt)Packet Number
STREAM
Regular Packets
ACK
WINDOW_UPDATEEncrypted Payload
(Frames)
Flags Connection ID
Supported Version 1
Supported Version 2
Supported Version 3
Version Negotiation Packet(Unencrypted)
Flags Connection ID
Public Reset fields (TBD)
Public Reset Packet(Unencrypted)
![Page 21: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/21.jpg)
QUIC packets (proposed)
21
1 Connection ID (64)
Version (32)Packet Number (32)
Long Header Packets
PayloadType-dependent
Not always encrypted
0 Connection ID (opt)Packet Number (8/16/32)
Short Header Packets(optimized for packets encrypted
with TLS 1-RTT key)
Encrypted Payload(Frames)
Type (5)C KType (7)
![Page 22: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/22.jpg)
QUIC builds on decades of experience with TCP
Incorporates TCP best practices TCP-like congestion control (NewReno, Cubic), FACK, TLP, F-RTO, Early Retransmit, …
Richer signaling than TCP
Congestion Control & Loss Recovery
22
![Page 23: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/23.jpg)
Retransmitted packets consume new sequence number
no retransmission ambiguity
prevents loss of retransmission from causing RTO
More verbose ACK
TCP supports up to 3 SACK ranges
QUIC supports up to 256 ACK ranges
explicit packet receive times
enables ACK decimation
Richer Signaling Than TCP
23
![Page 24: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/24.jpg)
Turning an amateur protocol into a professional oneA QUIC makeover
Figuring out how to○ map HTTP cleanly to QUIC○ use TLS 1.3 with QUIC○ resolve open questions in QUIC○ make QUIC work for non-HTTP apps
What's the QUIC wg up to?
24
![Page 25: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/25.jpg)
No.
Google's QUIC was an experimentQUIC wg uses the experiment as a starting pointAlready moved miles away from experiment
A great example of running code informing protocol design.
Is this just Google's QUIC?
25
![Page 26: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/26.jpg)
QUIC Implementations
Chromium (open source)https://cs.chromium.org/chromium/src/net/quic/
quic-go (open source implementation in Go)https://github.com/lucas-clemente/quic-go
26
![Page 27: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/27.jpg)
Debugging Tools: Wireshark
27
![Page 28: Slides 98: EDU SESSF Quic Tutorial - Data Tracker](https://reader031.fdocuments.in/reader031/viewer/2022012507/6182a6a032464f323f0a8744/html5/thumbnails/28.jpg)
Debugging Tools: Chrome
chrome://net-internals(demo if time permits)
28