photonのipv6対応情報 & server構築ポイント

50
Photon の IPv6 のののの & Server のののののの Photon ののののの のののののののののののののの のの ののの

Upload: gmo-cloud-kk

Post on 14-Apr-2017

458 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: PhotonのIPv6対応情報 & Server構築ポイント

Photon の IPv6 対応情報& Server 構築ポイント

Photon 運営事務局シニアテクニカルアドバイザー並木 健太郎

Page 2: PhotonのIPv6対応情報 & Server構築ポイント

アジェンダ• Photon のご紹介• iOS の IPv6 対応• Photon における IPv6 対応• Photon Server 構築ポイント• Photon 最新情報

Page 3: PhotonのIPv6対応情報 & Server構築ポイント

Photonのご紹介

Page 4: PhotonのIPv6対応情報 & Server構築ポイント

Photon のしくみ• すべてのクライアント (= プレイヤー ) はサーバーへ接続する• サーバーはクライアント間の通信をリレーする役割• サーバー自身は基本的には処理を行わないが、 Webhooks や Plugin を利用してカスタマイズも可能

Photon

Client Client Client

SDK SDK SDK

Page 5: PhotonのIPv6対応情報 & Server構築ポイント

Photon のサービス形態• クラウド型サービス• サーバーはサービス提供元で運用• クライアントに SDK を組み込むだけで利用可能

• ミドルウェア型サービス• ソフトウェアとしてご提供、お客さまで運用• サーバーサイドのカスタマイズが自由に

Page 6: PhotonのIPv6対応情報 & Server構築ポイント

Photon Cloud のラインナップ汎用性の優れたスタンダードな Realtime

Unity 向けに特化された Unity Networking

Chat に特化したサービスの Chat

音声通話を簡単に導入できる Voice

Page 7: PhotonのIPv6対応情報 & Server構築ポイント

Photon Enterprise Cloud• Photon Cloud の上位サービスとして、

Photon Enterprise Cloud をご用意しています• Photon Cloud では難しいと思われる場合でも、 Enterprise Cloud なら大丈夫です!

Page 8: PhotonのIPv6対応情報 & Server構築ポイント

Cloud vs. Enterprise CloudCloud• Public サービス ( 共有 )• 10,000CCU まで• Webhooks 対応• 複数タイトル共有不可• サーバー設定変更不可

Enterprise Cloud• Private サービス ( 専有 )• CCU 上限なし• Webhooks & Plugin 対応• 複数タイトル共有可能• サーバー設定変更可能

Page 9: PhotonのIPv6対応情報 & Server構築ポイント

iOSの IPv6対応

Page 10: PhotonのIPv6対応情報 & Server構築ポイント

iOS の IPv6 対応とは• 昨年 (2015) の WWDC にて、 iOS 9 において IPv6 への移行を発表• Apple Store に登録する iOS アプリの IPv6対応を必須とする– 当初は 2015 年末からと言っていたが、一旦未定になり、今年の 5/4 に 6/1 からと発表になった

Page 11: PhotonのIPv6対応情報 & Server構築ポイント

どういうこと?• キャリアネットワークから iOS 端末に付与される IP アドレスが

IPv6 のみとなっても大丈夫なようにしておく出典 : iOS Developer Library

10.0.10.1

2001:db8:0:0:1::1

Page 12: PhotonのIPv6対応情報 & Server構築ポイント

てことは…• IPv4 ネットワークに接続されていることを前提にしているアプリは問題になるということは、• IPv4 でしか使えない API の利用や、 IPv4アドレスを直接扱っていると問題となる

Page 13: PhotonのIPv6対応情報 & Server構築ポイント

IPv4 でしか使えない API• IPv4 のみに対応したデータ型– uint32_t, in_addr, sockaddr_t

• IPv4 のみに対応した API– inet_aton, gethostbyname

• IPv4 のみでしか使えない使い方をした API– gethostbyname2(hostname, AF_INET);

Page 14: PhotonのIPv6対応情報 & Server構築ポイント

IPv4 アドレスの扱い• 接続先として、 IPv4 アドレス形式で持っている– "192.168.1.1"– "http://172.16.10.1/api/v1"

• ネットワーク接続の確認として、– IPv4 アドレスを持っているかどうか– "0.0.0.0" に接続できるかどうか

Page 15: PhotonのIPv6対応情報 & Server構築ポイント

どうすればいいの?• アドレスファミリに依存しない高レイヤーのフレームワーク、 API を使う– NSURLSession, CFNetwork

• Apple 曰く、 HTTP の通信はどちらかを使っているから、みんな影響ないでしょ?– まぁ HTTP だけならね…

Page 16: PhotonのIPv6対応情報 & Server構築ポイント

HTTP 以外の通信• Socket を直接使ってる場合の対応法– CFNetwork に移行する– アドレスファミリ AF_INET6 にも対応する

どっちもどっちかな…

