I
はじめに
近年、インターネット上でのビデオ配信が盛んに なってきている。欧米や中国では、ピアツーピア ネットワーク(P2P
)方式を利用したビデオ配信 サービスに対し、加入者数がすでに数百万人規模 に達している。P2P
方式を利用することにより、サー バおよびネットワーク負荷を軽減しつつ、より高品 質なサービスが実現可能である。すでにサービス が開始されているビデオ配信は、同じ品質のビデ オを全てのユーザに配信するものであるが、イン ターネットに接続される端末の種類は多種多様で あり、計算処理能力、画面表示サイズ、ネットワー クの利用可能帯域幅など環境の異なる多数の ユーザ端末に対し、必要かつ十分な品質でビデオ 配信を行う方法が希求されている。 同一のビデオを異なる品質で複数のユーザに同 時配信する既存の方法はいくつか提案されている。 マルチバージョン法[1]
は、異なるビットレートを持 つ複数個のビデオバージョンをあらかじめ用意し、 ユーザからの要求に対し、制約を満たす最も品質 の良いものを選んで配信する。オンライントランス コード法[2]
は、元のビデオをサーバまたは中間 ノード上で、ユーザが希望する品質のビデオに変 換して配信する。階層化マルチキャスト法[3
、4]
は、 ビデオを階層符号化[5]
を用いて複数の層に符号 化し、独立したマルチキャストストリームとして配 信する。各ユーザは任意の個数の層を受信するこ とでビデオを復号する。この方式は、ユーザ満足 度を改善するためにはより多くの層数が必要とな り、多くの層からのビデオ復号には大きな処理能 力とバッファが必要になる。マルチバージョン法の 制御方式は簡単であるが、サーバのディスクスペー スやネットワーク帯域の利用効率が低い。マルチ バージョン法、階層化マルチキャスト法は、もし十P2P
ビデオ
配送機構
の
開発
とその
評価
森將豪 Masaaki Mori 滋賀大学経済学部 / 教授 論文分な数のバージョンや層が用意されないならば、 要求品質と配信品質の間に乖離が生じるという問 題がある。一方、オンライントランスコード法は ユーザの要求に合わせた品質への変換が可能だ が、トランスコードを行うために中間ノードで大き な計算パワーが必要となる。 また、
P2P
ネットワークを対象としたビデオ配信 方式 は多数研究されている。代表的なものにOMNI[6]
やCoopNet[7]
が あ る。OMNI
で は、 各ユーザノードはサービスユーザであると同時に サービスプロバイダとしての役目も果たしており、 マルチキャスト木はビデオ配信サービスが木を通 してすべてのユーザノードに提供されるように構 成される。OMNI
はユーザノード分布やネットワー ク条件の変化にも適用できる。CoopNet
では、ビ デオサーバの負荷がサーバの限界を超えたときの クライアント・サーバベースの配信方法が議論さ れている。そこでは、ユーザノードはストリームデー タの一部分をキャッシュし、それらを複数の異な る配送木を使ってユーザノードに配信するが、サー バの負荷は高い。OMNI
とCoopNet
は、ネット ワーク条件の動的な変化やサーバ負荷等に依存 してビデオ配信サービスを適応させることを目的と しているが、異なる品質要求を持つユーザに対す るビデオ配信を扱っていない。文献[8]
では、P2P
ネットワークにおいて異なった品質要求に対する ビデオ配信をトランスコードにより行う上で、エン コード・デコードの途中過程における結果の一部 を共有することで、トランスコードに必要な計算資 源を削減する方法を提案している。 本論文では、多数のユーザが異なる品質で同じ ビデオの配送を要求する場合に、末端のユーザ以 外のすべてのユーザノードにトランスコード(ビデ オ品質の変換)を行わせ、それを中継させることで 効率 よくビデオを 同時配信 する方 式MTcast
(
Multiple Transcode-based video multicast
)[9]
を提案している。従来の方式には無かったこの 方式の特長として、ユーザの希望した品質に非常 に近い品質のビデオが配送できること、ノード故 障に耐性があること、配送遅延がユーザ数の対数 で抑えられること等が挙げられる。 本方式では、各ユーザ(ビデオ受信者)は各自 の環境の制約に基づいて決定した要求品質を指 定してビデオの配送を要求する。これらの要求に 基づき、根がビデオコンテンツの送信源となるよう な、トランスコード木と呼ばれる配送木を、変形 完全n
分木として構成する。より高い品質要求を 持つユーザノードは木の根の近くに、より低い品 質要求を持つユーザノードは葉近くに配置する。 トランスコード木の各ノード(コンテンツ受信者) は、受信したビデオストリームを実時間トランス コードし、下流のノード(より低い品質を希望する 受信者)に転送することで、制約・要求が異なる複 数のユーザへのビデオ配信を効率よく実現する。 全ノードを、互いに近い要求品質を持つk
個のノー ドからなるレイヤと呼ばれるグループ群に分割し、 要求する品質によりレイヤ間の親子関係を設定し、 各レイヤのノード群が、その子レイヤのノード群に 対し、共同でストリーム配信を行う。 上記の方式を、シミュレータ上に実装し、性能 の評価を行った。具体的には、世界規模のオー バ ー レイネットワ ー クの テストベッド で あ るPlanetLab[10]
上で動作するプロトタイプシステム をJava
言語で構築し、同テストベッド上で性能の 評価を行った[11],[12],[13]
。そして提案手法が、 アルゴリズムの解析によって予測された通りの性 能を持つことを確認している。 提案手法ではトランスコードを複数回繰り返す ため、トランスコードに伴う画質の劣化が顕著に なる可能性があるが、実際に提案方式によって行われる複数回のトランスコードを行いビデオ画質 を評価したところ、単一のトランスコードの場合と 遜色ない画質であることを確認した。また、提案手 法では、ユーザ端末上でビデオの再生と同時にト ランスコードを行うため、非力な端末では
CPU
資 源が不足する可能性がある。実際にいくつかの種 類の端末を使用し、必要となるCPU
資源について 評価を行った。さらに、システムのスケーラビリティ を改善するために、インターネットのバックボーン 帯域を節約する仕組みについても考案・実装し、 その効果を確認した。II
MTcast
の概要
1:対象とする環境MTcast
では、同一のビデオコンテンツを一斉 に配信するサービスを想定しており、各ユーザが 希望した時間に好みの配信を受けるオンデマンド 型のサービスは対象としない。ただし、ユーザは放 送開始後いつでも、現在放送中のシーンからのビ デオの配信を受けることができる。本論文では、以 下のような環境を想定している。 ・ネットワーク環境:複数ドメインにまたがるオー バーレイネットワーク ・ユーザ端末:デスクトップPC
、ラップトップPC
、PDA
、携帯電話、等 ・通信インフラ:固定ブロードバンド、無線回線等、 を介してインターネットに接続 ・ユーザ数:500
∼100,000
程度 ・対象コンテンツ:ビデオ(録画済、生放送の両方) 2:諸定義 ビデオ配信サーバをs
、ユーザ数をN
、ユーザ ノードの集合をU = {u
1, ...,
u
N}
と表記する。各u
i に対して利用可能な上り(送信)帯域幅(ノードが 送信に使用できる帯域幅)と、下り(受信)帯域幅 (ノードが受信に使用できる帯域幅)は既知である と仮定し、これらをu
i.upper_bw
とu
i.lower_bw
で表す。各ユーザノードu
iのビデオ要求品質をu
i.q
と表記する。u
i.q
はビットレートを表し、適切 な画像サイズとフレームレートはビットレートから 計算できるものとする。ノードu
iが品質q
で表され るビデオを同時にトランスコード可能な本数をu
i.n
trans(q)
で、ノードu
iで行われる品質q
のビデオ の最大同時転送数をu
i.n
link(q)
で表す。u
i.n
trans(q)
とu
i.n
link(q)
は、u
iとu
i.upper_bw
とビデオ品質よ り計算できる。MTcast
では、s
を根、U
の各要素を節または葉 とするオーバーレイマルチキャスト木を構築する。 以下、このマルチキャスト木をトランスコード木と 呼び、トランスコード木の葉ノード以外のノード を内部ノードと呼ぶ。 3:トランスコード木の構造 トランスコード木の内部ノードはビデオストリー ムを子ノードへ送信する。各内部ノードが持つ子 ノードの数(リンク次数)を、原則として定数値n
と仮定する。Ⅱ-4
節で説明するように、n
の値は ユーザノードの利用可能な資源数に依存して決ま る。根ノードから送信されたストリームが葉ノード で再生されるまでの遅延時間およびトランスコー ド数を削減するため、トランスコード木を変形完 全n
分木状(後述の理由により、トランスコード 木の根ノードの次数はn
ではなくk
である)に構成 する。トランスコード木では、各ノードu
iとu
iの任 意の子ノードu
jに対して、u
i.
q ≥ u
j.
q
が成り立つ。 すなわち、トランスコード木の根ノード(動画配信 サーバ)から葉ノードへ向かう任意のパス上のノー ド群の要求品質は降順となるようにトランスコー ド木を構築する.
ノードの故障・離脱に耐えビデオ配送開始遅延 を短くするために、
U
に属するk
個のノードを束に して一つのグループとする。このグループのことを レイヤと呼ぶ。k
はあらかじめ決められた定数で ある。同じレイヤ内のユーザノードには同一の品 質を持つビデオを受信させることとする。この品質 のことをレイヤ品質と呼ぶ。各レイヤに対してその レイヤを管理する代表ノードが一つ選ばれる。ト ランスコード木上の全てのレイヤ間の親子関係は レイヤ木と呼ばれる。また、レイヤ木の最上位のレ イヤを根レイヤと呼ぶ。図1
はn = 2, k = 6
のトラ ンスコード木の例で、小さな円と大きな円はそれ ぞれノードとレイヤを表している。 4:トランスコード木の構築MTcast
では、トランスコード木の計算をただ 一つのノードu
Cで集中的に行う。u
Cはトランス コード木を構築する毎に変更でき、その決め方は Ⅱ-5
節で説明する。u
Cはビデオサーバs
とビデオ を要求しているユーザノード群U
の情報を有する ものと仮定する。トランスコード木構築アルゴリズ ムは以下の3
ステップから成る。 ステップ1
:ユーザノードの集合U
の各ノードu
に 対して、ノードu
が一つまたはそれ以上のビデオの トランスコードを行うことができるか(下記の不等 式(1
))と、u
が(n+1
)本のビデオストリームを同時 転送できるか(不等式(2
))を判定する。
u.n
trans(u.q) ≥ 1
(1
)
u.n
link(u.q) ≥ n + 1
(2
)上記不等式の両方が成り立てば、
u
を内部ノード の集合U
Iに入れ、そうでなければ葉ノードの集合U
Lに入れる。ただし、根ノードs
はU
Iに入れる。 分割後に|
U
I| < |
U|/n
であれば、全てのユーザの 要求品質を満足するにはネットワーク資源が不足 していることが分かる。この際には、不等式(1
)と (2
)が成り立つように、U
L中のより大きな上り(送 信)帯域を持つ|
U
L|
−(n
−1
)/
n|U|
個のノードの 品質要求を減少させる。減少後それらのノードはU
Iに移される。上記の手続きにより|
U
I| > |
U|/n
が常に成り立つように調整する。 ステップ2
:全ノード集合U
をレイヤに割り当てる。U
Iの要素をそれらの要求品質の降順にソートし、k
個ずつ要素を束ねて、一つの内部レイヤに割り 当てる。各レイヤごとに、最初と2
番目のノードをレ イヤの代表ノード、副代表ノードとする。要求品質 の最小値がレイヤ品質として割り当てられる。葉 ノードの集合U
Lも同様にレイヤに割り当てる。 ステップ3
:トランスコード木が構成される。内部 レイヤをレイヤ品質の降順にソートし、各レイヤの レイヤ品質がその親レイヤの品質を超えないよう 図1 トランスコード木(n=2, k=6)による配信の様子 800kbps 700kbps 600kbps 500kbps 400kbps 300kbps 200kbps 1500 1300 700 1100 900 500 300 1400 1200 1000 800 600 400 200 100 1100 1100 900 500 leaf layer internal layer 図2 深さ優先探索順のレイヤ木の構成前にビデオサーバ
s
にビデオ配送要求を送信する。 時刻t
−δに、サーバs
はⅡ-4
節で説明したアル ゴリズムによりトランスコード木T
を計算する。こ こで、δは定数であり、トランスコード木を計算し、 必要な情報を全てのノードに配布するための時間 である。また、サーバs
は、次回にトランスコード 木を計算するノードu
Cを決める。u
Cは、十分な 下り(受信)帯域を持つレイヤの代表ノードから選 択される。次に、サーバs
は、トランスコード木T
に含まれる全ノードへ、ビデオ配送に必要な以下 の情報I
またはI
′を配布する。これらはトランス コード木にそって配布される。 ・各レイヤの代表ノードに配布する情報I
トランスコード木T
に含まれる全ノードとそ の親子関係,
対応するレイヤ木の親子関係と 各レイヤに含まれるノード、代表ノードと副代 表ノード、およびレイヤ品質、次にトランスコー ド木の構築を行うノードu
Cと木の再構築予 定時刻t
r ・代表ノード以外のノードに配布する情報I
′ 所属するレイヤの代表ノード、子ノード、親レ イヤの代表ノードと副代表ノード、u
Cとt
r (2)新規配信要求とノード故障に対する対処 Ⅱ-4
節で説明したように、内部レイヤ内の各ノー ドは、ビデオストリームを1
本分転送するための上 り(送信)帯域幅の余裕を持っている。ビデオの配 送開始時刻t
後にビデオ配送を要求したユーザ ノードu
newは、ビデオストリームを受信するために、 この余剰帯域幅を使うことができる。ここで、u
new にストリームを送信する親ノードu
fのノード接続 可能数(次数)は、一時的にn + 1
となる。内部 ノードu
fは、既に子ノードに伝送しているビデオス トリームをu
newへ伝送するため、新たなトランス コードは必要ない。 に、それら内部レイヤの完全n
分木を構成する。 内部レイヤをn
分木に割り当てる順番は深さ優 先探索の順とする(図2
)。 次いで、各葉レイヤL
を、レイヤ品質がL
に最も 近い内部レイヤに付け加える。もしL
のレイヤ品質 がL
の親レイヤの品質を超えるならば、L
のレイヤ 品質はL
の親レイヤの品質に変更する。最終的に トランスコード木は、内部ノードと葉ノードを、そ れぞれそれらの要求品質の降順に内部レイヤと葉 レイヤに割り当てることにより得られる。 木の次数nとレイヤの大きさkの決め方 提案手法では、トランスコード木は変則的な完 全n
分木として構成される。したがってn
の値が 大きくなると、木の高さ(すなわちトランスコード数) は減少する。各ノードの要求上り(送信)帯域はn
の値に比例して増加するので、n
の値は各ノード の上り(送信)帯域の制限を考慮して決めなければ ならない。上記ステップ1
において、どのノードも要 求品質を下げたくない場合には、不等式(2
)を満 たすノードの数が|
U|/n
以上になるようにn
の値 を決める必要がある。一方、f
個のノードが一つの レイヤから同時に離脱する可能性があるならば、そ のレイヤの残りのk
−f
個のノードによって、ビデオ をn
・k
個の子ノードへ伝送できなければならない。 したがって、各レイヤにおいて最大f
個の同時故障 (離脱)からの回復を可能にするには、以下の2
つ の不等式が満たされなければならない。n
とf
の 値が決れば、以下の不等式によりk
の値が決まる。 (k
−f
)u.n
link(q
)≥
n
・k
(3
) (k
−f
)u.n
trans≥
「k
/u.n
link(q)
n
「 (4
)5:MTcastの動作
(1)スタートアップ時の手順
ビデオ配送の開始時刻を
t
で表す。ビデオストあるレイヤ中の
1
個またはそれ以上のノードが 故障・離脱した場合、トランスコード木内の故障・ 離脱ノードの子ノード(孤児ノードと呼ぶ)および その子孫ノードはビデオストリームを受信できな くなる。提案手法では、孤児ノードはデータI
′を 受信しており、親ノードが所属するレイヤの代表 ノードを知っているため、この代表ノードに依頼す ることで、代替親ノードを発見し即座に切り替える ことができる。代替ノードが孤児ノードに即座にビ デオストリームを転送できるよう、新規ノードの場 合と同様に余剰帯域幅を利用する。親ノードが切 り替わる間シームレスな再生が可能とするため、 バッフアしておいたビデオデータを再生する。ノー ド故障時の親ノード切り替えの例を図3
に示す。 (3)トランスコード木の再構築 トランスコード木は定期的に再構築することで、 各ストリームの次数をn
以下に調整し、消費され た余剰上り帯域幅を再確保する。以下のステップ でトランスコード木を再構成する。再構成後のト ランスコード木に切り替える時刻t
rは全てのノー ドに予め配布しておく。まず、全てのノードから、ト ランスコード木に沿って時刻t
r後に有効となる品 質要求を収集する。次に、Ⅱ-4
節で述べた手順に よりトランスコード木を計算し、全ノードに対して 新しいトランスコード木と、次にトランスコード木 を計算するノードu´
cの情報を配布する。 時刻t
rに、全ノードはストリームの受信を一旦 中止し、新しい木に沿ったビデオストリームの配信 を開始する。新しいトランスコード木に沿って伝 送されたビデオストリームは、トランスコードの処 理遅延、オーバレイリンクの通信遅延により、ある 時間(切替遅延時間と呼ぶ)遅れて各ノードに受 信される。再生の途切れを防ぐため、各ノードで は切替遅延時間以上のある時間分のストリーム データを常にバッファしておく。トランスコード木 の次の再構築時までに、各ノードのバッファは少な くとも切替遅延時間分のビデオデータで満たされ ねばならない。そのため、ビデオストリームを元の ビットレートより若干速く伝送する。III
MTcast
システムの構築
Ⅱ-4
節で述べたトランスコード木の構築法では、 トランスコード木における親子関係はオーバーレ イリンクの性質を考慮することなく決定される。し かし実際の物理ネットワークにおいてオーバーレ イリンクは多くのホップ数をもつ長いパスとなるの で、ピア間の親子関係を効率よく決定する必要が ある。実際のインターネット環境におけるMTcast
方式の有用性を示すために以下のようにシステム を構築する。 1:ピア間の親子関係の決定 Ⅱ-4
節で述べたトランスコード木の構築法はイ ンタ ー ネ ッ ト上 の 異 な るAS
(Autonomous
System
)内の帯域とAS
間のバックボーン帯域を 区別していないため、比較的貴重なバックボーン 帯域を消耗してしまう可能性 がある。そこで、MTcast
方式の優位性を保持しつつAS
間のバッ 図3 故障ノード発生からのリカバリプロトタイプシステムの設計は、次の
2
点を重視 して行った:(i
)実装を可能な限り容易にすること、 (ii
)提案方式の変更に対し、プロトタイプの変更 を最小限に抑え、できる限り提案方式以外の類 似方式の実装にも使用可能なこと。これら2
点を 満たした上で、可能な限り性能を犠牲にしないよう 工夫した。以下で説明するモジュラーデザインを 採用することにより、ネットワーク上の各ノードで 動くプロセスを汎用のコードとし、中央サーバの コードを変更するだけで、各ノードの機能を変更で きるようにした。 2:モジュラーデザイン ネットワーク上の各ノードの構成を柔軟に変更 し、各種設定の下での性能の評価を容易にするた めに、各ノードで動くプログラムを、バッファやトラ ンスコーダなどのソフトウェアモジュールの集合と して構成した。各ノードで動作するプロセスは、中 央サーバからの指示に従ってこれらのモジュール のインスタンスを生成し、接続する。また、中央 サーバから各モジュールへの指示の中継を行う。 この仕組みを実現するため、プロトタイプはJava
言語を用いて製作し、中央サーバと各ノードで動 くプログラム と の間 の 通 信 はRMI
(Remote
Method Invocation
)を使用して行うこととした。 ソフトウェアモジュールとして、トランスコーダ、ビ デオの表示部、ネットワークからのデータの受信 部および送信部、バッファ、ユーザインタフェース、 設定ファイルの読み出し部等を用意した。これら はそれぞれ一つのクラスに対応するようにした。ま た、基本的に各モジュールは一つのスレッドとして 動作するようにした。これにより、イベントドリブ ンのコードを書くよりも容易にコーディングが行え るようにした。 クボーン帯域を節約する方法について述べる。 本方式で使用するバックボーン帯域は、実際の 物理ネットワーク上のトポロジに依存する。以下で は物理的なトポロジを考慮してトランスコード木 における親子関係を決定する。 子レイヤに属するノードの集合をC
、親レイヤに 属するノードの集合をP
とする。c
∈C
、p
∈P
に対し、 物理ネットワーク上のリンクの集合L
(c, p
)および 利用可能帯域bw
(c, p
)を、traceroute, Abing
等の ツールを用いて計測する。ラスト1
ホップを除いた バックボーン帯域の節約が目的であるから、c, p
の ラスト1
ホップのリンクはL
(c, p
)から除いておく。 次に、各物理リンクの利用可能帯域の推定値と 共有度数を求める。リンクl
∈L
(c,p
)の利用可能 帯域の推定値m
lと共有度数d
lは以下のように定 義される。m
l=
Min{bw
(c, p
)|
l
∈L
(c, p
),
c
∈C
,p
∈P}
d
l=|{
c| l
∈L
(c, p
),
c
∈C
,p
∈P }|
各物理リンクの利用可能帯域の推定値m
lと共 有度数d
lに基づき、各ノードc
∈C
の親ノードを次 のように決定する。 すべてのp
∈P
に対し、c
が希望品質のストリー ムを受信可能かどうかを、各リンクの利用可能帯 域の推定値を用いて調べる。ストリームを配信可 能なノードが一つだけの場合は、そのノードを親 ノードとして決定する。ストリームを配信可能な ノードが複数存在する場合は、L
(c, p
)に属するリ ンクのうち、共有度数あたりの利用可能帯域の最 小値を求め、これを最大化するノードをc
の親 ノードとして決定する。このようなノードが複数個 ある場合は最もホップ数の近いノードを親ノード とする。c
の親ノードp´
が決定した後は、各物理 リンクに対しc
が増加させた共有度数を無効にし、L
(c, p´
)に属する各リンクの利用可能帯域の推定 値から、c
の要求品質分の帯域を引く。中央サーバの指示により各ノードのプロセス上 で生成されたインスタンスは、ユニークな
ID
をキー として、Hashtable
に登録し、ID
により参照および メソッド呼び出しができるようにした。また、提案 システムを実装する上で、各モジュールの状態の 変化(接続が切れた、バッファされたデータ量が決 められた値以上になった、等)に応じて、各種の処 理を行う必要があるが、このために、中央サーバに キューを用意し、モジュールの状態が変化すると、 モジュールはRMI
により中央サーバのキューに状 態の変化を知らせるメッセージを入れるようにした。 中央サーバは、順にキューからメッセージを取り出 し、必要な処理を行う。 3:ビデオストリームを扱うための方法 モジュール間のデータ送受信として、Java
クラス ライブラリのInputStream/OutputStream
のよう な仕組みを用いることもできるが、処理の途中でピ クチャサイズを変更し、トランスコーダ等を再起 動するような処理の実現が煩雑になる。プロトタ イプシステムでは、モジュール間のデータの送受 信に独自のクラスを用いた。これは、データ書き込 み時に明示的にデータの切れ目を宣言し、読み込 み側は宣言されたデータの切れ目までを通常と同 じように読み込むことができるものであり、その後 は一度EOF
まで読んだ後と同じようにread
メソッ ドが−2
を返し、続いて次のデータをまた読み込む ことができる。これにより、各インスタンスを再生 成することなしにデータの切れ目を容易に処理で きるようにした。
JMF
(Java Media Framework
)は、各モジュールに配置されたバッファのため、遅延が非常に大 きくなる。プロトタイプシステムは、遅延を可能な 限り少なくするため、各モジュールにできるだけバッ ファを配置しないように構成した。プロトタイプシ ステムでは、各モジュールが基本的に一つのスレッ ドに対応しているが、書き込み側が
write
メソッド を呼び出すと、読み込み側がそのデータを全て読 み出すまで、書き込み側が一旦ブロックするように 構成した。これにより、write
メソッドが呼び出され た時点でスレッドの切り替えが起こり、読み出し側 のスレッドが有効になるため、少ない遅延での処 理が可能になった。 4:多数のノードで評価するための方法 評価実験をPlanetLab
上の数十のノード上で実 施 するために、以下で 述 べ る工夫 を 行った。PlanetLab
のノードの状況は、刻々と変化し、ある 日まで使用できたノードがその次の日には使えなく なったり、あるいは、その逆が毎日のように起こる。 このような状況の変化に対処するため、自動的に 各ノードの現在の状況を把握し、実験に必要な環 境を設定するためのスクリプト群を作成した。この スクリプトは呼び出し元のノードで実行されるもの と、各ノードで実行されるものに分けられる。呼び 出し元のノードで実行されるスクリプトは、その他 のスクリプトおよび必要なファイルを各ノードにscp
コマンドによりコピーし、実行する。この作業は、 ノード毎に並列に実行される。各ノードで実行さ れるスクリプトは、必要なファイルがノードにある か調べ、必要に応じてjava
の実行環境(jre
)などをwget
コマンドによりダウンロードし、インストール する。実際にこのスクリプトを使用したところ、奈 良先端大のweb
サーバより、PlanetLab
上の20
の ノードにjre
をダウンロードし、インストールするた めにかかる時間は30
分以下であった。また、製作 したjava
のクラスファイル等を20
のノードにインス トールするのにかかる時間は1
分程度であった。IV
実験および評価
MTcast
の有効性を示すために、(1
)トランス コードに伴う負荷、(2
)トランスコード木を再構築 するときのオーバーヘッド、(3
)ユーザの満足度に ついて調べた[9]
。これらの概要に加え、新たに(4
) トランスコードよるビデオ品質の劣化、(5
)バック ボーン帯域節約の効果、(6
)WAN
環境でのスター トアップ遅延とノード離脱時のデータ配信再開ま での時間、の評価結果について述べる[12].[13]
。 1:PlanetLab上での評価 実環境上での提案手法の性能を評価するため、 プロトタイプシステムをPlanetLab
上で稼働させ た。以下、ユーザノードの新規参加時の遅延時間と、 離脱時の遅延時間の計測結果について述べる。 実験の設定 解像度が180
×120
ピクセル、15fps
のビデオを 用い、音声は使用していない。ビデオコーデックと してMotion JPEG
を用いた。 ユーザノード間のビデオデータの転送には、TCP
を用いた。スケーラビリティを主に評価する ため、トランスコード木を、n
分木状に構成せず、1
レイヤを2
ノードとし、レイヤを直列に接続した。 評価実験では、18
のPlanetLab
ノードと、それ以 外のノードを2
つ用いた。すなわち、10
段のトラン スコード木と同等の実験を行った。これらのノー ドを表1
に示す。表中のkatsuo.naist.jp
でビデオ 配信サーバとユーザノードのプロセスを動作させた。 その他のノードでは、ユーザノードのプロセスをそ れぞれ一つ動作させた。PlanetLab
の各ノードは 恒常的にCPU
負荷が高く、リアルタイムトランス コードに必要なCPU
資源を確保するのが難しい ため、実験では、各ノードでトランスコードを行わ ず、受信したデータを1
フレーム分バッファしたあと、 そのまま送信することとした。実際に一般ユーザのPC
上で提案手法を利用する場合、必要なCPU
資源およびメモリは十分に確保可能であると考え られる。 スタートアップ遅延 表2
にスタートアップにかかった時間を示す。 コネクション確立とデータ受信開始は、それぞ れスタートアップ開始から、最後のノードが親ノー ドとコネクションを確立するまで、および最初の データを受信するのにかかる時間である。コネク ションの確立は、それぞれのノードが並列に実行 するので、単純に最もコネクションの確立に時間 のかかったノードの時間となる。データ受信開始 は全てのノードを経由する必要があるので、トラン スコード木の高さに比例した時間がかかるはずで あるが、実際にはコネクションにかかる時間が支 katsuo.naist.jp pl1-higashi.ics.es.osaka-u.ac.jp wakame.naist.jp planetlab3.netmedia.gist.ac.kr planet0.jaist.ac.jp planetlab1.netmedia.gist.ac.kr planetlab-01.naist.jp planetlab2.iii.u-tokyo.ac.jp planetlab-02.naist.jp planetlab1.iii.u-tokyo.ac.jp planetlab-03.naist.jp planetlab5.ie.cuhk.edu.hk planetlab-04.naist.jp planetlab4.ie.cuhk.edu.hk planetlab1.tmit.bme.hu planetlab-02.ece.uprm.edu planetlab2.tmit.bme.hu planetlab-01.ece.uprm.edu planetlab02.cnds.unibe.ch planetlab01.cnds.unibe.ch 表1 実験に用いたノード 表2 スタートアップ遅延 ノード数 コネクション確立 データ受信開始 4 8 12 16 20 10,871ms 11,681ms 15,307ms 11,317ms 12,144ms 19,040ms 16,993ms 15,307ms 18,781ms 17,562ms配的であるため、目立った増加は見られない。いず れも最大でも
20
秒未満であり、十分実用的な数値 となっている。 配送遅延 表3
に、最初のノードがデータの受信を開始して から最後のノードがデータの受信を開始するまで の時間を示す。結果は、スタートアップ遅延と同様 の傾向を示している。配送遅延は最大20
秒程度 であり、実用的な数値となっている。 ノード離脱時のふるまい 表4
に、ノード離脱時の再コネクションにかか る時間等について示す。再コネクション時間は、 離脱ノードが離脱リクエストを送ってから、離脱 ノードの下位ノードが新たな親ノード(再接続先 ノード)とコネクションを確立するまでの時間であ り、データ再受信開始時間は、新たな親から最初 のデータを受け取るまでの時間である。上記の全20
ノードを使用して、上記の実験と同様にレイヤ が直列に繋がったトポロジでビデオ配信を行って いる最中に、表中のそれぞれの離脱ノードが離脱 したときの再コネクション完了までの時間を計測 した。いずれの時間も2
秒未満であり、十分実用 的である。前述のように、この時間の間はあらかじ めバッファされたビデオデータを再生すれば、ユー ザはノードが離脱したことを意識することはない。 バックボーン帯域節約の効果 Ⅲ-1
節で述べたバックボーン帯域節約方法を 評価するため、親ノードをランダムに選択する場合、 それぞれ最も経路のホップ数の近い親ノードを選 択する場合との、ホップ数の比較を行った。トラン スコード木のレイヤあたりのユーザノード数を4
と した。経路の取得には、traceroute
を使用した。経 路中のルータのうち、ICMP Echo
に応答しないも のは全て異なるルータとして扱った。各経路の利 用可能帯域の測定には、Abing[14]
を使用した。 プロトタイプシステムがトランスコード木の構築 前に必要な経路とそれらの利用可能帯域を測定す るようにした。これらの測定は並列に行われ、一回 トランスコード木を構築する毎に全部で約10
秒か ら30
秒程度を必要とする。それぞれの方法に対し、 できあがったトランスコード木の全ての経路の ホップ数の合計を3
回ずつ計測した結果を表5
に ノード数 遅延時間 14 16 20 23 27 7,002ms 8,603ms 20,573ms 10,024ms 9,435ms 離脱ノード 再接続先ノード 再コネクション時間 データ再受信開始 planetlab1.netmedia.gist.ac.kr planetlab4.ie.cuhk.edu.hk planetlab-01.ece.uprm.edu planetlab1.tmit.bme.hu planetlab02.cnds.unibe.ch planetlab2.iii.u-tokyo.ac.jp thu1.6planetlab.edu.cn planetlab1.netmedia.gist.ac.kr planetlab5.ie.cuhk.edu.hk planetlab-02.ece.uprm.edu planetlab1.tmit.bme.hu planet0.jaist.ac.jp 1,471ms 288ms 1,114ms 1,383ms 1,541ms 61ms 1,805ms 411ms 1,657ms 1,626ms 1,841ms 1,004ms 表3 配送遅延 表4 ノード離脱時のふるまい示す。なお、Ⅲ
-1
節で述べた方法を使う場合も、利 用可能帯域の測定結果が毎回少し異なるため、測 定毎に合計ホップ数が異なる。また、ホップ数最 小で選択する場合は、毎回同じ経路が選択される。 結果より、Ⅲ-1
節で述べた方法により、ランダムに 選択するよりも約16%
ホップ数が減少し、ホップ 数が最小になるように親ノードを選択した場合、41%
ホップ数が減少した。V
おわりに
本稿では、互いに異なる多ユーザに対する効率 的な同時ビデオ配信のためのビデオ配送方法MTcast
を提案・実装し、その有効性をPlanetLab
上での実験を通して示した。今後の課題は、ビット レートのみトランスコードするのではなく、画像サ イズ、フレームレートを独立してトランスコードす る方式に拡張することである。 【付記】 本稿は、平成18
∼19
年度科学研究費補助金 (研究代表者:森將豪、基盤研究C
、課題番号18500051
)の研究成果報告書に基づきまとめた ものである。 参考文献1 G. Conklin, G. Greenbaum, K. Lillevold, and A. Lippman(2) / Video Coding for Streaming Media Delivery on the Internet / IEEE Trans. on Circuits and Systems
for Video Technology, Vol. , No. . 2 S. Jacobs and A. Eleftheriadis() / Streaming Video using Dynamic Rate Shaping and TCP Flow Control / Visual Communication and Image Representation Journal. (invited paper). 3 J. Liu, B. Li, and Y.-Q. Zhang(2) /
An End-to-End Adaptation Protocol for Layered Video Multicast Using Optimal Rate Allocation /
IEEE Trans. on Multimedia, Vol. , No. . 4 B. Vickers, C. Albuquerque and T. Suda(2) / Source-Adaptive Multilayered Multicast Algorithms for Real-Time Video Distribution /
IEEE/ACM Trans. on Networking, Vol., No., pp.2-.
5 H. Radha, M. Shaar and Y. Chen(2) / The MPEG- Fine-Grained-Scalable video coding method for multimedia
streaming over IP / IEEE Trans. on Multimedia, Vol. , No. .
6 S. Banerjee, C. Kommareddy, K. Kar, B. Bhattacharjee and S. Khuller(2) / Construction of an Efficient Overlay Multicast Infrastructure for Real-time Applications / Proc. of IEEE Inforcom 2, pp.2-. 7 V. Padmanabhan, H. Wang, P. Chow and K. Sripanidkulchai(22) / Distributing streaming media content using cooperative networking /
Proc. of the 2th Int'l Workshop on Network and Operating Systems Support for Digital Audio and Video (NOSSDAV 22), pp.-. 8 D. Liu, E. Setton, B. Shen and S. Chen(2) / PAT:Peer-Assisted Transcoding
for Overlay Streaming to Heterogeneous Devices / Proc. of th Int'l Workshop on Network and Operating Systems Support for Digital Audio and Video (NOSSDAV 2), pp.-.
方法 ホップ数 ランダム Ⅲ-1節の方法 ホップ数最小 343, 361, 335 314, 280, 277 204, 204, 204 表5 バックボーン帯域節約の有効性
9 T. Sun, M. Tamai, K. Yasumoto, N. Shibata, M. Ito and M. Mori(2) /
MTcast : Robust and Efficient P2P-Based Video Delivery for Heterogeneous Users /
Proc. of th Int'l. Conf. on Principles of Distributed Systems (OPODIS 2), pp.-.
10 PlanetLab/ An open platform for developing, deploying, and accessing planetary-scale services/ https://www.planet-lab.org/.
11 柴田、孫、玉井、安本、伊藤、森(2008)/ 異なる品質要求を持つ複数ユーザへの ピアツーピアビデオ配信手法/
情報処理学会論文誌, Vol.49, No.2, pp.568-578. 12 N.Shibata, M.Mori and K.Yasumoto(2) / P2P Video Broadcast Based on Per-Peer Transcoding and Its Evaluation on PlanetLab /
Proc. th IASTED Int. Conf. on Parallel and Distributed Computing Systems(PDCS2), pp. -, Nov. -2.
13 柴田、森、安本(2007)/多様な品質要求に対する トランスコードに基づくP2Pビデオ配信手法と その実環境での評価/マルチメディア通信と
分散処理ワークショップ, 情報処理学会シンポジウム シリーズ Vol.2007, No.9, pp.25-30, Oct.31-Nov.2. 14 J.Navratil and R.M.Cottrell / ABwE: APractical Approach to Available Bandwidth Estimation/ http://www-iepm.slac.stanford.edu/tools/abing/