Xbox 开发工具包的网络压力测试

本主题介绍如何在 Xbox One 开发工具包上模拟减少容量的网络。 用户网络环境可能是不完善的,也可能是混乱的。 用户的可用带宽和传输可靠性可能远远低于开发空间。

为了给不同的用户群提供最好的体验,请在真实的客户环境中测试游戏。 使用 Xbox One 开发工具包运行网络模拟,模拟受限带宽、数据包丢失和延迟。 网络模拟让你有机会深入了解游戏在变化的条件下的行为。

设置测试网络

网络模拟受 xbstress.exe(Microsoft 游戏开发工具包 (GDK) 中的命令行压力工具)控制。 使用此工具配置不同的主机压力源,包括网络模拟。 有关完整详细信息,请参阅 xbstress(NDA 主题)要求授权。 出于网络目的, xbstress 控制Xbox One上的专门驱动程序。 此驱动程序会丢弃数据包、注入延迟并限制吞吐量。

使用网络模拟时,提供干净的网络环境,以确保网络问题只由 xbstress 导致。 干净的网络环境应符合以下标准。

  • 比模拟目标具有更高的可用带宽。
  • 可靠的连接,数据包丢失可忽略不计。
  • 最小的延迟。 将所有节点放在同一条链接上,以尽量减少外部延迟源的影响。

运行网络的基本模拟

xbstress(NDA 主题)要求授权有四种预配置的模拟配置文件,可以轻松模拟重要的网络场景:最小值、平均值、优秀和已中断。 这些配置文件基于从监视 Internet 连接的持续质量的各种来源获取的数字。

与其他命令行工具一样, 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

下表显示了模拟配置文件的详细信息。

配置文件 说明 带宽 数据包丢失 总插入延迟
断开 模拟连接中断情形。 即使指定了这个值,开发工具(例如调试器、远程命令行工具和PIX)也能继续正常工作。 未传输数据。 100% 未传输数据。
最小(分钟) 表示 Xbox One 的最低运行要求。 游戏必须能够支持这种环境且不会停止响应或崩溃,以满足Xbox认证要求。 出站:192 Kbps
入站:192 Kbps
1% 75 ms
平均 表示合理的 DSL 连接。 在测试游戏的网络性能时,要重点关注这个配置文件。 出站:700 Kbps
入站:1 Mbps
1% 50 ms
极佳 (exc) 代表极佳的宽带连接。 出站:10 Mbps
入站:35 Mbps
0.5% 30 ms

在主机的网络流的两个方向插入延迟。 为模拟平均配置文件,我们通过在传入和传出数据包上插入 25 毫秒延迟来实现 50 毫秒的有效延迟。 如果在相同链接上的两个主机上模拟平均配置文件,其有效的对等延迟在两个方向均为 50 毫秒。

运行复杂网络条件的模拟

要验证网络代码是否可靠并做好认证准备,请在遇到复杂网络状况时进行测试。 此外,在主机可以到达它使用的一些端点,但其他端点不可用或连接带宽有限的情况下进行测试。 可以通过使用 xbstress(NDA 主题)要求授权channel功能模拟此类复杂的网络条件。

例如,将使用频道来模拟如下条件:

  • 用户无法访问 Xbox 网络(也称为 Xbox Live),但所有其他网络资源都可用。
  • 用户无法访问工作室用于托管自定义服务的服务器之一。
  • 一般情况下,对 Xbox 服务的访问似乎正常,但访问特定服务(如成就)的速度非常慢。
  • 用户已经建立了多人会话,但现在他们无法访问其他用户的控制台。

指定如何模拟对特定地址或地址范围的访问

  1. 为地址或范围指定一个频道,以及要在该频道上模拟的连接配置文件。
  2. 为想要在其中指定不同连接配置文件的每个地址或地址范围定义单独的频道。
  3. 指定适用于模拟场景的所有频道。
  4. 使用xbstress simulate network=channels命令开始模拟频道所指定的网络条件。

每个频道规格都有以下三个值。

  • 通道:通过从 0 到 100 的任意数字进行标识。 按序号顺序处理通道描述,从最低到最高。 因此,如果指定了两个适用于特定地址的规则,则较高编号的频道将应用于该地址。

  • 网络:网络是应用于地址或地址范围的配置文件名称。

  • 地址:可以通过以分号分隔的列表、作为范围或使用子网掩码等单独指定地址。

要使用 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 游戏开发工具包游戏

还可以使用主机名而不是此命令的 IP 地址。 此主机名将解析为单个 IP 地址,因此仅适用于未进行负载均衡并解析为单个 IP 地址的服务。

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

要限制或阻止负载均衡的 HTTP 服务的通信,应使用 Fiddler 而不是 xbstress(NDA 主题)要求授权。 有关详细信息,请参阅 Xbox 开发工具包上的 Fiddler

运行网络的细化模拟

使用xbstress来单独控制入站带宽、出站带宽、丢包和延迟。 当想对模拟参数进行更细化的控制时,使用这些控件。 有关详细信息,请参阅 xbstress(NDA 主题)要求授权

豁免网络流量

网络模拟并不会影响所有来自Xbox One的流量。 与工具相关的流量可以免于网络模拟。 这将确保,当您调试通过模拟连接质询网络代码所引发的问题时,工具能正常工作。

如果网络模拟导致控制台无法使用,尽管有这些豁免,也可以停用网络模拟。 通过拔出主机的电源,等待 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中的tcpportexemptionsudpportexemptions参数。 这两个参数的后面都是以分号分隔的要得到豁免的端口列表。 下面的示例演示这些命令的用法。

  • xbstress set tcpportexemptions 49152;49153 命令为 TCP 端口 49152 和 49153 创建豁免。
  • xbstress set udpportexemptions 49153;49154 命令为 UDP 端口 49153 和 49154 创建豁免。

网络模拟和网络捕获之间的互动

使用 xbtrace(NDA 主题)要求授权在执行控制台网络捕获的同时还执行网络模拟,可能会导致误导性的网络捕获。 模拟效果(如丢包)是在捕获程序后实现的。 例如,捕获可以表明已传输数据包,即使随后模拟驱动程序在网络上实际传输之前已将它丢弃。

另请参阅

压力 (xbstress.exe)(NDA 主题)要求授权