spice协议详解(一):spice协议入门

时间:2024-04-04 14:08:46

一.基础概念

SPICE是redhat开发的开源的专门的桌面虚拟化数据传输协议。
QEMU是可以图形化管理KVM虚拟机的一个工具,专门用来管理KVM的,所以通常都是与KVM同时出现。

二.架构

SPICE架构包括客户端、SPICE服务端和相应的QXL设备、QXL驱动等,如下图所示。客户端运行在用户终端设备上,为用户提供桌面环境。SPICE服务端以动态连接库的形式与KVM虚拟机整合,通过SPICE协议与客户端进行通信。

spice协议详解(一):spice协议入门

三.客户端与客户机的交互

Spice agent运行在客户机(虚拟机)操作系统中。Spice server和Spice client利用spice agent来执行一些需要在虚拟机里执行的任务,如配置分辨率,另外还有通过剪贴板来拷贝文件等。从上图可以看出,Spice client与server与Spice Agent的通信需要借助一些其他的软件模块,如在客户机里面,Spice Agent需要通过VDIPort Driver与主机上 QEMU的VDIPort Device进行交互,他们的交互通过一种叫做输入/输出的环进行。Spice Client和Server产生的消息被写入到设备的输出环中,由VDI Port Driver读取;而Spice Agent发出的消息则通过VDI Port Driver先写入到VDI Port Device输入环中,被QEMU读入到Spice server的缓冲区中,然后再根据消息决定由Spice Server直接处理,还是被发往Spice Client中。

spice协议详解(一):spice协议入门

SPICE协议最大的特点是其架构中增加的位于Hypervisor中的QXL设备,本质上是KVM虚拟化平台中通过软件实现的PCI显示设备,利用循环队列等数据结构供虚拟化平台上的多个虚拟机共享实现了设备的虚拟化。但是,这种架构使得SPICE协议紧密地依赖于服务器虚拟化软/硬件基础设施,SPICE必须与KVM虚拟化环境绑定。传统的远程桌面传输协议工作在虚拟机Guest OS中,而SPICE协议本身运行在虚拟机服务器中,可以直接使用服务器的硬件资源。

其实KVM虚拟化桌面进行云端访问时也是可以使用VNC通道进行数据传输的,然而VNC虽然通用但是效率比起SPICE还是差的源,资源消耗也是非常大,如果你是用KVM-QEMU虚拟机的话,进行云端桌面访问建议使用SPICE协议。