玩家网关的工作原理 - Amazon GameLift Servers
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

玩家网关的工作原理

玩家网关使用中继网络在游戏客户端和游戏服务器之间路由 UDP 流量。这通过在流量到达游戏服务器之前对其进行验证、限制玩家流量、向公众隐藏游戏服务器 IP 地址以及在中继端点变得不健康时提供更新的端点来防御 DDo S 攻击。

流量流

当玩家连接到游戏会话时,您的游戏后端会从 GetPlayerConnectionDetails API 中检索中继端点和玩家网关令牌,并将其发送到游戏客户端。游戏客户端将玩家网关令牌预置在 UDP 数据包中,并将数据包发送到中继端点。中继网络验证令牌并将合法流量路由到游戏服务器。在交付之前,中继网络会剥离玩家网关令牌,以便游戏服务器接收原始游戏客户端有效负载,并且不需要更改代码。从游戏服务器返回到游戏客户端的通信通过中继网络返回,无需修改。

架构图显示了游戏客户端通过中继网络连接到游戏服务器

核心概念

中继端点

中继端点是游戏客户端用来通过玩家网关发送流量的 IP 地址和端口组合。每个玩家都会收到多个端点,这些端点因玩家而异,以分配流量并减少攻击对同一游戏会话中其他玩家的影响。

该图显示了多个玩家在相同的游戏会话中接收不同的中继端点

玩家网关代币

玩家网关令牌是加密的字节数组,授权玩家通过玩家网关向游戏会话发送流量。GetPlayerConnectionDetailsAPI 以 base64 编码的字符串形式返回令牌。游戏客户端必须在每个 UDP 数据包中预先添加玩家网关令牌。中继网络验证令牌并拒绝带有无效或缺失令牌的数据包。

重要

玩家网关令牌不得加密,并且必须出现在游戏客户端发送的每个 UDP 数据包的开头。如果您的游戏对有效负载进行加密,请在加密游戏数据后预先添加未修改的玩家网关令牌。

玩家网关代币的有效期至少为 3 分钟。我们建议每 60 秒刷新一次令牌,以确保玩家在中继端点变得不健康时收到更新的端点。

GetPlayerConnectionDetails API

您的游戏后端调用 GetPlayerConnectionDetails API 来检索游戏会话中玩家的连接详细信息。API 返回中继端点和玩家网关令牌,或者回退到游戏服务器的 IP 地址和端口进行直接连接。您的游戏客户端应设计为可以处理这两种连接类型。要在中继端点变得不健康时接收更新的端点,请在整个游戏会话中定期调用此 API(建议每 60 秒调用一次)。

有关更多信息,请参阅 GetPlayerConnectionDetails API

监控玩家网关

Player gateway CloudWatch 向 Amazon 发布指标,以帮助您监控网络流量模式、识别潜在的 DDo S 攻击并跟踪中继性能。指标包括入/出的数据包和字节、限制的流量以及玩家会话。有关玩家网关指标的完整列表,请参阅DDoS 保护(玩家网关)指标

IPv4 和 IPv6 兼容性

游戏客户端使用进行通信 IPv4。玩家网关 IPv6 用于与游戏服务器通信。 Amazon GameLift Servers IPv6 根据您的舰队配置自动处理 IPv4 和之间的转换。

有关在舰队上配置玩家网关的更多信息,请参阅CreateFleetCreateContainerFleet。有关 IPv4 和 IPv6 支持的更多信息,请参阅IPv4 和 IPv6 兼容性