Technology

プロダクト開発の舞台裏や
使用している技術の話

図解で分かるCDNの仕組みと技術(第2回:動画編)

図解で分かるCDNの仕組みと技術(第2回:動画編)

エンジニアのF.O.です。 普段はJストリームの自社CDNサービスであるJ-Stream CDNextの開発・運用チームに参画しています。CDNのEdgeサーバの機能追加や、お客様向けの管理コンソールの開発、日常的に発生するメンテナンス作業など、幅広くサービス運用に関わっております。 この講座では、図解をしながら、わかりやすくCDNの仕組みとそこで使われている技術を解説していきたいと思います。 

動画配信や大規模ファイル配信に特化したCDNの機能

第1回では、CDNの基本的な仕組みやメリットについて解説しました。CDNは様々な機能を持っています、動画の場合はどのような機能を使えば有効なのか迷うこともあるのではないでしょうか?

第2回は動画配信のセキュリティーを高めたり、大容量はファイル配信を効率化するためのCDNの機能について解説していきます。

認証配信

認証配信の技術を使うことで、動画コンテンツを配信したいユーザーを制限することができます。

動画コンテンツへのアクセス権をユーザー単位で認証サーバーで管理することで、指定したユーザーのみに動画コンテンツの再生を許可するトークンを発行し、視聴を制限します。また、動画ファイルの暗号化を組み合わせることで、より高度なセキュリティーを実現しています。

利用シチュエーション

視聴にチケットの購入が必要であったり、会員制のWebサイトで、会員になったユーザーにのみ動画を公開したい場合など、動画コンテンツを配信したいユーザーを限定したい場合に有効です。

仕組み

今回は、現在の動画配信でよく使用されている、「HLS配信」の場合を例に解説します。

※HLS:HTTP Live Streaming

 

①ユーザーから動画再生要求があった場合、「会員管理サーバ」は動画コンテンツ配信用の認証トークンをユーザーの端末(動画プレイヤー)に返却します。

②端末は「認可サーバ」にアクセスし、認証トークンを使用して「Master Playlist」や「Media Playlist」を取得します。

③端末は「Master Playlist」や「Media Playlist」に記載のURLにしたがいCDNから暗号化された動画ファイル(TSファイル)を取得します。

④端末は暗号化された動画コンテンツファイルを複合し動画を再生します。

HLSでの認証配信イメージ図

Geolocation制限

ジオロケーション(Geolocation)とはユーザーの位置情報を扱うことのできる技術です。

地球、土地を表す単語「Geo」と位置、場所を表す単語「Location」を組み合わせた造語になります。ジオロケーション技術を使うことで、ユーザーの地理的な位置を取得して利用する制御が可能になります。

位置の検出には、GPSを利用した方法や無線LANのアクセスポイントなどの電波強度を利用した方法など様々な方式が存在しますが、ここではインターネット上のIPアドレスを利用した方法を解説します。

ジオロケーションを使用することでCDNにおいても、位置情報を利用した制御が可能です。

利用シチュエーション

例えば、著作権上の理由などで配信する動画コンテンツについて、日本国内のユーザーにのみに視聴を許したい、海外からの視聴を国別で制限したい。といった時など、動画コンテンツを配信したい地域を限定したい場合に有効です。

仕組み

①ユーザーの位置情報を検出するための情報としてアクセス元のIPアドレスを取得します。

②CDNのシステム内にはこのIPアドレスと国や都市を紐づけた辞書データを保有しており、ユーザーのアクセス元のIPアドレスと照会することで、ユーザーがアクセスしている国や都市を特定します。

③特定した国や都市の情報を元にアクセスの許可もしくは拒否を制御します。

※辞書データは定期的に更新されており、IPアドレスと位置情報の流動的な対応変更が発生してもCDN上のシステムに反映されるようになっています。また、辞書データをシステム内部に持つことで高速な位置の判定を実現しています。

 

 

Geolocation制限のイメージ図

RangeCache

ファイルサイズの大きい動画コンテンツをダウンロードさせるような配信方式の場合、RangeCacheの技術を利用することで、動画コンテンツを小さいサイズに分割してCDNにキャッシュさせることができます。

ユーザーが必要とするファイルの一部分のみを小分けにしてオリジンにリクエストしキャシュできるため、初回(1人目)のアクセスですぐにキャッシュが生成され、次回(2人目以降)のアクセスでキャッシュを利用できるようになり、キャッシュの利用効率が上がり、オリジンサーバ側の負荷を低減することができます。

また、mp4のプログレッシブダウンロード再生では、動画の途中にシーク移動した場合でも、動画全体を読み込む必要がなく、部分的な読み込みで再生できるようになるため、ダウンロードの待ち時間を削減することができます。

利用シチュエーション

例えば「.mp4」の動画ファイルを直接ダウンロードさせたいといった、ファイルサイズの大きいコンテンツを配信したい場合に有効です。 動画ファイル以外にもサイズの大きい「.zip」圧縮ファイルなどの配信などにも利用できます。

仕組み

①HTTPのRangeヘッダフィールドを利用して取得するデータの範囲(サイズ)を指定してオリジンサーバにコンテンツを要求します。

②オリジンサーバから指定したデータの範囲のコンテンツを取得します。

③指定した範囲で分割されたコンテンツをCDNにキャッシュします。

④ユーザーはCDNから分割されたコンテンツのデータを連続的に取得することで、元のサイズの動画を視聴することができます。

※オリジンサーバー側でRangeリクエストがサポートされている必要があります。

 

 

RangeCacheを使ったCDNへのキャッシュイメージ図

※記載内容は、公開当時のものです。その後、状況が変化していることがあります。

【関連情報】 ※別サイトのJストリームコーポレートサイトへリンクします。

J-Stream CDNext サービス紹介ページ