1 of 29

QUIC�

Next generation multiplexed transport over UDP

Robbie Shade

rjshade@google.com

Google Developers Live: QUIC

2 of 29

  • Multiplexed transport over UDP
  • Reduce latency - make the web faster!
  • Rapid experimentation
  • Open source development in Chromium

QUIC

Quick UDP Internet Connections

Google Developers Live: QUIC

3 of 29

image from Wikipedia (http://en.wikipedia.org/wiki/File:Internet_map_1024.jpg)

Google Developers Live: QUIC

4 of 29

client

client

server

server

Google Developers Live: QUIC

5 of 29

data from httparchive.org

Google Developers Live: QUIC

6 of 29

What about TCP?

  • TCP (and TLS) constantly being improved
  • Deployment and iteration is slow
  • QUIC can be rapidly deployed to clients
  • Faster iteration, weeks rather than years...

Google Developers Live: QUIC

7 of 29

What about SPDY/HTTP2?

SPDY/HTTP2 is already a significant step forward,

QUIC is a natural extension of this research.

Could we do even better if we ran SPDY/HTTP2 over a UDP transport?

Google Developers Live: QUIC

8 of 29

Making the web faster

Two paths to success:

A. QUIC makes headway on its own, delivers performance improvements

B. TCP and TLS leverage techniques and lessons learned in QUIC

Either way, the users win.

Google Developers Live: QUIC

9 of 29

multiplexing

Google Developers Live: QUIC

10 of 29

HTTP pipelining

GET /img.jpg

img.jpg

client

server

Google Developers Live: QUIC

11 of 29

Multiple TCP connections

client

server

Google Developers Live: QUIC

12 of 29

SPDY: multiplexing over TCP

Google Developers Live: QUIC

13 of 29

Head-of-line blocking in SPDY

Google Developers Live: QUIC

14 of 29

QUIC: multiplexing over UDP

Google Developers Live: QUIC

15 of 29

No head-of-line blocking in QUIC!

Google Developers Live: QUIC

16 of 29

latency

Google Developers Live: QUIC

17 of 29

Delay

User reaction

< 100 ms

instant

100 ms - 300 ms

reasonable

300 ms - 1 s

getting tedious

> 1 s

closes tab

table adapted from High Performance Browser Networking (Grigorik 2013)

Google Developers Live: QUIC

18 of 29

image from High Performance Browser Networking (Grigorik 2013)

TCP: 1 round trip

Google Developers Live: QUIC

19 of 29

image from High Performance Browser Networking (Grigorik 2013)

TCP + TLS: 3 round trips

TCP

TLS

request

Google Developers Live: QUIC

20 of 29

Google Developers Live: QUIC

21 of 29

TCP

TCP + TLS

QUIC

100 ms

200 ms

300 ms

0 ms

100 ms

1. Repeat connection

2. Never talked to server before

1

1

2

2

Google Developers Live: QUIC

22 of 29

Encryption

Comparable to TLS

Perfect forward secrecy, with more efficient handshake

Replay attack protection

single-use cryptographic nonce

IP spoofing protection

signed proof of address

more crypto details...

Google Developers Live: QUIC

23 of 29

Forward Error Correction

Google Developers Live: QUIC

24 of 29

Packet Pacing

Google Developers Live: QUIC

25 of 29

“Parking lot problem”

Google Developers Live: QUIC

26 of 29

Deployment

  • QUIC in development over the past couple of years
  • Expanding our experimentation... benchmarks to come
  • Try it today in Chrome!

Google Developers Live: QUIC

27 of 29

QUIC in Chrome Dev/Canary

enable QUIC: chrome://flags/#enable-quic

inspect QUIC: chrome://net-internals#quic

Google Developers Live: QUIC

28 of 29

QUIC

  • All the benefits of SPDY (multiplexing, priorities, etc.)
  • 0-RTT connections
  • Packet pacing
  • Forward error correction
  • Adaptive congestion control (friendly to TCP)
  • Encryption equivalent to TLS
  • Chrome can talk QUIC to Google today

Multiplexed, encrypted transport over UDP

Google Developers Live: QUIC

29 of 29

QUIC�

Source: QUIC in Chromium

Further reading: Design doc and rationale, Wire spec, Crypto doc

Mailing list: proto-quic@chromium.org

Robbie Shade

rjshade@google.com

Google Developers Live: QUIC