Xbox 開発キットでのネットワーク負荷テスト
このトピックを使用して、Xbox One 開発キットで容量が減少したネットワークをシミュレートする方法について説明します。 ユーザーのネットワーク環境は不完全で無秩序です。 開発領域と比較して、利用可能な帯域幅と転送の信頼性はかなり低いことがあります。
多様なユーザー ベースに対して可能な限り最適なエクスペリエンスを提供するには、実際のユーザー環境でゲームをテストしてください。 Xbox One 開発キットを使用して、限られた帯域幅、パケット ロス、遅延のネットワーク シミュレーションを実行できます。 ネットワーク シミュレーションは、さまざまな状況でのゲームの動作を詳しく調べるのに役立ちます。
テスト ネットワークのセットアップ
ネットワーク シミュレーションは、Microsoft Game Development Kit (GDK) のコマンド ライン負荷ツール xbstress.exe で制御されます。 このツールを使用して、ネットワーク シミュレーションを含めた、本体のさまざまなストレス要因を構成します。 詳細については、「xbstress (NDA トピック)認可が必須です」を参照してください。 ネットワークを目的として、xbstress
は Xbox One の特別なドライバーを制御します。 このドライバーはパケットを削除し、待機時間を挿入し、スループットを制限します。
ネットワーク シミュレーションを使用する場合はクリーンなネットワーク環境を提供して、ネットワークの問題が xbstress
によって引き起こされる問題のみになるようにします。 クリーンなネットワーク環境は、次の条件を満たす必要があります。
- シミュレーションの目標帯域幅よりも可用性の高い帯域幅であること。
- パケット ロスが無視できるほど、接続の信頼性が高いこと。
- 遅延が可能な限り最小であること。 すべてのノードを同じリンク上に配置し、遅延を引き起こす外的要因の影響を最小限に抑えます。
ネットワークの基本的なシミュレーションの実行
xbstress (NDA トピック)認可が必須です には、minimum、average、excellent、および broken という 4 つの構成済みシミュレーション プロファイルがあり、これを使用して重要なネットワーク シナリオを簡単にシミュレートできます。 これらのプロファイルは、接続中のインターネット接続の品質を監視するさまざまなソースからの数値に基づいています。
他のコマンドライン ツールと同様に、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 受信: 192 Kbps |
1% | 75 ミリ秒 |
Average (avg) | 適正な DSL 接続を表します。 タイトルのネットワーク パフォーマンスをテストするときにこのプロファイルを重視します。 | 送信: 700 Kbps 受信: 1 Mbps |
1% | 50 ミリ秒 |
Excellent (exc) | 優れたブロードバンド接続を表します。 | 送信: 10 Mbps 受信: 35 Mbps |
0.5% | 30 ミリ秒 |
遅延は、本体のネットワーク フローの双方向に挿入されます。 average プロファイルをシミュレートするために、受信パケットと送信パケットに 25 ミリ秒の遅延を挿入して、50 ミリ秒の実効遅延を実装します。 average プロファイルが同じリンク上の 2 つの本体上にある場合、ピア ツー ピアの実効遅延は双方向で 50 ミリ秒になります。
複雑なネットワーク条件のシミュレーションの実行
ネットワーク コードが堅牢で、サーティフィケーションの準備ができていることを確認するには、複雑なネットワーク状態に直面している場面をテストします。 さらに、本体が使用しているいくつかのエンドポイントに到達できるものの、他のエンドポイントを利用できない、または接続帯域幅に制限がある状況でテストします。 そのような複雑なネットワーク条件は、xbstress (NDA トピック)認可が必須です の channel
機能を使用してシミュレートできます。
たとえば、チャネルを使用して次のような条件をシミュレートします。
- ユーザーは Xbox ネットワーク (Xbox Live とも呼ばれます) にアクセスできませんが、他のすべてのネットワーク リソースを利用できます。
- ユーザーが、カスタム サービスをホストするためにスタジオで使用しているサーバーの 1 つにアクセスできない。
- Xbox Live へのアクセスは全般的に問題ないようですが、(実績などの) 特定のサービスへのアクセスは非常に遅くなります。
- マルチプレイヤー セッションがセットアップされているが、他のユーザーの本体にアクセスできなくなった。
特定のアドレスまたはアドレス範囲へのアクセスをシミュレートする方法を指定するには、
- そのアドレスまたは範囲に対応するチャネルと、そのチャネルでシミュレートする接続プロファイルを指定します。
- 異なる接続プロファイルを指定するアドレスまたはアドレス範囲ごとに、個別のチャネルを定義します。
- シミュレーション シナリオに適用するチャンルをすべて指定します。
- チャネルで指定されているネットワーク条件のシミュレートを開始するには、
xbstress simulate network=channels
コマンドを使用します。
チャネルの指定には次の 3 つの値があります。
チャネル: 0 から 100 の任意の数字によって識別されます。 チャネルの記述は数字が小さいほうから順に処理されます。 そのため、特定のアドレスに 2 つのルールの適用を指定する場合、数字が大きいほうのチャネルがそのアドレスに適用されるチャネルになります。
ネットワーク: アドレスまたはアドレス範囲に適用されるプロファイル名。
アドレス: セミコロン区切りのリストで個別に指定、またはサブネット マスクを使用して範囲で指定できます。
xbstress (NDA トピック)認可が必須です を使用して Xbox ネットワーク へのすべてのアクセスをブロックするには、次のように 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 のタイトルを開発するための開発用ネットワーク アクセスの構成」 を参照してください。
このコマンドの IP アドレスの代わりにホスト名を使用することもできます。 このホスト名は単一の IP アドレスに解決されるため、負荷分散されず、単一の IP アドレスに解決されるサービスでのみ機能します。
xbstress set channel=0 network=min addresses=mytitleservice.com
xbstress simulate network=channel
負荷分散された HTTP サービスの通信を調整またはブロックするには、xbstress (NDA トピック)認可が必須です の代わりに Fiddler を使用する必要があります。 詳細については、「Xbox 開発キット の Fiddler」 を参照してください。
詳細なネットワーク シミュレーションの実行
xbstress
を使用すると、受信帯域幅、送信帯域幅、パケット ロス、遅延を個別に制御できます。 シミュレーションのパラメーターをよりきめ細かく制御する場合は、これらのコントロールを使用します。 詳細については、「xbstress (NDA トピック)認可が必須です」を参照してください。
除外されるネットワーク トラフィック
ネットワーク シミュレーションは、Xbox One からのすべてのトラフィックには影響しません。 ツールに関連付けられたトラフィックは、ネットワーク シミュレーションから除外されます。 これにより、シミュレートされた接続でネットワーク コードを試すときに発生する問題のデバッグ中に、ツールが適切に動作するようにします。
これらの除外設定にもかかわらず、ネットワーク シミュレーションによって本体が使用できなくなる場合は、ネットワーク シミュレーションを非アクティブにできます。 本体の AC アダプターを取り外し、10 秒間待ってから本体にアダプターを接続して、本体の電源を入れます。
既定のポートの除外
次の種類のトラフィックは、ネットワーク負荷の制限による影響を受けません。 この一覧は、完全ではありません。 状況によっては、システム機能に使用されるその他のトラフィックが、ネットワーク負荷の制限を回避することを許可される場合もあります。
IPv4 ネットワーク構成:
- アドレス解決プロトコル (ARP)
- 動的ホスト構成プロトコル (DHCP): ユーザー データグラム プロトコル (UDP) ポート 67 と 68
IPv6 ネットワーク構成:
- SLAAC: ICMPv6
- DHCPv6: UDP ポート 546
XTF と PIX: 伝送制御プロトコル (TCP)、ポート 4201、4221 - 4223
Telnet: TCP、ポート 23、24、2302、2303
XStudio: TCP、ポート 2375
サーバー メッセージ ブロック (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 トピック)認可が必須です を使用して本体上のネットワーク キャプチャーを実行すると、ネットワーク キャプチャーが誤解を招くものになる可能性があります。 パケットのドロップなどのシミュレーションの影響はキャプチャー手順後に実装されます。 たとえば、パケットがネットワーク上に実際に送信される前に、シミュレーション ドライバーによってドロップされていても、パケットが送信されたことをキャプチャが示してしまう可能性があります。