プレイヤーサイド・マルチCDN


Player Side Multi CDN (プレイヤーサイドマルチCDN)とは、マルチCDNにおける最適なCDN選択をプレイヤー内部の判断ロジックで実装することであり、ストリーミングのような連続型メディアに対する次世代型マルチCDNとして期待されている。

連続型メディアの特性

マルチCDNの視点において、連続型メディア(ストリーミング)は、単発型メディア(Web)に対し以下のような特徴を持つ

  • ニーズの拡大
    •  定常的なCDN切り替えが必要
      • 連続型メディアの視聴中にも、ネットワークの状況は常に変化しており、その瞬間瞬間の最適なCDN選択が必要になる
    • 瞬間的なCDN切り替えが必要
      • スマートフォンなどにおいて網を切り替えた(例:モバイル網からWifi網)タイミングで、新しい網に最適なCDNの選択が必要になる
  • 実装の可能性
    •  マルチソースな再生が可能
      • 複数のCDNからファイルを取得しながら(例えば、交互にメディアチャンクをダウンロードしながら)、動画を再生できる
    •  プレイヤー側でのインテリジェントな処理が可能
      • プレイヤーは、ダウンロード速度の計測・統計処理をし、それをベースに次の瞬間に使うCDNを変更できる(計測・決定を連続的に繰り返すことができる)
    • CDN決定までの時間的余裕がある
      • CDN決定のために0.1秒程度の遅れが発生してもその影響は少ない(ユーザの再生までの待ち時間についての許容度がWebに比べ高い。つまり、バッファリング等により数秒待つことに慣れている)。

実装アプローチ

プレイヤーサイド・マルチCDNの基本的な実装は、以下の2種類に分かれる:

  • レイテンシ比較型
    • 再生開始時に各CDNまでのレイテンシ計測を行い、レイテンシの小さいCDNを選択する
    • 定常的、瞬間的なCDN切り替えは出来ないが、実装は容易である
    • 商用システムとしては、HolaSparkにより実装されている
  • ダウンロード速度比較型
    • 複数のCDNから継続的にチャンクファイルをダウンロードし、その速度を計測する。その計測結果により、高速なCDNからダウンロードする割合を高める
    • 定常的なCDN切り替えが可能になるが、根本的なフィアルダウンロードの部分の改造が必要である

実装例

  • mse-multicdn.html
    • console.logでダウンロード速度その他を表示しています
    • 開発者ツール(F12)でconsoleを開いて表示させてください

ベースプレイヤー

基本アルゴリズム

  • 初期CDN判定
    • Headリクエストのレイテンシ比較によりプライマリCDNを決定
  • ダウンロード処理
    • プライマリ・セカンダリの両CDNから、4:1の割合でチャンクをダウンロード
  • ダウンロード中のCDN判定(5秒単位)
    •  過去4回分の平均ダウンロード速度を比較
      • 現プライマリ:直近の4回分(連続取得)
      • 現セカンダリ:直近の4回分

4Kストリームの実行結果サンプル

  • 初期判定でレイテンシが小さかったCDN2が、そのままダウンロード速度が良好であったため、プライマリCDNを維持している

マルチCDN比較:サーバサイド vs プレイヤーサイド

<近日記述>