CEDEC 2011レポート

IPv4枯渇! オンラインゲーム事業者はどうすべきか?
KONAMIのネットワーク技術者が語るIPv6対応ノウハウ


9月6~8日 開催

会場:パシフィコ横浜


IPv6対応へのノウハウを語った佐藤良氏

 今日ではコンシューマーゲーム、PCゲーム、ソーシャルゲームなどの形態の違いを問わず、多くのゲームが何らかの形でオンライン機能を提供している。そのほとんどが現在、32ビット長のインターネットアドレス表現であるIPv4に依存している。

 そんな中で今年4月、ネットワーク業界に重大ニュースが届けられた。何年も前からいつかなくなるといわれ続けてきたIPv4アドレスのアジア太平洋地域割り当て在庫が、ついに本当に枯渇してしまったのだ(日本ネットワークインフォメーションセンターによる『IPv4アドレスの在庫枯渇』報告)。

 確かに、プロバイダなど大手のネットワーク事業者がすでに割り当てを受けているアドレス空間のうち、未使用なものはまだ多少なりとも残っているはずだ。当分は、オンラインゲーム事業者が新しいサーバーをデータセンターに立ち上げる際にプロバイダから「もうグローバルIPはありません」といわれることもあるまい。しかし、それも時間の問題だ。そもそも、接続してくるユーザー端末側にIPv4アドレスがバインドされていないというケースも考えられる。もはや、IPv6への対応は全てのゲーム事業者が真剣に考えるべき問題といえよう。

 株式会社コナミデジタルエンタテインメントにてネットワーク技術者を務める佐藤良氏は、この問題に基づいて、「オンラインゲームをIPv6へ対応させる方法」というそのものズバリな題目で講演を行ない、オンラインゲームにおけるIPv6への具体的な対応方法をレクチャーした。果たして、IPv4環境からIPv6環境への以降はスムーズに行なえるものなのだろうか。どれくらい「面倒」なのか、そのあたりを見てみたい。



■ インフラレベルでは概ね準備が進んでいるIPv6。WEBベースのゲーム対応は難しくない?

WEB業界では普及が進んでいるIPv6。一部環境で遅延が減るという意外なメリットも
コンシューマーゲーム機では今のところAPIレベルでの対応ができていないという
IPv4/IPv6混在環境をサポートするWEBサーバー構成の例

 佐藤氏によれば、「ウイニングイレブン」シリーズ、「メタルギアオンライン」などKONAMIが展開するオンラインサービスでは徐々にIPv6への対応を進めてきているという。今回の講演は、その知見に基づくノウハウ紹介という体裁だ。

 そもそもIPv6とは何か。現在主流のIPv4アドレス(32ビット長)に対し、4倍のデータ長となる128ビット長の数値空間を持つアドレス表現であり、IPv4の約8穣(80,000,000,000,000,000,000,000,000,000)倍の個数のアドレスを扱える。当然、枯渇問題とは全く無縁である。

 ただし、IPv4を大幅に拡張したアドレス表現であるだけに、移行がそう簡単ではないのが難点である。OSやWEBブラウザ、インターネット上のルーティングシステム等、インフラに当たる部分はすでにほぼ移行準備が完了しているものの、それを利用するゲームなどのアプリケーション側でもIPv6を前提としたプログラミングの書き換えが必要であるためだ。

 現在のブラウザゲームなどで一般的に使われるLAMP構成(Linux+Apache+MySQL+PHP)のシステムでは、ブラウザやWEBサーバーといった基本部分でIPv6の違いを吸収してくれるため、対応はあまり難しくないようだ。IPv4/IPv6の混在を前提としたフロントエンド構成を取り、各種設定を多少調整するだけで基本的な対応は完了する。

 やや面倒なのは、まだIPv6に完全対応していないMySQLの取り扱いや、ゲームのスクリプトでIPを直接扱っている部分のIPv6対応といったところだという。滅多にないと思われるが、JavaScriptやFlash内でIPv4を前提とした記述が行なわれている箇所があれば、別の方法に置き換える必要があるようだ。

 ちなみに佐藤氏によると、実験の結果「IPv6で通信したほうが通信遅延が減るケースがある」という。明確な原因は不明だが、オンラインゲームがIPv6に対応する積極的な理由のひとつになるのではないかと話していた。


WEBベースのゲームにおけるIPv6対応の勘所。基本は一般WEB業界での対応方法の延長といったところだろうか



■ ソケット通信を使用するオンラインゲームの対応は、大工事になる可能性

多数の古いAPIが使えない、もしくは非推奨となるため、大規模なリファクタリングが必要なケースも出てきそうだ
両対応できる新しいアドレス構造体を使用する。また、それに準じた新しいAPIを使用する

 比較的対応が簡単そうなブラウザゲームに比べて、直接ソケットAPIを扱うオンラインゲームでは、対応作業がかなり大事になりそうだ。従来のAPIではIPv4とIPv6のアドレス表現が別々に提供されていたが、両者の混在環境を前提とするなら、その両方を格納できる新しいアドレス構造体を使用しなければならず、そうすると既存のソケットAPIの多くが使えない/使うべきでなくなってしまうためだ。

 もちろん、IPv4の32ビットアドレスを32ビット整数型の変数に格納してユーザー識別のために使う、なんていう乱暴なプログラミングは論外である。そういった制御を核心部分でしてしまっているゲームは、IPv6への対応が一大事業になってしまうかもしれない。

 また、ソケットAPIの挙動が変わるケースもある。例として挙げられたのは、名前/アドレス解決関連のAPIを繰り返す呼ぶことで、従来なら端末に割り当てられた複数のインターフェイスがラウンドロビン式に返ってきていたケース。元々IPv4でも仕様になく「なんとなくそうなっていた」動作だったそうだが、IPv6では正式にこのような動作がなくなったという。したがって、この挙動に依存したプログラムは根本的に仕様を見直す必要がある。

 クライアント側も新しいプログラミング様式に切り替えなければならないのは同様だが、もっと面倒なことになっているのがP2Pタイプの通信である。これについは佐藤氏が提示したスライドを見ていただきたいが、簡単にいうとNAT越えの方法がIPv4とIPv6でややスタイルが異なり、その混在環境に合わせた新しい標準技法が登場しているため、新たにいろいろと勉強が必要となる。

 その上で佐藤氏は、ゲームの対応が完了しても終わりではなく、管理ツールやバックオフィス機能への対応や、品質管理部門、ユーザーサポート部門といった運用面でもIPv6に合わせたマニュアルの作成等、人の面での対応が必要になるであろうと語った。このように、一口にIPv6への移行と言っても意外と面倒で、コストもかかりそうなことである。オンラインゲーム各社がどのように対応を進めていくか、気にしておきたいところだ。


サーバー/クライアントタイプのオンラインゲームでのポイント。古いプログラムを対応させるのは、テストなどを含めると割とコストのかかることになりそうだ。
P2P通信ではNAT越えが大きな課題となる。IPv4を続けていくと多重NAT環境などが増えてより状況が悪くなっていくため、IPv6への対応は早ければ早いほど良い、ということになるようだ

(2011年9月8日)

[Reported by 佐藤カフジ]