Your SlideShare is downloading. ×
0
httpbis interim と
HTTP/2.0相互接続試験の話
HTTP/2.0 勉強会@IIJ
2013年8月14日
IIJ 大津 繁樹
自己紹介
• 株式会社インターネットイニシアティブ(II
J)
• プロダクト本部戦略的開発部
• twitter: @jovi0608
• github: https://github.com/shigeki/
• ブログ: http://d...
内容
1. httpbis interim(中間会議) で議論した大
きめなトピックについて解説
1. HTTP-draft-05/2.0 の話
2. HPAC(Header-Compression改名)の話
2. HTTP/2.0相互接続試験...
~ HTTP/2.0の仕様作成作業 ~
githubを使ってます。
editorial fix → Pull Request OK, design issue -> issue 登録後、 MLに出す。
github 上のコメントで議論が白熱 →...
第3回 httpbis interim@ハンブルグ
第87回 IETF Mtg@ベルリンの翌週
8/5(月) ~ 8/7(水) Adobe@ハンブルグで開催
httpbis interim アジェンダ
• 1日目
– Implementation Feedback
– Issue 議論・整理
• 2日目
– 相互接続試験
• 3日目(半日)
– Issue 議論・整理
– 次のロードマップ
draf...
大きめの議論トピックス(その1)
やっぱALPNじゃなくてNPNがいい。
• “Hitting some limit which causes bugs. ALPN can
just cause timeouts” by Patric, Moz...
大きめの議論トピックス(その2)
CONTINUEフラグはアカン、使
えん!
HEADERS +
END_HEADERS flag
HEADERS +
CONT flag
HEADERS +
END_HEADERS
flag
HEADERS +...
大きめの議論のトピックス(その2)
CONTINUATIONフレームの新設
HEADERS
CONTINUEATION
+ END_HEADERS
CONTINUATION
続きの
2個目だ
よ
1個目だ
よ
続き
の終りだ
よ
draft-0...
大きめの議論のトピックス(その3)
Server Pushを完全に禁止したい
draft-04 では、
SETTINGS
MAX_CONCURRENT_STREAMS: 0
PUSH_PROMISE
でもPUSH PROMISEは
送れちゃうも...
大きめの議論のトピックス(その3)
Server Pushを完全に禁止したい
draft-05 では、2を採用
PUSH_PROMISE
RST_STREAMでみんな
撃墜してやる!
RST_STREAM 迎撃
大きめの議論のトピックス(その4)
Header-Compression-01あかんじゃん!
working set
foo0, bar0, index0
foo1, bar1, index1
Header Table (request)
0,...
大きめの議論のトピックス(その4)
HPAC誕生!
Header Table (request)
0, :scheme, http
1, :scheme,https
2, :host,
3, :path, /
4, :method, GET
5...
draft-04 実装リスト
https://github.com/http2/http2-spec/wiki/Implementations
名称 実装言語 Client,Server,
Intermidate
ニゴシエーション
1 nght...
世界初のHTTP/2.0相互接続試験やりました
HTTP/2.0 接続成功!
iij-http2 <-> HTTP/2.0 Chrome
iij-http2の相互接続試験結果
名称
1 nghttp2 成功。バク発見していただきました。
2 http2-katana Upgradeのバグ修正が完了せず。帰国後成功
3 node-http2 成功。先方のバグ発見。修正済。
4 Mo...
この先のロードマップ
• Second Implementation Drafts -06 :21 August 2013
• Header Compression Interop Harness :10 September 2013
• In...
Upcoming SlideShare
Loading in...5
×

httpbis interim とhttp2.0相互接続試験の話

6,309