Page 17: PhotonのIPv6対応情報 & Server構築ポイント

サーバー側は…?• クライアント側は IPv6 対応しなきゃいけないのはわかったけど、サーバー側はどうするの?• クライアントのネットワークはキャリアだったりユーザー任せだからいいけど、サーバー側って自分たちの管理だし、それも IPv6 対応するのってものすごく大変では…?

Page 18: PhotonのIPv6対応情報 & Server構築ポイント

サーバーは大丈夫!• サーバー側は " 基本的には " 何もしなくていいです• キャリアが IPv6<-

>IPv4 ネットワーク間の変換を行ってくれます ( 将来 )出典 : iOS Developer Library

Page 19: PhotonのIPv6対応情報 & Server構築ポイント

DNS64• IPv4 アドレス (=A レコード ) しか持たない場合でも、 IPv4 を内包した IPv6 アドレスを生成する• クライアントには

IPv6 として見える出典 : iOS Developer Library

Page 20: PhotonのIPv6対応情報 & Server構築ポイント

NAT64• DNS64 で生成された

IPv6 アドレスへの接続をアドレス変換して IPv4 ネットワーク上で接続• クライアントとサーバーそれぞれは

Gateway と接続する形となる出典 : iOS Developer Library

Page 21: PhotonのIPv6対応情報 & Server構築ポイント

一般的なまとめ• アプリは IPv6 対応 API を使いましょう• サーバー側は IPv6 クライアント群はすべて NAT 配下からアクセスがあると思えば基本は OK

Page 22: PhotonのIPv6対応情報 & Server構築ポイント

Photonにおける IPv6対応

Page 23: PhotonのIPv6対応情報 & Server構築ポイント

Photon にとっての IPv6 対応• Photon にとっては棘の道でした…– Photon のプロトコルに起因する問題– Photon の接続に関する問題– Unity の対応に関する問題

• 今は全て解決しています!

Page 24: PhotonのIPv6対応情報 & Server構築ポイント

プロトコルに起因する問題• トランスポートとして基本は UDP を利用– 高レベル API の利用は難しい– 高効率のための独自ロジック

• Client SDK を改修することにより対応

Page 25: PhotonのIPv6対応情報 & Server構築ポイント

接続に関する問題• Photon を利用する際、一般的に複数回の接続が発生する– Name Server -> Master Server -> Game Server ->

Master Server -> Game Server …• 接続先を指示する際のアドレス表記の問題が発生!

Page 26: PhotonのIPv6対応情報 & Server構築ポイント

Photon のサーバーレイヤー• クラウドの場合は 3段

– Name Server (NS)– Master Server (MS)– Game Server (GS)

• Photon Server の場合は 2段– Master Server (MS)– Game Server (GS) 出典 : doc.photonengine.com

Page 27: PhotonのIPv6対応情報 & Server構築ポイント

次のサーバーへの接続• ルーム作成時は MS よりルームを作るべき GSのアドレスをもらう• 今までの実装では IPv4のアドレスをクライアントに渡していたので、

IPv6 ネットワークでは接続できない

Client MS GS

ルーム作成GS アドレス通知

"192.168.1.1"

接続不可!接続

Page 28: PhotonのIPv6対応情報 & Server構築ポイント

IPv6 への対応法 〜 Native〜• GS は IPv4 と IPv6 それぞれのアドレスを持ち、それを MS へ通知しておく• MS は Client との接続のアドレスファミリを確認して、アドレスファミリと一致したアドレスを返す

Client MS GS

ルーム作成GS アドレス通知

"fe80:xxxx:…"AF判定

接続

Page 29: PhotonのIPv6対応情報 & Server構築ポイント

IPv6 への対応法 〜 Bridge〜• GS は IPv4 と「ホスト名」を持ち、それを MS へ通知しておく• Client は IPv6 接続の場合に

IPv6 フラグを立ててリクエストする• MS はフラグを確認して、フラグ立っている場合はホスト名を返す

Client MS GS

ルーム作成 w/IPv6

GS アドレス通知"gs1.aaa.com"

フラグ確認接続

Page 30: PhotonのIPv6対応情報 & Server構築ポイント

Unity に関する問題• Photon は Unity と一緒に使われるケースが多い• Unity のソケット部分は

IPv6 で全然動かず• サービス提供元の Exit

Games が尽力して Unityのバグフィックスを行った

Page 31: PhotonのIPv6対応情報 & Server構築ポイント

IPv6 対応バージョン• Client SDK– Native SDK: 4.1.0.0 以降– .NET SDK: 4.1.0.0 以降– PUN: 1.67 以降

• Server SDK: 4.0.28 以降• Cloud サービス : 対応済

Page 32: PhotonのIPv6対応情報 & Server構築ポイント

対応させるための設定は?• Photon Cloud 利用の場合– 対応する SDK にバージョンアップすれば OK– 接続の設定などは一切変更する必要なし

