1.2K Views
June 22, 23
スライド概要
2021年1月に開催されたJANOG47での登壇資料です。国内CDN事業者は、キャッシュファイルやトラフィックのコントロール方法をしているのか等、CDNの仕組みを説明します。
1997年の設立以来、動画配信を主軸に事業展開。コーポレートメッセージ「もっと素敵な伝え方を。」を掲げ、テクノロジーを通じて世の中のコミュニケーションをよりよくすることを目指しています。 自社で保有・運営する独自のコンテンツ配信ネットワーク(CDN=Content Delivery Network)を活用した動画配信に加え、長年のノウハウを活かした動画の企画・制作・運用やWebサイト制作、システム開発、動画広告による収益化支援まで総合的なサービスとソリューションを提供。取引実績はメディア、大手企業をはじめ年間1,200社・10,000案件以上です。手がける技術領域は、ネットワークの物理層からアプリケーション層にわたり、日本屈指の大規模配信や最先端案件の実績も多数あります。 エンジニア向けオウンドサイト「Voice」公開中! https://voice.stream.co.jp/
JANOG47 Day3 2021年1月29日(金) 10:15~11:00 国内CDN事業者による CDNの仕組みの解説と課題の共有 (株)Jストリーム N.T. 2017年9月8日 株式会社Jストリーム © J-Stream Inc. All Rights Reserved.
本日の流れ ▶セッションの中身 ◼国内CDN事業者の実際(設備、運用)と悩みについて議論させてください。 ◼主に動画配信を中心として話をしていきます。 ▶目次 1. 動画(コンテンツ)配信の仕組み 2. CDNの仕組みについて(設備設計) 3. 各社のCDN実装と課題 (キャッシュサーバの構成とトラフィック誘導など) 4. 議論 © J-Stream Inc. All Rights Reserved. 2
自己紹介 ▶名前:N.T. ▶出身地:山形県天童市 ▶所属:株式会社Jストリーム (AS24253) ◼ 新卒でJストリーム入社 ▶お仕事 • 動画配信のためのネットワーク構築、運用 • メディア企業さん向けの動画配信システムの提案とか構築とか • CDN(Content Delivery Network)の構築、運用 ▶好きなもの • 酒 → 特に日本酒好き • ロードバランサー → 家にBIG-IP • 最近19インチラックを購入してしまう、、、 © J-Stream Inc. All Rights Reserved. 3
Jストリームとは 最先端の動画ソリューションをあらゆる企業に ⚫ 国内最大の企業向けストリーミングサービスプロバイダー 1997年に世界初のストリーミング専業サービスプロバイダーとして創業、2001年IPO(東証マザーズ4308) 動画の全てに精通する 専門性 シェアNo.1の動画配信システム 高品質な配信ネットワーク 配信サービスで培った技術力と経験 制作・開発の専門的な体制 あらゆるニーズを実現できる 総合力 豊富な実績と経験に裏付けられた 信頼性 © J-Stream Inc. All Rights Reserved. クリエイティブから開発・運用まで エンドトゥエンドでリソース提供 きめ細やかなサービス・ソリューション 年間1,200社以上の実績 数多くのお客様に認められた サービス・サポート 4
Jストリームとは CDN/配信インフラ 収録スタジオ/制作環境 六本木スタジオ 自社保有CDN/配信サーバー 24/7での有人監視 配信プラットフォーム 撮影/配信機材 人的サポート・制作/運用体制 動画配信・音楽ストリーミング配信など アカウント営業+専任スタッフによるサポート © J-Stream Inc. All Rights Reserved. 5
1 動画(コンテンツ)配信の仕組み © J-Stream Inc. All Rights Reserved. 6
インターネット動画配信のプロセス 撮影 配信するための動画を撮影する 圧縮・エンコード 非圧縮の動画データはインターネット上では事実上配信できないため、 視聴デバイスやネットワーク環境に合わせた圧縮やエンコードを行う 送信 圧縮した動画ファイルを、ユーザーに配信するためのサーバに送信する 配信 サーバに格納された動画ファイルをインターネットを介して配信する 復元 各ユーザー端末で、動画ファイルを視聴に適した状態に復元する © J-Stream Inc. All Rights Reserved. 7
インターネット動画配信の種類(ライブ配信) ▶撮影から配信までリアルタイムに実施 現地 ユーザー リアルタイムエンコード • • • エンコード(変換・圧縮)とユーザー端末による デコードが行われるため、遅延が発生 (配信方式やユーザー環境により異なるが10秒~1分) 同時に視聴するユーザーが増えることに応じて 動画配信サーバを増やしていく必要があり、 配信コストもリニアに増える DVR(追いかけ再生機能)により、ライブ配信中の 巻き戻しや一時停止が可能になった © J-Stream Inc. All Rights Reserved. 8
インターネット動画配信の種類(オンデマンド配信) ▶すでにある動画ファイルをいつでも見ることができる録画型の配信 ユーザー 動画配信サーバ網 動画ファイル ストレージ(保存用サーバ) • • • 動画ファイルはストレージに蓄えられ、 ユーザーは動画配信サーバから動画を視聴 保存する動画ファイルが増えることに応じて、 ストレージを増やしていく必要がある 同時に視聴するユーザーが増えることに応じて、 動画配信サーバを増やしていく必要がある © J-Stream Inc. All Rights Reserved. 9
動画配信の歴史 ▶配信フォーマット、OS、端末等の移り変わりの歴史 ◼ストリーミング黎明期(1999~2005) ⚫ 3大フォーマット(Real、WMT、QT)の時代 ⚫ シェアはWindowsMediaが中心 ◼Flashストリーミングの台頭(2005~2012) ⚫ YouTubeが普及し、FlashがストリーミングPlayerの主体に ⚫ MicrosoftはSilverlightをリリースするも苦戦 ◼スマートフォンの普及(2012~) ⚫ 端末がPCからスマートフォンへ ⚫ それぞれの端末にあった配信方式の選択が必要に ⚫ HLS登場と標準フォーマット化 ⚫ HTML5(MPEG-DASH) ⚫ 低遅延配信へ © J-Stream Inc. All Rights Reserved. 10
端末別のストリーミング配信方式(5年前ぐらい) PC ▶HLS(pHLS) ▶ Appleが開発したHTTPを使用したストリーミング方式。モダンブラウザでは標準対応 ▶ MPEG-DASH ▶ 次世代の動画配信技術として作成されたISOの規格 モダンブラウザでHTML5から利用可能 ▶ HDS(pHDS), SmoothStreaming, RTMP(RTMPe) ▶ HDS:Adobe, SmoothStreaming:MicrosoftのHTTPを用いたストリーミング方式 ▶ RTMP:Adobe FlashPlayerで使用されるストリーミング方式 専用のプロトコルのため遅延が少ない iOS ▶ HLS (pHLS)(HTTP Live Streaming) Android ▶ HLS(pHLS) ▶ Appleが開発したHTTPを使用したストリーミング方式 ▶ iOSでの標準ストリーミング配信方式 ▶ Android4.x以上で対応可能。(※機種依存問題があり) ▶ RTMP/HDS(RTMPe/pHDS) ▶ AdobeAIRランタイムをインストールすることで対応可能 IPTV/Smart TV ▶ IPTV ▶ いわゆるアクトビラ方式。独自のHTTPベースのストリーミング仕様 ▶ HLS ▶ SmartTVや外付けデバイス等での実装は多いが、各社によって実装はバラバラ (PHLSは非対応等) ▶ MPEG-DASH ▶ 次世代の動画配信技術として作成されたISOの規格 © J-Stream Inc. All Rights Reserved. Hybridcast端末での実装が進む 11
端末別のストリーミング配信方式 PC ▶HLS ▶ Appleが開発したHTTPを使用したストリーミング方式。モダンブラウザでは標準対応 ▶ 低遅延配信に対応したAL-HLS, LL-HLSなどに進化 iOS ▶ MPEG-DASH ▶ 次世代の動画配信技術として作成されたISOの規格 モダンブラウザでHTML5から利用可能 ▶ DRM等で利用されることも多い Android 動画配信もHTTP(s)上での アプリケーションとしての存在 ▶ RTMP ▶ RTMP:Adobe FlashPlayerのサポート終了で配信フォーマットとしては利用されなくなった →エンコーダーから配信サーバ間のインジェストに利用されることが多い ▶ CMAF/LL-HLS ▶ セグメント内をさらに細かにセグメント化することで低遅延を実現 ▶ WebRTC ▶ Webブラウザ上での双方向リアルタイムコミュニケーションを可能にするフレームワーク © J-Stream Inc. All Rights Reserved. 12
3 各社のCDN実装と課題 (キャッシュサーバの構成とトラフィック誘導など) © J-Stream Inc. All Rights Reserved. 13
CDN(Content Delivery Network)とは ▶CDNとは、動画データを効率よく最適に配信する仕組み ◼ CDNはContent Delivery Networkの略で、多数のコンテンツ配信サーバで 構築されたネットワークのこと。 コンテンツをCDNが一時的に保存(キャッシュ)し、オリジンサーバにかわってエンドユーザーへ配信する。 配信サーバにデータをキャッ シュしているため負荷がかかり にくい CDNの配信サーバにデータを 一時的に記憶(キャッシュ) 多数の配信サーバーで構成したCDN エンドユーザーへ、最適経路 で効率的にコンテンツを配信 どうやってキャッシュ ヒットさせるかの工夫 ISP障害時は 他のISPへ誘導 © J-Stream Inc. All Rights Reserved. 14
CDN基本構成 ▶ オリジンサーバも展開 ◼ ストレージ、オリジン(Web/動画)、DRM等のサーバも分散配置 ▶ キャッシュサーバ ◼ ◼ ◼ ◼ ◼ 1つのPoPに複数台の物理サーバで構成されたキャッシュサーバ(クラスタ)を複数設置 PoPは自社AS(ASN:24253)に加えて、複数のデータセンター事業者のネットワーク内にも設置(Static拠点) AS拠点は複数IXに接続し、ISP様とピアリング(ピアリング歓迎!) クラスタをグループ化しており、設定ファイルの管理や誘導方法を変えている(顧客別に分離など) ライブ、オンデマンド、Webなどでキャッシュサーバは分離していない(サーバ内部でキャッシュ領域などを分割) Internet オリジンサーバー CDN Cache (AS拠点) IX GSLB CDN Cache (Static拠点) キャッシュサーバー © J-Stream Inc. All Rights Reserved. Internet エンドユーザー 15
キャッシュサーバ構成 ▶ クラスターの構成 ◼ フロントとストアは物理的には1台のサーバにプロセスを分けるなどして実装している=全サーバが同一構成になるようにしている →キャッシュサーバの増設が容易、用途転用(オンデマンド→ライブ)をロードバランスだけで実現可能 ◼ 複数台のキャッシュサーバノードで1つのクラスタを構成している。増設はクラスター単位で実施 ▶ フロント ◼ ユーザーアクセスを受け、SSL処理やURL変換、トークン認証などなどの処理を担当 ◼ キャッシュ容量は少、メモリでヒットさせる(フロントでキャッシュヒットしないアクセスがストア側に流れる) ◼ フロントサーバがストアサーバへアクセスする際にURL毎にアクセスするサーバをバランシングしている →これにより、ストアサーバのロードバランスとクラスタ化を実現している ▶ ストア ◼ SSD(NVMe)を大量に搭載し、キャッシュヒットさせる ◼ 1台のストア用サーバ(プロセス)は全URLではなく、フロントサーバでバランシングされた特定URLをキャッシュする ◼ ストアサーバがオリジンサーバへのアクセスを行う クラスター SSD Memory キャッシュ サーバノード オリジンサーバ ライブとオンデマンドではキャッシュ ファイルの利用方法(TTL)が異なるので、 利用するストレージ領域も分けている。 ストア URL毎に ハッシュ分散 © J-Stream Inc. All Rights Reserved. フロント キャッシュ サーバノード 16
広域負荷分散の仕組み ▶キャッシュサーバへの誘導 ◼ 複数設置したキャッシュサーバに対して、ユーザーアクセスをどのように割り振るか ▶広域負荷分散装置(GSLB)の利用 ◼ バランシングは各クラスター毎に制御 ◼ ISPのキャッシュDNSサーバのIPアドレスを元に制御 ◼ IPアドレスやAS番号による制御 →IXで接続しているユーザーはIX優先 →トラフィック割合もあるので調整も ピアリングしていない ISPに対しては、DC事 業者のネットワーク内 に設置したキャッシュ サーバ群に誘導 広域負荷分散(GSLB) 各拠点のルーターの フロー情報から、誘 導先情報を自動アッ プデート ◼ 重みづけラウンドロビン ◼ エンドユーザーとの最短距離(RTT) Internet IX CDN Cache (AS拠点) ※上記の方法を併用 ピアリングしている IPSに対してはAS拠点 のキャッシュサーバ群 に誘導 CDN Cache (Static拠点) ISP © J-Stream Inc. All Rights Reserved. ISP ISP ISP 17
キャッシュヒット率向上への工夫 ▶URL毎に誘導するキャッシュサーバクラスタを変えることで、キャッシュ容量を拡大させる ◼ キャッシュサーバのクラスタ毎に配信する(エンドユーザーがアクセスする)URLを分ける ◼ 中間サーバ(CMS)が動画毎にアクセスURLを出し分ける(URLのルール化) ◼ ロードバランス時にURL毎のActive/Standby構成にする(ロードバランス方法をURL毎に変える) 全クラスタに全URLを誘導する場合に比 べて、キャッシュ容量を3倍にできる アクセスURLリスト(ルール) クラスタA URL-A : Activeクラスタ 動画A:URL A https://urla.example.jp/moviea.m3u8 クラスタB URL-B : Activeクラスタ 動画B:URL B https://urlb.example.jp/movieb.m3u8 URL-C : Activeクラスタ 動画C:URL C https://urlc.example.jp/moviec.m3u8 オリジン サーバー クラスタC 中間サーバ 疑似キャッシュサーバクラスター © J-Stream Inc. All Rights Reserved. 18
マルチCDNへの対応 ⚫ 目的 ⚫ ピークトラフィック対策 ⚫ 視聴品質の向上(ISPや地域によって視聴品質には違いが出る) ⚫ 提供する側としての難しいところ ⚫ 各CDN毎に仕様や挙動は違う → 仕様や挙動の違いを補う必要がある CDN間のバランシングはGSLBや CDNセレクター(次ページ)を利用 ⚫ 設定やテストはCDN毎に実施、レポーティングなど運用面の考慮も必要 ⚫ 利用するCDNが増えた場合はオリジンサーバへの負荷も考慮が必要 GSLB 自社CDNクラスターをオリジンの間に入 れることで、各CDN毎の仕様差異の吸収、 オリジン負荷の軽減を図る 自社CDNクラスタ(B,C) オリジンサーバ 自社CDNクラスタ(A) 他社CDN © J-Stream Inc. All Rights Reserved. 19
マルチCDNセレクター • • • 複数CDNを特定の条件に基づき自動的に切替える事で配信品質を確保する仕組み 各種データをリアルタイム計測 ⁃ ⁃ CDNの稼働率、レスポンスタイム、スループット 動画の場合は、視聴Playerのバッファリング数・時間、再生開始時間、エラー数等 実装方法 • • GSLBと同様に名前解決を用いてCDNを切り替える 動画プレイヤーに組み込み、セレクターのAPIをコールし動的に切り替える 視聴Player CDN振分けロジック (スピード、品質、 費用等)を設定 CDNセレクター サービス群 設定ロジックに従い、 条件発生時にCDNを 自動的に変更 Openmix CDNサービス オリジン サーバ CDN1 CDN2 視聴Playerのバッ ファリング数・時間、 再生開始時間、エ ラー数等を把握 MUX Radar CDNの稼働率、レスポ ンスタイム、スルー プットを計測 © J-Stream Inc. All Rights Reserved. CDN3 20
WebCDNと動画CDNの違い ▶動的ファイルをキャッシュ可能かどうかが動画CDNとWebCDNの大きな違い ▶CDNキャッシュサーバから見た動画ファイルとWebページ(動的ファイル)の違い ◼ 動画ファイル :URLが一意に決まる ⚫ http://www.example.com/video/video001.ts ⚫ CDN側のキャッシュも一意に決まる(1ファイルとなる) ◼ Webページ(動的ファイル) クエリストリングやクッキーなどを キャッシュキーとしキャッシュファイ ルを生成することで、動的ファイルで もキャッシュヒットさせる :URLが一意に決まらない(複数存在する) http://www.example.com/index.php?p=123&user_id=5432 http://www.example.com/index.php?p=123&user_id=5431 http://www.example.com/index.php?p=123&user_id=5430 ※“?” 以降をクエリストリングと呼ぶ クエリストリング以降を無視してキャッシュした場合、ユーザーやページ毎の出し分けが動作しなくなる 例えば、本当は別の結果を返すべきユーザーにして、キャッシュされている別のユーザーのファイルを配信してしまうなど ⚫ クエリストリングを含めてキャッシュした場合、キャッシュサーバのキャッシュから配信できる可能性が低下する(キャッシュヒット率の低下) その結果、オリジンサーバへのアクセス増加、サイト全体のパフォーマンスの低下が懸念される ⚫ ⚫ ⚫ ⚫ 動画ファイル Webページ(動的ファイル) index.php?p=123&user_id=5432 index.php?p=123&user_id=5431 video001.ts index.php?p=123&user_id=5430 キャッシュファイルが一意に確定 ※m3u8にはクエリがいっぱいついて くる場合もある。。。 キャッシュファイルが複数存在 ・オリジンへのアクセス増 ・キャッシュヒット率の低下 © J-Stream Inc. All Rights Reserved. 21