テスト ネットワークのセットアップ
ネットワーク シミュレーションは、Microsoft Game Development Kit (GDK) のコマンドライン ストレス ツール xbstress.exe で制御します。このツールを使用して、ネットワーク シミュレーションを含むさまざまなコンソール ストレッサーを構成します。詳細は xbstress (NDA トピック) を参照してください。ネットワーク関連では、xbstress は XBOX One 上の専用ドライバーを制御します。このドライバーがパケットをドロップし、レイテンシーを注入し、スループットを制限します。
ネットワーク シミュレーションを使う際は、ネットワークの問題が xbstress に起因するものだけであることを保証するために、クリーン なネットワーク環境を用意してください。クリーンなネットワーク環境は以下の条件を満たす必要があります。
- シミュレーション対象よりも高い利用可能帯域幅であること。
- パケット ロスが無視できる程度に安定した接続性であること。
- レイテンシーが可能な限り小さいこと。外部要因のレイテンシーの影響を最小限にするため、すべてのノードを同じリンクに接続します。
基本的なネットワーク シミュレーションの実行
xbstress (NDA トピック) には、重要なネットワーク シナリオを簡単にシミュレートできる 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を実行します。
レイテンシーはコンソールのネットワーク フローの両方向に注入されます。average プロファイルをシミュレートする場合、受信および送信パケットにそれぞれ 25 ms の遅延を注入することで、実効レイテンシー 50 ms を実現します。同じリンク上の 2 台のコンソールで average プロファイルをシミュレートすると、両方向のピア間実効レイテンシーは 50 ms になります。
複雑なネットワーク条件のシミュレーション実行
ネットワーク コードが堅牢で認定準備が整っているかを検証するには、複雑なネットワーク条件下でテストしてください。加えて、コンソールが利用しているエンドポイントのうち一部には到達できるが他は利用不可、あるいは接続の帯域幅が制限されているといった状況でもテストしてください。このような複雑なネットワーク条件は、xbstress (NDA トピック) のchannel 機能でシミュレートできます。
たとえば、次のような状況を再現するにはチャネルを使用します。
- ユーザーが XBOX network (XBOX Live) にアクセスできないが、その他のネットワーク リソースはすべて利用可能な状態。
- ユーザーが、スタジオがカスタム サービスをホストするために使用しているサーバーの 1 つにアクセスできない状態。
- XBOX サービスへのアクセスは全体的には問題ないが、特定サービス (Achievements など) へのアクセスが非常に遅い状態。
- ユーザーはマルチプレイヤー セッションをセットアップしたが、別ユーザーのコンソールにアクセスできない状態。
- アドレスまたは範囲、およびそのチャネルでシミュレートする接続プロファイルに対してチャネルを指定します。
- 異なる接続プロファイルを指定したい各アドレスまたはアドレス範囲ごとに別々のチャネルを定義します。
- シミュレーション シナリオに該当するすべてのチャネルを指定します。
xbstress simulate network=channelsコマンドを使用して、指定したチャネルのネットワーク条件でシミュレーションを開始します。
- Channel: 0〜100 までの任意の番号で識別します。チャネル記述は番号の小さいものから大きいものへ順に処理されます。そのため、特定のアドレスに適用されるルールが 2 つ指定されている場合、番号の大きいチャネルがそのアドレスに適用されます。
- Network: アドレスまたはアドレス範囲に適用するプロファイル名。
- Addresses: 個別に指定、セミコロン区切りリスト、あるいはサブネット マスクによる範囲で指定できます。
詳細なネットワーク シミュレーションの実行
xbstress を使用すると、受信帯域幅、送信帯域幅、パケット ロス、レイテンシーを個別に制御できます。シミュレーション パラメーターをより細かく制御したい場合はこの機能を使用します。詳細は xbstress (NDA トピック) を参照してください。
ネットワーク トラフィックの除外
ネットワーク シミュレーションは、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 の除外を作成します。
