搭建测试网络
网络模拟由 Microsoft 游戏开发工具包 (GDK) 中的命令行压力测试工具 xbstress.exe 控制。此工具可用于配置各种主机压力源,包括网络模拟。完整详细信息请参阅 xbstress (NDA 主题)。对于网络用途,xbstress 控制着 XBOX One 上一个专门的驱动程序。该驱动会丢包、注入延迟并限制吞吐量。
使用网络模拟时,请提供一个 干净 的网络环境,以确保网络问题只由 xbstress 引起。干净的网络环境应满足以下标准:
- 可用带宽高于模拟目标。
- 连接可靠,丢包忽略不计。
- 延迟尽可能小。将所有节点连在同一链路上,以尽量减小外部延迟来源的影响。
运行基本的网络模拟
xbstress (NDA 主题) 内置了四种预配置的模拟配置文件,便于轻松模拟重要的网络场景: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 的有效延迟。如果你在同一链路上的两台主机上都模拟 average 配置文件,它们双方向的有效点对点延迟将为 50 ms。
运行复杂网络条件的模拟
要验证网络代码是否健壮并可通过认证,请在其面对复杂网络条件时进行测试。此外,还要在主机可以访问部分所需端点、但其他端点不可用或连接带宽受限的情况下测试。你可以使用 xbstress (NDA 主题) 的channel 功能来模拟这类复杂网络条件。
例如,你可以使用 channel 来模拟以下情况:
- 用户无法访问 XBOX 网络(也称为 XBOX Live),但所有其他网络资源均可用。
- 用户无法访问工作室用于托管自定义服务的其中一台服务器。
- XBOX 服务的访问总体上正常,但对特定服务(例如 Achievements)的访问非常缓慢。
- 用户已设置多人游戏会话,但现在无法访问另一用户的主机。
- 为该地址或地址范围指定一个 channel 以及要在该 channel 上模拟的连接配置文件。
- 为你希望使用不同连接配置文件的每个地址或地址范围定义单独的 channel。
- 指定适用于某个模拟场景的所有 channel。
- 使用
xbstress simulate network=channels命令开始按 channel 指定的网络条件进行模拟。
- Channel: 通过 0 到 100 之间的任意数字标识。channel 描述按数字从小到大依次处理。因此,如果你为某个地址指定了两条规则,编号更大的 channel 会应用到该地址。
- Network: 应用于该地址或地址范围的配置文件名称。
- Addresses: 可以单独指定、以分号分隔列出,或使用子网掩码作为范围指定。
运行细粒度的网络模拟
使用xbstress 可以分别控制入站带宽、出站带宽、丢包和延迟。当你想对模拟参数进行更细粒度控制时可以使用这些控制项。详细信息请参阅 xbstress (NDA 主题)。
豁免网络流量
网络模拟不会影响来自 XBOX One 的所有流量。与工具相关的流量被豁免于网络模拟之外。这样可以确保在你使用模拟连接对网络代码进行压力测试并调试相应问题时,工具仍能正常工作。 如果尽管有这些豁免,网络模拟仍导致主机无法使用,你可以停用网络模拟。拔掉主机的电源,等待十秒,重新插上电源,再打开主机。默认端口豁免
以下类型的流量不受网络压力限制影响。此列表并不详尽。在某些情况下,用于系统功能的其他流量也可能允许规避网络压力限制。-
IPv4 网络配置:
- ARP (Address Resolution Protocol)
- DHCP (Dynamic Host Configuration Protocol):UDP (用户数据报协议) 端口 67 和 68
-
IPv6 网络配置:
- SLAAC:ICMPv6
- DHCPv6:UDP 端口 546
- XTF 与 PIX: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 创建豁免。
