Обновить

SPICE: анатомия протокола доставки рабочего стола

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели8.1K
Всего голосов 2: ↑2 и ↓0+2
Комментарии9

Комментарии 9

Что, неужели абстракции в протоколе настолько протекают, что TCP не заменяется более-менее прозрачно на что-то другое?

Хороший вопрос, без шуток. В SPICE TCP — это не просто «подложка», а часть мышления протокола. Там много решений, которые молча опираются на поведение TCP: порядок, блокировки, backpressure, отдельные соединения на каналы. Поэтому «прозрачно заменить транспорт» не получается — это уже будет другой протокол, с другими допущениями и болью.
Связь SPICE и TCP на самом деле глубже, чем влезает в комментарий. Я, пожалуй, отдельно про это напишу: почему так вышло исторически и к чему это привело сейчас.

Да, это было бы интересно. Особенно, что так мешает для разных каналов использовать разный транспорт, чтобы там, где свойства TCP больше мешают, чем помогают, использовать UDP

Так вроде бы его забросили к сожалению в разработке или я ошибаюсь ?

Про «забросили» — скорее нет. Это не активная гонка за фичами, а режим поддержки: проект живёт, чинится, используется (тот же Proxmox), просто без резких движений.

Интересно, чем VNC их не устроил, как в qemu?

Ну дело в том, что VNC — это remote framebuffer из 1998 года, созданный для совсем других задач.

Почему Red Hat вложился в собственный протокол, когда RDP и Citrix уже существовали? Однозначного ответа нет, но среди факторов наверняка были:

  • отсутствие открытого протокола для Linux VDI

  • желание контролировать весь стек (KVM + libvirt + SPICE)

  • независимость от лицензионной политики Microsoft и Citrix

Тут вроде все плюсы за VNC.

Результат: композитор рендерит всё в offscreen buffer и отдаёт QXL готовый framebuffer. 2D-команды не задействуются. QXL становится просто framebuffer'ом с дополнительными фичами.

Тут прям четко про то, что хорошо умеет VNC.

Претензий нет, просто размышления.

VNC образца 2007 был значительно беднее (без аудио, USB, нормального clipboard). К слову, и сегодня open-source VNC так и не получил аудио — PR в TigerVNC висит с 2023 года, а clipboard в noVNC работает через костыли с тем же spice-vdagent.

Но вы правы насчёт framebuffer'а — разница в том, как он передаётся: SPICE использует адаптивное сжатие и эвристики для детекта видеопотоков, VNC — фиксированные encoding'и (Tight, ZRLE) на весь кадр.

В целом, вы попали в точку: именно поэтому Red Hat сегодня рекомендует VNC для серверов. Когда разница нивелирована — зачем тянуть отдельный протокол? Но это не для VDI а для админов.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации