Document

Content Espresso を用いた
ライブ映像配信を可能にする高速な分散保存方式
佐野 岳史 †
†
安藤 大佑 †
寺岡 文男 ††
金子 晋丈 ††
慶應義塾大学大学院理工学研究科
††
慶應義塾大学理工学部
概 要
ネットワーク技術の進歩やディスプレイ技術の発達により,インターネットを介した高解像度映像コンテンツの視聴やライブ配信の
需要が高まっているが,大容量映像コンテンツを配信するためには広帯域ネットワークが必要となり,ライブ配信をするために高速
な保存機能が必要となる.筆者らは大容量コンテンツを対象として広域分散ストレージサーバに分散保存し,高速かつ低ストレージ
コストでインターネット規模のコンテンツ共有と可用性・信頼性のあるコンテンツ保存を実現する Content Espresso の設計と実装
をしている.本稿では Content Espresso の保存部分に着目し,ライブ配信を可能とする高速な保存方式を提案する.本方式は UDP
と誤り訂正符号を用いることで再送をしない高スループット・低遅延な保存方式である.実際に本方式を 72 台のサーバへ分割保存す
ることで評価し,同時に複数のファイルを送りつつも低遅延で高スループットを維持できることを確認した.
キーワード 大容量ファイル転送,UDP,分散保存,ライブ配信
1
はじめに
当研究室では大容量映像を配信するために広域分散スト
レージシステムである Content Espresso [4] の提案と実装を
近年,ネットワーク技術の進歩やディスプレイの発達によ
している.Content Espresso は場所によらない高速なファ
り,ネットワークを介した高解像度の映像コンテンツ視聴や
イル取得と低ストレージコストの両立を目標にしている.そ
ライブ配信がより一般的になってきている.例えば 4K(解
のためのアプローチとして 1)UDP によるデータ取得,2) 前
像度 3840×2160),8K(解像度 7680×4320) といった超高解
方誤り訂正 (FEC) を利用した消失データ回復,3) 大規模分
像度映像コンテンツの配信が期待されており,インターネッ 散保存の 3 つの要素を組み合わせている.図 1 に Content
ト上の有名な映像配信サービスである YouTube [1] でも Espresso の概要を示す.ファイルを保存ときは,ファイル
4K 画質の映像配信が始まっている.また,Full HD(解像度 と FEC 符号を用いられて作成された冗長データを分割し,
1920×1080) 映像をライブ配信可能な Ustream[2] やスマー 世界中に設置されたストレージサーバ(チャンクサーバ)に
トフォンから手軽にライブ配信可能な TwitCasting[3] など 保存する.ファイルを取得するときは,データが保存され
のライブ配信サービスある.
ているチャンクサーバすべてに取得要求を出し,UDP を利
高解像度映像コンテンツは非常に大容量となっており,配 用して取得する.信頼性のない UDP によるチャンク取得
信するためには広帯域ネットワークが必要となる. 例えば, なので,パケットロスによりチャンクが失われる可能性が
非圧縮 Full HD 24fps の映像であると約 1.2Gbps,非圧縮 あるが,保存のさいに作成した冗長データによりある程度
4K 30fps の映像であると約 6Gbps のネットワーク帯域が
のパケットロスまでならば再送すること無く回復すること
必要となり,非常に広帯域であることがわかる.
ができる.
ライブ配信は視聴者は事前に保存されている映像を見る
Content Espresso を利用した高精細映像のオンデマンド
のではなく,撮影されてすぐの映像を見るため,配信動作
配信をすでに実現しているが,Content Espresso は読み出
だけでなく保存動作も高速な必要がある.映像が撮影され
し速度を高めることに注力し,書き込み速度が考慮された設
てから視聴者に届くまでの時間が短いほど良いライブ配信
計にはなっていないため,安定した高い書き込みスループッ
サービスであるといえる.また,ライブ配信をしている間
トが要求されるライブ配信に応用することは難しい.そこ
は常に映像が生成されていくため,アップロードのスルー
で,本稿では Content Espresso の書き込み部分に着目し,
プットが低下すると保存するべき映像ファイルが増加して
ライブ配信を可能とする高速な分散保存方式を提案する.
いってしまう.このような理由からライブ配信には安定し
たスループットが必要であることが分かる.
1
元のファイル
1
5
FECコードを付加
回復した
ファイル
ファイルの
回復
+
3
4
2
UDPによる転送 Client
分散保存
ファイル分割
FECをチャンク内に挿入
図 1: Content Espresso の概要
成用行列を準備することでさまざまな冗長率の冗長データ
を生成することができる.冗長データを生成した後,Chunk
Client
Generator はファイルデータおよび冗長データを 1024byte
単位のチャンクに分割し,それぞれのチャンクにシーケン
ファイルデータ
TCP
ス番号を順番に付与しながらラウンドロビンアルゴリズム
ファイル
でチャンクサーバに保存する.ラウンドロビンアルゴリズ
ムを使用することでチャンクを全てのチャンクサーバへ均
等に分散することができるので,LDGM 符号の回復性能を
Chunk
Generator
冗長データ
高めることができる.この時,Chunk Generator はチャン
クサーバの数だけスレッドを生起し,TCP を利用して並列
に保存処理をする.ファイルデータ,冗長データのすべて
TCP
TCP
TCP
を保存し終えると保存終了通知を Client へ送信し,すべて
TCP
のファイル保存処理が終了する.また,Chunk Generator
は Client から書き込みの要求が来るたびに上記の処理を
する.
保存方式の設計
3
チャンクサーバ
本章では,ライブ配信の書き込みにおける要求事項をま
図 2: Content Espresso のファイル保存方式
とめる.また,Content Espresso の書き込みにおいての検
討すべき点を列挙し,保存方式の設計について述べる.
2
Content Espresso の保存方式
3.1
Content Espresso におけるファイル保存方式の詳細を図
ライブ配信の要求事項
2 に示す.Client がファイルを保存する際,まず Client に
ライブ配信の書き込みにおける要求事項は以下のとおり
近い位置にある Chunk Generator と呼ばれるアップロード である.
サーバへファイルを TCP を利用してアップロードする.
Chunk Generator はファイルを Client から受信した後, 1. 映像のビットレートよりも広いネットワーク帯域
映像は時間軸を持っているコンテンツであり,単位
ファイルデータを 1MB ごとのブロックに分割をし,その
時間ごとの映像のデータ量をビットレートで表すこと
ブロック毎に FEC 符号を利用して冗長データを生成する.
ができる.映像配信をする際に映像のビットレートよ
Content Espresso では FEC 符号として LDPC 符号の一種
である LDGM 符号を利用しており [5],あらかじめ符号生
りも広いネットワーク帯域が必要である.
2
2. 安定して高いスループット
ライブ配信の場合,映像はアップロードしている際
Client
ファイルデータ
も絶えず生成されている.そのため,アップロードの
スループットが低下すると Client 側にアップロードす
TCP
る映像ファイルが増加していくので,安定して高いス
ファイル
ループットが必要である.
冗長データ
3. 低遅延での映像保存
ライブ配信はリアルタイムの映像を視聴者に届ける
ことを目的にしているため,映像が撮影されてから視
Chunk
Generator
TCP
TCP
聴者に届くまでの時間が短ければ短いほどよい.書き
UDP
込みに着目した場合,映像ファイルが撮影されてから
UDP
保存されるまでの時間を低遅延にすることが求められ
ている.
UDP を用いたチャンク転送
3.2
チャンクサーバ
前節で述べた要求事項を満たすために UDP を用いたチャ
ンク転送を使用する.UDP はネットワーク状態に関係なく
図 3: 保存方式
一定速度でファイルを送信することができる.そのため低遅
延で安定して高いスループットを出すことができる.TCP
をチューニングして使用することも考えられるが,チュー
3. チャンクサーバ数
Chunk Generator は全てのチャンクサーバへファイ
ニングのコストや再送の発生を考慮して UDP を使用する
こととする.
ルを分割分散保存をする.そのためチャンクサーバの
台数が増加した場合でも書き込みの性能がスケールす
る必要がある.
既存の Content Espresso の検討すべき点
3.3
UDP を用いたチャンク転送を Content Espresso の書
き込み部に設計するうえで検討すべき点は以下のとおりで
3.4
ある.
ライブ配信における保存方式の設計
ライブ配信を Content Espresso で実現する上で,UDP
1. RTT
を用いた保存方式と TCP のみを用いた保存方式を図 3 に示
Content Espresso は場所によらない高速なファイル
し,その設計について述べる.Chunk Generator は Client
転送を目標にしているため,Chunk Generator とチャ と距離の近いものが選択されるため,従来とおり Chunk
ンクサーバ間の RTT は様々な値になる.TCP のス
ループットは,RTT に反比例し,パケットロス率が小
Generator とチャンクサーバ間は TCP を利用したファイ
ル転送とする.Chunk Generator はチャンクサーバの台数
さい時はパケットロス率の平方根に反比例することが
が増加した場合でも書き込みのスループットが低下しない
知られている [6]. そのため Chunk Generator とチャン
ようにするため,書き込み要求ごとの処理をチャンクサー
クサーバ間の RTT が小さい場合は信頼性の低い UDP
バの台数にスケールする実装が必要である.
を用いずに TCP のみで 3.1 節の要求を満たすことが
できると考えられる.
3.4.1 UDP を用いた保存方式の設計
2. 同時送信ファイル数
Chunk Generator とチャンクサーバ間の RTT が大きい
Chunk Generator は Client から書き込みの要求が
時は Chunk Generator とチャンクサーバ間の通信に UDP
来るたびに分割分散保存の処理をする.しかし,ネッ
を用いる.UDP で送信されるデータはチャンクサーバに保
トワーク帯域の上限が決まっているため,要求が来た
存する段階でパケットロスが発生する可能性が考えられる
ものを全て並列化して送信するよりも,一度に並列化
が,チャンクサーバはパケットロスが発生しても受け取った
できる数の上限を定めた方が性能が良くなる可能性が
パケットをそのまま保存する.パケットロスが発生し,不
考えられる.
3
完全なファイルの状態でも,読み込みの段階である程度の
Cluster
パケットロスならば回復することができる.
拠点B
NetEmマシン
同義
実際に利用できるか読み込むまでわからないファイルを
10Gbps
保持することはファイルシステムとして問題である.ファイ
1Gbps
ル転送時間を予測できないという点でライブ配信途中に再
…
送処理はできないが,ライブ配信終了後にパケットロスが
Chunk
Generator
10Gbps
チャンクサーバ
12台
発生しているファイルを完全なファイルとして保存し直す
必要がある.そのため Chunk Generator はファイル保存の
際にチャンクサーバからパケットロスの発生の有無を送信
拠点A
ps
Gb
ps
10
ps
Cluster
バへアップロードし,完全なものとする.また,ライブ配
10Gbps
配信終了後に保存しておいたファイルを再度チャンクサー
ps
Gb
ルを保存しておく必要がある.Chunk Generator はライブ
10
Gb
10
s
bp
G
10
10Gb
してもらい,パケットロスが発生した場合には一度ファイ
Cluster
Cluster
信以外の保存時間に制約がない場合は TCP を利用し完全
Cluster
にファイルを保存できるようにする.
Cluster
Cluster
チャンクサーバ 72台
3.4.2
TCP のみを用いた保存方式の設計
図 4: 評価環境
Chunk Generator とチャンクサーバ間の RTT が小さい
時は Chunk Generator とチャンクサーバ間の通信に TCP
を用いる.Chunk Generator はチャンクサーバと TCP コ
表 1: 評価環境における各マシン性能一覧
ネクションを予め確立しておく.
3.5
実装
マシン
CPU
Memory
OS
Chunk Generator
Netem マシン
Core i7-3770 @ 3.4GHz
Core i7-3770 @ 3.4GHz
8GB
8GB
CentOS 6.3
CentOS 6.3
チャンクサーバ (72 台)
Pentium G640 @ 2.8GHz
16GB
CentOS 6.3
Chunk Generator を以下のように実装した.
4.1
1. チャンクサーバの台数が増加した場合でも書き込みの
スループットが低下しないように Client からの書き
評価環境
本評価では Chunk Generator,72 台のチャンクサーバ,
込み要求ごとにスレッドを 1 つのみ生起する.またス
ネットワーク状況をエミュレートするためのネットワーク
レッド数を管理することで同時送信ファイル数を制御
エミュレートマシン(NetEm マシン)の 3 つのモジュール
することができる.
を使用する.チャンクサーバを慶應義塾大学デジタルメディ
2. UDP は相手の状態を確認せずに送信するため,送信
ア統合研究センター(拠点 A)に設置し,Chunk Generator
の速度が速すぎると受信側のバッファがいっぱいにな
と NetEm マシンを慶應義塾大学矢上キャンパス(拠点 B)
り,パケットロスの判定になる. そのため UDP を利
に設置する.評価環境を図 4 に示し,各マシンの性能を表 1
用したチャンク転送では,転送レートを指定できるよ
に示す.今回の評価環境では Chunk Generator から各チャ
うにする.
ンクサーバまでの RTT は 5msec であり,ネットワークの
パケットロス率は 0%である.しかし,インターネット環境
3. TCP を用いたチャンク転送をする場合,チャンクサー
を想定した計測をするために NetEm マシンにおいて tc コ
バと確立した TCP コネクションをスレッド間で共有
マンドを用いてネットワークのパケットロス率を 0.01%[7]
して使用する.
に設定する.
4
評価
4.2
本章では,3 章で述べた書き込み方式の設計について評
測定方法
3 章で述べた設計での実装でのスループットと保存するま
でにかかる時間を測定し,TCP と UDP を切り分ける際の
従来方式と特に変更がないため,Chunk Generator とチャ
RTT の目安,同時送信ファイル数の適切な値について評価
ンクサーバ間のデータ転送についてのみ評価していく.
価する.提案方式では,Client と Chunk Generator 間は
4
する.Chunk Generator から 72 台のチャンクサーバへ非圧
6500
6000
縮 Full HD(解像度 1920×1080) の画像ファイル(6.22MB)
5500
を 100 回転送し終わるまでの合計時間とそれぞれの転送時
0.9
throughput
send time
0.8
間を測定し,平均スループットと 1 ファイル転送するのに
かかる時間のばらつき,UDP の場合のチャンクサーバでの
パケットロス率を見る.その際のパラメータとして,同時
送信ファイル数,RTT を変化させる.
0.6
4500
4000
0.5
3500
0.4
3000
0.3
2500
0.2
2000
ファイルの冗長率は Content Espresso を利用した映像配
0.1
1500
信でよく利用されている 20%で固定する.Client からファ
1000
0
rate100M/100th
rate200M/50th
rate250M/40th
rate500M/20th
rate1G/10th
4.3.1
rate2G/5th
Generator のメモリに載せておく.
rate2.5G/4th
想定するため,ファイルデータと冗長データは予め Chunk
rate5G/2th
rate10G/1th
イルデータが届き,冗長データを作り終わった後の状況を
4.3
sendTime (sec)
throughput (Mbps)
0.7
5000
図 5: チャンクサーバ 72 台の時の UDP 転送による平均
性能測定
スループットと 1 ファイル転送するのにかかる時間のばら
つき
UDP を利用した分散保存
NetEm マシンにおいて Chunk Generator とチャンクサー
バ間に遅延を設定しない場合(5msec), Chunk Generator
るが,平均スループットが他の値に比べて高い値になって
の平均スループットと 1 ファイル転送時間を UDP を利用
いる.
した方式で 100 回連続計測した.UDP には輻輳制御機能が
計測時のチャンクサーバにおいて,全体のファイルサイ
ないため,UDP を利用した方式ではチャンク送信レートを
ズの何%のパケットがロスしているかを図 6 に示す.これ
指定する必要がある.今回の計測では,各スレッドごとの
よりチャンク送信レートが 100Mbps の時だけが 25% 以上
チャンク送信レートを 10Gbps,5Gbps,2.5Gbps,2Gbps, の割合で 11% 以上のデータがロスしている.このことよ
1Gbps,500Mbps,250Mbps,200Mbps,100Mbps とし, り送信レートを下げて同時送信ファイル数を増やしたとし
スレッド数をチャンク送信レート × スレッド数 が 10Gbps ても,パケットロスが多く発生してしまうため,同時送信
ファイル数は制限すべきである.
になるように設定した.
図 6 のチャンク送信レート 100Mbps を取り除いたもの
この時の平均スループット (Mbps) 及び転送時間 (sec) の
ばらつきを図 5 に示す.平均スループットは赤十字でプロッ を図 7 に示す.この図より全ての項目でパケットロスの割
トし,転送時間のばらつきを青の箱ひげ図で示した.x 軸に 合が 0.5% より低いことがわかり,冗長率を 20% としてい
各 UDP のチャンク送信レートとスレッド数の項目を示し
る今回では,クライアント側で合計 10 % ほどのパケット
た.箱ひげ図は箱の下辺が第 1 四分位点で,箱の上辺が第
ロスならば,十分に損失パケットを回復する事ができるた
3 四分位点,箱の中に辺が中央値である.図 5 よりチャンク め,今回の項目では送信レートが 100Mbps 以外のものは
送信レートが 10Gbps の時と 5Gbps の時は要求したレート 有向である.
今回の環境下において UDP を利用した分割分散保存す
に対して平均スループットが全く出ていない.これは高い
送信レートを設定した時に送信レートの制御がされていな
る際はチャンク送信レートを 2.5Gbps から 1Gbps の間に
かったことが原因である.つまり,チャンク送信レートを高
設定し,同時送信するファイル数を 10 以下にするのが最
く設定しすぎても送信レートの制御はされずスループット
も良い.
が低くなることが言える.チャンク送信レートが 2.5Gbps,
2Gbps,1Gbps の時では,平均スループットは 5Gbps 程
4.3.2
度出ており,この値は非圧縮 Full HD 画質のライブ配信が
TCP を利用した分散保存時間
約 4 チャネル同時できる値である.また 1 ファイル送るの
TCP の場合も UDP と同じく,Chunk Generator とチャ
にかかる時間のばらつきも 0.1sec 以下で収まっている.こ
ンクサーバ間の RTT を NetEm マシンで何も変更しない
れより,チャンク送信レートを 2.5Gbps から 1Gbps の間
時 (5msec) の各スレッド数ごとの Chunk Generator の平
に設定し,スレッド数を 4 から 10 の間に設定すれば,遅
均スループットと 1 ファイル転送するのにかかった時間の
延時間を小さくすることができる.チャンク送信レートが
100 回のばらつき結果を図 8 に示す.これよりスレッド数
20 ぐらいのところまでは 1 ファイル送るのにかかる時間
100Mbps の場合,1 ファイル送信する時間は長くなってい
5
18
7000
16
6500
throughput
send time
1
10
8
6
4
2
5500
0.6
5000
0.4
4500
sendTime (sec)
0.8
6000
12
throughput (Mbps)
total loss data (%)
14
4000
0
rate100M/100th
rate200M/50th
rate250M/40th
rate500M/20th
rate1G/10th
rate2G/5th
rate2.5G/4th
rate5G/2th
rate10G/1th
0.2
3500
3000
0
20
40
60
80
0
100
nThread
図 6: チャンクサーバ 72 台の時の UDP 転送によるファイ
図 8: チャンクサーバ 72 台の時の TCP 転送による平均ス
ル全体に対してのパケットロスの割合のばらつき
ループットと 1 ファイル転送するのにかかる時間のばらつき
0.5
4.3.3
total loss data (%)
0.4
UDP と TCP の比較
UDP と TCP のそれぞれを用いた書き込みの平均スルー
プットが高くなるパラメータと遅延時間が短くなるパラメー
0.3
タがわかったので,両者を比較してみる.UDP と TCP
0.2
のそれぞれの方式についての平均スループットを Chunk
0.1
Generator とチャンクサーバの RTT を NetEm マシンを
用いて変化させた時の結果を図 9 に示す.この時 UDP は
4.3.1 項で性能が良かった要求レート 2.5Gbps の 4 スレッ
0
rate200M/50th
rate250M/40th
rate500M/20th
rate1G/10th
rate2G/5th
rate2.5G/4th
rate5G/2th
rate10G/1th
ド,2Gbps の 5 スレッド,1Gbps の 10 スレッドを,TCP
は 4.3.2 項で性能が良かった 20 スレッドと 100 スレッド
の 5 つ項目を比較した.図を見ると RTT が 7msec の時に
UDP と TCP のスループットの差は逆転し UDP の方が速
図 7: チャンクサーバ 72 台の時の UDP 転送によるファイ
くなる.それ以降の RTT の時は UDP の方がスループット
ル全体に対してのパケットロスの割合のばらつき 2
が高くなっている.以上のことから今回の様なネットワー
クのパケットロス率が低く安定している環境下の場合 RTT
のばらつきはあまりなく,すべて 0.2sec 以内となっている.
スレッド数が 20 以上ではばらつきが大きくなり,スレッド
が 7msec 未満の時は TCP を,RTT が 7msec 以上の時は
UDP を利用して分散保存するべきであると言える.
数が約 80 になると,1 ファイル送るのにかかる時間は大
きな値に収束する.一方で平均スループットは,スレッド
5
数を増やせば増やすほど高くなる傾向にある.これは TCP
おわりに
が複数の要求に対してうまく制御をできるプロトコルだか
本稿では,Content Espresso の保存部分に着目し,ライ
らである.スレッド数を 100 にした時にスループットは約
ブ配信を可能とする高速な分散保存手法について述べた.今
6.5Gbps 出ていて,この値は非圧縮 Full HD 画質のライブ 回の環境下においては Chunk Generator とチャンクサーバ
配信が約 5 チャネル同時にできる値である.以上のことか 間の RTT が 7msec 未満の時は TCP を用いて同時に 20
ら今回の環境下において TCP を用いて分割分散保存する ファイルの書き込みまで,7msec 以上の時は UDP を用いて
際は,遅延時間を短くしたい場合にはスレッド数を 20 程
要求レートが 2.5Gbps から 1Gbps 同時に 4 から 10 ファイ
度に止め,使用可能帯域を十分に使用する場合には一度に
ルの分散保存が平均スループットが高くなり分散保存が完
可能な数のファイルを送信したほうが効率がよいと言える. 了するまでにかかる遅延時間を 0.1msec 以下になるという
ことを示した.広域分散を想定している Content Espresso
6
7000
6000
throughput (Mbps)
SIGCOMM ’98, pages 303–314, New York, NY, USA,
1998. ACM.
TCP nThread: 20
TCP nThread: 100
UDP sendRate:1000 nThread:10
UDP sendRate:2000 nThread:5
UDP sendRate:2500 nThread:4
[7] Iij packetloss sla. http://www.iij.ad.jp/svcsol/
sla/packetloss/.
5000
4000
3000
2000
1000
0
0
10
20
30
40
50
60
70
80
90
100
RTT (ms)
図 9: チャンクサーバ 72 台の時の RTT による UDP と
TCP 平均スループット
では UDP を用いたチャンク転送方式は有用であったとい
える.
今後の課題としてチャンクサーバの台数やファイルサイ
ズが変化した時の評価,書き込みと読み込みが同時に発生
する場合の評価を予定している.
参考文献
[1] Youtube. http://www.youtube.com.
[2] Ustream. http://www.ustream.tv.
[3] Twitcasting. http://twitcasting.tv.
[4] D. Ando, M. Kitamura, F. Teraoka, and K. Kaneko.
Content espresso: A system for large file sharing using
globally dispersed storage. In Proceedings of IEEE 5th
International Conference on Cloud Computing Technology and Science (CloudCom), volume 2, pages 337–
340, Dec 2013.
[5] M Kitamura, D Shirai, Y Tonomura, and T Fujii. A
study on the parallelized encoding of ldgm for the robust streamings of super high definition videos. IEICE
Technical Report. Communication Systems, pages 37–
42, sep 2007.
[6] J. Padhye, V Firoiu, D Towsley, and J Kurose. Modeling tcp throughput: A simple model and its empirical validation. In Proceedings of the ACM SIGCOMM
’98 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communication,
7