本文分享自天翼云开发者社区《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. canvas 隐写术

    http://www.alloyteam.com/2016/03/image-steganography/#prettyPhoto https://www.cnblogs.com/Miracle-ZL ...

  2. jQuery.validator验证无效的可能原因

    最近用jQuery.validator做表单的前端验证,却发现验证规则都无效.最后发现以下原因会导致校验无效 1.jquery.min.js重复引用. 2.js中有bug存在. 3.<input ...

  3. 原生JS点名器,随机数

    因为工作内容的需要自己琢磨了一个随机数的点名器,很早就写出了一版,今天无意间又看到了之前写的代码,还是有很多bug的,今天做了完善在这里分享给大家 <script type="text ...

  4. Python 潮流周刊#80:Django 项目性能调优(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  5. Collector的配置和使用

    目录 Collector的配置和使用 Collector配置 Receivers Processors Exporters Service Extensions 使用环境变量 Collector的使用 ...

  6. linux su命令卡顿,linux su特别慢问题排查

    问题:发现同机房两台同网络域的主机,一台su用户正常,一台每次都需要等5s左右. 进展:杂事儿太多没深入排查,后续又发现了几台有同样问题的主机.非常影响效率.开始入手排查 分析: 1.之前遇到过类似问 ...

  7. 【转载】 SpringBoot声明式事务的简单运用

    https://blog.csdn.net/justry_deng/article/details/80828180 关于事物的基本概念等这里就不介绍了. Spring声明式事物的实现,有两种方式:第 ...

  8. win10家庭版升级到专业版密钥

    J7QT3-3GCPG-9GVWT-CH2XR-GMRJM

  9. Qt/C++音视频开发48-推流到rtsp服务器

    一.前言 之前已经打通了rtmp的推流,理论上按照同样的代码,只要将rtmp推流地址换成rtsp推流地址,然后格式将flv换成rtsp就行,无奈直接遇到协议不支持的错误提示,网上说要换成rtp,换了也 ...

  10. Qt音视频开发44-本地摄像头推流(支持分辨率/帧率等设置/实时性极高)

    一.前言 本地摄像头推流和本地桌面推流类似,无非就是采集的设备源头换成了本地摄像头设备而不是桌面,其他代码完全一样.采集本地摄像头实时视频要注意的是如果设置分辨率和帧率,一定要是设备本身就支持的,如果 ...