> ## 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.

# XBOX 開発キットでのネットワーク ストレス テスト

> XBOX 開発キットでのネットワーク ストレス テスト

このトピックでは、XBOX One 開発キットで能力を制限したネットワークをシミュレートする方法について説明します。ユーザーのネットワーク環境は不完全で不安定になり得ます。ユーザーが利用できる帯域幅や伝送信頼性は、開発環境よりもかなり低いことがあります。

多様なユーザーに最高の体験を提供するには、実際の顧客環境に近い条件下でゲームをテストしてください。XBOX One 開発キットを使って、帯域制限、パケット ロス、レイテンシーのネットワーク シミュレーションを実行します。ネットワーク シミュレーションは、変動する条件下でのゲームの挙動を把握する好機です。

## テスト ネットワークのセットアップ

ネットワーク シミュレーションは、Microsoft Game Development Kit (GDK) のコマンドライン ストレス ツール *xbstress.exe* で制御します。このツールを使用して、ネットワーク シミュレーションを含むさまざまなコンソール ストレッサーを構成します。詳細は [xbstress (NDA トピック)](/tools/tools-console/commandlinetools/xbstress) を参照してください。ネットワーク関連では、`xbstress` は XBOX One 上の専用ドライバーを制御します。このドライバーがパケットをドロップし、レイテンシーを注入し、スループットを制限します。

ネットワーク シミュレーションを使う際は、ネットワークの問題が `xbstress` に起因するものだけであることを保証するために、*クリーン* なネットワーク環境を用意してください。クリーンなネットワーク環境は以下の条件を満たす必要があります。

* シミュレーション対象よりも高い利用可能帯域幅であること。
* パケット ロスが無視できる程度に安定した接続性であること。
* レイテンシーが可能な限り小さいこと。外部要因のレイテンシーの影響を最小限にするため、すべてのノードを同じリンクに接続します。

## 基本的なネットワーク シミュレーションの実行

[xbstress (NDA トピック)](/tools/tools-console/commandlinetools/xbstress) には、重要なネットワーク シナリオを簡単にシミュレートできる 4 つの事前構成済みシミュレーション プロファイルがあります: minimum、average、excellent、broken。これらのプロファイルは、インターネット接続品質を継続的に監視するさまざまなソースの数値に基づいています。

他のコマンドライン ツールと同様に、`xbstress` はコマンドライン フラグ `/X:` をコンソールの IP アドレスまたはホスト名として解釈します。シミュレーション コマンドは次のように実行します。

* 低品質の接続をシミュレートするには、`xbstress simulate network=min` を実行します。
* 平均的な接続をシミュレートするには、`xbstress simulate network=avg` を実行します。
* 優れた接続をシミュレートするには、`xbstress simulate network=exc` を実行します。
* 接続断をシミュレートするには、`xbstress simulate network=broken` を実行します。
* 物理的なイーサネット切断をシミュレートするには、`xbstress simulate network=disconnect` を実行します。
* ネットワーク シミュレーションを停止するには、`xbstress stop` を実行します。

以下の表はシミュレーション プロファイルの詳細を示します。

| プロファイル          | 説明                                                                                 | 帯域幅                            | パケット ロス | 注入される合計レイテンシー |
| --------------- | ---------------------------------------------------------------------------------- | ------------------------------ | ------- | ------------- |
| Broken          | 接続断の状態をシミュレートします。この値を指定した場合でも、開発ツール (デバッガー、リモート コマンドライン ツール、PIX など) は引き続き正常に動作します。 | データは送信されません。                   | 100%    | データは送信されません。  |
| Minimum (min)   | XBOX One の最低動作要件を表します。XBOX の認定要件を満たすには、タイトルはこの環境下でも応答停止やクラッシュを起こさずに動作する必要があります。    | 送信: 192 Kbps<br />受信: 192 Kbps | 1%      | 75 ms         |
| Average (avg)   | 妥当な DSL 接続を表します。タイトルのネットワーク パフォーマンスをテストする際は、このプロファイルを重点的に使用します。                    | 送信: 700 Kbps<br />受信: 1 Mbps   | 1%      | 50 ms         |
| Excellent (exc) | 優れたブロードバンド接続を表します。                                                                 | 送信: 10 Mbps<br />受信: 35 Mbps   | 0.5%    | 30 ms         |

