ストリーミング向けGTM(GSLB)


大手ストリーミング事業者(Youtube、Netflix)は、一般のWeb用CDNとは異なり、URL生成(ホスト名指定)と呼ばれる方法でトラフィック制御(ユーザがアクセスするサーバを指定)しています。

ここで、(一般的なCDNで使われているDNSやBGP Anycastによるトラフィック制御ではなく)ホスト名指定を使用する理由は、ストリーミングの以下のようなサービス特性によります:

  • コンテンツ量が多いため、キャッシュ制御がシビアである
    • 全コンテンツをエッジサーバでキャッシュさせるとキャッシュヒット率が落ちる。マイナーなコンテンツはオリジンサーバのみから配信する等の制御が必要である。DNSやAnycast制御ではサーバ単位の制御しかできず、コンテンツ単位の制御を行うにはホスト名指定やURL生成が必要となる。
  • トラフィック制御のレイテンシに寛容である
    • プレイヤーは、ストリーミング再生の度にアクセスするホストをCDNに対して問い合わせるため、その分(0.1秒程度)のディレイが発生する。これはWebアクセスのような画面変化へのディレイとしては許容されないが、ストリーミングのようなアプリケーション起動であれば許容範囲となる。
  • その他理由
    • ストリーミングの場合、動画自体のURLはコンテンツ管理システムがもともと動的に生成している(Webの場合URLは固定)
    • ユーザは動画自体のURLを直接見ることは無い(Webの場合、ユーザはURLでコンテンツを認識している)
    • ストリーミングサービスがそれぞれ独自の動画プレイヤーを提供しており、プレイヤーで様々な制御が可能(Webの場合、ブラウザは標準ブラウザを使う。細かな制御も難しい)

国内独自実装への道(プラン)

国内で本式なストリーミング用CDNを実装した場合の概要を記載します:

  • サーバの種類
    • コアサーバ
      • ミラーベース(全コンテンツを保持する)
      • 東京と大阪に配置
    • エッジサーバ
      • キャッシュベース(コアサーバをオリジンサーバとする)。
      • ISP等に配置
  • リクエスト制御
    • コンテンツ別制御
      • メジャーコンテンツ:コアサーバとエッジサーバの両方から配信する
      • マイナーコンテンツ:コアサーバのみから配信する
      • 補足
        • メジャー・マイナーは、それぞれのコンテンツの属性として制御される。内部的には「コンテンツのメジャー属性がONであれば、エッジサーバを利用する」というルールとなる
    • ネットワーク別制御
      • レベル1(デフォルト、大まか):地域別制御 (IPアドレスの県別情報)
        • 東京と大阪のサーバに割り振る、ざっくりとしたデフォルト制御(ネットワーク的に最適ではない場合がある)
      • レベル2(中粒度):AS別制御(IPアドレスのAS(ネットワーク)番号)
        • ISP内部にエッジサーバがある場合はそれを使用する
        • 地域別情報を上書きする詳細制御(東京、大阪)
      • レベル3(詳細):IPブロック別制御
        • ISP内部の詳細制御(ISP内部に複数ロケーションでエッジサーバを展開している等)

実装サンプル

GeoLite2をベースにしたサンプルを以下のページに配置しました。

国内ストリーミング向けGSLBデモ


コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です