1. Introduction to QUIC
Quick UDP Internet Protocol
Shuya OSAKI
@otimsuya69 RG:shuya
KEIO SFC Jun Murai Lab. KUMO Kenkyu Gundan
2. For a kickoff 1
This slide is add-up of my study
of QUIC (Quick UDP Internet Protocol)
All of this based on 2 papers.
“Evaluation of QUIC on Web Page Performance”
“HTTP over UDP: an Experimental Investigation of QUIC.”
3. What is QUIC ?? 2
What is QUIC ??
QUIC is Google’s new multiplexing protocol.
This is run on UDP.
QUIC succeed to SPDY’s features.
Site from HTTP over UDP: an Experimental Investigation of QUIC
QUIC’s layer
Features of QUIC
Stream multiplexing over the same UDP Connections.
UDP resilience to loss (QUIC divorced HOL blocking !!)
FEC resilience to loss QUIC sends XORsum of the packets.
TLS-like security
Low cost, 0-RTT start instead of TCP handshake
Pluggable congestion control TCP-CUBIC and Pacing-based
4. Related Work 3
Multiplexing Protocols
HTTP/1.1
SPDY
QUIC
They are at the higher application level.
Congestion Control Algorithms
Site from High Performance Browser Networking
HTTP/2’s multiplexing
TCP-CUBIC
WebRTC Inter-Arrival
Sprout-EWMA
They are at the lower transport level.
This schedule when packets sent on the wire.
6. Multiplexing protocols 5
HTTP/1.1
HTTP/1.1 doesn’t have multiplexing.
However, some techniques can use.
HTTP Pipeline
Which enables to send multiple request
without waiting ACK packets.
HTTP Pipeline
Site from https://en.wikipedia.org/wiki/HTTP_pipelining
Use Multiple TCP Connection
HTTP/1.1 doesn’t have multiplexing.
So uses multiple TCP connection.
This connection is limited up to 6.
Multiple TCP Connection
Site from https://www.cloudflare.com/http2/what-is-http2/
7. Multiplexing protocols 6
SPDY
SPDY is proposed by Google. Which is succeed to HTTP/2.
Multiple HTTP request on one TCP socket
Which enables to avoid handshakes and slow start
SPDY makes multiple streams,
this reduces waiting time for download.
Compress HTTP headers
This reduces size of the packet.
Site from http://www.iij.ad.jp/company/development/tech/activities/spdy/
Server Push
Server Push
Server forecasts next request.And sends packet in advance.
Prioritization among parallel request
Server assigns priority to packet 0 to 7.
Which optimizes data processing for client.
8. Multiplexing protocols 7
QUIC
QUIC is proposed by Google. Which inherits SPDY.
QUIC runs over UDP
QUIC runs over UDP, NOT TCP.
This means eliminate HOL blocking.
Compress HTTP headers
This reduces size of the packet. Site from HTTP over UDP: an Experimental Investigation of QUIC
Multiplexing
Server Push
Server forecasts next request.And sends packet in advance.
Prioritization among parallel request
Server assigns priority to packet 0 to 7.
Which optimizes data processing for client.
Same benefit as SPDY
10. Congestion Control Algorithm 9
TCP-CUBIC
Default TCP implementation in Linux.
CUBIC is enhanced version of BIC-TCP.
How to Control
If occur packet loss,BIC-TCP sets
the point of congestion window parallel point.
In CUBIC this point sets by cubic function.
Site from CUBIC: A New TCP-Friendly High-Speed TCP Variant
TCP’s Congestion Control
WebRTC Inter-Arrival
How to Control
Instead of reacting of failed packet delivers, Inter-Arrival proactively paces out
at a certain rate. It measures the current sending rate and estimate available bandwidth.
Sprout-EWMA
How to Control
Sprout is an end-toned transport protocol. It’s window-based protocol like Cubic, but it
calculates similar to Inter-Arrival. Sprout-EWMA is simpler version of Sprout
12. QUIC’s Features 11
Stream Multiplexing
This has been inherited from SPDY.
1) prioritization among QUIC streams
2) traffic bundling over the same UDP
3) compression of HTTP Headers
TLS-like security
QUIC uses its own encryption algorithm named QUIC-Crypto.
This avoids serialized decoding dependency.
Site from HTTP over UDP: an Experimental Investigation of QUIC
QUIC RTT
Low-cost, 0-RTT
QUIC forces out TCP-handshakes,
QUIC establishes secure connection with 0-RTT overhead.
UDP resilience to loss
QUIC, over UDP, can bypass HOL and deliver data for other streams.
13. QUIC’s Features 12
Connection Identifier
A QUIC connection is identified by a CID (Connection IDentifier) at application layer.
1) CID is not based IP address, client don’t have to re-establish a connection.
2) CID is useful the case of NAT unbinding.
3) QUIC native supports to multi-path which is good for mobile clients that roaming.
FEC resilience to loss
Forward Error Correction (FEC) module copes with packet losses.
This could be reducing HOL by recovering a lost packet.
If single packet is lost, client can recover it from using XORed packet.
Pluggable Congestion Control
QUIC supports two congestion control algorithms.
1) TCP-CUBIC
2) pacing-based congestion control algorithms
ex. WebRTC Inter-Arrival , Sprout-EWMA
QUIC is canceled the adoption of XOR.
14. Bibliography 13
Das, Somak R. Evaluation of QUIC on Web Page Performance. Diss. Massachusetts Institute of
Technology, 2014.
Carlucci, Gaetano, Luca De Cicco, and Saverio Mascolo.
"HTTP over UDP: an Experimental Investigation of QUIC." Proceedings of the 30th Annual ACM
Symposium on Applied Computing. ACM, 2015.
Google QUIC -
. HTTP/2
The Chromium Projects QUIC