Google开源用于游戏服务器沟通的UDP代理

Google开源新项目Quilkin,这是与游戏公司Embark Studios合作开发的UDP代理,以支持高性能即时多人游戏。Quilkin将原本单体式游戏服务器与客户端中的安全、访问控制、遥测和指标分离出来,让开发者以组合和配置的方式,提供这些通用功能,并在各种多人游戏中重复使用。

Google解释,传统的做法,即时多人游戏的专用游戏服务器,使用特别的UDP协议,提供游戏内玩家间的通信,并且与服务器同步信息,这种通信通常捆绑在单体游戏服务器和客户端中,并且结合安全性、控制访问、物理模拟、人工智能计算等功能。在快节奏的多人游戏中,游戏对话的完整模拟,通常发生在单体专用游戏服务器的内存,由于游戏状态都在内存中,因此每个客户端都直接连接到游戏服务器,但这带来几个问题。

由于专用游戏服务器都是单点故障,因此故障出现,则整个游戏对话都会失败,而这成了恶意攻击者的攻击目标,而且连接到游戏服务器的IP和端口口都是公开的,直接暴露给游戏客户端,因此容易让外部发现而遭到锁定。另外,游戏服务器模拟和网络通信等部分都在同一程序中,难以重用和模块化,同时增加性能问题风险。

不过这些问题,可以在多人UDP流量中部署代理服务器来解决,包括通过提供冗余通信入口点,来提升可靠度,让UDP资料封包同时发送到任意数量的代理,再路由到游戏服务器,当游戏服务器出现单点故障的时候,代理能够改善通信层的冗余和故障转移来解决。

增加代理也提升了安全性,游戏专用服务器的IP和端口口不需要公开,游戏客户端只能看到代理池子集,因此限制了潜在的攻击面,而且使用代理也能获得足够的扩展性,通过分解单体程序,将通信协议、指标、通信安全和访问控制等各功能,转移到代理中,让游戏服务器能够在运算循环中,删除非游戏的运算。

Google提到,目前这些功能,都只有大型游戏工作室可以采用,因为这些工作室才有资源,构建专属于自己的技术。而Google与Embark Studios共同创建的Quilkin,提供了标准开源解决方案,让开发者可用于部署大型多人专用游戏服务器,获得安全性、访问控制、遥测资料和指标等功能。

Quilkin非透明代理设计,让恶意攻击者不容易探查游戏架构的内部状态,但其提供用户极高的可见度,有一组搭配使用的处理过滤器,能够用于监控路由、访问控制和速率限制等。开发者可以将Quilkin用作独立的二进制文件,不需要变更客户端和服务器即可使用,或是也可以当作Rust函数库,Google提到,使用方式取决于用户要进行多深的系统集成。