ビデオストリーミング

あなたは1日に何時間ビデオを視聴していますか?

NetflixとAmazon Primeがビデオの見放題サービスを日本国内で開始したのは皆さんが大学に入る少し前の2015年9月のことでした.それまでは皆DVDをレンタルしたりテレビ放送を録画予約したりしてコンテンツを視聴していましたが,見放題サービスの普及によって我々の生活スタイルは一変しました(10年前は,ワンクリックでサザエさんの第1話が見れるようになるとは思わなかったです;-).

ビデオ配信サービスの普及は,それを支えるネットワークの側にも大きな影響を与えています.2018年末の時点でインターネット上のトラフィックの数十パーセントがビデオ配信によって占められており,この傾向は,画質の向上や視聴者数の増大などに伴って今後ますます加速していくものと予想されています.そのような高品質のサービスを安定して提供するためには,(ホームネットワークなどのように)サーバをひとつ用意するのでは不十分です.実際,YouTubeなどのビデオ配信サービスの多くはAkamaiAmazon CloudFrontなどのコンテンツ配信ネットワーク(CDN)を利用して提供されています(Googleによる買収後は,Google自前のCDNが使われているらしいです).ただしCDNから視聴者への配信自体は,CDN上で最も視聴者側に配置されているエッジサーバーと呼ばれる高性能なサーバによって(ある意味集中的に)なされており,そのため求められる処理量が急激に増加すると,提供されるサービスの品質が大きく低下してしまうケースが十分あり得ます(YouTube Liveの中継映像が突如モザイク状になってしまった悲しい経験はありませんか?).

私たちが研究しているピアツーピア(P2P)型のビデオストリーミングシステムは,そのようなエッジサーバの処理能力の限界を,エッジサーバからサービスを受けている通常のクライアントコンピュータ(ノード)たちの助けを借りることで打破しようというものです(要は,ドラゴンボールに出てくる「元気玉」です).仮に各ノードが受けているサービスの量を1,各ノードが他のノードに提供できるサービス量の上限を2としましょう(ここでは,サービス量はビデオのビットレートだと考えてください).ノードの助けを借りない場合は,エッジサーバはすべてのノードに直接サービスを提供するだけの処理能力を持たなくてはなりません.しかしN台のノードが提供できるサービスの総量は2N(>N)ですから,ノードの助けがある場合は,エッジサーバは,(究極的には)1台のノードにサービスを提供するだけの能力があればよいことになります.もちろん実際のストリーミングシステムでは,サービスを中継する回数をできるだけ低く抑える必要があるため,上の試算ほどの効果は見込めません.しかしたとえば転送回数を2回に制限したとしても,エッジサーバの負担は,ノードの助けを借りない場合の1/7に減らせることがわかると思います(高さ2の完全二分木を考えましょう).

そのようなP2P型のビデオストリーミングサービスは,実は皆さんの知らないところですでに実用化されています.ミストCDNPeerCDNなどがその代表例です.また2012年に開催されたロンドンオリンピックでは,NHKによるインターネット配信が行われており,チャネルのいくつかは実験的にP2P配信されていました(画質はかなり良かったです).ビデオに限定しなければ,音楽ストリームの配信にP2Pを利用していた事例としてSpotifyが挙げられます(クレームが多くて現在は使っていないらしい).しかし今後その性能や利便性をさらに向上させていくためには,いくつもの課題を解決していく必要があります.

本研究室で現在取り組んでいる具体的な課題は,例えば次のようなものです:

○ P2Pビデオストリーミングの高性能化

各参加ピアが帯域を拠出するよう促すためのインセンティブ機構や,帯域を有効活用するためのコーディング手法・配信手法などについて研究します.

○ WebRTCを用いたビデオ会議システム

上級生がこれまでにつくった基本システムをベースにし,カメラアングルの自動切り替えや割り込み機能などを実現します(研究室公開でデモあり).来年度は大学祭やオープンキャンパスなどでの実証実験を計画しています.

○ 攻撃耐性・障害耐性のあるビデオストリーミング手法の研究

信頼できるピアにできるだけ公平に仕事を負担してもらうようにすることで,攻撃や障害の影響を最小化することができます.