Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebTransportのまとめと今後
Search
yuki_uchida
December 11, 2020
Technology
5
1.3k
WebTransportのまとめと今後
WebTransport & WebCodecs meetup vol.0
で話したWebTransportについてのまとめと、今後の予想についてのスライドです。
yuki_uchida
December 11, 2020
Tweet
Share
More Decks by yuki_uchida
See All by yuki_uchida
SkyWayが遭遇したWebRTC の可観測性に関する問題と開発者向け可視化サービス提供までの道のり
yuki_uchida
4
2.8k
技術発信を続けるためのTIPS
yuki_uchida
3
110
何かの技術の"専門家"になりたかったから技術調査チームを立ち上げてプロダクトに貢献した話
yuki_uchida
6
450
メソッドチェーンを使ってDataFrameの可読性と保守性を向上させよう
yuki_uchida
1
280
仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
yuki_uchida
3
1.9k
Media Over QuicTransportって知ってる?
yuki_uchida
0
380
WebRTCの歴史とこれから
yuki_uchida
0
1.2k
Other Decks in Technology
See All in Technology
Forget efficiency – Become more productive without the stress
ufried
0
110
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.6k
Nix入門パラダイム編
asa1984
2
200
「 SharePoint 難しい」ってよく聞くけど、そんなに言うなら8歳の息子に試してもらった
taichinakamura
1
600
新卒1年目が挑む!生成AI × マルチエージェントで実現する次世代オンボーディング / operation-ai-onboarding
cyberagentdevelopers
PRO
1
160
いまならこう作りたい AWSコンテナ[本格]入門ハンズオン 〜2024年版 ハンズオンの構想〜
horsewin
9
2.1k
AWS re:Inventを徹底的に楽しむためのTips / Tips for thoroughly enjoying AWS re:Invent
yuj1osm
1
560
生成AIの強みと弱みを理解して、生成AIがもたらすパワーをプロダクトの価値へ繋げるために実践したこと / advance-ai-generating
cyberagentdevelopers
PRO
1
180
GitHub Universe: Evaluating RAG apps in GitHub Actions
pamelafox
0
170
ABEMA のコンテンツ制作を最適化!生成 AI x クラウド映像編集システム / abema-ai-editor
cyberagentdevelopers
PRO
1
180
独自ツール開発でスタジオ撮影をDX!「VLS(Virtual LED Studio)」 / dx-studio-vls
cyberagentdevelopers
PRO
1
180
小規模に始めるデータメッシュとデータガバナンスの実践
kimujun
3
580
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
363
19k
Speed Design
sergeychernyshev
24
570
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
290
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
The Power of CSS Pseudo Elements
geoffreycrofte
72
5.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Code Review Best Practice
trishagee
64
17k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Transcript
WebTransportのまとめと今後 WebTransport & WebCodecs meetup vol.0
Intro 内田 裕貴(@yuki_wtz) Webとか自然言語処理とかが好き 最近はNWプロトコルとか映像音声処理に興味あり 2019年4月: NTT コミュニケーションズ入社 2019年6月: SkyWay
DevOpsチームに配属 2020年6月: WebTransportの調査開始 2020年9月: WebRTC Researchチームで活動開始
1. WebTransport記事のまとめと補足 2. WebTransportの最新動向 a. TPAC 2020 b. IETF 2020
3. いつ触るべきなの WebTransport a. 各ブラウザベンダの雰囲気 (Kranky geek 2020) b. 触ってみた所感 興味あればみてね https://qiita.com/yuki_uchida/items/d9de148bb2ee418563cf
1. WebTransportのまとめ 1. WebTransportとは? 2. どうしてWebTransportが出てきたの? 3. WebSocket/WebRTCとの違いのまとめ 4. QUICというプロトコル
1. WebTransport とは WebTransport とは・・・
1. WebTransport とは WebTransport とは・・・ WebSocketやWebRTCと同じ低遅延な双方向通信フレームワーク
1. どうしてWebTransportが出てきたの?
1. どうしてWebTransportが出てきたの? WebRTCやWebSocketには問題がたくさん・・・
1. どうしてWebTransportが出てきたの? - WebSocketのパフォーマンス問題 - WebSocketでは対応できないユースケース - WebRTCの複雑さ - WebRTCの柔軟性のなさ
WebRTCやWebSocketには問題がたくさん・・・
1. どうしてWebTransportが出てきたの? - WebSocketのパフォーマンス問題 - WebSocketでは対応できないユースケース - WebRTCの複雑さ - WebRTCの柔軟性のなさ
WebRTCやWebSocketには問題がたくさん・・・ => (実は)一部の事業者は苦しんでいた・・・
1. どうしてWebTransportが出てきたの? 一部の事業者って誰? - 映像配信 - クラウドゲーミング - IoTデータ などなど・・・
常に低遅延を目指したいサービス 何かいい技術は・・・
1. どうしてWebTransportが出てきたの? QUIC採用によるパフォーマンス問題解消 (HLoB) TCP/UDPの両ユースケースの対応 WebSocketのような低レベルAPIによる柔軟性 これならいける そこで考案されたのが・・・ WebTransport!
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebSocket WebRTC UDP like ??? WebRTC 今までの双方向通信
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebSocket WebRTC UDP like WebRTC...? WebRTC 今までは満たすことのできなかったユースケースを WebRTCなどを用いて頑張って満たしていた。 しかしWebRTCはそもそもP2Pを前提に策定されているため、 サバクラ型にはfitせず、複雑になってしまったりする問題も・・・
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebSocket WebRTC UDP like WebTransport WebRTC そういったケースがWebTransportで!!! 映像配信・クラウドゲーミング・ IoTなどの低遅延が求められるアプリケーション の希望の光!!!
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebSocket WebRTC UDP like WebTransport WebRTC そういったケースがWebTransportで!!! 映像配信・クラウドゲーミング・ IoTなどの低遅延が求められるアプリケーション の希望の光!!! そしてさらに・・・
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebTransport WebRTC UDP like WebTransport WebRTC もともとWebSocketで満たしていたユースケースも WebTransportで!! WebTransportはTCPlikeなユースケースもUDPlikeなユースケースも満たせる ように策定されている。
1. WebSocket/WebRTCとの違いのまとめ Server <-> Client (サバクラ) Peer <-> Peer (P2P)
TCP like WebTransport WebRTC (RTCQuicTransport) UDP like WebTransport WebRTC (RTCQuicTransport) さらにさらに・・・ WebRTCにもRTCQuicTransportというものを作ろうという動きがあります。 (WebRTCではSCTPとDTLSというプロトコルが複雑かつ遅かったためです。これを QUICに置き換えようという動きです。 )
1. QUICというプロトコル この動きの背景には・・・ QUIC というプロトコルの策定が進んできていたのが影響しています 4年ほど時間を掛けて策定が進んできた QUICがfixに向けて動き出した。 QUICを採用しているWebTransportもそれに応じて進んできた
1. QUICというプロトコル QUICとは UDP上にTCPの色々なしくみ・TLSの機能などを 載せた新しいプロトコル 引用: https://datatracker.ietf.org/meeting/98/materials/slides-98-edu-sessf-quic-tutorial/ 過去策定された色々なプロトコルの反省を 踏まえて策定された Reliable
UDP... SCTP...
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)
2. WebTransportのOrigin Trial開始(2020 5~6月) 正確には QuicTransport(WebTransportの軽量版)が Google Chromeで Origin Trial
開始 Github Issueとか bugs.chromium.orgでバグが議論されたり重要な APIの変更が報告されたりする
2. WebCodecsのOrigin Trial開始(2020 8月) WebTransportはTCP/UDP両ユースケース対応 注目されるのは映像や音声などのメディアデータ コーデックの低レベルAPIを触れると嬉しいよねってこ とでWebCodecsが登場。 WebTransportとWebCodecsを組み合わせてビ デオチャットアプリを作ってみた記事もあげている
のでみてね https://qiita.com/yuki_uchida/items/b177ec07ac0379950e58
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
2. QUICのラストコール(2020/10) WebTransportではQUICプロトコルを採用している。 およそ4年間かけて使用策定がすすめられてきたQUICがついにfix... ドラフトのversionは32 にまでなった QUICがコア技術となっている WebTransportも 使用策定がしやすく。 今後、策定はより進んでいくはず。
https://tools.ietf.org/html/draft-ietf-quic-transport-32
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してくれるように)
2. Kranky Geek 2020 WebRTC Conference (2020/11) Kranky Geek は
WebRTCがメインのテーマのカンファレンス WebTransportはWebRTC Next Versionとしても期待されているので、質問コー ナーでは多くWebTransportについての質問がよせられていた => その内容は次のセクションで
3. いつ触るべきなの WebTransport
3. いつ触るべきなの WebTransport 個人的な主観ですが・・・ 映像配信・クラウドゲーム・IoTなど、低遅延通信のパ フォーマンスがそのままサービスの価値に直結してしまう ような企業でなければ当分触る必要なし
3.a. 各ブラウザベンダの雰囲気 Google Chrome Safari Firefox Microsoft Edge 前向き 様子見
様子見 様子見 *) Kranky geek 2020で行われたブラウザベンダセッションより。 *) 各社が正式な声明を出しているわけではなく、ディスカッションを通して感じた個人的な解釈なのでご注意く ださい 低レベルAPIがないと実現できないユース ケースがあるので進めていくよ 特に言及なし 大企業にしか扱えない様な APIにならなな いかは不安だけど改善はもちろん賛成 柔軟性は素晴しいけど検証中の技術
3.a. 各ブラウザベンダの雰囲気 Google Chrome Safari Firefox Microsoft Edge 前向き 様子見
様子見 様子見 Origin Trial 実施中 具体的な開発計画なし 具体的な開発計画なし 具体的な開発計画なし *) Kranky geek 2020で行われたブラウザベンダセッションより。 *) 各社が正式な声明を出しているわけではなく、ディスカッションを通して感じた個人的な解釈なのでご注意く ださい
3.b. 触ってみた所感 WebTransport datagramがウリだが、WebRTCやHLSなどではサポートされ ている仕組みがまだまだ実装されていない - 再送処理 - 輻輳制御 etc...
=> 今まで既存の実装に頼っていた仕組みを自前で実装する必要が出てく る。そしてそれをうまくやってくれるライブラリもまだまだ出てきていない
3.b. 触ってみた所感 WebTransport datagramがウリだが、WebRTCなどではサポートされている 仕組みがまだまだ実装されていない - 再送処理 - 輻輳制御 etc...
=> 今まで既存の実装に頼っていた仕組みを自前で実装する必要が出てく る。そしてそれをうまくやってくれるライブラリもまだまだ出てきていない 低レベルAPIの宿命・・・(柔軟性は増すが扱うのが難しい )
3.b. 触ってみた所感 映像の様なデータを送る際に必要な、パケット分割や再送制御など、軽いも のは実装してみたが、色々なテクニックの塊なので、ここらへんを自作するの は結構大変。 => プロトコルに詳しくて自作できる様な人材と余裕がある企業なら今からで も動けるかも WebTransportとWebCodecsを組み合わせてビデオチャットを実装してみる」という記事でそこらへん を書いてます
https://qiita.com/yuki_uchida/items/b177ec07ac0379950e58
3.b. 触ってみた所感 UDPが通らないような場合のフォールバックもまだ策定中 - FallbackTransport(Http2Transport) => 現状だと結局fallbackとしてWebSocket(etc)使うことに・・・
3.b. 触ってみた所感 既存のライブラリを使用した場合にパフォーマンスに懸念が残る - WebSocketやWebRTCに比べてCPU使用率が高い - 各コードがまだパフォーマンスチューニングされていない (Origin Trial中なので当然ですが )
- ブラウザの実装 - ライブラリ - 軽く調べてみると、100byteもないデータを送信するために 3%もCPUがくわれた。 - 複数人に送信したい&映像のような大きなデータを送りたいとなった時にキツイかも - Macbook Pro(2.9 GHz 6コアIntel Core i9) - aioquicをquicTransportサーバーで使用
3. つまり・・・ まずはGoogle Chromeが進めている Origin Trialが順調に進み、パフォーマンスの調査やコー ドの最適化が行われ、各ブラウザベンダが実装するまでは実用段階にはない。 プロトコルに詳しく、UDP上に再送処理などのいろいろな仕組み・WebTransportサーバーを自 作できるパワーを持ち、通信のパフォーマンスがサービスの価値に直結するような企業でなけ れば使うのが難しいのが現状
=> とはいえ、2,3年後にはどうなってるかわかりません。 => ライブラリなどが充実してくるまで期待して待ちましょう(ウォッチしておくと技術的に優位に立 てるかも?)
おわり