レイテンシーはコンソールのネットワーク フローの両方向に注入されます。average プロファイルをシミュレートする場合、受信および送信パケットにそれぞれ 25 ms の遅延を注入することで、実効レイテンシー 50 ms を実現します。同じリンク上の 2 台のコンソールで average プロファイルをシミュレートすると、両方向のピア間実効レイテンシーは 50 ms になります。

## 複雑なネットワーク条件のシミュレーション実行

ネットワーク コードが堅牢で認定準備が整っているかを検証するには、複雑なネットワーク条件下でテストしてください。加えて、コンソールが利用しているエンドポイントのうち一部には到達できるが他は利用不可、あるいは接続の帯域幅が制限されているといった状況でもテストしてください。このような複雑なネットワーク条件は、[xbstress (NDA トピック)](/tools/tools-console/commandlinetools/xbstress) の `channel` 機能でシミュレートできます。

たとえば、次のような状況を再現するにはチャネルを使用します。

* ユーザーが XBOX network (XBOX Live) にアクセスできないが、その他のネットワーク リソースはすべて利用可能な状態。
* ユーザーが、スタジオがカスタム サービスをホストするために使用しているサーバーの 1 つにアクセスできない状態。
* XBOX サービスへのアクセスは全体的には問題ないが、特定サービス (Achievements など) へのアクセスが非常に遅い状態。
* ユーザーはマルチプレイヤー セッションをセットアップしたが、別ユーザーのコンソールにアクセスできない状態。

特定のアドレスまたはアドレス範囲へのアクセスをどのようにシミュレートするかを指定するには

1. アドレスまたは範囲、およびそのチャネルでシミュレートする接続プロファイルに対してチャネルを指定します。
2. 異なる接続プロファイルを指定したい各アドレスまたはアドレス範囲ごとに別々のチャネルを定義します。
3. シミュレーション シナリオに該当するすべてのチャネルを指定します。
4. `xbstress simulate network=channels` コマンドを使用して、指定したチャネルのネットワーク条件でシミュレーションを開始します。

各チャネル仕様は以下の 3 つの値を持ちます。

* **Channel:** 0〜100 までの任意の番号で識別します。チャネル記述は番号の小さいものから大きいものへ順に処理されます。そのため、特定のアドレスに適用されるルールが 2 つ指定されている場合、番号の大きいチャネルがそのアドレスに適用されます。

* **Network:** アドレスまたはアドレス範囲に適用するプロファイル名。

* **Addresses:** 個別に指定、セミコロン区切りリスト、あるいはサブネット マスクによる範囲で指定できます。

[xbstress (NDA トピック)](/tools/tools-console/commandlinetools/xbstress) を使用して XBOX network へのすべてのアクセスをブロックするには、以下のように XBOX サーバーの IP アドレスを使用します。

```
      xbstress set channel=0 network=broken addresses=134.170.28.0/255.255.254.0
      xbstress set channel=1 network=broken addresses=191.232.80.128/255.255.255.128
      xbstress set channel=2 network=broken addresses=191.232.82.128/255.255.255.128
      xbstress set channel=3 network=broken addresses=191.234.78.0/255.255.254.0
      xbstress set channel=4 network=broken addresses=131.253.28.0/255.255.254.0
      xbstress set channel=5 network=broken addresses=134.170.176.0/255.255.252.0
      xbstress set channel=6 network=broken addresses=157.56.70.0/255.255.254.0
      xbstress set channel=7 network=broken addresses=65.55.42.0/255.255.254.0
      xbstress set channel=8 network=broken addresses=131.253.22.0/255.255.254.0
      xbstress set channel=9 network=broken addresses=191.234.240.0/255.255.248.0
      xbstress simulate network=channels
```

