Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 18 Ad

More Related Content

Slideshows for you (20)

Viewers also liked (14)

Advertisement

Recently uploaded (20)

Advertisement

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

×