QUIC についての資料
-
https://tools.ietf.org/html/draft-hamilton-early-deployment-quic-00
- QUICプロトコルのドラフト
-
http://www.iij.ad.jp/company/development/tech/techweek/pdf/151111_4.pdf
- 2015年11月11日の資料
-
https://www.chromium.org/quic/quic-faq
- QUIC の FAQ
-
https://www.chromium.org/quic/playing-with-quic
- QUIC をとりあえず試すための資料
-
http://d.hatena.ne.jp/ASnoKaze/20140515/1400166446
- quic_clientとquic_serverを試してみる
-
https://groups.google.com/a/chromium.org/forum/#!topic/proto-quic/lAdf4qvU-LY
- quic_clientとquic_serverに関する議論
-
https://bugs.chromium.org/p/chromium/issues/list?can=2&q=QUIC%20component:Internals%3ENetwork%3EQUIC&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified
- Chromium の QUIC に関する issues
QUIC の実装
- Chromium
-
libquic
- chromium のソースコードからライブラリを構成している。goquicのベース
-
goquic
- libquicのGo言語用バインディング
-
proto-quic
- Google製ではあるが、非公式サポート版。
- QUIC開発者のサイドプロジェクト
- Linuxのみサポートしているが、WindowsとiOSをサポート予定
-
quic-go
- QUICのGo言語実装
-
quic-version-detector
- QUICサーバの対応バージョンを列挙してくれるコマンド
Chromium での QUIC 接続テスト
- Ubuntu 16.04
- Chromium 51.0.2704.79
google.co.jp に対して強制的にQUICプロトコルでアクセスする。
chromium-browser --enable-quic --origin-to-force-quic-on=www.google.co.jp:443 --quic-version=QUIC_VERSION_30 https://www.google.co.jp
--quic-version=QUIC_VERSION_30
オプションは、QUICのバージョンを指定できる。末尾の数字変更することでバージョンを指定できる。
アクセス後に、 chrome://net-internals/#quic を開くと、 www.google.co.jp:443 を確認できる。
ネットワーク環境によっては、アクセスできない時がある。自宅のネットワーク有線回線で繋がらない場合は、モバイルネットワークに切り替えると繋がりやすかった。
QUICサーバの対応バージョンを確認
QUIC はドラフト版なので、バージョンが変更される。このため、サーバが最新のQUICバージョンに対応しているとは限らない。クライアント側から、サーバの対応バージョンを確認する必要がある。確認するには、quic-version-detector を利用できる。
Ubuntu 16.04でのインストール
sudo apt install python3-pip
sudo pip3 install --upgrade quic-version-detector
実行
quicver www.google.co.jp 443
結果
"www.google.co.jp:443" supported versions:
Q036
Q035
Q034
Q033
Q032
Q031
Q030
proto-quic に関するメモ
サンプルクライアントの実行
cd src
./out/Release/quic_client --host=`dig www.google.com +short | head -1` --quic-version=32 --port=443 http://www.google.com
https://github.com/google/proto-quic/blob/master/src/net/net.gyp の quic_client ターゲットを見ると、 QUIC のアプリ作成に必要なライブラリがわかる。net.gypを流用できそうだ。
caddy に関するメモ
caddy のインストール
go get github.com/mholt/caddy/caddy
caddy を QUIC で実行
caddy -quic
実行できたものの、クライアントからアクセスできていない。