PlayFab Party のポート使用、ファイアウォール、およびパケット サイズ要件
このトピックでは、チャットとデータ通信を有効にするために必要な PlayFab Party のポート使用、ファイアウォール、およびパケット サイズ要件に関する詳細を提供します。通信パターン
PlayFab Party は 2 つの通信パターンを使用します。- HTTPS 通信。API 呼び出し元から playfabapi.com を含む複数のクラウド Web サービスに開始されます。
- UDP ソケット ベースのセキュアな通信。透過的なクラウド リレー サーバー、および (サポートされている場合) 他のピア デバイスとの間で行われます。
PartyRegionsChangedStateChange などの自動通知は PartyStateChangeResult::InternetConnectivityError を報告します。
Web サービス要求の問題については、ユーザー ログイン機能などの Party の外部の PlayFab およびプラットフォームの他の必要な操作も失敗する可能性があります。これらの失敗は、多くの場合、HTTPS 接続に対するローカル ファイアウォールの制限またはプロキシ要件によって引き起こされます。ほとんどの問題は、ローカル デバイスまたはネットワークからクラウド Web サービスへの直接的な送信 HTTPS 通信を有効にすることで解決できます。
HTTPS ドメイン名
Microsoft PlayFab Party は、複数のクラウド サービスに対して UDP と HTTPS 接続を実行します。正常な機能を確保するために、ドメイン名に基づいて HTTPS トラフィックをフィルターする環境では、以下の名前または名前パターンにアクセスできるようにする必要があります。 HTTPS 接続:- *.playfabapi.com
- *.speech.microsoft.com
- api.cognitive.microsofttranslator.com
MTU とパケット サイズ
PlayFab Party は、環境のパケット サイズ制限内に大きなアプリケーション メッセージを収めるために、フラグメンテーションと再組み立てを自動的に実行します。この機能があっても、一部のネットワーク環境では通信の失敗を引き起こす場合があります。 現時点で PlayFab Party は、パフォーマンスの低下や潜在的な接続失敗を回避するために、環境が少なくとも 1,419 バイトの Maximum Transmission Unit (MTU) サイズをサポートすることを期待しています。この MTU サイズは、通常の環境でサポートされています。仮想プライベート ネットワーク (VPN)、IPv4/IPv6 トンネリング、または明示的な管理構成により、Party クライアント、サービス、または他のクライアント間のネットワーク パスの片方向または両方向で MTU サイズが削減される可能性があります。 指定された環境でエンドツーエンドでサポートされる MTU が不十分な場合、PartyManager::ConnectToNetwork 操作は PartyStateChangeResult::InternetConnectivityError で失敗する可能性があります。あるいは、接続は成功するかもしれませんが、デバイスは不要なレイテンシ、パケット損失、または予期しない切断に直面する可能性があります。
一部のプラットフォームでは、環境の MTU 構成に関する問題のトラブルシューティングに役立つエンド ユーザー、開発者、またはインターネット サービス プロバイダー向けのツールが提供されており、可能であれば使用する必要があります。
ローカル デバイスの UDP ポート使用
既定では、PlayFab Party ライブラリは、ほとんどのプラットフォームで OS によって動的に割り当てられた利用可能なローカル ポートに UDP ソケットをバインドします。例外は Microsoft Game Core で、PlayFab Party はそのプラットフォームの “preferred local UDP multiplayer port” にバインドするのが既定です。 タイトルは、PartyManager::Initialize() を呼び出す前に PartyOption::LocalUdpSocketBindAddress オプションを設定することで、特定のローカル ポート番号または Microsoft Game Core の “preferred local UDP multiplayer port” 以外の OS が選択した利用可能なポートにバインドするようこの動作を変更できます。要求されたポートが既にタイトル内で、またはデバイス上の別のアプリケーションによって使用されている場合、PartyManager::Initialize() がすぐにエラーを報告するか、初期の PartyRegionsChangedStateChange が PartyStateChangeResult::FailedToBindToLocalUdpSocket エラーを報告し、非同期のネットワーク作成または接続操作は失敗します。
環境固有の理由でエンド ユーザーから要求されない限り、構成不要の最大限の互換性を得るために、タイトルには既定のローカル ポート選択動作を使用することが推奨されます。タイトルが既定でない値を使用する場合、より多くのプラットフォーム固有の要件がある場合があります。ポート使用のガイダンスについては、各プラットフォームのドキュメントを参照してください。
PlayFab Party の通信では、選択されたローカル UDP ポートから次のセクションで説明するリモート宛先へ、送信を開始したパケットとその後続の応答を常に許可する必要があります。ネットワーク管理者は、最大限の互換性のために、RFC 4787 - “Network Address Translation (NAT) Behavioral Requirements for Unicast UDP” のような、ファイアウォールと Network Address Translation (NAT) のインターネット標準のベスト プラクティスに従う必要があります。これらのベスト プラクティスは、Party ネットワークにダイレクト ピアツーピア接続を使用しているタイトルにとって特に重要です。最小限のサポートを持つ環境では、ネットワークへの接続を許可する可能性があるものの、あるデバイスから別のデバイスへのその直接通信の確立を妨げる可能性があるためです。
リモート IP アドレスと UDP ポート
Microsoft PlayFab Party は、ユーザーに最適なレイテンシを提供するために、複数のリージョン間で動的にスケーリングされるサービスを提供します。これは、厳格な通信制約に興味のあるネットワーク管理者が参照できる永続的なリモート宛先ホスト名、IP アドレス、またはポートがないことを意味します。 Microsoft は Azure の IP アドレス範囲リストの毎週の更新を提供しており、ダウンロード可能 です。ローカル ネットワーク トラフィックを制限するために継続的に同期されたポリシーが実行可能な場合、このリストが役立つ可能性があります。ほとんどの場合、このリストの継続的なメンテナンスは困難で、微妙な接続の失敗を引き起こしやすいです。また、Party ネットワーク内のダイレクト ピアツーピア接続では、リモート クライアントの IP アドレスも判明していて接続を許可されている必要があります。これらの理由から、ファイアウォールはリモート IP アドレスの接続を制限しないことをお勧めします。 PlayFab Party で使用可能なサポートされるリモート ポート範囲は、Internet Assigned Numbers Authority (IANA) の予約範囲である 0-1023 以外の任意のポートです。現在、透過的なクラウド リレーには 30000-65535 のポート番号のみが割り当てられますが、Microsoft は将来この動作を変更する権利を留保します。ベスト プラクティスとして、ポート範囲 1024-65535 を使用する必要があります。これは、Party ネットワークにダイレクト ピアツーピア接続を使用するタイトルにとって特に重要です。NAT 実装は通常、この範囲からポートを割り当てるためです。完全な推奨範囲以外のリモート ポートをブロックすると、直接通信も妨げる可能性があります。 UDP 接続を有効にするには、ドメイン名に基づいて UDP トラフィックをフィルターする環境では、以下の名前または名前パターンにアクセスできるようにする必要があります。- *.cloudapp.azure.com
