P2P 通信技術 : BitTorrent プロトコルを用いた大容量データ配信 株式会社コナミデジタルエンタテインメント佐藤良 自己紹介 仕事 オンラインゲームのネットワーク技術開発 2004~ NAT 越え 2006~ BitTorrent 趣味 習い事 経済難でお休み中 水泳 PS3 もダイエット成功したらしいので 頑張ろう チームへの技術サポート 2009/9/1 1/50
ダウンロードコンテンツが増えてきた 様々な物がダウンロードできる ゲーム本体 パッチ 追加データ ムービー ダウンロードしたことはありますか? 快適にダウンロードできましたか? 配信されている方はおられますか? ダウンロード集中で困ったことはありませんか? 配信費用がかさんでいませんか? 2009/9/1 2/50 本日のテーマ 大容量データを配信する方法 あるパッチの日別ダウンロード数の変化 日別 2008/11/18 2008/11/20 2008/11/22 2008/11/24 2008/11/26 2008/11/28 2008/11/30 2008/12/02 2008/12/04 2008/12/06 2008/12/08 2008/12/10 2008/12/12 2008/12/14 2008/12/16 2008/12/18 2008/12/20 2008/12/22 2008/12/24 2008/12/26 2008/12/28 2008/12/30 2009/01/01 2009/01/03 2009/01/05 2009/01/07 2009/01/09 2009/01/11 2009/01/13 2009/01/15 2009/01/17 2009/01/19 2009/01/21 2009/01/23 2009/01/25 2009/01/27 2009/01/29 2009/01/31 ピーク帯域を保証する設備を用意するか? そもそも用意できるのか? 2009/9/1 3/50
本セッションの構成 2009/9/1 4/50 2. データ配信方法 2009/9/1 5/50
一般的なデータ配信方法 Web サーバで配信 サーバの負荷分散が必要 回線がボトルネックになる データセンタ インターネット 2009/9/1 6/50 大容量データ配信する際の問題点 問題点 回線のボトルネック ピーク時のトラフィックが大きく 数日で治まってしまう» 通常時の 100 倍あるケースも. 海外への配信で速度が出ない 解決策 1 ダウンロードが集中しないようにする 2 サーバ増設 回線帯域増強する 3 CDN( コンテンツデリバリネットワーク ) を利用する 複数のデータセンタ (DC) から配信するタイプ キャッシュするタイプ 4 P2P 通信を利用する 2009/9/1 7/50
CDN( 複数 DC) で配信 予めコピー 配信サーバ 配信サーバ オリジン データセンタ データセンタ データセンタ インターネット 2009/9/1 8/50 CDN( キャッシュ ) で配信 オリジン 初回のみ データセンタ インターネット キャッシュサーバ キャッシュサーバ キャッシュサーバ キャッシュサーバ 2009/9/1 9/50
P2P 通信を利用して配信 オリジン データセンタ インターネット 2009/9/1 10/50 月額費用の試算例 目標スペック (0.5GB 4 万 DL = 20TB, ピーク 2Gbps) 費用の比較 Web サーバで配信 (1Gbps 共用, 2 台 )»10Mbps 共用, 2 台»1Gbps 共用オプション 2 17,600 円 / 月 420,000 円 / 月 計 437,600 円 / 月 CDN(20 円 /GB)» 配信料 400,000 円 / 月» オリジンサーバ (10Mbps 共用, 1 台 ) 7,800 円 / 月 P2P(10Mbps 共用, 4 台 ) 計 407,800 円 / 月 31,200 円 / 月 2009/9/1 11/50
比較表 費用 帯自域社で用意すべき 非集中時配信速度 集中時配信速度 配信初期速度 アクセス集中耐性 ワールドワイド配信 1 カ所のデータセンタから Web サーバで配信 高多 CDN 利用 ( 複数 DC) 高極少 ~ CDN 利用 ( キャッシュ ) 高小 ~ P2P 利用低小 ~ ~ ~ 2009/9/1 12/50 総転送量はほとんど同じ 転送量の内訳イメージ 1 カ所のデータセンタから Web サーバで配信 Web サーバから CDN 利用 ( 複数 DC) CDN のデータセンタから オリジンサーバから CDN 利用 ( キャッシュ ) P2P 利用 キャッシュから プロトコルオーバーヘッド ピア間 この方式に注目 オリジンサーバから 配信費用がユーザ ( もしくは ) に転嫁されていることに注意 2009/9/1 13/50
P2P ファイル転送プロトコルの選択 いろいろあるが. 採用条件 配信ファイルを管理できる 匿名性が無い こなれている BitTorrent プロトコルを採用 特徴 商用版 オープンソース版がある Linux のディストリビューションや PC ゲームの配布で実績がある クライアントの IP アドレスが分かる 2009/9/1 14/50 3. BitTorrent プロトコルの適用 2009/9/1 15/50
BitTorrent のシステム構成 torrent ファイルを配信 Web サーバ トラッカー 接続を管理する ファイルを100% 持っているノード アップロードするのみピア ( シーダ ) データセンタ ファイルを100% 持っていないノード ダウンロードおよびアップロードする インターネット トレント アップロード / ダウンロードするもの ピア ( リーチャ ) 2009/9/1 16/50 torrent ファイル ( メタファイル ) の内容 announce キー トラッカーの URL( アナウンス URL) info キー ピース長 各ファイルの情報 パス名 / ファイル名 ファイルサイズ ピース情報 ハッシュテーブルサイズ 各ピースのハッシュ値 ツールで表示することができる 2009/9/1 17/50
ダウンロード手順 3torrent ファイルの登録確認 Web サーバ トラッカー ピア ( シーダ ) データセンタ 1torrentファイルを取得 2トラッカーに接続 4 ピアリストを渡す 6 途中経過報告 7 完了通知 同一トレントをダウンロードしているピアのいくつかと接続する 5P2P 通信開始 ピア ( リーチャ ) 8シーダになる 2009/9/1 18/50 トレントのダウンロードイメージ ピースに分割してデータをやりとりする ピースサイズ =256KB~ 数 MB 程度 基本的にランダムにリクエストする リクエスト中 ダウンロード済み 2009/9/1 19/50
4. システム構築事例紹介 2009/9/1 20/50 ハードウェア構成 METAL GEAR ONLINE の場合 欧州用トラッカーシーダ 北米用トラッカーシーダ バックアップトラッカー トラッカー シーダ バックアップトラッカーシーダ データセンタ ( 北米 ) データセンタ ( 日本 ) 欧州版ユーザ北米版ユーザ日本版ユーザ 2009/9/1 21/50
ソフトウェア構成 1 ソフト名 PHPBTTracker+ 2.2 PHP 5.2 Apache 2.0 MySQL 5.0 ライセンス GPL PHP License Apache License GPL トラッカーシーダ データセンタ 2009/9/1 22/50 PHPBTTracker+ のステータスページ Web ブラウザでアクセスする 2009/9/1 23/50
PHPBTTracker+ の管理ツール Web ブラウザでアクセスする torrent ファイルの登録 IP アドレスアクセス制限の設定などができる 登録されているトレントの操作と情報の確認ができる 2009/9/1 24/50 ソフトウェア構成 2 トラッカー シーダ ソフト名 ライセンス BitTornado 0.3.18 GPL データセンタ ソフト名 Transmission 0.72 シンプルで非常に良い 接続数によるがメモリ使用量は 10MB ぐらい PLAYSTATION 3 と Win32 に移植 PLAYSTATION 3 版はメモリの制約で最大 16 接続までに制限 (Win32 版は 50 接続 ) ライセンス MIT License ソース公開義務無し 0.80 以降は MIT+GPL であることに注意 2009/9/1 25/50
METAL GEAR ONLINE の実装 2009/9/1 26/50 METAL GEAR ONLINE の実装 プロトコルをユーザが選択できる の帯域制御対策として http も実装する必要有り 2009/9/1 27/50
METAL GEAR ONLINE の実装 転送量制限を外せる これも の帯域制御対策 2009/9/1 28/50 METAL GEAR ONLINE の実装 シーダになる 2009/9/1 29/50
METAL GEAR ONLINE の実装 インストール中もシードしている 2009/9/1 30/50 METAL GEAR ONLINE の実装 シード終了 2009/9/1 31/50
METAL GEAR ONLINE のパッチの構成 ベースバージョンによりパッチを分けることで 転送量が少なくなるように工夫されている ベースバージョン更新後バージョンパッチサイズ 1.0x 1.4GB 1.1x 1.1GB 1.33 1.2x 0.8GB 1.3x 0.1GB パッチサイズの例 日本版 北米版 欧州版と別々のパッチになっている ログイン時に新しいパッチが存在すれば必ず適用する 2009/9/1 32/50 運用状況の調査 (1) 調査データ 1.1x 1.20 へのパッチ (470MB) 対象 : 日本 北米 欧州 期間 : 2008/11/25 配信開始 2009/1/19 配信終了 データセンタ ( 日本 ) 側調査項目 P2P 通信によりデータセンタからの転送量をどれだけ削減 できたか? 1 ダウンロード数 2 転送量と転送率 オフロード率 3 総速度 4 トラッカーのトラフィック 5 シーダのトラフィック これを オフロード率 と呼ぶ おことわり具体的な件数は大人の都合でお見せできませんごめんなさい (>_<) 2009/9/1 33/50
データセンタ ( 日本 ) 側の調査項目 1 ダウンロード数 日別 累積 2009/9/1 34/50 データセンタ ( 日本 ) 側の調査項目 2 転送量と転送率 (= 実転送量 / 総転送量 ) オフロード率 (=100- 転送率 ) 転送量 (TB) 転送率 0.8% 実転送量総転送量転送率 83.2% 2008/11/2 2008/11/2 2008/12/0 2008/12/0 2008/12/1 2008/12/1 2008/12/1 2008/12/2 2008/12/2 2008/12/3 2009/01/0 2009/01/0 2009/01/1 2009/01/1 2009/01/1 100% 80% 60% 40% 20% 0% 転送率 16.8% 転送率 2009/9/1 35/50
データセンタ ( 日本 ) 側の調査項目 3 総速度 ( トレント全体の速度 ) 速度 (Mbps) 5000 4000 3000 2000 1000 0 2008/11/24 2008/11/28 2008/12/02 2008/12/06 2008/12/10 2008/12/14 総速度 ピークは約 4.5Gbps 2008/12/18 2008/12/22 2008/12/26 2008/12/30 2009/01/03 2009/01/07 2009/01/11 2009/01/15 2009/01/19 2009/9/1 36/50 データセンタ ( 日本 ) 側の調査項目 4 トラッカーのトラフィック ピークでも 26kbps 程度なのでたいしたことない 2009/9/1 37/50
データセンタ ( 日本 ) 側の調査項目 5 シーダのトラフィック ダウンロードピーク時でも 10Mbps 程度で安定 2009/9/1 38/50 運用状況の調査 (2) クライアント側 ピアはどのくらいの速度が出ているのか? 1 リーチャ数とシーダ数 2 平均速度 http と BitTorrent の選択の割合は? 3 プロトコル選択数 日米欧で違いはあるか? 日米欧の比較 2009/9/1 39/50
クライアント ( 日本 ) 側の調査項目 1 リーチャ数とシーダ数 ピア数 シーダ数 リーチャ数 リーチャの山に少し遅れてシーダの山が現れている 2009/9/1 40/50 クライアント ( 日本 ) 側の調査項目 2 平均速度 (= 総速度 / リーチャ数 ) 速度 (Mbps) 16 14 12 10 8 6 4 2 0 2008/11/24 2008/11/28 2008/12/02 2008/12/06 2008/12/10 2008/12/14 平均速度 2008/12/18 2008/12/22 2008/12/26 2008/12/30 2009/01/03 1.3Mbps ぐらい 2009/01/07 2009/01/11 2009/01/15 2009/01/19 2009/9/1 41/50
クライアント ( 日本 ) 側の調査項目 3 プロトコル選択数 METAL GEAR ONLINEβ テスト時の集計結果 デフォルトがピアツーピア (BitTorrent) になっている 概ね 1:1 と言って良いだろう ユーザーが選択する BT DL http DL 2009/9/1 42/50 日米欧の比較 日本 転送量 (TB) 北米 転送量 (TB) 欧州 転送量 (TB) 主軸のレンジが異なっていることに注意 実転送量 総転送量 転送率 100% 83% 69% 73% 50% 0% 100% 50% 0% 100% 50% 0% 転送率速度 (Mbps) 転送率 転送率 速度 (Mbps) 速度 (Mbps) 20 10 0 4 3 2 1 0 5 4 3 2 1 0 平均速度 0.5Mbps ぐらい 0.3Mbps ぐらい 1.3Mbps ぐらい 2009/9/1 43/50
統計情報からの考察 70% 程度以上のオフロード率が見込める 1.1x 1.20 では最終的に 69% 以上オフロードされた ピアが多いときは 99% もオフロードされている 非常に小さく安定したトラフィックで済む ピーク時 4.5Gbps 以上必要なところを 10Mbps で済んでいる 10Mbps なら既存設備で十分対応できる»Web サーバと比較すると 100 万円 / 月ほどの費用差»CDN で単価 20 円 /GB 20TB/ 月の配信した場合と比較すると 約 40 万円 / 月の費用差 クライアントのダウンロード速度は堪えられない速度ではないが もう少し出て欲しい 日本 :1.3Mbps 北米 :0.5Mbps 欧州 :0.3Mbps 2009/9/1 44/50 5. 現状の課題 2009/9/1 45/50
現状の課題 1 ネットワーク面 特に欧州で速度が出ない 根本的な問題点 1. メモリの制約で同時接続数を上げられない 2. アップロード速度の遅い ADSL に引っ張られる 3. ネットワーク的な距離を考慮していない 4. の帯域制御に引っかかっているピアに引っ張られる 5. NAT 越えが出来なくて同時接続数が上がらない 内での接続を積極的に行う P4P の採用を検討する 2009/9/1 46/50 現状の課題 2 ネットワーク面 ( 続き ) NAT 越えが困難 運用面 根本的な問題点»P2P 通信に TCP を使用している P2P 通信を UDP にする サーバ ( シーダ ) の運用が独特 http でシードする拡張仕様を採用する 2009/9/1 47/50
まとめ P2P 技術でダウンロードのトラフィック集中を分散することが出来た 過剰な設備投資が抑えられ 費用面で非常に効果有り 速度が今ひとつだが 接続相手を選択すること NAT 越えしやすくすることで解決できる可能性がある 私から皆さんへのメッセージ 今なら新しいトラッカーやクライアントもあるので 是非挑戦してみて下さい P2P 技術はまだまだ発展余地のある分野なので 情報共有など協力していきましょう 2009/9/1 48/50 ( 参考資料 ) リファレンス BitTorrent http://www.bittorrent.org 仕様書 拡張提案書がある Transmission http://www.transmissionbt.com PHPBTTracker+ http://sourceforge.net/projects/phpbttrkplus/ BitTornado http://www.bittornado.com 2009/9/1 49/50
ご静聴ありがとうございました 2009 Konami Digital Entertainment 2009/9/1 50/50