Релиз FreeRDP 1.0, форка проекта rdesktop

17.01.2012 09:36

После года разработки увидел свет релиз проекта FreeRDP 1.0, предназначенного для организации подключения к терминальным серверам Windows по протоколу RDP и продолжающего развитие RDP-клиента Rdesktop. От Rdesktop проект FreeRDP отличается решением проблем с переключением раскладок, поддержкой особенностей новых версий Windows (Windows 7, Windows 2008), реализацией технологии кэширования битовых карт, переработкой поддержки проброса устройств (доступ к звуковым картам, принтерам, USB-накопителям) и другими дополнительными возможностями.

В процессе подготовки FreeRDP 1.0 основные компоненты проекта были полностью переписаны. Если ветка FreeRDP 0.x лишь продолжала развитие кода rdesktop, то FreeRDP 1.x отныне может рассматриваться как полностью самостоятельный и не пересекающийся с rdesktop проект. Наиболее важным изменением, связанным с переработкой кода, является переход на новую лицензию. Начиная с версии FreeRDP 1.0 код распространяется под лицензией Apache, в то время как прошлые версии были доступны под лицензией GPLv2.

Изначально намеченный план по выпуску ещё одного релиза в ветке FreeRDP 0.x - 0.9, отменён. Вместо поддержки устаревшей ветки разработчики решили приложить все свои усилия к развитию переписанной кодовой базы FreeRDP 1.x. Несмотря на то, что список новшеств в версии FreeRDP 1.0 впечатляет, у разработчиков остаётся множество планов, которые ещё предстоит реализовать в будущих выпусках. Например, среди приоритетных задач на будущее упоминается обеспечение поддержки протокола RDP8 и реализация возможности работы FreeRDP в роли RDP-сервера, а не только клиента.

Основные новшества FreeRDP 1.0:

  • Поддержка технологии RemoteFX, позволяющей оптимизировать трансляцию клиенту видео и текста, а также обеспечить задействование средств 3D-акселерации (DirectX) через предоставление доступа к виртуализированному представлению физического GPU для гостевых систем, запущенных под управлением гипервизора Hyper-V. В FreeRDP подготовлена реализация как декодера RemoteFX, так и кодировщика, при создании которых задействованы оптимизации с использованием инструкций SSE2 (Intel) и NEON (ARM);
  • Реализация RDP-расширения NSCodec с реализацией кодека, обеспечивающего быстрое и эффективное кодирование изображений;
  • Поддержка работы с сервисом RemoteApp, предоставляющим доступ к приложениям, размещённым на стороне сервера, но работающим с полной интеграцией в окружение клиента (доступ не к целому рабочему столу, а к отдельному приложению по RDP, с которым пользователь работает как с обычным локальным приложением);
  • Поддержка перенаправления мультимедиа потоков (Multimedia Redirection) с использованием FFmpeg, что позволяет увеличить эффективность передачи звукового и видео контента поверх протокола RDP. При использовании Multimedia Redirection с сервера по сети передаётся изначально сжатый мультимедиа поток, декодирование которого осуществляется на стороне клиента;
  • Поддержка аутентификации с использованием NTLMv2, реализация функций проверки валидности сертификатов и обеспечение работы других механизмов безопасности RDP, соответствующих требованиям FIPS;
  • Представлена реализация трёх клиентских интерфейсов: xfreerdp - официальный клиент для работы в X11, поддерживающий RemoteApp и реализующий работу GDI поверх X11. dfreerdp - клиент с поддержкой работы поверх DirectFB с программной реализацией GDI (libfreerdp-gdi). wfreerdp - клиент для платформы Windows. В качестве графического интерфейса также предлагается использовать универсальное приложение Remmina, написанное с использованием библиотеки GTK+ и поддерживающее расширение функциональности через подключение плагинов (доступны плагины с поддержкой протоколов RDP, VNC, NX, XDMCP и SSH).
     Релиз FreeRDP 1.0, форка проекта rdesktop
  • Представлена экспериментальная реализация RDP-сервера xfreerdp-server, пока поддерживающего только работу через RemoteFX и трансляцию событий от мыши и клавиатуры;
  • Добавлены новые виртуальные каналы для проброса различных устройств между клиентом и сервером:
    • cliprdr - перенаправление буфера обмена для приложений, вызываемых через RemoteApp;
    • drdynvc - реализация динамических виртуальных каналов, в качестве примера представлен канал audin для проброса звука (поддерживается ALSA и PulseAudio)
    • tsmf - проброс мультимедиа потоков (поддерживается FFmpeg, ALSA и PulseAudio);
    • rdpdr - проброс различных типов устройств, таких как диск, параллельный порт, последовательный порт, принтер (поддерживается CUPS) и устройства для чтения смарт-карт;
    • rdpsnd - проброс звука (поддерживается ALSA и PulseAudio).
  • Новая система сборки, основанная на использовании cmake;
  • Переработанная внутренняя архитектура проекта. Ядром выступает библиотека libfreerdp-core с серверной и клиентской реализацией базового протокола. Операции кэширования вынесены в библиотеку libfreerdp-cache. Распаковка битмапов и операции кодирвоания/декодирования контента реализованы в библиотеке libfreerdp-codec. В libfreerdp-kbd реализованы функции работы с клавиатурными раскладками, в libfreerdp-channels функции управления виртуальными каналами, в libfreerdp-gdi представлена переносимая реализация GDI, в libfreerdp-rail функции поддержки RemoteApp, в libfreerdp-utils - вспомогательные функции.