エンジニアの大場です。普段はJストリームの自社CDNサービスであるJ-Stream CDNextの開発・運用チームに参画しています。CDNのEdgeサーバの機能追加や、お客様向けの管理コンソールの開発、日常的に発生するメンテナンス作業など、幅広くサービス運用に関わっております。この講座では、図解をしながら、わかりやすくCDNの仕組みとそこで使われている技術を解説していきたいと思います。
動画配信や大規模ファイル配信に特化したCDNの機能
第1回では、CDNの基本的な仕組みやメリットについて解説しました。CDNはさまざまな機能を持っていますので、動画の場合はどのような機能を使えば有効なのか、迷うこともあるのではないでしょうか?
第2回は動画配信のセキュリティーを高めたり、大容量ファイルの配信を効率化したりするための機能について解説していきます。
〈認証配信〉
認証配信の技術を使うことで、動画コンテンツを視聴できるユーザーを制限することができます。
動画コンテンツへのアクセス権をユーザーごとに認証サーバーで管理することで、指定したユーザーのみに動画コンテンツの再生を許可するトークンを発行し、視聴を制限します。また、動画ファイルの暗号化を組み合わせることで、より高度なセキュリティーを実現しています。
- 利用シチュエーション
視聴にチケットの購入が必要であったり、会員制のWebサイトで、会員になったユーザーにのみ動画を公開したりしたい場合など、動画コンテンツを視聴できるユーザーを限定したい場合に有効です。 - 仕組み
今回は、現在の動画配信でよく使用されている、「HLS配信」の場合を例に解説します。
※HLS:HTTP Live Streaming
①ユーザーから動画再生要求があった場合、「会員管理サーバ」は動画コンテンツ配信用の認証トークンをユーザーの端末(動画プレイヤー)に返却します。
②端末は「認可サーバ」にアクセスし、認証トークンを使用して「Master Playlist」や「Media Playlist」を取得します。③端末は「Master Playlist」や「Media Playlist」に記載のURLに従い、CDNから暗号化された動画ファイル(TSファイル)を取得します。
④端末は暗号化された動画コンテンツファイルを複合し、動画を再生します。
〈Geolocation制限〉
ジオロケーション(Geolocation)とはユーザーの位置情報を扱うことのできる技術。
地球、土地を表す単語「Geo」と位置、場所を表す単語「Location」を組み合わせた造語です。ジオロケーション技術を使うことで、ユーザーの地理的な位置を取得して利用する制御が可能になります。
位置の検出には、GPSを利用した方法や無線LANのアクセスポイントといった電波強度を利用した方法など、さまざまな方式が存在しますが、ここではインターネット上のIPアドレスを利用した方法を解説します。
ジオロケーションを使用することでCDNにおいても、位置情報を利用した制御が可能です。
- 利用シチュエーション
たとえば、著作権上の理由などで日本国内のユーザーのみに視聴を許したい、海外からの視聴を国別で制限したい、というときなど、動画コンテンツを視聴できる地域を限定したい場合に有効です。 - 仕組み
①ユーザーの位置情報を検出するための情報として、アクセス元のIPアドレスを取得します。
②CDNのシステム内にはこのIPアドレスと国や都市を紐づけた辞書データを保有しているので、ユーザーのアクセス元のIPアドレスと照会することで、ユーザーがアクセスしている国や都市を特定します。
③特定した国や都市の情報を元にアクセスの許可もしくは拒否を制御します。
※辞書データは定期的に更新されており、IPアドレスと位置情報の流動的な対応変更が発生しても、CDN上のシステムに反映されるようになっています。また、辞書データをシステム内部に持つことで高速な位置の判定を実現しています。
〈RangeCache〉
ファイルサイズの大きい動画コンテンツをダウンロードさせるような配信方式の場合、RangeCacheの技術を利用することで、動画コンテンツを小さいサイズに分割してCDNにキャッシュさせることができます。
ユーザーが必要とするファイルの一部分のみを小分けにし、オリジンにリクエストしてキャシュできるため、初回(1人目)のアクセスですぐにキャッシュが生成され、次回(2人目以降)のアクセスからはキャッシュを利用できるようになり、キャッシュの利用効率が上がり、オリジンサーバ側の負荷を低減することができます。
また、mp4のプログレッシブダウンロード再生では、動画の途中にシーク移動した場合でも、動画全体を読み込む必要がなく、部分的な読み込みで再生できるようになるため、ダウンロードの待ち時間を削減することができます。
- 利用シチュエーション
たとえば「.mp4」の動画ファイルを直接ダウンロードさせたいといった、ファイルサイズの大きいコンテンツを配信したい場合に有効です。 動画ファイル以外にもサイズの大きい「.zip」圧縮ファイルなどの配信などにも利用できます。 - 仕組み
①HTTPのRangeヘッダフィールドを利用して取得するデータの範囲(サイズ)を指定して、オリジンサーバにコンテンツを要求します。
②オリジンサーバから指定したデータの範囲のコンテンツを取得します。
③指定した範囲で分割されたコンテンツをCDNにキャッシュします。
④ユーザーはCDNから分割されたコンテンツのデータを連続的に取得することで、元のサイズの動画を視聴することができます。
※オリジンサーバー側でRangeリクエストがサポートされている必要があります。
【関連情報】 ※別サイトのJストリームコーポレートサイトへリンクします。
J-Stream CDNext サービス紹介ページ

