Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
750
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
愛される翻訳の秘訣
kishikawakatsumi
3
330
MAP, Jigsaw, Code Golf 振り返り会 by 関東Kaggler会|Jigsaw 15th Solution
hasibirok0
0
250
dotfiles 式年遷宮 令和最新版
masawada
1
790
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
160
sbt 2
xuwei_k
0
300
Cell-Based Architecture
larchanjo
0
130
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
430
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
190
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
850
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
320
これならできる!個人開発のすゝめ
tinykitten
PRO
0
120
tparseでgo testの出力を見やすくする
utgwkk
2
250
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
75
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Building Applications with DynamoDB
mza
96
6.8k
Statistics for Hackers
jakevdp
799
230k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
310
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
120
Context Engineering - Making Every Token Count
addyosmani
9
540
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
21
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
340
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
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