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
HTTP優先度制御の今後とビデオ配信
Search
kazuho
December 11, 2019
Programming
1
130
HTTP優先度制御の今後とビデオ配信
HTTP/2と3にむけて検討が進んでいる新しい優先度制御の仕組みと、それがビデオ配信にもたらす最適化の可能性について解説します。
kazuho
December 11, 2019
Tweet
Share
More Decks by kazuho
See All by kazuho
SCONE - 動画配信の帯域を最適化する新プロトコル
kazuho
1
1.2k
Encrypted SNI
kazuho
5
6.8k
Security, privacy, performance of next-generation transport protocols
kazuho
8
40k
TLS 1.3とその周辺の標準化動向
kazuho
0
9.6k
Fastlyのプログラマから見たCDN
kazuho
29
19k
Other Decks in Programming
See All in Programming
AgentCoreとHuman in the Loop
har1101
5
210
Oxlintはいいぞ
yug1224
5
1.2k
Basic Architectures
denyspoltorak
0
650
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
200
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
5.9k
2026年 エンジニアリング自己学習法
yumechi
0
120
CSC307 Lecture 03
javiergs
PRO
1
490
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.7k
CSC307 Lecture 05
javiergs
PRO
0
490
GISエンジニアから見たLINKSデータ
nokonoko1203
0
200
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
650
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
130
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Designing Powerful Visuals for Engaging Learning
tmiket
0
210
How STYLIGHT went responsive
nonsquared
100
6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Abbi's Birthday
coloredviolet
1
4.6k
A better future with KSS
kneath
240
18k
We Have a Design System, Now What?
morganepeng
54
8k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
54
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Transcript
HTTPの 新しい優先度制御と ビデオ配信 Kazuho Oku
自己紹介 • オープンソースHTTPサーバ「H2O」主開発者 ◦ CDN等で採用 ◦ HTTP, TLS, QUICスタックを実装 •
IETFでの標準化に参加 ◦ 103 Early Hints (RFC 8297) ◦ Encrypted SNI (draft-ietf-tls-esni) ◦ HTTP Priorities (draft-kazuho-httpbis-priority)
• HTTP/2優先度制御 - 非推奨へ • HTTP/2と3に適用可能な新しい優先度制御 • 新優先度制御手法とビデオ配信 アジェンダ
ウェブページの優先度制御 • だいたい以下の順に配信するのが正解 ◦ JS, CSS (レンダリングをブロックするもの) ◦ HTML ◦
画像 ◦ 非同期読み込みのJS • 最適な順序はウェブサイト毎に異なります ◦ https://lists.w3.org/Archives/Public/ietf-http-wg/2019JulSep/0008.html
HTTP/2優先度制御 - Firefox source: https://datatracker.ietf.org/meeting/105/materials/slides-105-httpbis-sessa-http3-priorities-01
HTTP/2優先度制御 - Chrome source: https://datatracker.ietf.org/meeting/105/materials/slides-105-httpbis-sessa-http3-priorities-01
HTTP/2優先度制御 - 問題点 • クライアント・サーバ双方が正しく実装する必要あり ◦ だが、仕様が複雑で実装品質がまちまち ◦ 結果、うまく働いていないことも多い •
サーバによる優先度介入が不可能 ◦ クライアント毎に構築する「木」の形が違うため ↓ HTTP/2の優先度制御は非推奨へ
HTTPワーキンググループの現状 • HTTP/3の標準化が進行中 • 並行して、HTTP/2と3の両方で機能する、より単純な新しい優 先度制御手法を標準化することに ◦ "Extensible Prioritization Scheme
for HTTP" ▪ 著者: Kazuho Oku (Fastly), Lucas Pardue (Cloudflare) ▪ 現在Call for Adoptionの結果待ち
新手法 - 設計方針 • ウェブページの優先度指定に必要な機能を実装 ◦ HTTP/2の現手法と同等以上の性能を確保 ◦ HTTPのバージョン関係なく動作 ◦
HTTP/3に間に合うよう必要最小限の機能 ◦ サーバによる優先度介入をサポート • 将来にむけた拡張性を担保
新手法 - 絶対値による優先度指定 time urgency GET /index.html Priority: u=1, i=?1
GET /style.css Priority: u=0 GET /image.jpg Priority: u=4, i=?1 GET /analytics.js Priority: u=5
新手法 - 8段階の絶対的優先度 ("u") Name Urgency Examples prerequisite 0 CSS,
JS in <HEAD> default 1 HTML, fonts supplementary 2 (server-only) 3 hero images 4 images 5 async JS 6 (server-only) background 7 prefetch, file download wiggle room for clients
新手法 - 「インクリメンタル」フラグ ("i") • インクリメンタルにデータを処理できるかを表すフラグ ◦ 画像 => true,
CSS, JS => false
新手法 - 絶対値による優先度指定 time urgency GET /index.html Priority: u=1, i=?1
GET /style.css Priority: u=0 GET /image.jpg Priority: u=4, i=?1 GET /analytics.js Priority: u=5
新手法 - サーバによる優先度介入 • サーバの指定したパラメータが、クライアントの指定値をオー バーライド • 例: Async JSを画像よりも高優先度に変更
GET /critical.js Priority: u=5 GET /critical.js Priority: u=5 200 OK Priority: u=1 H2 terminator origin server
新手法 - 拡張性 • 任意のパラメータを追加可能 • 想定される第一の利用用途がビデオストリーミング ◦ 具体的には、これから議論 GET
/index.html Priority: u=1, i=?1
新手法 - 拡張性 • 任意のパラメータを追加可能 • 想定される第一の利用用途がビデオストリーミング ◦ 具体的には、これから議論 GET
/index.html Priority: u=1, i=?1, hoge=foo
ビデオストリーミングの優先度制御 • ウェブページの優先度制御とは要件が異なる ◦ ウェブページ - ファイルの優先度は固定 ◦ ビデオストリーミング -
.tsの優先度は時間と共に変化 ▪ 再生直前の.ts - 優先度最高 ▪ 再生後の.ts - 優先度ゼロ... • 優先度を、どのようにパラメータ化するか
ビデオストリーミングの優先度制御 • 再生タイミングを指定する?
ビデオストリーミングの優先度制御 • 再生タイミングを指定する? time GET /filePart271.ts Priority: playat=193031;dur=10 GET /filePart272.ts
Priority: playat=193041;dur=10 GET /filePart273.ts Priority: play=193051;dur=10
ビデオストリーミングの優先度制御 • 再生タイミングを指定する? ◦ あるいは、不要になった.tsのリクエストは、クライアントが キャンセルすればいい?
ビデオストリーミングの優先度制御 • 全ての.tsがIフレームを含まない場合、ファイル間の順序指定 も必要?
ビデオストリーミングの優先度制御 • 全ての.tsがIフレームを含まない場合、ファイル間の順序指定 も必要? time GET /filePart271.0.ts GET /filePart271.1.ts Priority:
after=/filePart271.0.ts GET /filePart271.2.ts Priority: after=/filePart271.1.ts
何が必要か、教えてください m(__)m