> ## 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 開發套件執行有限頻寬、封包遺失及延遲的網路模擬。網路模擬讓您有機會深入了解遊戲在各種狀況下的行為。

## 設定測試網路

網路模擬由 *xbstress.exe* 控制，這是 Microsoft Game Development Kit (GDK) 中的命令列壓力工具。使用此工具可設定各種主機壓力來源，包括網路模擬。如需完整詳細資料，請參閱 [xbstress (NDA 主題)](/zh-TW/tools/tools-console/commandlinetools/xbstress)。就網路用途而言，`xbstress` 會控制 XBOX One 上的特殊驅動程式。此驅動程式會丟棄封包、注入延遲並限制輸送量。

使用網路模擬時，請提供*乾淨*的網路環境，以確保唯一的網路問題是由 `xbstress` 所造成。乾淨的網路環境應符合下列條件。

* 可用頻寬高於模擬目標的頻寬。
* 連線可靠，封包遺失可忽略不計。
* 延遲盡可能最小。將所有節點放在同一個連結上，以盡量減少外部延遲來源的影響。

## 執行基本網路模擬

[xbstress (NDA 主題)](/zh-TW/tools/tools-console/commandlinetools/xbstress) 有四個預先設定的模擬設定檔，可輕鬆模擬重要的網路案例：最低、平均、極佳及中斷。這些設定檔是根據持續監控網際網路連線品質的各種來源所提供的數據而制定。

與其他命令列工具一樣，`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% | 不傳輸任何資料。 |
| 最低 (min) | 代表 XBOX One 的最低運作需求。遊戲必須能夠支援此環境，而不會停止回應或當機，才能符合 XBOX 認證需求。 | 輸出：192 Kbps<br />輸入：192 Kbps | 1% | 75 毫秒 |
| 平均 (avg) | 代表合理的 DSL 連線。測試遊戲的網路效能時，請著重於此設定檔。 | 輸出：700 Kbps<br />輸入：1 Mbps | 1% | 50 毫秒 |
| 極佳 (exc) | 代表極佳的寬頻連線。 | 輸出：10 Mbps<br />輸入：35 Mbps | 0.5% | 30 毫秒 |

延遲會注入主機網路流量的兩個方向。為了模擬平均設定檔，我們會在輸入和輸出封包上各注入 25 毫秒的延遲，以實現 50 毫秒的有效延遲。如果您在同一連結上的兩部主機上模擬平均設定檔，它們在兩個方向的有效點對點延遲都會是 50 毫秒。

## 執行複雜網路狀況的模擬

若要確認您的網路程式碼穩健且已準備好接受認證，請在面對複雜網路狀況時進行測試。此外，也請在主機可以連線到部分所使用端點、但其他端點無法使用或連線頻寬受限的情況下進行測試。您可以使用 [xbstress (NDA 主題)](/zh-TW/tools/tools-console/commandlinetools/xbstress) 的 `channel` 功能來模擬這類複雜網路狀況。

例如，您可以使用通道模擬如下的狀況：

* 使用者無法存取 XBOX 網路 (也稱為 XBOX Live)，但所有其他網路資源都可使用。
* 使用者無法存取工作室用來裝載自訂服務的其中一部伺服器。
* 一般而言，存取 XBOX services 似乎正常，但存取特定服務 (例如成就) 非常緩慢。
* 使用者已設定多人遊戲工作階段，但現在無法存取其他使用者的主機。

若要指定應如何模擬對特定位址或位址範圍的存取

1. 為位址或範圍指定通道，以及要透過該通道模擬的連線設定檔。
2. 針對每個要指定不同連線設定檔的位址或位址範圍，定義個別的通道。
3. 指定套用至模擬案例的所有通道。
4. 使用 `xbstress simulate network=channels` 命令，開始模擬通道所指定的網路狀況。

每個通道規格都有下列三個值。

* **通道：** 以 0 到 100 之間的任意數字識別。通道描述會依數字順序由低到高處理。因此，如果您指定兩個套用至特定位址的規則，則會將編號較高的通道套用至該位址。

* **網路：** 要套用至位址或位址範圍的設定檔名稱。

* **位址：** 可以個別指定、以分號分隔的清單指定，或使用子網路遮罩以範圍指定。

若要使用 [xbstress (NDA 主題)](/zh-TW/tools/tools-console/commandlinetools/xbstress) 封鎖對 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 遊戲](/zh-TW/home/setup-install/devkits/settings/configure-dev-network)。

此命令也可以使用主機名稱取代 IP 位址。此主機名稱會解析為單一 IP 位址，因此只適用於未經負載平衡且解析為單一 IP 位址的服務。

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

若要節流或封鎖負載平衡 HTTP 服務的通訊，應使用 Fiddler 而非 [xbstress (NDA 主題)](/zh-TW/tools/tools-console/commandlinetools/xbstress)。如需詳細資訊，請參閱 [XBOX 開發套件上的 Fiddler](/zh-TW/build/console-features/networking/tools/fiddler-setup-networking)。

## 執行精細的網路模擬

使用 `xbstress` 個別控制輸入頻寬、輸出頻寬、封包遺失及延遲。當您想要更精細地控制模擬參數時，請使用這些控制項。如需詳細資料，請參閱 [xbstress (NDA 主題)](/zh-TW/tools/tools-console/commandlinetools/xbstress)。

## 豁免網路流量

網路模擬不會影響來自 XBOX One 的所有流量。與工具相關的流量不受網路模擬影響。這可確保在您以模擬連線挑戰網路程式碼並偵錯所產生的問題時，工具仍能正常運作。

儘管有這些豁免，如果網路模擬導致主機無法使用，您可以停用網路模擬。拔除主機的電源供應器，等待十秒鐘，插回主機電源，然後開啟主機。

### 預設連接埠豁免

下列類型的流量不受網路壓力限制影響。此清單並非詳盡無遺。在某些情況下，用於系統功能的其他流量也可能不受網路壓力限制影響。

* 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 主題)](/zh-TW/tools/tools-console/commandlinetools/xbtrace) 執行主機上的網路擷取，可能會產生誤導性的網路擷取結果。模擬效果 (例如封包丟棄) 是在擷取程序之後才實作。例如，擷取結果可能顯示某個封包已傳輸，但該封包實際上在透過網路傳輸之前，就已被模擬驅動程式丟棄。

## 另請參閱

[壓力 (xbstress.exe) (NDA 主題)](/zh-TW/tools/tools-console/commandlinetools/xbstress)


## Related topics

- [NDA 主題目錄 - Microsoft Learn 線上連結](/zh-TW/nda/nda-topic-directory.md)
- [XBOX 主機遊戲的認證測試 XBOX 需求](/zh-TW/publishing/certification/console-cert-tested-requirements.md)
- [XBOX 开发套件上的网络压力测试](/zh-CN/build/console-features/networking/tools/netstress-networking.md)
- [XBOX 开发套件上的 Developer Home (DevHome)](/zh-CN/tools/tools-console/devhome/index.md)
- [工具](/zh-CN/build/console-features/networking/tools/index.md)
