本文分享自天翼云开发者社区《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协议提供了一种兼顾色彩、音频和外设管理等方面的云主机控制台解决方案。

SPICE协议浅析的更多相关文章

  1. 【转载】远程桌面协议浅析(VNC/SPICE/RDP)

    远程桌面协议浅析(VNC/SPICE/RDP) 2016年05月14日 01:27:06 wait_for_that_day5 阅读数:18317 标签: VNCRDPSPICE 更多 个人分类: 工 ...

  2. 计算机网络通信TCP/IP协议浅析 网络发展简介(二)

    本文对计算机网络通信的原理进行简单的介绍 首先从网络协议分层的概念进行介绍,然后对TCP.IP协议族进行了概念讲解,然后对操作系统关于通信抽象模型进行了简单介绍,最后简单描述了socket   分层的 ...

  3. Http协议浅析

    目录 Http协议浅析 http协议简介 http协议特性 http请求协议与响应协议 请求协议 响应协议 响应状态码 请求URI定位资源 HTTP方法 GET:获取资源 POST:传输实体主体 PU ...

  4. protobuf 协议浅析

    目录 Protobuf 协议浅析 1. Protobuf 介绍 1.1 Protobuf 基本概念 1.2 Protobuf 的优点 1.3 Protobuf, JSON, XML 的区别 2. Pr ...

  5. 在Ubuntu下的OpenStack中配置使用Spice协议

    在Ubuntu下的OpenStack中配置使用Spice协议 by 无若 ####控制节点#安装apt-get install nova-spiceproxy spice-html5 spice-vd ...

  6. 在CentOS7下的OpenStack中配置使用Spice协议

    在CentOS7下的OpenStack中配置使用Spice协议 by 无若   1. 需要的包 在计算节点上 #yum install spice-html5   注意:使用yum安装spice-ht ...

  7. 远程桌面协议浅析(VNC/SPICE/RDP)

    由于最近项目涉及到虚拟桌面,就花了点时间找了点资料看了一下,目前常用的协议有VNC/SPICE/RDP三种,就在这里做一个简单的介绍. 三种协议的对比 SPICE VNC RDP BIOS屏幕显示 能 ...

  8. CAN-FD协议浅析

    引言 随着电子.半导体.通讯等行业的快速发展,汽车电子智能化的诉求也越来越强,消费者希望驾驶动力性.舒适性.经济性以及娱乐性更强的汽车.汽车制造商为了提高产品竞争力,将越来越多的电子控制系统加入到汽车 ...

  9. HTTP协议浅析(一)

    先来看看百度百科对HTTP的解释 http是一个简单的请求-响应协议,它通常运行在TCP之上.它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应.请求和响应消息的头以ASCII码形式给出: ...

  10. KCP协议浅析

    概述 KCP协议结合了TCP和UDP协议的特点,是一个快速可靠的协议. 引述官方介绍: KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大 ...

随机推荐

  1. Sickos1.1 详细靶机思路 实操笔记

    Sickos1.1 详细靶机思路 实操笔记 免责声明 本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力.请在合法合规的前提下使用本文中提供的任何技术.方法或工具.如果您选择 ...

  2. Docker容器使用问题:Failed to get D-Bus connection: Operation not permitted

    原因是dbus-daemon没能启动.其实systemctl并不是不可以使用.将你的CMD或者entrypoint设置为/usr/sbin/init即可.如: docker run --privile ...

  3. Django之常见问题

    总结Django在使用过程中遇到的一些问题 1.在使用model进行数据查询的时候出现错误: django matching query does not exist. 是使用get函数引起的错误.使 ...

  4. pip之常见错误汇总

    基本使用: 1.安装文件中的包 pip install -r requirements.txt 问题: 1. pip._vendor.urllib3.exceptions.ReadTimeoutErr ...

  5. 服务器间文件实时双向同步(rsync+inotify)

    场景: 主从服务器项目文件实时双向同步(参考:http://www.xcx1024.com/ArtInfo/3026389.html) 一.rsync安装 yum在线: yum install -y ...

  6. 理解Java BlockingQueue

    数据结构与算法是天生一对. BlockingQueue叫做阻塞队列,在Java线程池相关的实现中有广泛的使用. BlockingQueue实现的功能如下: 当队列为空时,往队列中读数据将被阻塞. 当队 ...

  7. InstallShield软件详解

    InstallShield使用说明 文章目录 InstallShield使用说明 术语解释 工程介绍 InstallScript Basic MSI InstallScript MSI 如何选择适合的 ...

  8. ChatGPT生成测试用例的最佳实践(三)

    还记得在第1章,我们利用ChatGPT生成的业务用例吗?这种业务用例生成方式其实和场景法用例设计十分相似,我们是不是也可以直接将业务用例输入ChatGPT,让它输出测试用例呢?笔者输入相关提示词让其补 ...

  9. Attribute application@label value=(xxx) from AndroidManifest.xml:8:16-37 is also present at [com.github.adrielcafe:AndroidAudioConverter:0.0.8] AndroidManifest.xml:11:18-50 value=(@string/app_name)

    关于安卓编译错误Attribute application@label value=(xxx) from AndroidManifest.xml:8:16-37 is also present at ...

  10. Dapr-6: Dapr 状态管理构建块

    第 6 章 Dapr 状态管理构建块 The Dapr state management building block | Microsoft Docs 分布式应用程序由一组独立的服务构成.尽管每个服 ...