2018 Jan25 Quic Sferlin Slide
2018 Jan25 Quic Sferlin Slide
2018 Jan25 Quic Sferlin Slide
(QUIC)
Simone Ferlin
[email protected]
draft-ietf-quic-transport-latest
https://quicwg.github.io/base-drafts/draft-ietf-quic-transport.html
User-space
Kernel-space
Where is QUIC?
User-space
Kernel-space
Some QUICk remarks
client:
- after a complete CHLO, it is in possession of initial keys for
the connection and free to send data to the server.
Measuring QUIC: Handshake
1. CHLO:
- Connection ID (CID)
- QUIC version, e.g. Q039.
3. CHLO (again…)
QUIC Packets
Long Header
Long headers are sent prior to the completion of version negotiation and
establishment of 1-RTT keys.
Few unencrypted public fields: Few flags, Connection ID (CID), Packet Number
(PKN) and encrypted payload.
Why is some info is not encrypted?
Good reference for packet format: draft-ietf-quic-transport-latest
QUIC Packets
Short Header
The short header can be used after the version and 1-RTT keys are negotiated.
Measuring QUIC:
Wireshark…
Measuring QUIC: Setup and QUIC-Go
1. Go v1.9 Installation
based on https://medium.com/@patdhlk/how-to-install-go-1-9-1-on-ubuntu-16-04-ee64c073cd79
cd /tmp
wget https://storage.googleapis.com/golang/go1.9.1.linux-amd64.tar.gz
tar xfz go1.9.1.linux-amd64.tar.gz
sudo mv go /usr/local
Measuring QUIC: Setup and QUIC-Go
2. Testing QUIC-Go
mkdir ~/go
cd ~/go
/usr/local/go/bin/go get github.com/lucas-clemente/quic-go
cd ~/go/src/github.com/lucas-clemente/quic-go
/usr/local/go/bin/go get -t -u ./...
Disable verification of server certificate in client – we need a cert, since it is always encrypted. (use the one bundled with quic-go instead)
nano internal/handshake/crypto_setup_client.go
- err = h.certManager.Verify(h.hostname)
+ err = nil // h.certManager.Verify(h.hostname)
3. Start Server (defaults to port 6121) - start the server in your Amazon EC2 instance or for testing on 127.0.0.1.
cd ~/go/src/github.com/lucas-clemente/quic-go
/usr/local/go/bin/go run example/main.go -www /tmp/quic-data