CEDEC-Net 2015 で IPv6 の会場ネットワークを提供してきました
ゲーム開発者の祭典CEDEC
毎年8月末から9月頭頃に開催されるゲーム開発者のためのカンファレンスです。今年もパシフィコ横浜で3日間に渡って開催されました。昨年実績で1日あたり約5000名が来場します。
来場者のための無線ネットワーク「CEDEC-Net」
このCEDECではまともなインターネット環境が提供されていませんでした。5000名が来場するイベントに対して会場デフォルトのネットワークでは、無線アクセスポイントのスペックやDHCPのリース数、NAPTのセッション数などリソースが足りず、使えないネットワークになっていました。
これに危機感を覚えたコナミデジタルエンタテインメントの佐藤さんが日本ネットワークオペレーターズグループ(JANOG)に相談を持ちかけ、発足したのがCEDEC-Netです。JANOGでは年2回開催される数百人規模のカンファレンスで無線ネットワークを提供しています。蓄積されたノウハウもありますし、何より本職の人たちです。CEDEC-NetはJANOGからのメンバーに加え、ゲーム業界からネットワークに興味のあるエンジニアが集まって、CEDECでの安定かつ挑戦的な会場無線ネットワークの構築を目的として結成されました。
IPv6がテーマのCEDEC-Net 2015
昨年のCEDEC-Netのテーマは「CGN」でした。IPv4枯渇に立ち向かう技術の中で特にCGN(Carrier Grade NAT)に注目し、IPv4インターネットの変化を来場者にアピールしました。
今年は6月末に行った発足ミーティングで今年のCEDEC-Netのテーマを「IPv6」に決めました。6月のWWDC2015でApple社がiOSアプリの承認条件にIPv6対応を加えたからです。CEDEC-NetでAppleの推奨するIPv6オンリーかつNAT64+DNS64の環境を提供することで、ゲーム開発者にIPv6対応の必要性を訴えたいと考えました。一方で来場者に使えるネットワークを提供する必要があるので、IPv4のあるネットワークも提供することにしました。対外接続にはIPv6 IPoEの回線を利用し、その上でIPv4・IPv6移行共存技術を利用することも決めました。
CEDEC-Netは安定したネットワークを提供することだけを目的とするのではなく、ゲーム業界へのメッセージ性やNOCメンバーの技術向上を目的としています。そのために我々が決断したことはIPv6オンリーネットワークをデフォルトのネットワークとして、そして、IPv6オンリーであることをアピールせずに提供するということです。
私は過去のカンファレンス経験でIPv6オンリーネットワークの構築や利用を経験していますが、あくまでそのようにアナウンスした上で、利用する人もネットワーク業界のエンジニアでした。業界の人でない参加者に、何も説明せずにIPv6オンリーネットワークを使わせるという試みは初めてでした。つながらないという報告や相談が来ることは目に見えているのですが、それをアピールチャンスだと捉えました。
CEDEC会場のwifi、iPhone5は繋がるけど、NEXUS5では繋がらない。IPアドレス取得中のまま待てど暮らせど先に進まない。何故だ。
— oyapiro (@oyapiro) 2015, 8月 27
CEDEC-Net 2015からのメッセージ
SSID: cedec-netとして提供したIPv6オンリーネットワークは「この無線ネットワークで動作しないアプリはAppleの審査に通らないかもしれない」というインパクトでゲーム業界に伝わりました。
#cedec2015 iOS9アプリはDNS64+NAT64環境下で動くことが必須とAppleがアナウンスしています。そこで今年のcedec-netはDNS64+NAT64構成で提供しています。iOSを開発中/使用中の方はぜひいろいろなアプリをお試し下さい。
— cedecnet (@cedecnet) 2015, 8月 26
CEDEC会場のWiFiはIPv6らしく、各社のスマホゲームが試されている…
— うえした (@ueshita) 2015, 8月 28
CEDEC-Netでアプリが動かない事案が何件か起きてるな。動かないアプリがあるイベントWi-Fiというのもどうなの、という気がしなくもないけど、開発者イベントで「ここで動かないアプリはApple審査通らないよ」という警告を出すのもそれはそれで正しいと思う。#cedec2015
— ヤレヤレ君 (@yareyare_kun) 2015, 8月 28
裏で色々聞いた話では大手ゲーム会社でもcedec-netを利用して自社アプリの動作確認を行う指令や翌週すぐにNAT64+DNS64の環境を構築するような指令が出たとか出なかったとか。
NOCチームで今回のネットワークについて講演する時間を頂きましたが、100人程度の部屋が満席になりました。この発表はなんとGAME Watchさんにも記事にしていただきました。GAME Watchというゲーム専門媒体にIPv6やNAT64などのネットワークの話が掲載されるというのも想像だにしなかった事態でした。
「CEDEC-Net 2015」がiOSアプリ開発者に警鐘を鳴らす! - GAME Watch
これまで色々なネットワーク業界でIPv6に対する検証や啓蒙活動が行われてきましたが、これほど他の業界にダイレクトに伝わった瞬間を目撃するのは初めてです。我々がいきなり何か達成したわけではなく、今までのいろいろな人の地道な努力や積み重ねた知見があって今回我々がこのようなネットワークを提供できたので、ネットワーク業界の努力が実って繋がった思うととても感慨深いです。
IPv6 IPoEとDS-Liteの対外接続
対外接続の選定
対外接続にはIPv6 IPoEのサービスである、インターネットマルチフィード社のtransixサービスを利用しました。自社サービスなので無償提供がしやすかったというのがありますが、技術的にもテーマ的にも適しているということで選定しています。
IPv6 IPoEでは本来閉域網であったフレッツ回線に割り当てられるIPv6アドレスでそのままインターネットに抜けられることが特徴です。MTU1500でトンネルオーバーヘッドもNATもないので、ゲーム通信には最適な回線だと言えます。
ちなみにtransixですが、IIJmioのFiberAccess/NFというサービスを申し込むと利用できます。僕の自宅もこれです。Google(AS15169)までIPv6で4msと快適です(ステマ)。
IPv4の接続性には同社で提供しているDS-Liteを利用しています。DS-Lite(Dual-Stack Lite)は家庭側機器(CPE)であるB4とISP側機器であるAFTRの間で、IPv4 over IPv6トンネルを張ってIPv4パケットを運び、AFTRでNAPTを行い、複数の家庭でグローバルIPv4アドレスを共有する技術です。CPEでNAPTを行うMAP-Eなどに比べると、ISP側機器の負荷が高くスケールしにくいのですが、IPv4アドレスを柔軟に使えたり、CPEの実装負荷が軽いという利点があります。あと名前が某社の携帯端末みたいなのでゲーム業界のネットワークに使うのにピッタリです。
B4にはYAMAHAの新製品であるRTX1210とCiscoのASR1001を日を分けて使いました。RTX1210は配下のYAMAHAのスイッチも一括管理できるルータです。
DS-Liteの設計
DS-Liteは1IPアドレス=65536ポートを複数の家庭で共有する技術のため、本来こういった数百数千のクライアントを収容するネットワークに用いる技術ではありませんが、同社に特別な回線を用意してもらい65536ポートをフルで使えるようにして頂きました。1端末あたり64ポートを見込んでいたので1024端末まではこれでサーポートできます。昨年は1200端末が同時接続していたので、この設計では足りません。しかしポートが枯渇して通信できなくなる事自体がIPv4をこのまま使い続けるとまずいというアピールになるのではと考えました。とはいえ読みが外れて本当に使えないレベルでポート足りなくなると問題なので、もう1回線用意しておいて、緊急時はトラフィックを分散できるように設計してありました。
2日目の午後4時頃に1400端末が接続しているタイミングで、予定通りNAPTのプール数が枯渇しました。上のグラフが16時過ぎに65kあたりに達しているのが分かるかと思います。プールの枯渇なのでプール内でのポートの使い回しがありますが、一部の通信がポート枯渇で通信できていなかったものと思われます。17時頃に別回線にトラフィックを分散した後は70k近くまでポートを使っているのがわかります。1端末あたり約50ポート程度を見積もっておくと良いという知見が得られました。
NAT64+DNS64の構築
今回NAT64に用いたのはA10 NetworksのvThunderという仮想アプライアンスです。CEDEC-Netには無償でお貸し出しいただきました。コンフィグ例はWebの記事に動作含めてまとまっていますのでこの通りにやれば動くものができます。
NAT64でIPv6端末をIPv4サーバにつなげよう(1/2) - @IT
DNS64は同じvThunderでもできるのですが、今回はBINDを使いました。Cisco ASR1001でもNAT64をやってみようという計画があったのですが、ASRではDNS64ができないので、DNS64は切り離しておこうという計画によるものです。
NAT64についてはググればLinuxやBSDの実装やコンフィグ例が出てくると思います。
CEDECで使ったコンフィグについてはいずれ機会と需要があればどこかにまとめてみたいと思います。
IPv6オンリーネットワークへの接続
今年の同時最大接続数は1695でした。この結果は5分間隔のポーリングですが、リアルタイムの無線管理のツールの結果では1713端末の同時接続が確認されたようです。
#cedec2015 14:54:13 に 1713端末の同時接続を確認しました! pic.twitter.com/javpt8k0Ec
— cedecnet (@cedecnet) 2015, 8月 28
昨年の1200端末からすると1.5倍の端末に接続していただきました。今年はA0版のポスターまで作って頂くほどの広報の努力もあり、そしてCEDECのWiFiは使えるという認識が徐々に参加者の間に広まってきたのだと思います。
パシフィコ横浜 #CEDEC2015 初日に到着しました。テザリング禁止令が発令中なう pic.twitter.com/xWqsfcnRVm
— Yoshinori (y0sh1) (@takesako) 2015, 8月 26
同時接続数より重要なことがこのグラフから分かります。それは実に60%の端末がIPv6オンリーネットワークであるSSID:cedec-netに接続していたということです。
ここで無線ネットワークの端末のベンダーコードの統計を見ていただきたいのですが、65%をAppleの端末が占めています。我々の検証の結果、MacもiPhoneも、Apple端末自身はIPv6オンリーネットワーク上でも完璧に動作することがわかっています。残念ながらSSIDごとのベンダーコードを記録していなかったので確証はないのですが、この60%がIPv6オンリーネットワークを使い続けたという結果は、Appleの端末によるものではないかと推測されます。iOSの審査要件にIPv6対応を入れるだけのことはあります。
IPv6トラフィックの割合
NAT64の外側で取得したフローにもとづくデータです。Download, UploadともにIPv6トラフィック(bps)の割合が25%程度になっています。
無線ネットワークの運用
アクセスポイントの配置設計
CEDECの無線ネットワーク設計で特徴的なのがアクセスポイントの配置計画です。通常のIT系カンファレンスであれば来場者がPCを開くホール内や部屋内にアクセスポイントを集中的に配置し、廊下はコネクションが切れない程度の密度で配置します。CEDECでは真逆の傾向にあります。
これは2日目のトラフィックの様子ですが、このピークが立っている時間帯というのは、各セッションの開始直前の時間帯に合致します。
CEDECでは講演開始前に講演部屋の前に入場のための行列を形成します。この入場待ちの時間に廊下のアクセスポイントを通して多くのトラフィックが流れます。みなさん待ち時間は暇なようです。一方でみなさんまじめに講演を聞いているからなのか、講演時間中はあまりトラフィックは流れません。そのため部屋の中のアクセスポイントの負荷はそれほど高くありません。たまに小部屋に超人気セッションが押し込まれることがありますが、その時は非常にヤバイです。特に今年は竹迫さんのSECCONセッションがヤバかったです。
この独特の傾向からCEDEC-Netでは通常のカンファレンスとは異なり廊下やロビーのアクセスポイントを多めに配置しています。特に1階のホール前については通常であれば2、3個のアクセスポイントで十分ですが、非常に長い待ち行列が形成されるため、6個のアクセスポイントを配置してアクセスポイントあたりの接続端末数を抑えています。これは昨年の経験を活かした設計です。
無線APへの給電にはPoEスイッチを使いました。壁から出ているLANジャックはパシフィコ横浜の普通のスイッチと接続されているため、部屋の中でPoEスイッチを噛ませる必要がありました。そのため結構な数のスイッチが必要でしたがYAMAHA様にSWX2200-8PoEというゲートウェイルータのRTX1210から一括管理できる8ポートのPoEスイッチをお貸し出しいただきました。
無線ネットワークの監視
昨年のCEDECでcisco-wlc-monitorというCLIツールを作成したのですが、今年はNOCに展示ブースに何かを出したい、しかもFirefoxのタブ切り替えで見せるものを切り替えていく、という話になったので、Webブラウザから監視できるツールを作りました。10秒ごとにアクセスポイントの状態やトラフィックなどの統計情報が更新されていきます。Rubyで書いたsinatraのAPIと、websocketのデーモンがバックエンドで動いています。
動かすことを目標に前日に1晩で作ったものなのでコードが非常に汚いのですが、時間があれば整理して他のカンファレンスネットワークの皆様にも使っていただける形で公表したいと思います。
総評
書きたいことはやまほどあるのですが、そろそろまとめます。今年のCEDEC-Netは非常にチャレンジングかつインパクトのある取り組みができたと思います。昨年から引き続きNOCをやってくれたメンバーや、今年から新しくNOCに入ってくれたメンバー、それぞれの活躍おかげです。ありがとうございました。
これからもネットワーク業界とゲーム業界の実践交流の場として盛り上がっていくと思いますので、NOCチームに興味のある方は遠慮なく連絡ください。
関連資料
私がNOCチームの講演で使用したスライドはこちらです。
CEDEC-Netに対するみなさんの反応はこちらにまとまっているのでぜひご覧ください。
https://twitter.com/cedecnet/favorites
CEDEC公式サイトに掲載されたネットワークの案内にもまとまった情報があります。
iOS9で必要な対応はこちらの記事を参照ください。