> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GDK での Quality of Service の測定

> Microsoft Game Development Kit での Quality of Service の測定

このトピックを使用して、GDK タイトルで Quality of Service (QoS) を測定する方法を理解してください。マルチプレイヤー タイトルにとって、QoS 遅延を測定することは重要です。ピアツーピア接続の場合、QoS 遅延の測定を使用して、別のクライアントとのゲームプレイが実行可能かどうかを判断できます。クライアント/サーバー接続の場合、QoS 遅延の測定を使用して、ゲームプレイに最適なデータセンターの場所を判断できます。

XBOX One ERA タイトルの場合、Secure Sockets には遅延と帯域幅を測定する QoS API が含まれていました。GDK タイトルは、以下のセクションで説明するように同じ機能を実現できます。

## ピアツーピア

ピアツーピア通信を使用するタイトルは、タイトル コード、ゲーム エンジン、またはミドルウェアでカスタムの QoS 実装を使用できます。

すべての実装で、タイトルは次のガイドラインを満たすようにしてください。

* セキュアな通信のベスト プラクティス。
  タイトルは、コンテンツに関係なく、すべてのネットワーク通信をセキュリティで保護するためのベスト プラクティスに従う必要があります。これは、ピアツーピア UDP QoS プローブにも適用される必要があります。これらのプローブは、セキュアなプロトコル接続を通じて実行される必要があります。セキュアなプロトコルのベスト プラクティスの詳細については、[Microsoft Game Development Kit タイトルのためのセキュアなゲーム メッシュ通信 (NDA トピック)](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/game-principles/security/communication-security/communication-security-impl/gc-secure-game-mesh-impl) を参照してください。
* User Datagram Protocol (UDP) パケット サイズ。
  UDP 通信の場合、タイトルはプラットフォームの最大転送単位 (MTU) を超えないようにしてください。パケットあたりの既定の最大 UDP ペイロードは、XBOX コンソールおよび Windows 10 上の Microsoft Game Development Kit (GDK) タイトルでは 1,384 バイトです。MTU を超えるパケットは断片化される可能性が高く、これにより追加の遅延やパケット ドロップにつながる可能性があります。
* プロトコルと通信チャネルの一致。
  ピアツーピア QoS は、ゲームプレイ トラフィックに使用されるのと同じ通信チャネルとプロトコルを介して常に実行される必要があります。これにより、すべての測定が、遅延や帯域幅を含むゲームプレイ トラフィックの動作を反映することが保証されます。
* セッション ブラウズ QoS の動作。
  セッション ブラウズ リストの一部として QoS を使用するタイトルは、意図せず人気のホストに対する QoS のフラッディングを引き起こす可能性があります。これは、セッション ブラウズ リストがすべてのユーザーで同一であり、自動 QoS テストが含まれている場合に発生します。このシナリオでは、セッション ブラウズ リストを表示するすべてのユーザーが、リストの上位のホストに対して QoS テストを実行します。これは重い負荷を引き起こし、ホストやサーバーをフラッドさせる可能性があります。この問題を軽減するために、タイトルはセッション ブラウズ リストを部分的にランダム化することが推奨されます。
* 他のタイトルの帯域幅の使用状況。
  QoS 測定は、他のローカルまたはリモート ネットワークの動作の影響を受けます。タイトルは他のプラットフォームまたはサブネットのトラフィックの動作に影響を与えることはできません。しかし、内部のタイトル トラフィックの制御は依然として可能です。タイトルはこれを確保し、QoS 測定を行う際にタイトルのダウンロードやその他のネットワーク使用を最小限に抑える必要があります。複数の並列の QoS 測定にも同じことが当てはまります。

## クライアント/サーバー

クライアント/サーバー通信を使用するタイトルは、タイトル コード、ゲーム エンジン、またはミドルウェアでカスタムの QoS 実装を使用できます。ピアツーピア QoS 測定とは異なり、クライアント/サーバー QoS 測定の典型的な目的は、特定のデータセンターへの遅延を判断することです。このシナリオのタイトルは、ピアツーピア QoS 測定と同じガイドラインに従うようにしてください。

Azure PlayFab マルチプレイヤー サーバーを使用しているタイトルは、QoS 測定に常に提供されている API を使用する必要があります。詳細については、[Azure へのプレイヤーの遅延を測定するための Quality-of-Service (QoS) ビーコンの使用](/services/playfab/multiplayer/servers/using-qos-beacons-to-measure-player-latency-to-azure) を参照してください。

## QoS メトリックに関する考慮事項

接続品質を判断する最も一般的な 2 つの QoS メトリックは、パケットの *遅延* と利用可能なリンク *帯域幅* です。

* 遅延テスト。
  遅延は通常、2 つのエンドポイント間でパケット単位でテストされます。ベスト プラクティスは、ローカル MTU サイズ未満の少数のパケットをリモート エンドポイントに送信し、そこでパケットがローカル デバイスにエコー バックされることです。これにより、パケットのラウンド トリップ時間が判定されます。測定では、複数のパケットが平均化されるべきです。遅延測定は迅速に実行できます。

* 帯域幅テスト。
  帯域幅は通常、ローカル リンクを飽和させるために、頻度を上げながら大量のデータを別のエンドポイントに送信することでテストされます。ローカルの送信および/または受信バッファーの状態に基づいてリンクの帯域幅を推測できます。バッファーの使用量が増加していることは、リンクが飽和していることを示します。帯域幅の測定にはより長いテスト時間が必要であり、ローカル リンクの品質に影響を与える可能性があります。

遅延と帯域幅は、一般に強く関連しています。帯域幅が制限されると、ネットワークが混雑しているときにパケットがローカルに保持されるため、パケット遅延が高くなります。低遅延は、パケットがローカルに保持されていないことを示すため、利用可能な帯域幅が多いことを示します。その結果、タイトルはゲームプレイ トラフィックの QoS を目的とした遅延測定のみを実行すべきです。ゲームプレイ トラフィックには一般に帯域幅テストは必要ありません。

## QoS のテスト

XBOX One 開発キットは、帯域幅の制限、パケット損失、および遅延をシミュレートするネットワーク シミュレーションを実行できます。カスタム QoS 実装のテストと、すべての QoS 機能のエンドツーエンド テストには、この機能を強くお勧めします。詳細については、[XBOX One ネットワーク ストレス](/build/console-features/networking/tools/netstress-networking) を参照してください。

## 関連情報

[Windows Sockets 2 (Winsock)](https://learn.microsoft.com/windows/desktop/WinSock/windows-sockets-start-page-2)

[PlayFab Party](/build/console-features/networking/game-mesh/playfab-party-intro-networking)

[Azure へのプレイヤーの遅延を測定するための Quality-of-Service (QoS) ビーコンの使用](/services/playfab/multiplayer/servers/using-qos-beacons-to-measure-player-latency-to-azure)


## Related topics

- [PartyRegionQualityMeasurementConfiguration](/ja-jp/services/playfab/multiplayer/networking/reference/structs/partyregionqualitymeasurementconfiguration.md)
- [ゲーム ストリーミング レイテンシーの測定](/ja-jp/build/core-features/common/game-streaming/game-streaming-latency-measurement.md)
- [Game Mesh](/ja-jp/build/console-features/networking/game-mesh/game-mesh-toc.md)
- [XblMultiplayerMeasurementFailure](/ja-jp/reference/live/xsapi-c/multiplayer_c/enums/xblmultiplayermeasurementfailure.md)
- [PlayFab Multiplayer Servers を使ってマルチプレイヤーゲームをホストする](/ja-jp/services/playfab/multiplayer/servers/using-playfab-servers-to-host-games.md)
