Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
QUIC
ATS Summit Spring 2017
Masakazu Kitajo maskit@apache.org
Masaori Koshiba masaori@apache.org
Goal
Getting ready to start QUIC implementation
First implementation Draft will be out soon!
Agenda
• Presentation
• IETF QUIC
• Prototype
• Discussion
• How we implement QUIC
IETF QUIC
• It was mostly HTTP/2 over UDP + α
• It is something else over UDP + α
• Totally new protocol to ATS
≈ Improved TCP + TLS + Improved HTTP/2
HTTP over QUIC
UDP
TLS 1.3
QUIC
TCP-like congestion control, loss detection
4 specifications & 2 layers
1.Core Transport Protocol
2.Loss Detection and Congestion Control
3.TLS Mapping
4.HTTP Mapping
4 specifications & 2 layers
1.Core Transport Protocol
HTTP over QUIC (4)
UDP
TLS 1.3
QUIC (1,2,3)
TCP-like congestion control, loss detection
• Implements improved TCP with
modern technologies on UDP, in
userland
• Existing hardware should be
able to transfer QUIC traffic
without any change
• Protocol version is negotiable
4 specifications & 2 layers
2.Loss Detection and Congestion Control
HTTP over QUIC (4)
UDP
TLS 1.3
QUIC (1,2,3)
TCP-like congestion control, loss detection
• Ensure reliable transfer
• Difference from TCP is “HOW”
• Modern algorithms
4 specifications & 2 layers
3.TLS Mapping
HTTP over QUIC (4)
UDP
TLS 1.3
QUIC (1,2,3)
TCP-like congestion control, loss detection
• Current draft uses TLS 1.3
• Key exchange will be done at
the beginning of session on a
dedicated QUIC stream
• Need to implement it with low
level APIs in crypto libraries
4 specifications & 2 layers
4.HTTP Mapping
HTTP over QUIC (4)
UDP
TLS 1.3
QUIC (1,2,3)
TCP-like congestion control, loss detection
• Some parts are the same as
HTTP/2
• Many parts of HTTP/2 will be
moved down to QUIC transport
layer
• Frame structure will be changed
• HPACK will be replaced
Prototype (1st try)
QUICClientSession
QUICNetVConnection
QUICNetProcessor
UDPNetProcessor
QUICPacketHandler
(NetAccept)
Map
ConnectionID : VConnectionLookup
QUIC Packet
Create
UDP Packet
Needed bug fixes
Can’t accept on this layer
Main
Create
Need to manage streams
QUICClientTransaction
QUIC Frame
Can’t reuse HTTP/2 stuff
Not a byte stream
Can’t use ParentClientSession
Issues
• TCP (stream) vs UDP (datagram)
• Code for UDP is not maintained
• Multiplexing is on transport layer
• HTTP over QUIC looks like HTTP/3 (totally different)
Current design (2nd try)
Too many things to talk here…
• No QUICNetAccept
• No changes for VIO itself
• ProxyClientSession isn’t
used for now
• Most parts will be into
iocore/quic/
Milestones
• 2017 May — Prepare for development
• 2017 Jul — Implement first implementation draft
• ATS Summit 2017 Fall — Report result of interop
• 2018 May — Add experimental support (ATS 8.0)
Discussion
Goal (again)
Getting ready to start QUIC implementation
Not figuring out the technical issues!
We can do that later.
HTTP/2 Nightmare
• Too many flags
• Too many regressions
• Too many missing parts
We should learn from HTTP/2
Proposals
• Design docs
• ToDo Management
• QUIC branch
• TDD
Why HTTP/2 Nightmare happened?
EOP

More Related Content

QUIC

  • 1. QUIC ATS Summit Spring 2017 Masakazu Kitajo maskit@apache.org Masaori Koshiba masaori@apache.org
  • 2. Goal Getting ready to start QUIC implementation First implementation Draft will be out soon!
  • 3. Agenda • Presentation • IETF QUIC • Prototype • Discussion • How we implement QUIC
  • 4. IETF QUIC • It was mostly HTTP/2 over UDP + α • It is something else over UDP + α • Totally new protocol to ATS ≈ Improved TCP + TLS + Improved HTTP/2 HTTP over QUIC UDP TLS 1.3 QUIC TCP-like congestion control, loss detection
  • 5. 4 specifications & 2 layers 1.Core Transport Protocol 2.Loss Detection and Congestion Control 3.TLS Mapping 4.HTTP Mapping
  • 6. 4 specifications & 2 layers 1.Core Transport Protocol HTTP over QUIC (4) UDP TLS 1.3 QUIC (1,2,3) TCP-like congestion control, loss detection • Implements improved TCP with modern technologies on UDP, in userland • Existing hardware should be able to transfer QUIC traffic without any change • Protocol version is negotiable
  • 7. 4 specifications & 2 layers 2.Loss Detection and Congestion Control HTTP over QUIC (4) UDP TLS 1.3 QUIC (1,2,3) TCP-like congestion control, loss detection • Ensure reliable transfer • Difference from TCP is “HOW” • Modern algorithms
  • 8. 4 specifications & 2 layers 3.TLS Mapping HTTP over QUIC (4) UDP TLS 1.3 QUIC (1,2,3) TCP-like congestion control, loss detection • Current draft uses TLS 1.3 • Key exchange will be done at the beginning of session on a dedicated QUIC stream • Need to implement it with low level APIs in crypto libraries
  • 9. 4 specifications & 2 layers 4.HTTP Mapping HTTP over QUIC (4) UDP TLS 1.3 QUIC (1,2,3) TCP-like congestion control, loss detection • Some parts are the same as HTTP/2 • Many parts of HTTP/2 will be moved down to QUIC transport layer • Frame structure will be changed • HPACK will be replaced
  • 10. Prototype (1st try) QUICClientSession QUICNetVConnection QUICNetProcessor UDPNetProcessor QUICPacketHandler (NetAccept) Map ConnectionID : VConnectionLookup QUIC Packet Create UDP Packet Needed bug fixes Can’t accept on this layer Main Create Need to manage streams QUICClientTransaction QUIC Frame Can’t reuse HTTP/2 stuff Not a byte stream Can’t use ParentClientSession
  • 11. Issues • TCP (stream) vs UDP (datagram) • Code for UDP is not maintained • Multiplexing is on transport layer • HTTP over QUIC looks like HTTP/3 (totally different)
  • 12. Current design (2nd try) Too many things to talk here… • No QUICNetAccept • No changes for VIO itself • ProxyClientSession isn’t used for now • Most parts will be into iocore/quic/
  • 13. Milestones • 2017 May — Prepare for development • 2017 Jul — Implement first implementation draft • ATS Summit 2017 Fall — Report result of interop • 2018 May — Add experimental support (ATS 8.0)
  • 15. Goal (again) Getting ready to start QUIC implementation Not figuring out the technical issues! We can do that later.
  • 16. HTTP/2 Nightmare • Too many flags • Too many regressions • Too many missing parts We should learn from HTTP/2
  • 17. Proposals • Design docs • ToDo Management • QUIC branch • TDD
  • 18. Why HTTP/2 Nightmare happened?
  • 19. EOP