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
290
仕様策定中のプロトコルを Rust で書いてブラウザで動かしてみた
yuki_uchida
3
2k
Media Over QuicTransportって知ってる?
yuki_uchida
0
380
WebRTCの歴史とこれから
yuki_uchida
0
1.2k
Other Decks in Technology
See All in Technology
最速最小からはじめるデータプロダクト / Data Product MVP
amaotone
5
780
成長中のFanTech領域におけるBiomeを活用したCIの高速化 / fantech-web-biome
cyberagentdevelopers
PRO
2
110
Jr. Championsになって、強く連携しながらAWSをもっと使いたい!~AWSに対する期待と行動~
amixedcolor
0
260
IaC運用を楽にするためにCDK Pipelinesを導入したけど、思い通りにいかなかった話
smt7174
1
130
君は隠しイベントを見つけれるか?
mujyun
0
380
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
0
1.1k
来年もre:Invent2024 に行きたいあなたへ - “集中”と“つながり”で楽しむ -
ny7760
0
560
AIを駆使したゲーム開発戦略: 新設AI組織の取り組み / sge-ai-strategy
cyberagentdevelopers
PRO
1
140
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1.9k
AWSコンテナ本出版から3年経った今、もし改めて執筆し直すなら / If I revise our container book
iselegant
18
4.2k
ZOZOTOWNのホーム画面をパーソナライズすることの難しさと裏話を語る
f6wbl6
0
230
10分でわかるfreee エンジニア向け会社説明資料
freee
18
520k
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
32
2.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
41
2.2k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
What's in a price? How to price your products and services
michaelherold
243
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Scaling GitHub
holman
458
140k
[RailsConf 2023] Rails as a piece of cake
palkan
51
4.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
The Cult of Friendly URLs
andyhume
78
6k
Why Our Code Smells
bkeepers
PRO
334
57k
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年後にはどうなってるかわかりません。 => ライブラリなどが充実してくるまで期待して待ちましょう(ウォッチしておくと技術的に優位に立 てるかも?)
おわり