• Photon Server 利用の場合– 対応する SDK(Client, Server) にバージョンアップ– Master Server の接続先にホスト名 (FQDN) を設定する– Game Server の PublicHostName の設定を行う

Page 33: PhotonのIPv6対応情報 & Server構築ポイント

Master Server の接続先設定• Native SDK の場合int main(void) { … client.connect( serverAddress: L"ms.game.some.com”, serverType: ServerType::MASTER_SERVER );

• PUN の場合

Page 34: PhotonのIPv6対応情報 & Server構築ポイント

Photon IPv6 まとめ• 今は全て IPv6 に対応済み• Cloud 利用の場合は Client SDK のアップデートで OK• Server 利用の場合は、 Client & Server SDKのアップデート、各サーバーへの FQDN 設定、接続先の FQDN 設定、 GS の FQDN 設定

Page 35: PhotonのIPv6対応情報 & Server構築ポイント

Photon Server構築のポイント

Page 36: PhotonのIPv6対応情報 & Server構築ポイント

構築のポイント• Photon Server のインストールは非常に簡単!– exe を実行して展開、 Photon Control を起動して、インスタンスを起動

• 実運用するにあたり、複数台の設定や IPv6に関する設定などをご紹介

Page 37: PhotonのIPv6対応情報 & Server構築ポイント

Master Server と Game Server• 実運用においては、複数台構成になることがほとんど• 2種類のサーバーがある– ロビー & バランシングを行う Master Server–ゲームの実処理を行う Game Server

Page 38: PhotonのIPv6対応情報 & Server構築ポイント

それぞれの設定方法• 実は、 Photon のヘルプセンターに記事があります!こちらをご覧ください!– https://support.photonengine.jp/hc/ja/articles/

214923898

Page 39: PhotonのIPv6対応情報 & Server構築ポイント

IPv6 Bridge 接続への対応• IPv6 の項目でも話ましたが、 IPv6 Bridge 接続に対応させるには追加の設定が必要• Game Server の Photon.LoadBalancing.dll.config を編集– 162 行目からの PublicHostName に FQDN を記載

• <setting name="PublicHostName" serializeAs="String”><value>gs1.game.some.com</value></setting>

Page 40: PhotonのIPv6対応情報 & Server構築ポイント

台数はどう決めればいいの?• ゲームの内容次第です!(きっぱり)• なんて言ってちゃ身も蓋もないので、おおまかな目安を伝授します!

Page 41: PhotonのIPv6対応情報 & Server構築ポイント

Game Server• 4Core CPU / 4GB Memory のサーバーで 1000-

2000CCU を目安• 上記スペックで 1000CCU を基準として、負荷試験を行って上限をアップする検討を• スケールアップより、スケールアウトが効果的• 大きなサーバーで数を収めるのではなく、小さなサーバーで数を調整するほうが柔軟に対応可能

Page 42: PhotonのIPv6対応情報 & Server構築ポイント

Master Server• 4Core CPU / 4GB Memory で 40000CCU が目安• 実際はロビー・ルーム数の影響が大きい• 大規模な利用を想定する場合は、予め複数のクラスタセット (Master&Game のセット ) を利用することを想定してクライアントを設計を

Page 43: PhotonのIPv6対応情報 & Server構築ポイント

パフォーマンスチューニング• よく聞かれますが…、基本は Windows も Photon もデフォルト設定でお使いください!• MMO のような使い方は別ですが、一般的な MO のような使い方なら下手にいじらないほうがよいです w

Page 44: PhotonのIPv6対応情報 & Server構築ポイント

最後に

Page 45: PhotonのIPv6対応情報 & Server構築ポイント

新サービス• 新しいサービスがリリース予定!– Photon Swarm– Photon Thunder– Photon TrueSync

• 詳細は改めてお知らせします!

Page 46: PhotonのIPv6対応情報 & Server構築ポイント

今後の予定• 8/3(水 ) XFLAG(mixi) x Photon勉強会@GMO Yours• 8/24-26 CEDEC 2016@横浜セッション、 Photon ワークショップ

PlayCanvas ワークショップこの後も続々開催予定!

Page 47: PhotonのIPv6対応情報 & Server構築ポイント

ヘルプセンター始めました• ナレッジベースや、コミニュティ ( フォーラム )機能のあるヘルプセンターを開設しました• コンテンツの充実化を図っていきますので、ぜひご利用ください!• https://support.photonengine.jp/hc/ja

Page 48: PhotonのIPv6対応情報 & Server構築ポイント

お問い合わせ• メールアドレス– [email protected]

• Web もご覧ください– http://photonengine.jp/

• ヘルプセンター– https://support.photonengine.jp/hc/ja

Page 49: PhotonのIPv6対応情報 & Server構築ポイント

最後に…一緒に働ける仲間を大募集中!詳細はこちら↓

Page 50: PhotonのIPv6対応情報 & Server構築ポイント

ありがとうございました![email protected]