SPICE – протокол доставки виртуального рабочего стола

SPICE (от англ.: Simple Protocol for Independent Computing Environments, то есть «Простой протокол для независимой вычислительной среды») - открытый протокол доставки виртуального рабочего стола, изначально разрабатываемый компанией Qumranet и в дальнейшем купленный компанией Red hat. О нем и пойдет речь в данной статье.

Изначально протокол разрабатывался в рамках проекта с аналогичным названием (но пишется строчными буквами Spice), представляющего собой систему отображения удаленного дисплея, построенную для виртуальной среды, которая позволяет просматривать виртуальный «рабочий стол» вычислительной среды не только на машине, на которой он запущен, но и откуда угодно через Интернет, причем для просмотра можно использовать широкий спектр машинных архитектур.

 Базовые блоки Spice это:

  • Собственно протокол (SPICE)
  • Spice сервер
  • Spice клиент
  • Spice агент

Кроме того, стоит выделить непосредственно не входящие в состав драйвера для виртуальной видеокарты QXL и некоторые другие вспомогательные компоненты. Ниже будет представлена основная информация обо всех компонентах и возможностях.

Отличительные особенности:

  1. Многоканальность. Сервер и клиент сообщаются посредством каналов. Каждый канал определяет свой тип данных. Доступны каналы: управления и конфигурации, изображения, устройств ввода, курсора, аудипоток с сервера, аудиопоток с клиента.
  2. Сжатие изображений. Spice позволяет сжимать передаваемые изображения различными алгоритмами: quic,lempel-ziv, giz.
  3. Определение и компрессия видеопотока. Spice способен определять регионы, в которых производится передача видеопотока и использовать для этих регионов другие алгоритмы, синхронизацию звука, и т.п.
  4. Различные режимы работы с указывающими устройствами. В зависимости от скорости передачи данных и требований пользователя положение указателя мышии может обрабатываться как сервером, так и клиентом.
  5. Поддержка нескольких мониторов.
  6. Двусторонняя передача звука. Полезна для участия в аудиоконференциях, презентациях и пр.
  7. Миграция. Поддерживается набор команд, позволяющих прозрачно для пользователя переключать клиента на другой хост.
  8. Синхронизация звука. При передаче видеопотока звук постоянно сихронизируется с изображением, независимо от скорости соединения.
  9. Подключение осуществляется к хост-системе (а не к виртуальной машине).  Возможна работа с виртуальными машинами, на которых нет поддержки сети.

Установка

В настоящий момент поддержка Spice включена в дистрибутив Fedora 14, RHEL6. Есть пакеты для Gentoo и Arch Linux, Если в дистрибутиве нет пакетов для SPICE и qemu с поддержкой SPICE, их всегда можно собрать из исходных кодов:

1) SPICE - downloads.spice-space.org (исходные коды spice, spice-protocol, spice-agent для Linux и  бинарные сборки для Windows)

2) qemu - git.freedesktop.org/git/spice/qemu - GIT репозиторий qemu с поддержкой SPICE

3) libvirt - http://libvirt.org/sources/libvirt-git-snapshot.tar.gz - ежечасные (автоматические) сборки libvirt (с поддержкой spice).

Установка из исходных текстов вполне стандартна

/confiure  
make
make install

 

(./configure --help для списка опций).

Настройка и использование

 Для работы со SPICE достаточно на сервере запустить qemu с дополнительными опциями:

-spice port=<port>,disable-ticketing

для доступа без пароля, или

-spice port=<port>,password=<secret> 

для защиты соединения паролем. И с клиента подключиться к spice-серверу:

 spicec -h <host> -p <port> 

Для включения/выключения опций сжатия каналов, шифрования и пр. следует ознакомиться с man-станицей qemu.

 

3622

Комментарии

SPICE выглядит очень интересно, но как конкретно его заставить работать, если RHEV-D нет? Можно как-то посмотреть в полный рост на Fedora 14? Читал fedoraproject.org/wiki/Features/Spice, но, если честно, ничего не понял. :-(

Можно где-нибудь найти пошаговую инструкцию по настройке хоста, виртуалки и клиента? Какие пакеты нужны на них всех со всеми этими xorg-x11-drv-qxl, что нужно подстроить в графике и т.д.

RHEV-D совершенно не обязателен для работы SPICE "в полный рост".

 

Самый простой способ - установить Fedora 14, установить qemu (пакет уже собран с поддержкой spice и установит необходимые пвкеты по зависимостям) и spice-client, далее запустить qemu, например, командой

qemu-kvm -enable-kvm -spice port=<port>,disable-ticketing -drive file=<путь к образу жесткого диска>,media=disk 

При этом spice-server будет слушать <port> хост системы.Если spice-client установлен на той же машине, то просто соединяемся с сессией:

spicec -h localhost -p <port>

Если хочется посмотреть на все опции протокола - они описаны в man qemu.

 

Ну наконец-то. Все эти VNC, RDP и прочие NX уже давно пора похоронить и заменить чем-то более интеллектуальным. SPICE очень хорошо подходит на эту роль, спасибо за обзор.