SPICE协议浅析

本文分享自天翼云开发者社区《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 协议,然后发送给客户端。 架构图如下:

image

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

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

image

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协议提供了一种兼顾色彩、音频和外设管理等方面的云主机控制台解决方案。

点赞
收藏

评论区

加载中...

相关推荐

下载二维码至钉盘

后端生成二维码的普通文件流,前端接收后在img标签中渲染将二维码下载至钉盘通过接口获取后端返回mediaId字段,采用“dingtalkjsapi”插件中的方法下载注意:dingTalkFun中,除了corId和mediaId必传外,文件名name也是必须要传的!!!<template<divclass"onlineSign"

ssh实现远程登陆以及使用技巧

SSH简介SSH为SecureShell的缩写,由IETF的网络工作小组(NetworkWorkingGroup)所制定;SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。利用SSH协议可以有

SSH介绍及连接原理

SSH是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)指定;在进行数据传输之前,SSH先对联机数据包通过加密技术处理,加密后在进行数据传输。确保了传递的数据安全。  SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,

Spicy 修改代码 实现双屏显示以及鼠标键盘绑定

修改spicy.c staticSpiceWindow\create\_spice\_window(spice\_connection\conn,SpiceChannel\channel,intid,gintmonitor\_id){//注释掉的地方  就是隐藏菜单、工具栏和状态栏   gtk\_container\_

springboot2之优雅处理返回值

前言最近项目组有个老项目要进行前后端分离改造,应前端同学的要求,其后端提供的返回值格式需形如{"status":0,"message":"success","data":{}}方便前端数据处理。要实现前端同学这个需求,其实也挺简单的,

SPICE Simulators and SPICE Models

ThisarticleintroducessourcesfordownloadingSPICEbasedsimulatorsandSPICEmodels.Itisafterallbesttoactuallyrunasimulatorinordertocometounderstandit.Thesim