写点什么

SPICE 协议浅析

  • 2024-12-16
    北京
  • 本文字数:1319 字

    阅读完需:约 4 分钟

本文分享自天翼云开发者社区《SPICE协议浅析》,作者:王****均


云环境中根据使用场景不同,有多种远程控制台传输协议,如 SPICE、VNC、RDP 等。

SPICE 是 Simple Protocol for independent Computing Environment 的缩写,表示独立计算环境的简单协议。

SPICE 协议由三个基本部分组成:Spice 协议,Spice server 和 Spice client。采用带外的管理模式进行云主机图像画面的采集和传输,适用于 LAN 和 WAN,可以处理虚拟设备(后端 back-end)和前端 front-end。在前端和后端间通过 VDI(Virtual Device Interfaces)进行交互。


一、SPICE 协议

SPICE 协议用于 client 和 server 间的通信,比如传输图形对象, 键盘和鼠标事件, 光标信息, Audio playback 和录音,以及控制命令。

SPICE 协议可以在云主机控制台画面传输过程中进行安全防护、效率优化,保障用户使用云主机的安全可靠和极致的用户体验,包括协议加密、算法自适应、USB 重定向等多个关键技术。

1、协议加密:支持 TLS 加密,提供保密性和数据完整性,保障数据在传输过程中的安全,并且可根据用户需求进行算法替换。

2、算法自适应:针对文字、图片、视频等不同的显示类型,自动进行检测适配,及时调整压缩算法,降低控制台带宽占用,保障用户网络稳定。

3、USB 重定向:利用 USB 重定向技术,支持将多种类型的 USB 外部设备接入云主机,具有良好的兼容性和使用体验。

另外,SPICE 协议还支持高清的分辨率、多媒体高清视频(4K 视频)播放和多屏显示,保障用户远程访问云主机具有极致体验。


二、Spice server

spice server 是通过 libspice 和 VDI library 实现的。VDI 提供了一个标准的方法来发布虚拟设别的接口。这使得其他的软件部件可以和这些 virtual device 交互。一方面,server 使用 Spice 协议和远程 client 通信,另一方面,它和 VDI host 应用进行交互。server 为了远程显示的目的,server 维护了一个命令序列和一棵树来管理当前对象的依赖关系和覆盖关系。QXL 命令被处理转换为 Spice 协议,然后发送给客户端。

架构图如下:



Server 通过 channels 和 client 通信。每一个 channel 类型对应一种特定类型的数据。每一个 channel 使用专用的 TCP port。服务端的 channel 和 client 的 channel 是对应的,也有 Main, Inputs, Display, Cursor Playback 和 Record。


三、Spice client

Spice 跨平台客户端是终端用户的接口。架构图如下:



Spice 包含的关键类有:Application、Channels、Screens 和 Windows


Application 包含 Clients, monitos 和 screens,这个类实现了通用的应用功能:命令行解析,主循环,时间处理,鼠标事件重定向,全屏切换等等。


Channels:client 和服务端通过 channels 进行通信,每一个 channel 类型对应着特定的数据类型。每个 channel 使用专门的 TCP 端口,有一个专门的线程来处理,所以我们可以为每一个 channel 设置单独的优先级来达到不同的 QoS。


Screens 和 Windows:提供窗口控制和操作逻辑。ScreenLayer - screen layer 绑定到特定的 screen,用来提供矩形区域的操作。layer 是 z-order。RedScreen - 实现 screen 的逻辑,控制 window,使用 screen layers 来显示他的内容。RedDrawable - 基本 pixmap 的平台特定实现。它支持基本的渲染操作。


综上,SPICE 协议提供了一种兼顾色彩、音频和外设管理等方面的云主机控制台解决方案。

用户头像

还未添加个人签名 2022-02-22 加入

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

评论

发布
暂无评论
SPICE协议浅析_云计算_天翼云开发者社区_InfoQ写作社区