Published on

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,309
On Slideshare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
18
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Transcript of "httpbis interim とhttp2.0相互接続試験の話"

  1. 1. httpbis interim と HTTP/2.0相互接続試験の話 HTTP/2.0 勉強会@IIJ 2013年8月14日 IIJ 大津 繁樹
  2. 2. 自己紹介 • 株式会社インターネットイニシアティブ(II J) • プロダクト本部戦略的開発部 • twitter: @jovi0608 • github: https://github.com/shigeki/ • ブログ: http://d.hatena.ne.jp/jovi0608/ • Node とか、HTML5とか、HTTP/2.0とか、流行そ うな技術の評価検証してます。 • 最近、HTTP/2.0仕様修正やNode.js のHTTP/2.0モ ジュールの開発をしています。(実装の詳細に 関しては来週の Node学園祭で発表予定)
  3. 3. 内容 1. httpbis interim(中間会議) で議論した大 きめなトピックについて解説 1. HTTP-draft-05/2.0 の話 2. HPAC(Header-Compression改名)の話 2. HTTP/2.0相互接続試験の話 3. 今後のHTTP/2.0仕様化のロードマップ
  4. 4. ~ HTTP/2.0の仕様作成作業 ~ githubを使ってます。 editorial fix → Pull Request OK, design issue -> issue 登録後、 MLに出す。 github 上のコメントで議論が白熱 → MLに出せと怒られる
  5. 5. 第3回 httpbis interim@ハンブルグ 第87回 IETF Mtg@ベルリンの翌週 8/5(月) ~ 8/7(水) Adobe@ハンブルグで開催
  6. 6. httpbis interim アジェンダ • 1日目 – Implementation Feedback – Issue 議論・整理 • 2日目 – 相互接続試験 • 3日目(半日) – Issue 議論・整理 – 次のロードマップ draft-04を元に各自がHTTP/2.0 の実装を持ち寄 り、初めて接続試験を行った記念すべき会議
  7. 7. 大きめの議論トピックス(その1) やっぱALPNじゃなくてNPNがいい。 • “Hitting some limit which causes bugs. ALPN can just cause timeouts” by Patric, Mozilla – 256バイト以上のHelloでバグる実装があるみたい。(某L B) – だからALPNでクライアントから送るデータが増えるのヤ ダ。 – やっぱクライアント側でコントロールしたいね。 • ALPNのプロトコル選択は平文で見えちゃう。 – プライバシーの問題がないかい? • NPNとALPNの併用が結構大変よね。移行どう するねん。(by G) • ALPN仕様、実はexp-HTTP/2.0 という名称にしない と・・・
  8. 8. 大きめの議論トピックス(その2) CONTINUEフラグはアカン、使 えん! HEADERS + END_HEADERS flag HEADERS + CONT flag HEADERS + END_HEADERS flag HEADERS + CONT flag ストリー ム生成開 始 続きの 2個目だ よ 1個目だ よ 終りだよ draft-04 では、 ストリー ム生成開 始
  9. 9. 大きめの議論のトピックス(その2) CONTINUATIONフレームの新設 HEADERS CONTINUEATION + END_HEADERS CONTINUATION 続きの 2個目だ よ 1個目だ よ 続き の終りだ よ draft-05 では、 ストリー ム生成
  10. 10. 大きめの議論のトピックス(その3) Server Pushを完全に禁止したい draft-04 では、 SETTINGS MAX_CONCURRENT_STREAMS: 0 PUSH_PROMISE でもPUSH PROMISEは 送れちゃうもんね。 1. 同時オープン0は仕様で PUSHを禁止させる? 2. RSTする? 3. 新たにPUSH禁止設定を導入する?
  11. 11. 大きめの議論のトピックス(その3) Server Pushを完全に禁止したい draft-05 では、2を採用 PUSH_PROMISE RST_STREAMでみんな 撃墜してやる! RST_STREAM 迎撃
  12. 12. 大きめの議論のトピックス(その4) Header-Compression-01あかんじゃん! working set foo0, bar0, index0 foo1, bar1, index1 Header Table (request) 0, :scheme, http 1, :scheme,https 2, :host, 3, :path, / 4, :method, GET 5, accept, index0, foo0, bar0 index1, foo1, bar1 ・・・ 36, via, 37, warning, reference set foo0,bar0 foo1, bar1 name,value index デコード時 workng_set に問題が! インデック スをなめる ので O(N^2) の計算量が 要 でかいヘッ ダが送られ て来たらメ モリ枯渇し ちゃう eviction時に インデック スがずれ ちゃう でかいリ テラル ヘッダ
  13. 13. 大きめの議論のトピックス(その4) HPAC誕生! Header Table (request) 0, :scheme, http 1, :scheme,https 2, :host, 3, :path, / 4, :method, GET 5, accept, index0, foo0, bar0 index1, foo1, bar1 index5, foo5, ・・・ 36, via, 37, warning, 38, foo5, bar5 reference set foo0,bar0 foo1, bar1 0 1 0 index5 bar5 length bar5 string header set foo5 emitted emit Literal + Increment working setを作らず、emitによる逐次処理に変 更。メモリ制限も対応、ストリームとして扱う ことも可能に。
  14. 14. draft-04 実装リスト https://github.com/http2/http2-spec/wiki/Implementations 名称 実装言語 Client,Server, Intermidate ニゴシエーション 1 nghttp2 C S, C, I NPN, Upgrade, Direct 2 http2-katana C# S, C Upgrade, ALPN 3 node-http2 Node.js S, C direct 4 Mozilla Firefox C++ C ALPN, NPN 5 http2-perl Perl S, C NPN 6 iij-http2 Node.js S, C NPN, Client Upgrade, Direct 7 Akamai Ghost C++ I NPN 8 Chromium C++ C ALPN, NPN 9 Google Front End C++ I ALPN, NPN 10 Twitter Java S, C ALPN, NPN Node.js によるフルスクラッチ実装 iij-http2 を開発
  15. 15. 世界初のHTTP/2.0相互接続試験やりました
  16. 16. HTTP/2.0 接続成功! iij-http2 <-> HTTP/2.0 Chrome
  17. 17. iij-http2の相互接続試験結果 名称 1 nghttp2 成功。バク発見していただきました。 2 http2-katana Upgradeのバグ修正が完了せず。帰国後成功 3 node-http2 成功。先方のバグ発見。修正済。 4 Mozilla Firefox 成功。 closed state仕様のバグ発見、仕様改訂済 5 http2-perl 未試験(試験準備できなかった) 6 iij-http2 N/A 7 Akamai Ghost 成功。Proxy対応へコードを改良が必要だった。 8 Chromium 成功。PINGで不具合有。Chrome側が修正。 9 Google Front End 未試験(間に合わなかったみたい) 10 Twitter 未試験(間に合わなかったみたい)
  18. 18. この先のロードマップ • Second Implementation Drafts -06 :21 August 2013 • Header Compression Interop Harness :10 September 2013 • Interop Dashboard : September 2013 • 9-11 October 2013 Interim : Seattle(?) US hosted by MS • November 2013 89th IETF : Vancouver CA • January 22-24 2014 Interim : Zurich CH hosted by Cisco • HPACはやっぱり心配だからちゃんとテストしよう。 • QAチームも一緒にやりたいね。 • interim 前にバーチャル相互試験をやろう。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×