photonのipv6対応情報 & server構築ポイント
TRANSCRIPT
![Page 1: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/1.jpg)
Photon の IPv6 対応情報& Server 構築ポイント
Photon 運営事務局シニアテクニカルアドバイザー並木 健太郎
![Page 2: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/2.jpg)
アジェンダ• Photon のご紹介• iOS の IPv6 対応• Photon における IPv6 対応• Photon Server 構築ポイント• Photon 最新情報
![Page 3: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/3.jpg)
Photonのご紹介
![Page 4: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/4.jpg)
Photon のしくみ• すべてのクライアント (= プレイヤー ) はサーバーへ接続する• サーバーはクライアント間の通信をリレーする役割• サーバー自身は基本的には処理を行わないが、 Webhooks や Plugin を利用してカスタマイズも可能
Photon
Client Client Client
SDK SDK SDK
![Page 5: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/5.jpg)
Photon のサービス形態• クラウド型サービス• サーバーはサービス提供元で運用• クライアントに SDK を組み込むだけで利用可能
• ミドルウェア型サービス• ソフトウェアとしてご提供、お客さまで運用• サーバーサイドのカスタマイズが自由に
![Page 6: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/6.jpg)
Photon Cloud のラインナップ汎用性の優れたスタンダードな Realtime
Unity 向けに特化された Unity Networking
Chat に特化したサービスの Chat
音声通話を簡単に導入できる Voice
![Page 7: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/7.jpg)
Photon Enterprise Cloud• Photon Cloud の上位サービスとして、
Photon Enterprise Cloud をご用意しています• Photon Cloud では難しいと思われる場合でも、 Enterprise Cloud なら大丈夫です!
![Page 8: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/8.jpg)
Cloud vs. Enterprise CloudCloud• Public サービス ( 共有 )• 10,000CCU まで• Webhooks 対応• 複数タイトル共有不可• サーバー設定変更不可
Enterprise Cloud• Private サービス ( 専有 )• CCU 上限なし• Webhooks & Plugin 対応• 複数タイトル共有可能• サーバー設定変更可能
![Page 9: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/9.jpg)
iOSの IPv6対応
![Page 10: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/10.jpg)
iOS の IPv6 対応とは• 昨年 (2015) の WWDC にて、 iOS 9 において IPv6 への移行を発表• Apple Store に登録する iOS アプリの IPv6対応を必須とする– 当初は 2015 年末からと言っていたが、一旦未定になり、今年の 5/4 に 6/1 からと発表になった
![Page 11: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/11.jpg)
どういうこと?• キャリアネットワークから iOS 端末に付与される IP アドレスが
IPv6 のみとなっても大丈夫なようにしておく出典 : iOS Developer Library
10.0.10.1
2001:db8:0:0:1::1
![Page 12: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/12.jpg)
てことは…• IPv4 ネットワークに接続されていることを前提にしているアプリは問題になるということは、• IPv4 でしか使えない API の利用や、 IPv4アドレスを直接扱っていると問題となる
![Page 13: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/13.jpg)
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構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/14.jpg)
IPv4 アドレスの扱い• 接続先として、 IPv4 アドレス形式で持っている– "192.168.1.1"– "http://172.16.10.1/api/v1"
• ネットワーク接続の確認として、– IPv4 アドレスを持っているかどうか– "0.0.0.0" に接続できるかどうか
![Page 15: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/15.jpg)
どうすればいいの?• アドレスファミリに依存しない高レイヤーのフレームワーク、 API を使う– NSURLSession, CFNetwork
• Apple 曰く、 HTTP の通信はどちらかを使っているから、みんな影響ないでしょ?– まぁ HTTP だけならね…
![Page 16: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/16.jpg)
HTTP 以外の通信• Socket を直接使ってる場合の対応法– CFNetwork に移行する– アドレスファミリ AF_INET6 にも対応する
どっちもどっちかな…
![Page 17: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/17.jpg)
サーバー側は…?• クライアント側は IPv6 対応しなきゃいけないのはわかったけど、サーバー側はどうするの?• クライアントのネットワークはキャリアだったりユーザー任せだからいいけど、サーバー側って自分たちの管理だし、それも IPv6 対応するのってものすごく大変では…?
![Page 18: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/18.jpg)
サーバーは大丈夫!• サーバー側は " 基本的には " 何もしなくていいです• キャリアが IPv6<-
>IPv4 ネットワーク間の変換を行ってくれます ( 将来 )出典 : iOS Developer Library
![Page 19: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/19.jpg)
DNS64• IPv4 アドレス (=A レコード ) しか持たない場合でも、 IPv4 を内包した IPv6 アドレスを生成する• クライアントには
IPv6 として見える出典 : iOS Developer Library
![Page 20: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/20.jpg)
NAT64• DNS64 で生成された
IPv6 アドレスへの接続をアドレス変換して IPv4 ネットワーク上で接続• クライアントとサーバーそれぞれは
Gateway と接続する形となる出典 : iOS Developer Library
![Page 21: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/21.jpg)
一般的なまとめ• アプリは IPv6 対応 API を使いましょう• サーバー側は IPv6 クライアント群はすべて NAT 配下からアクセスがあると思えば基本は OK
![Page 22: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/22.jpg)
Photonにおける IPv6対応
![Page 23: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/23.jpg)
Photon にとっての IPv6 対応• Photon にとっては棘の道でした…– Photon のプロトコルに起因する問題– Photon の接続に関する問題– Unity の対応に関する問題
• 今は全て解決しています!
![Page 24: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/24.jpg)
プロトコルに起因する問題• トランスポートとして基本は UDP を利用– 高レベル API の利用は難しい– 高効率のための独自ロジック
• Client SDK を改修することにより対応
![Page 25: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/25.jpg)
接続に関する問題• Photon を利用する際、一般的に複数回の接続が発生する– Name Server -> Master Server -> Game Server ->
Master Server -> Game Server …• 接続先を指示する際のアドレス表記の問題が発生!
![Page 26: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/26.jpg)
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構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/27.jpg)
次のサーバーへの接続• ルーム作成時は MS よりルームを作るべき GSのアドレスをもらう• 今までの実装では IPv4のアドレスをクライアントに渡していたので、
IPv6 ネットワークでは接続できない
Client MS GS
ルーム作成GS アドレス通知
"192.168.1.1"
接続不可!接続
![Page 28: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/28.jpg)
IPv6 への対応法 〜 Native〜• GS は IPv4 と IPv6 それぞれのアドレスを持ち、それを MS へ通知しておく• MS は Client との接続のアドレスファミリを確認して、アドレスファミリと一致したアドレスを返す
Client MS GS
ルーム作成GS アドレス通知
"fe80:xxxx:…"AF判定
接続
![Page 29: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/29.jpg)
IPv6 への対応法 〜 Bridge〜• GS は IPv4 と「ホスト名」を持ち、それを MS へ通知しておく• Client は IPv6 接続の場合に
IPv6 フラグを立ててリクエストする• MS はフラグを確認して、フラグ立っている場合はホスト名を返す
Client MS GS
ルーム作成 w/IPv6
GS アドレス通知"gs1.aaa.com"
フラグ確認接続
![Page 30: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/30.jpg)
Unity に関する問題• Photon は Unity と一緒に使われるケースが多い• Unity のソケット部分は
IPv6 で全然動かず• サービス提供元の Exit
Games が尽力して Unityのバグフィックスを行った
![Page 31: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/31.jpg)
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構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/32.jpg)
対応させるための設定は?• Photon Cloud 利用の場合– 対応する SDK にバージョンアップすれば OK– 接続の設定などは一切変更する必要なし
• Photon Server 利用の場合– 対応する SDK(Client, Server) にバージョンアップ– Master Server の接続先にホスト名 (FQDN) を設定する– Game Server の PublicHostName の設定を行う
![Page 33: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/33.jpg)
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構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/34.jpg)
Photon IPv6 まとめ• 今は全て IPv6 に対応済み• Cloud 利用の場合は Client SDK のアップデートで OK• Server 利用の場合は、 Client & Server SDKのアップデート、各サーバーへの FQDN 設定、接続先の FQDN 設定、 GS の FQDN 設定
![Page 35: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/35.jpg)
Photon Server構築のポイント
![Page 36: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/36.jpg)
構築のポイント• Photon Server のインストールは非常に簡単!– exe を実行して展開、 Photon Control を起動して、インスタンスを起動
• 実運用するにあたり、複数台の設定や IPv6に関する設定などをご紹介
![Page 37: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/37.jpg)
Master Server と Game Server• 実運用においては、複数台構成になることがほとんど• 2種類のサーバーがある– ロビー & バランシングを行う Master Server–ゲームの実処理を行う Game Server
![Page 38: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/38.jpg)
それぞれの設定方法• 実は、 Photon のヘルプセンターに記事があります!こちらをご覧ください!– https://support.photonengine.jp/hc/ja/articles/
214923898
![Page 39: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/39.jpg)
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構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/40.jpg)
台数はどう決めればいいの?• ゲームの内容次第です!(きっぱり)• なんて言ってちゃ身も蓋もないので、おおまかな目安を伝授します!
![Page 41: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/41.jpg)
Game Server• 4Core CPU / 4GB Memory のサーバーで 1000-
2000CCU を目安• 上記スペックで 1000CCU を基準として、負荷試験を行って上限をアップする検討を• スケールアップより、スケールアウトが効果的• 大きなサーバーで数を収めるのではなく、小さなサーバーで数を調整するほうが柔軟に対応可能
![Page 42: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/42.jpg)
Master Server• 4Core CPU / 4GB Memory で 40000CCU が目安• 実際はロビー・ルーム数の影響が大きい• 大規模な利用を想定する場合は、予め複数のクラスタセット (Master&Game のセット ) を利用することを想定してクライアントを設計を
![Page 43: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/43.jpg)
パフォーマンスチューニング• よく聞かれますが…、基本は Windows も Photon もデフォルト設定でお使いください!• MMO のような使い方は別ですが、一般的な MO のような使い方なら下手にいじらないほうがよいです w
![Page 44: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/44.jpg)
最後に
![Page 45: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/45.jpg)
新サービス• 新しいサービスがリリース予定!– Photon Swarm– Photon Thunder– Photon TrueSync
• 詳細は改めてお知らせします!
![Page 46: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/46.jpg)
今後の予定• 8/3(水 ) XFLAG(mixi) x Photon勉強会@GMO Yours• 8/24-26 CEDEC 2016@横浜セッション、 Photon ワークショップ
PlayCanvas ワークショップこの後も続々開催予定!
![Page 47: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/47.jpg)
ヘルプセンター始めました• ナレッジベースや、コミニュティ ( フォーラム )機能のあるヘルプセンターを開設しました• コンテンツの充実化を図っていきますので、ぜひご利用ください!• https://support.photonengine.jp/hc/ja
![Page 48: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/48.jpg)
お問い合わせ• メールアドレス– [email protected]
• Web もご覧ください– http://photonengine.jp/
• ヘルプセンター– https://support.photonengine.jp/hc/ja
![Page 49: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/49.jpg)
最後に…一緒に働ける仲間を大募集中!詳細はこちら↓
![Page 50: PhotonのIPv6対応情報 & Server構築ポイント](https://reader035.vdocuments.site/reader035/viewer/2022070521/58f018c51a28ab0c368b45ed/html5/thumbnails/50.jpg)
ありがとうございました![email protected]