Download - httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)
![Page 1: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/1.jpg)
httpbis interim@シアトル レポート (第2回HTTP/2.0接続試験)
IIJ 大津 繁樹
2013年10月17日
HTTP2.0勉強会#2
![Page 2: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/2.jpg)
第4回 httpbis interim@シアトル
もともと第88回 IETF Mtg@バンクーバー(11/3-8)の直前に予定され
ていたがハロウィン期間と重なるため3週間程前倒しで開催することに。 10/8(水) ~ 10/11(金) Micosoft Open Tech@ベルビュー (シアトルの隣市)で開催
![Page 3: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/3.jpg)
HTTP/2.0仕様化 これまでの歩み 年 月 トピック
2012年1月 IETF httpbis WGでHTTP/2.0の仕様検討開始することを決定
2012年11月 3つの候補案からSPDY仕様をベースにすることを決定 draft-00(SPDY/3仕様をそのまま)リリース
2013年1月 第1回中間会議(東京) draft-01リリース(HTTPからのUpgrade方法を追加)
2013年4月 draft-02リリース(フレームフォーマット・タイプの大幅な変更)
2013年5月 draft-03リリース(中間会議に向けて修正点の整理・まとめ)
2013年6月 第2回中間会議(サンフランシスコ) 2候補案を合わせたヘッダ圧縮仕様の採用を決定
2013年7月 draft-04リリース(最初の実装仕様)
2013年8月 第3回中間会議(ハンブルグ) 最初のHTTP/2.0相互接続試験を実施 draft-05リリース(接続試験結果を反映) draft-06, HPACK(header-compression-02)リリース(実装仕様)
2013年10月 第4回中間会議(シアトル)
今ココ
![Page 4: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/4.jpg)
interim アジェンダ
• 初日: 自己紹介、実装者フィードバック、テス
トフレームワーク構想の説明、相互接続試験(自由時間)
• 2日目: github issue の議論
• 3日目午前: issue 議論の続き
![Page 5: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/5.jpg)
テストフレームワーク構想の説明
https://github.com/http2/wg_materials/blob/master/interim-13-10/test_principles.pdf
![Page 6: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/6.jpg)
名称 実装言語 Client,Server, Intermidate
ニゴシエーション
1 nghttp2 C S, C, I NPN, Upgrade, Direct
2 http2-katana C# S, C ALPN, Upgrade
3 node-http2 Node.js S, C NPN, direct
4 Mozilla Firefox C++ C ALPN, NPN
5 iij-http2 Node.js S, C ALPN, NPN, Upgrade, Direct
6 Akamai Ghost C++ I NPN
7 Chromium C++ C ALPN, NPN
8 Twitter Java S, C NPN
9 Wireshark C other NPN, ALPN
10 Ericcson MSP C proxy nghttp2 + patch
( https://github.com/http2/http2-spec/wiki/Implementations より引用)
HTTP-draft-06/2.0 対応相互接続試験実装リスト
New
New
New
いくつか CONTINUATION や Server Push などの機能を一部実装していないのもあり
![Page 7: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/7.jpg)
Node.jsのALPN対応
• Node.jsの9月上旬の master を fork。
• openssl の ALPNサポートは未リリース。
• git submodule で openssl の master を Node でリンクするよう改良。
• ALPN用の Node APIを追加。 • ALPNとNPNを両方サポート。
ただし両方同時に受け取った場合はNPNを広告しない。
![Page 8: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/8.jpg)
twitter、なんと本番インフラでHTTP/2.0の試験始めてる!
![Page 9: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/9.jpg)
draft06相互接続試験の様子
![Page 10: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/10.jpg)
で、接続試験の開始
• 特に段取りを決めるわけでなくだらだらと…
• 実装当事者同士で直接やり取り。思いつくまま試験。
• 残りのメンバーは集まって仕様議論に夢中。
• Chrome 「手元にあるけど、まだ渡せないよ」と言われ… (翌日入手)
![Page 11: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/11.jpg)
iij-http2 上のテストページ (もう helloworldだけじゃダメでしょ)
ほぼ,この試験で終わってしまった。
![Page 12: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/12.jpg)
ちなみにHTTP/1.1でアクセスすると HTTP接続のみ。SSL接続は NPN, ALPN でHTTP/1.1接続を許してない
![Page 13: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/13.jpg)
Ajaxを使ったHPACK-03、CONTINUATION テスト
リクエストヘッダをJSONで返すページを作成
var req = new XMLHttpRequest(); var name = 'myheader' + i ; ajaxheader[name] = (new Array(12)).join(Math.random().toString(36).slice(-8)); req.open('GET', "/printenv" + i, false); req.setRequestHeader(name, ajaxheader[name]);
Ajaxでリクエストヘッダを追加、JSONのデータと比較、チェック → 追加ヘッダの name, value をiterationして増加
![Page 14: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/14.jpg)
いっぱいテストしました。 (バグ見つけ、見つけられ,まだ直ってないのも…)
nghttp2 からもテストしていただき数多くバグを見つけていただきました。 Thanx > @tatsuhiro_t
![Page 15: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/15.jpg)
2日目の以降: 主な議論
• HTTP Upgrade を別仕様に分けるか?
–複雑だし、実装少ないし、テストもできてないし
– Alt-SVC,Alternate-Protocolを別ドラフトで作ってから再検討
• HPACK-03見直し
– Literal Rep. Substitute Indexing の削除
–初期ヘッダテーブルを静的に(evictionから解放)
– Request/Responesのテーブルを一つに統合
–頭(index:0)にインクリメントヘッダを導入
–ハフマン符号化の試験しよう
![Page 16: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/16.jpg)
2日目の以降: 主な議論 cont’d
• SETTINGS Ack フラグの新設 –設定情報の同期(ヘッダテーブルサイズの変更)
– PINGいらなくない? とりあえず様子見。
• CONTINUATIONのEND_STREAM排除 – PUSH_PROMISEでのストリーム終了を回避
• :authority ヘッダの新設 – :hostの廃止。(HTTP/1.1と混同しやすいから)
• HPACKでヘッダ出現順が保存されないことを明記
• その他細かい修正色々
![Page 17: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/17.jpg)
2日目の以降: 主な議論 cont’d
• ALPNに関して – 02がLast Call。バンクーバIETFが最後のチャンス – クライアントが送信できる拡張サイズに懸念
• Stream Dependency – Tokyo Interim から議論されている課題 – 木やグラフでPriorityの依存性を管理 – タブの切り替え、ビューポートの切り替え、順番維持が必要なビデオフレーム切り替え、に対して関連する複数のストリームを一気に repriority できる。
– まだまだ議論中。別ドラフトを作る予定。
• Frame Typeの拡張 – 独自試験する時とかどうする?
![Page 18: httpbis interim@シアトル レポート(第2回HTTP/2.0接続試験)](https://reader030.vdocument.in/reader030/viewer/2022032700/55d4c121bb61eb57338b4693/html5/thumbnails/18.jpg)
今後の流れ
• 全体的に仕様を収束化させる動き
• 新機能提案は却下もしくは別ドラフトへ
スケジュール
• ~10月下旬 仕様アップデート
• 11月上旬 IETFバンクーバで議論
• 2014年1月 5回目interim チューリッヒ@CISCO
• 2014年3月 IETF London前後で 6回目interim