Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebTransportのまとめと今後

E62474339cc7cabf1d385ac3916e5d64?s=47 yuki_uchida
December 11, 2020

 WebTransportのまとめと今後

WebTransport & WebCodecs meetup vol.0
で話したWebTransportについてのまとめと、今後の予想についてのスライドです。

E62474339cc7cabf1d385ac3916e5d64?s=128

yuki_uchida

December 11, 2020
Tweet

More Decks by yuki_uchida

Other Decks in Technology

Transcript

  1. WebTransportのまとめと今後 WebTransport & WebCodecs meetup vol.0

  2. Intro 内田 裕貴(@yuki_wtz) Webとか自然言語処理とかが好き 最近はNWプロトコルとか映像音声処理に興味あり 2019年4月: NTT コミュニケーションズ入社 2019年6月: SkyWay

    DevOpsチームに配属 2020年6月: WebTransportの調査開始 2020年9月: WebRTC Researchチームで活動開始
  3. 1. WebTransport記事のまとめと補足 2. WebTransportの最新動向 a. TPAC 2020 b. IETF 2020

    3. いつ触るべきなの WebTransport a. 各ブラウザベンダの雰囲気 (Kranky geek 2020) b. 触ってみた所感 興味あればみてね https://qiita.com/yuki_uchida/items/d9de148bb2ee418563cf
  4. 1. WebTransportのまとめ 1. WebTransportとは? 2. どうしてWebTransportが出てきたの? 3. WebSocket/WebRTCとの違いのまとめ 4. QUICというプロトコル

  5. 1. WebTransport とは WebTransport とは・・・

  6. 1. WebTransport とは WebTransport とは・・・ WebSocketやWebRTCと同じ低遅延な双方向通信フレームワーク

  7. 1. どうしてWebTransportが出てきたの?

  8. 1. どうしてWebTransportが出てきたの? WebRTCやWebSocketには問題がたくさん・・・

  9. 1. どうしてWebTransportが出てきたの? - WebSocketのパフォーマンス問題 - WebSocketでは対応できないユースケース - WebRTCの複雑さ - WebRTCの柔軟性のなさ

    WebRTCやWebSocketには問題がたくさん・・・
  10. 1. どうしてWebTransportが出てきたの? - WebSocketのパフォーマンス問題 - WebSocketでは対応できないユースケース - WebRTCの複雑さ - WebRTCの柔軟性のなさ

    WebRTCやWebSocketには問題がたくさん・・・ => (実は)一部の事業者は苦しんでいた・・・
  11. 1. どうしてWebTransportが出てきたの? 一部の事業者って誰? - 映像配信 - クラウドゲーミング - IoTデータ などなど・・・

    常に低遅延を目指したいサービス 何かいい技術は・・・
  12. 1. どうしてWebTransportが出てきたの? QUIC採用によるパフォーマンス問題解消 (HLoB) TCP/UDPの両ユースケースの対応 WebSocketのような低レベルAPIによる柔軟性 これならいける  そこで考案されたのが・・・ WebTransport!

  13. 1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)

    TCP like WebSocket WebRTC UDP like ??? WebRTC 今までの双方向通信
  14. 1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)

    TCP like WebSocket WebRTC UDP like WebRTC...? WebRTC 今までは満たすことのできなかったユースケースを WebRTCなどを用いて頑張って満たしていた。 しかしWebRTCはそもそもP2Pを前提に策定されているため、 サバクラ型にはfitせず、複雑になってしまったりする問題も・・・
  15. 1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)

    TCP like WebSocket WebRTC UDP like WebTransport WebRTC そういったケースがWebTransportで!!! 映像配信・クラウドゲーミング・ IoTなどの低遅延が求められるアプリケーション の希望の光!!!
  16. 1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)

    TCP like WebSocket WebRTC UDP like WebTransport WebRTC そういったケースがWebTransportで!!! 映像配信・クラウドゲーミング・ IoTなどの低遅延が求められるアプリケーション の希望の光!!! そしてさらに・・・
  17. 1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)

    TCP like WebTransport WebRTC UDP like WebTransport WebRTC もともとWebSocketで満たしていたユースケースも WebTransportで!! WebTransportはTCPlikeなユースケースもUDPlikeなユースケースも満たせる ように策定されている。
  18. 1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)

    TCP like WebTransport WebRTC (RTCQuicTransport) UDP like WebTransport WebRTC (RTCQuicTransport) さらにさらに・・・ WebRTCにもRTCQuicTransportというものを作ろうという動きがあります。 (WebRTCではSCTPとDTLSというプロトコルが複雑かつ遅かったためです。これを QUICに置き換えようという動きです。 )
  19. 1. QUICというプロトコル この動きの背景には・・・ QUIC というプロトコルの策定が進んできていたのが影響しています 4年ほど時間を掛けて策定が進んできた QUICがfixに向けて動き出した。 QUICを採用しているWebTransportもそれに応じて進んできた

  20. 1. QUICというプロトコル QUICとは UDP上にTCPの色々なしくみ・TLSの機能などを 載せた新しいプロトコル 引用: https://datatracker.ietf.org/meeting/98/materials/slides-98-edu-sessf-quic-tutorial/ 過去策定された色々なプロトコルの反省を 踏まえて策定された Reliable

    UDP... SCTP...
  21. 2. WebTransport最新動向 2020年 6月 : Google Chrome M84からWebTransportのOrigin Trialの開始 8月

    : Google Chrome M86からWebCodecsのOrigin Trialの開始 10月: TPAC2020 WebTransport MTG 10月: QUICのラストコール 11月: IETF2020 11月: Kranky geek 2020(WebRTC conference)
  22. 2. WebTransportのOrigin Trial開始(2020 5~6月) 正確には QuicTransport(WebTransportの軽量版)が Google Chromeで Origin Trial

    開始 Github Issueとか bugs.chromium.orgでバグが議論されたり重要な APIの変更が報告されたりする
  23. 2. WebCodecsのOrigin Trial開始(2020 8月) WebTransportはTCP/UDP両ユースケース対応 注目されるのは映像や音声などのメディアデータ コーデックの低レベルAPIを触れると嬉しいよねってこ とでWebCodecsが登場。 WebTransportとWebCodecsを組み合わせてビ デオチャットアプリを作ってみた記事もあげている

    のでみてね https://qiita.com/yuki_uchida/items/b177ec07ac0379950e58
  24. 2. TPAC 2020 WebTransport MTG (2020/10) WebTransportがテーマのMTGがTPACで開 催された(初?) ユースケースの確認や上がっている issueに

    ついての議論が行われた。 引用: TPACのスライドのリンク https://docs.google.com/presentation/d/1xx1MLjxY-ZiWQBxivJCITmvKrHdW3AMuz-DxDOr Acdw/edit#slide=id.g9d9162b157_1_588
  25. 2. QUICのラストコール(2020/10) WebTransportではQUICプロトコルを採用している。 およそ4年間かけて使用策定がすすめられてきたQUICがついにfix... ドラフトのversionは32 にまでなった    QUICがコア技術となっている WebTransportも 使用策定がしやすく。 今後、策定はより進んでいくはず。

    https://tools.ietf.org/html/draft-ietf-quic-transport-32
  26. 2. IETF 2020 WebTransport MTG (2020/11) WebTransportがテーマのMTGがIETFで開催。 TPACと同様にユースケースの確認や上がっているissueについての議 論が行われた。 引用:IETFのスライドのリンク

    https://datatracker.ietf.org/meeting/109/materials/slides-109-webtrans-ietf-109-webtrans-wg-slides-03 WebTransportとQuicTransportの APIの統合が発表されたり (引数に与えるURLで内部で dispatchしてくれるように)
  27. 2. Kranky Geek 2020 WebRTC Conference (2020/11) Kranky Geek は

    WebRTCがメインのテーマのカンファレンス WebTransportはWebRTC Next Versionとしても期待されているので、質問コー ナーでは多くWebTransportについての質問がよせられていた => その内容は次のセクションで
  28. 3. いつ触るべきなの WebTransport

  29. 3. いつ触るべきなの WebTransport 個人的な主観ですが・・・   映像配信・クラウドゲーム・IoTなど、低遅延通信のパ フォーマンスがそのままサービスの価値に直結してしまう ような企業でなければ当分触る必要なし  

  30. 3.a. 各ブラウザベンダの雰囲気 Google Chrome Safari Firefox Microsoft Edge 前向き 様子見

    様子見 様子見 *) Kranky geek 2020で行われたブラウザベンダセッションより。 *) 各社が正式な声明を出しているわけではなく、ディスカッションを通して感じた個人的な解釈なのでご注意く ださい    低レベルAPIがないと実現できないユース ケースがあるので進めていくよ 特に言及なし 大企業にしか扱えない様な APIにならなな いかは不安だけど改善はもちろん賛成 柔軟性は素晴しいけど検証中の技術
  31. 3.a. 各ブラウザベンダの雰囲気 Google Chrome Safari Firefox Microsoft Edge 前向き 様子見

    様子見 様子見 Origin Trial 実施中 具体的な開発計画なし 具体的な開発計画なし 具体的な開発計画なし *) Kranky geek 2020で行われたブラウザベンダセッションより。 *) 各社が正式な声明を出しているわけではなく、ディスカッションを通して感じた個人的な解釈なのでご注意く ださい   
  32. 3.b. 触ってみた所感 WebTransport datagramがウリだが、WebRTCやHLSなどではサポートされ ている仕組みがまだまだ実装されていない - 再送処理 - 輻輳制御 etc...

    => 今まで既存の実装に頼っていた仕組みを自前で実装する必要が出てく る。そしてそれをうまくやってくれるライブラリもまだまだ出てきていない
  33. 3.b. 触ってみた所感 WebTransport datagramがウリだが、WebRTCなどではサポートされている 仕組みがまだまだ実装されていない - 再送処理 - 輻輳制御 etc...

    => 今まで既存の実装に頼っていた仕組みを自前で実装する必要が出てく る。そしてそれをうまくやってくれるライブラリもまだまだ出てきていない 低レベルAPIの宿命・・・(柔軟性は増すが扱うのが難しい )
  34. 3.b. 触ってみた所感 映像の様なデータを送る際に必要な、パケット分割や再送制御など、軽いも のは実装してみたが、色々なテクニックの塊なので、ここらへんを自作するの は結構大変。 => プロトコルに詳しくて自作できる様な人材と余裕がある企業なら今からで も動けるかも WebTransportとWebCodecsを組み合わせてビデオチャットを実装してみる」という記事でそこらへん を書いてます

    https://qiita.com/yuki_uchida/items/b177ec07ac0379950e58
  35. 3.b. 触ってみた所感 UDPが通らないような場合のフォールバックもまだ策定中 - FallbackTransport(Http2Transport) => 現状だと結局fallbackとしてWebSocket(etc)使うことに・・・

  36. 3.b. 触ってみた所感 既存のライブラリを使用した場合にパフォーマンスに懸念が残る - WebSocketやWebRTCに比べてCPU使用率が高い - 各コードがまだパフォーマンスチューニングされていない (Origin Trial中なので当然ですが )

    - ブラウザの実装 - ライブラリ - 軽く調べてみると、100byteもないデータを送信するために 3%もCPUがくわれた。 - 複数人に送信したい&映像のような大きなデータを送りたいとなった時にキツイかも - Macbook Pro(2.9 GHz 6コアIntel Core i9)  - aioquicをquicTransportサーバーで使用
  37. 3. つまり・・・ まずはGoogle Chromeが進めている Origin Trialが順調に進み、パフォーマンスの調査やコー ドの最適化が行われ、各ブラウザベンダが実装するまでは実用段階にはない。 プロトコルに詳しく、UDP上に再送処理などのいろいろな仕組み・WebTransportサーバーを自 作できるパワーを持ち、通信のパフォーマンスがサービスの価値に直結するような企業でなけ れば使うのが難しいのが現状

    => とはいえ、2,3年後にはどうなってるかわかりません。 => ライブラリなどが充実してくるまで期待して待ちましょう(ウォッチしておくと技術的に優位に立 てるかも?)
  38. おわり