HTTP3Study に行ってきたメモ #http3study
まったく詳しくない分野で脳内補完が効かないのと英語なのとで、まったく自信のないメモに仕上がりました。
間違ってたらむしろ教えてほしいです!
HTTP/3 (英語セッション) from Mark Nottingham
いままで
SPDY -> HTTP/2
- Googleがつくりはじめた
- Binary Framing
- すばらしい
- Multiplexing
- 多重化
- Header Compression
- RTT節約にも
- Prirorisation
- Server Push
- あのときのPipelineと同じ
- まだうまく利用できてない
学んだこと
- 少しずつ拡張する作戦はよさそう
- ぶっ飛んだ発想はうまくいかない
- オーバーエンジニアリングだめ絶対
- アイデアはもっと膨らませたいが実装リソースは有限
Transport HoL Blocking
- HTTP/2はTCPの上でマルチストリームのレイヤーを作った
- HTTP/3はQUICの上でやる
- HTTP/2で解決できないトランスポートレイヤーの問題を解決したいHTTP/3
HTTP/3
- ストリーム間のOrderは保証されない
- Setting
- 1度送られると変えられない
- なので届く順序が問題
- QUICの設定で代用される
- Prioritisation
- HTTP/2ではそれぞれが依存ツリーを持ってた
- HTTP/3ではそれ用のControlストリーム上でやるようになった
- Header Compression
- HTTP/3はまだWIPの状態
- かれこれ2年くらい取り組んでるけど
- これからのキーワード
- Connection Coalescing
- Structured Headers
- Semantic Evolution
- CDN Standardization
HTTP/4?
- 新しいプロトコルを作るにはそれを試さないといけない
- それができるようにツールができてる(ALPNとか
- ただ新しいのを作るにしても、今までできてたことができないといけない
- HTTPは変わらない
QUIC Security (英語セッション) from Martin Thomson
QUIC
Handshake
Pakcet Protection
- 基本的に全てだが、以下を除く
- Version Negotiation
- Retry
- Initial
- 0-RTT
- Handshake(not fully
- AEAD
- Packet番号を使ってNonceをユニークにする
- Header
- linkableなフィールドがある
- connID, key phrase, packet number
- 異なるNWからなる1つのコネクションでも、それぞれをマッチできる
- Block Cipher
- payloadの一部を使って保護する
Unprotectedな部分
- first 2 bits
- version, type, length
- Source/Destination Conn ID, length
- Spin bit
- Token, length(Initialパケット)
- Retry, Negotiationパケット
コネクションの終了
おまけ
- HTTPのレスポンスバージョンの利用率
QUICのここが気になる from Kaname Nishizuka
はじめに
- Googleのトラフィックの42%がQUICで、インターネット全体の2.6-9.1%
- Chromeのv29からQUICは動いてて、現在ではデフォルトで有効
- 通信事業者による付加価値(MiddleBox)
- draft-dolson-transport-middlebox-05 - An Inventory of Transport-Centric Functions Provided by Middleboxes: An Operator Perspective
- NAT/FWなどニーズがある
- ただしMiddleBoxがあるとプロトコルの進化の妨げにも・・?
CGN
FW
- 95%で問題なく使える
- UDP:443がブロックされていることも
- 社員の通信を可視化したい企業もあるらしい
LB
- connIDで管理
- QICKを解釈できるLBが必要かも
既存プロトコルとの共存
- kubernetesでQUICのLoad Generatorを作った話 - Qiita
- 悲しい?処置をしたISPもある
- TMS(Traffic Management Solution)を行う製品もあったりする