Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

httpbis interim@シアトル レポート (第2回HTTP/2.0接続試験)

2,224 views

Published on

Published in: Technology
  • Be the first to comment

httpbis interim@シアトル レポート (第2回HTTP/2.0接続試験)

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

×