Top Banner
最最 Web 最最最最最 最最最最最 最 43 最 HTML5 最最最最最 最最最最最最最
56

第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Jan 15, 2015

Download

Technology

Kensaku Komatsu

第43回HTML5とか勉強会でのセッション資料

spdyやWebSocketに対するLong Fat PipeやHead of Line Blockingの影響や、WebRTC BaaS SkyWayの説明など
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

最新 Web プロトコル 傾向と対策第 43 回 HTML5 とか勉強会

こまつけんさく

Page 2: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

自己紹介名前:小松健作

HTML5 の研究開発 HTML5 の啓蒙・コミュニティ運営 html5j スタッフ カンファレンスの NW (ケーブル)頑張ってひきま

した。

Google Developer Expert (HTML5)

Microsoft Most Valuable Professional(IE)

Page 3: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

最新 Web プロトコルが続々とWebSocket

SPDY, HTTP2.0

WebRTC

Raw Socket API

SCTP over DTLS (for WebRTC reliable data channel )

QUIC

Page 4: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

なぜこんなに?

Page 5: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

HTTP/1.1

Browser ServerGET /index.html

index.html

GET /style.css

style.css

画像素材: http://www.emstudio.jp/free/data1030/

Page 6: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

HTTP/1.1

Browser ServerGET /index.html

index.html

GET /style.css

style.css

Round Trip Tiime

Page 7: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Concurrent HTTP複数の TCP を同時に用いることで高速化

車の例で言えば、道路の車線を増やすことに相当

Page 8: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策
Page 9: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Concurrent HTTP

超えられない GAPリソースも多く使う

Browser Server

Page 10: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Gap を超えるために複数リソースを一つのセッションにまとめる。

まとめたリクエストを送る

Browser Server

Page 11: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Gap を超える practiceCSS sprite

Page 12: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

もっとGeneric に !

Page 13: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SPDY の考え方複数リソースを一つの TCP にまとめているBrowser Server

Page 14: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

DEMO

Page 15: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SPDY 使えば何も考えなくてもいい?

Page 16: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

リソースサイズを変えてみる

Page 17: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

更に、ネットワークをエミュレート (MacOS)

sudo ipfw add pipe 1 ip from any to anysudo ipfw pipe 1 config delay 50ms

Page 18: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

エミュレート環境で測ってみる

Page 19: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

リソースサイズ、 latency

HTTPS

SPDY

Page 20: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

TCP : Long Fat PipeACK が返ってくるまで、データを送信で

きないBrowser Server

Page 21: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

計測データ

about 15KB

ACK time(100ms)

総データ送信量

データ送信量

Page 22: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SPDY と HTTPS の違いSPDY

複数リソースダウンロードをを一つの TCP で Long Fat Pipe の制限が顕著となる

HTTPS Long Fat Pipe は、個々の TCP に対して起こる TCP の数だけ早くなる

Page 23: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

何が言えるか?Latency が多い環境

ACK の待ち時間が支配的 リソースサイズが増えるに従い、顕著となる SPDY より、 HTTPS のほうが早いケースも

Page 24: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Head of Line Blocking

Browser Server

Page 25: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

HTTPS では、 HoL の影響を受けづらい

Browser Server

Page 26: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

計測データ

Page 27: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

ケアしたほうがいいことSPDY を使う際は

大容量のファイルが多量に存在する場合 モバイル環境(ロスも latency も大きい)でのテストに注意したほうがいい

ファイルサイズの最小化など、従来からのプラクティス・サイト設計は引き続き重要

※ WebSocket についても同様のことが言えます。(場合によっては、 WebSocket 複数コネクション使ったほうがいいかも!?)

Page 28: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

何が原因?SPDY, WebSocket … NO

TCP の制限が原因

Web の進化により TCP の制限にぶつかるようになった

HTTP / HTTPS

TCP

IP

SPDY, WebSocket

