译者 | 布加迪
审校 | 孙淑娟
为了提供快速、流畅、无抖动的游戏,又确保超低端到端延迟,社交媒体巨头Meta创建了一套在单单一台服务器上就能运行多个游戏的基础架构以获得经济效率,同时保持数据安全,该公司的软件工程师在博文中写道。
他们坚称,这个低延迟的游戏平台还可以充当Meta元宇宙的基础。
Facebook于2020年推出了云游戏平台,让用户能够在所有浏览器上快速访问原生的安卓和Windows移动游戏。大量的消费者访问随之带来了开发和工程方面的诸多挑战。
网络、托管和集群管理
Meta在提供低端到端延迟方面采取的第一步是物理措施,即缩短云游戏基础架构与玩家本身之间的距离。为此,Meta使用了边缘计算,并部署在靠近大量玩家的边缘。边缘计算的目的是“拥有一个统一的托管环境,确保我们可以尽可能流畅地运行尽可能多的游戏,”Meta工程师Qunshu Zhang和Xiaoxing Zhu写道。
图1. 边缘计算站点越多,用户延迟越低
下一步,Meta的目标是“确保我们可以尽可能流畅地运行尽可能多的游戏”,工程师们写道。
为此Meta与英伟达合作,在他们使用的GPU上构建了一个托管环境。Meta认为,这一步将提供“我们加载和流式传输游戏所需要的高逼真和低延迟”。
集群管理可以帮助缩短端到端延迟。为此,Meta使用了内部开发的Twine集群管理系统。Twine在边缘处协调游戏服务器,自定义构建编排服务管理流信号。Windows和安卓都有不同的托管解决方案,这可以提供更大的灵活性。
图2. Meta的云游戏基础架构
音频和视频流
高质量音频和视频是云游戏最重要的两个方面。音视频的质量要有保障。Meta的工程师们选择了带有安全实时传输协议(SRTP)的WebRTC,用于流式传输用户输入和视频/音频帧。
工程师们仔细研究了他们目前使用的工作流程:
游戏玩家执行了一个动作(让角色跳跃)->点击事件被捕获,并发送到服务器->游戏模拟器收到事件->游戏渲染了包含动作结果(角色跳跃)的帧->Meta捕获了渲染后的帧,拷贝该帧,并使用视频编码器对帧进行编码 —>帧加以数据包化,以适合用户数据报协议(UDP)数据包的格式 —> 通过网络发送到玩家 —> 数据包被解码成帧,并为玩家渲染。
虽然每个动作快速执行,但所有这些动作累加起来可能会导致性能看似缓慢。
修改后的工作流程现在包括较少的步骤:
图3. GPU编码有助于缩减视频和音频流的延迟
现在,当游戏渲染帧时,它在GPU中渲染,在编码之前不会离开GPU内存。因此,新进程并不使用GPU和主服务器之间过多的PCI总线。为了进一步提高效率,这个过程还创建了最终小于原始帧的编码帧。
为了继续力求改进延迟,需要解码时,视频先于音频发送,这与当前音频和视频一起发送的做法不一样。Meta还可以充分利用玩家的计算机显示器或手机屏幕的固有延迟。屏幕以一定的速率(比如30fps或60fps)一帧一帧地渲染。Meta可以使用帧与帧之间那些难以察觉的间隔,帮助消化一些抖动,并确保视频平滑。如果是支持更高FPS的设备,延迟可以进一步缩短。
安全
这套系统服务于基于Windows和安卓的系统,解决了这些环境的安全挑战,同样需要防范DDOS攻击等威胁。
为了确保安全,Meta的云游戏基础架构与其核心数据完全分离。就如何保护云游戏基础架构而言,安全威胁在开发的各个阶段都进行了测试,从设计开始,一直持续到实施和测试。这包括威胁建模、安全代码审查、模糊测试和安全测试。Meta还请外部公司执行安全评估,作为另一层保护。
云游戏的下一步是什么?
在技术改进方面,Meta目前正在与移动网络运营商合作以改善移动网络的延迟,并与芯片组网络厂商合作以缩短用户设备的延迟。工程团队还在研究新的容器技术,以提供更好的流传输效率,并继续确保安全措施与所有新兴领域保持同步。
原文标题:A Look at Meta’s Low-Latency Metaverse Infrastructure,作者:Jessica Wachtel