XBOX サーバーのアドレスの詳細については、[Microsoft Game Development Kit タイトル開発向けの開発ネットワーク アクセス構成](/home/setup-install/devkits/settings/configure-dev-network) を参照してください。

このコマンドでは IP アドレスの代わりにホスト名も使用できます。このホスト名は 1 つの IP アドレスに解決されるため、負荷分散されておらず単一の IP アドレスに解決されるサービスに対してのみ機能します。

```
      xbstress set channel=0 network=min addresses=mytitleservice.com
      xbstress simulate network=channel
```

負荷分散された HTTP サービスの通信を絞ったりブロックしたりするには、[xbstress (NDA トピック)](/tools/tools-console/commandlinetools/xbstress) の代わりに Fiddler を使用してください。詳細は [XBOX 開発キット上の Fiddler](/build/console-features/networking/tools/fiddler-setup-networking) を参照してください。

## 詳細なネットワーク シミュレーションの実行

`xbstress` を使用すると、受信帯域幅、送信帯域幅、パケット ロス、レイテンシーを個別に制御できます。シミュレーション パラメーターをより細かく制御したい場合はこの機能を使用します。詳細は [xbstress (NDA トピック)](/tools/tools-console/commandlinetools/xbstress) を参照してください。

## ネットワーク トラフィックの除外

ネットワーク シミュレーションは、XBOX One から発せられるすべてのトラフィックに影響するわけではありません。ツール関連のトラフィックはネットワーク シミュレーションから除外されます。これにより、シミュレートされた接続下でネットワーク コードに負荷を掛けて発生する問題をデバッグしている間も、ツールが正常に動作することが保証されます。

これらの除外にもかかわらずネットワーク シミュレーションによってコンソールが使用不能になった場合、ネットワーク シミュレーションを無効化できます。コンソールの電源を抜き、10 秒待ってから再度差し込み、電源を入れます。

### 既定のポート除外

以下のトラフィックはネットワーク ストレス制限の影響を受けません。この一覧は網羅的ではありません。状況によっては、システム機能に使われるその他のトラフィックもネットワーク ストレス制限を回避できる場合があります。

* IPv4 ネットワーク構成:
  * Address Resolution Protocol (ARP)
  * Dynamic Host Configuration Protocol (DHCP): User Datagram Protocol (UDP) ポート 67 および 68

* IPv6 ネットワーク構成:
  * SLAAC: ICMPv6
  * DHCPv6: UDP ポート 546

* XTF および PIX: Transmission Control Protocol (TCP)、ポート 4201 および 4221〜4223

* Telnet: TCP、ポート 23、24、2302、および 2303

* XStudio: TCP、ポート 2375

* Server Message Block (SMB): TCP 445

### ポートのカスタム除外

ネットワーク シミュレーションから追加のポートを除外し、独自のカスタム ツールで使用するには、`xbstress` でカスタム除外を設定します。設定したポートを使ってツールがネットワーク越しに通信できるようになります。

除外を設定するには、`xbstress` の `tcpportexemptions` または `udpportexemptions` 引数を使用します。どちらの引数も、セミコロン区切りのポート一覧を指定します。以下は使用例です。

* `xbstress set tcpportexemptions 49152;49153` コマンドは TCP ポート 49152 と 49153 の除外を作成します。
* `xbstress set udpportexemptions 49153;49154` コマンドは UDP ポート 49153 と 49154 の除外を作成します。

## ネットワーク シミュレーションとネットワーク キャプチャの相互作用

[xbtrace (NDA トピック)](/tools/tools-console/commandlinetools/xbtrace) を使ってコンソール上でネットワーク キャプチャを行いながらネットワーク シミュレーションも実行すると、誤解を招くキャプチャ結果になる場合があります。シミュレーションの効果 (パケット ドロップなど) はキャプチャ手順の後に実装されるためです。たとえば、実際にはネットワーク上に送信される前にシミュレーション ドライバーによってドロップされたパケットでも、キャプチャ上は送信されたように見えることがあります。

## 関連項目

[Stress (xbstress.exe) (NDA トピック)](/tools/tools-console/commandlinetools/xbstress)