HTTP2.0TCP

IP

LayerDependency

Page 29: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

TCP alternativeSCTP over DTLS

QUIC

Page 30: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

TCP alternative はいつ?

Browser Server

AccessNW

CGN

FireWall

Load Balancer

インターネット上のあらゆる機器に影響が出てくる・・・

Page 31: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC 的な話

Page 32: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC の特徴

Browser Browser

Server

WebSocket

Browser Browser

Server

WebRTC

Page 33: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

P2P を実現するには?

Browser Browser

相手の IP アドレス、ポート

番号が必要

Page 34: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

NAT がある場合

Browser Browser

NAT NAT

実際のアドレス、ポート番号は分か

らない

Page 35: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

アドレス、ポート番号を知るために : STUN

Browser Browser

NAT NAT

STUN実際のアドレス、ポート番号をブラ

ウザに返す

Page 36: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

フルコーン NAT

Browser Browser

NAT NAT

STUN

STUN に教えてもらった情報を使い

通信

ポート番号だけを見て変換( UDP Hole Punching)

Page 37: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

シンメトリック NAT

Browser Browser

NAT NAT

STUN

STUN に教えてもらった情報を使い

通信

アドレスが違うのでブロック

Page 38: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

TURN

Browser Browser

NAT NAT

TURN

サーバーを中継するため、シンメトリック NAT でも

OK

Page 39: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

同一セグメント内なら ICE はSTUN, TURN は不要

Browser Browser

BroadbandRouter

LAN

Page 40: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

同一セグメントでも・・・

Browser Browser

Wireless Controller セキュリティの観

点からセグメント内

P2P を禁止公衆無線 LAN

TURN が必要

Page 41: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC もうちょっと詳しく

WebRTCWebapp

WebRTCWebapp

BrokerServer

Stunserver

NAT NAT

セッション情報の交換

NAT の hole punching

データの交換

http://blog.livedoor.jp/kotesaki/archives/1794148.html

サーバーサイドコーディング

Page 42: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC もうちょっと詳しく

WebRTCWebapp

WebRTCWebapp

BrokerServer

Stunserver

NAT NAT

セッション情報の交換

NAT の hole punching

データの交換

とにかくめんどくさい

Page 45: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

毎回こんなコード書いてられない・・・

Page 47: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SkyWay (preview release!)

http://nttcom.github.io/skyway/

Peerjs 互換

Page 48: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC を簡単に使えるBaaS

WebRTCWebapp

WebRTCWebapp

BrokerServer

Stunserver

NAT NAT

セッション情報の交換

NAT の hole punching

データの交換

サーバーサイドコーディング

この部分は、 SkyWay が提供(気にしなくていい)

ブラウザ部分の開発に集中

Page 49: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

コードの短縮化

https://gist.github.com/KensakuKOMATSU/5377673

220 line => 50 line

サンプルレベルならサーバーサイドコーディン

グは不要!!

Page 50: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SkyWay (PeerJS) のコーディングパターンWebSocket と若干コーディングパターンが変わる

WebSocketサーバー

サーバーに接続すれば、お互いが自動的につながる

SkyWayサーバー

相手先の Peer ID を指定して、明示的に繋がる(呼ばれる側はサーバー的なコーディングが必要)

(裏側で接続制御)

Page 51: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SkyWay (PeerJS) のコーディングパターン

SkyWayサーバー

caller callee

最初に SkyWayサーバーに接続

SkyWayサーバー

接続先 ID を指定してp2p接続

(裏側でうまいこと橋渡し)

Page 52: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

DataChannel の相互接続性問題DataChannel の reliable 通信の実装がブ

ラウザ(バージョン)ごとに異なる当面は sctp をオフにしたほうがベターutil.supports.sctp = false;

Page 53: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

より詳しくは・・・

http://nttcom.github.io/skyway/docs/

Page 56: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Thank You!!@komasshu