Эта статья будет интересна всем, кто часто пользуется RDP для работы или личных нужд. Но особенно полезна она будет, если вы раздумываете над построением VDI инфраструктуры.

Ниже мы поговорим о революции в RDP. Новом высокопроизводительном кодеке h264 AVC444, который пришел на смену AVC420.

Теперь для комфортной работы с 3d моделями, программами рисования и прочими графически сложными системами не требуется ничего, кроме Windows 10 и RDP. Не требуется RemoteFX технология, не требуется профессиональный графический ускоритель вроде Quadro.

Видео сравнения старого RDP и c новым (обратите внимание на загрузку сети)


Youtube сильно жмет видео, четкость заметно падает. Это особенно заметно в играх (ниже), так как там плохое освещение. Поэтому я выложил файлы с видео на Яндекс диск.

Видео было захвачено с Hyper-V виртуальных машин, без подключения RemotFX видеоускорителей.

Качество видео в новом RDP выше, практически нет разрывов картинки. Кроме того нагрузка на сеть снижается в 2-5 раз! Так же новый кодек более подходит для нестабильных 3g соединений. Он быстро адаптируется к скорости канала и пользователь может получать мгновенный отклик даже с плохим интернет каналом.

Вся эта красота была, вообщем-то, доступна уже с Windows 10 1703, но тогда это требовало настроек групповых политик и иногда на экране появлялись раздражающие артефакты, которые можно было «стереть» поводив по ним любым окошком. Протирание артефактов «тряпочкой» настолько раздражало, что это перевешивало все плюсы технологии.

Вероятно, к настоящему времени Microsoft нашла решение этой проблемы и использует новый кодек по-умолчанию. Я провел всестороннее тестирование, чем и хочу поделиться.

Мои ощущения от нового RDP


Я проводил тесты, сидя за ноутбуком с i5-6300U. Когда я первый раз подключился к игровому PC, стоящему в соседней комнате, я ощутил, будто мой ноутбук вдруг стал работать быстрее и отзывчивее. Это было непередаваемое ощущение, не имеющее ничего общего с работой по RDP в прошлом!

Я проверил работу в IDE, Word, Excel, браузере, Paint и могу сказать со всей ответственностью — черт возьми, у них получилось! Никакого заметного input лаг.

Работа в SketchUp через новый RDP


На видео может показаться, что есть тормоза, но это иллюзия, SketchUP сам по-себе так работает. Интерфейс программы отзывается на действия пользователя мгновенно.

Захотелось странного. Ниже тесты RDP в нескольких играх


Попытка запуска Dota2 через RDP


Играть в доту через новый RDP вполне можно! В видео (ближе к концу) будет дисконнект из-за проблем с Ethernet кабелем. После того, как я воткнул кабель обратно, трансляция автоматически возобновилась… впрочем, как обычно.

Попытка запуска платформера Ori через RDP


Играбельно. Есть небольшой input лаг по сравнению со STEAM трансляцией, но ведь RDP никогда и не задумывался как протокол стриминга игр!

Обиднее всего, что не вышло подключить свой Elite Xbox one контроллер. К сожалению даже RemoteFX не позволяет этого сделать. Контроллер просто не появляется в списке:



Попытка запуска Serious Sam


К сожалению, есть проблемы с чувствительностью мыши. Небольшое перемещение мыши приводит к тому, что персонаж выполняет пируэт «юла». Подробности на видео. Мне подсказали что, многие шутеры так себя ведут во время RDP сеанса.

Заключение


Это самое большое событие в жизни протокола RDP на моей памяти. Дело в том, что помимо отличного качества и скорости, мы получаем ОГРОМНОЕ снижение нагрузки на каналы связи! Кроме того, новый кодек так же помогает в ситуациях, когда сервер расположен далеко, скажем, за океаном. Работать стало гораздо комфортнее!

PS: Я тут обнаружил, что YouTube довольно сильно жмет видео, так что, реальное качество картинки выше! Выложил на яндекс диск исходные видео.

Комментарии (42)


  1. IRT
    06.11.2017 00:37

    Теперь для комфортной работы с 3d моделями, программами рисования и прочими графически сложными системами не требуется ничего, кроме Windows 10 и RDP.


    Не-не! Явно нужна какая-то еще магия. Поскольку есть две машины с Windows 10 1709, RDP 10.4 supported и… как обычно, никакое 3D в RDP сессии не работает, как и не работало никогда. Как у вас работает 3D? Все программы и игры пишут, что не видеокарты.


    1. gluko Автор
      06.11.2017 00:45

      Надеюсь данный скриншот ответит на большинство ваших вопросов!
      hsto.org/webt/hc/vx/t-/hcvxt-dxwpcafqjv8buqo95gkuu.png

      Дело в том, что RDP получает в свое распоряжение видеокарту хоста. Доступно вся мощь, я проверял, но есть одно «но». Некоторые программы очевидно просто не желают запускаться в RDP режиме.
      Запустить SketchUp в RDP я не смог! Мне пришлось запустить его в консольном сеансе, затем подключиться по RDP ^)


      1. IRT
        06.11.2017 01:10

        Потестил немного, отклик в обычных программах действительно стал отзывчивее. Но с играми чуда не случилось, большинство просто не видят видеокарту при запуске из RDP. Например, тот же самый CS: GO. Только самые-самые новые игры на свежих движках представляют собой исключение из правил: Dota2(игра старая, но движок вполне новый), PUBG. Все старые как не работали по RDP, так и не работают, никакой «мощи» там нет. Та же Star Wars Galactic Battlegrounds (клон Age of Empires 2) при запуске ругается на отсутствие Direct Draw (!!) ускорения 2D графики!


    1. dklm
      06.11.2017 13:30

      никакое 3D в RDP сессии не работает, как и не работало никогда.

      Работает.
      Поднимаю сессию рдп с ноута(w10) на комп(w10), и запускаю crossout, все работает — но тормозит жутко.
      Ноут у меня обновлен до отказа, а на пк не хватило места обновится =), в компе стоит видеокарта AMD R7 2**

      П.С.
      А OpenGL+quadro уже достаточно давно работали через RDP…


      1. gluko Автор
        06.11.2017 13:31

        После обновления сервера (ПК в вашем случае) тормоза должны исчезнуть!


  1. dmitry_dvm
    06.11.2017 01:04

    Все что надо сделать — это обновиться до 1709?


    1. gluko Автор
      06.11.2017 01:44

      Да, игровой компьютер до обновления работал на 1703. Виртуальные машины для тестов, я готовил с нуля. На всякий случай покажу как форсировать новый кодек, но вроде бы этого больше не требуется!
      habrastorage.org/webt/ty/m9/_r/tym9_rymm41f3y6l7izvxiwaftc.png


  1. Alex_ME
    06.11.2017 01:36

    Меня в RDP больше раздражает пинг. Как-то одно время работал по RDP и печать просто страшно выбешивала своим откликом.


    1. gluko Автор
      06.11.2017 01:45

      Так и отклик, это главное, что улучшилось! Возможно я не очень хорошо осветил это.


  1. FisHlaBsoMAN
    06.11.2017 05:04

    Я тут месяц назад тестил VNC www.youtube.com/watch?v=7ZlOovE9jx4 и фпс тест на меньшем разрешении (делайте звук тише) www.youtube.com/watch?v=ykc9JQqgrxE tight, jpeg (Q5, вероятно), 1680х1050, канал, да, 100MBit/s, но на 2м видео сверху виджет скорости.
    Правда в 1 видео я разговаривал с человеком параллельно через интернет, так что на звук забейте, во втором вообще заменил ибо конфиденциально.
    Железяка-клиент вообще отстойная по современным меркам. Это 3гб оператоса, nvidia 240, amd athlon 5000+, все что оставил на старой квартире. А куда я заходил это да, уже мощная железка i5 3550 много оператоса и крутая видюха, а то на старом системнике хромиум лагал. На самом деле VNC на работе часто пользуюсь и проблем не вызывает. Отклик хороший. Если что это tightvnc как модуль x11 в качестве сервера.
    PS: Экранки потому что не тянет захват, ну и проще


    1. gluko Автор
      06.11.2017 10:01

      Очень не дурно. Добавлю, что в вашем виджете скорость измеряется в MiB (мебибайтах). Это значит, что 1,6 MiB на виджете будет равно 12,8 Mbps. Учитывая не полноэкранное видео, не FullHD разрешение и много статических элементов, могу сказать, что RDP намного экономнее расходует канал.


  1. webviktor
    06.11.2017 12:38

    Помнится раньше можно было просто скачать/обновить RDP.
    Сейчас я версию 10.4 вообще нигде не вижу.
    Или она теперь эксклюзив для серверов и 10-ки?


    1. gluko Автор
      06.11.2017 17:42

      К сожалению не смог найти достоверной информации, но мне кажется, что вы правы.
      Думаю со временем это перестанет быть проблемой, потому, что в рамках экосистемы Windows 10 — мажорные обновления бесплатны и появляются раз в пол года.

      Часы тикают и рано или поздно любая ОС от Microsoft, установленная на компьютер, будет Windows 10


      1. geher
        06.11.2017 18:18

        Скажите это пользователям, которые упорно цепляются за ХР, и которых все еще много.
        Не говоря уже о динозаврах, которые упорно сидят на 98 (как минимум одного знаю лично).


  1. lieff
    06.11.2017 12:57

    Только где новый кодек? По названию это все тот же h264, только в режиме yuv 4:4:4. Он должен быть четче, ценой небольшого доп. битрейта. А вот задержка из-за битрейта наоборот может чуть возрасти. Вот снизиться задержка может другими параметрами, например отключенными B кадрами. По качеству весь вопрос только какую реализацию кодека использовать и какие настройки. Очень сомневаюсь, что на nvidia картах можно переплюнуть хардварный nvidia кодек, скорее всего он и используется, как и в куче другого софта.

    PS: А RemoteFX, кстати, это фактически JPEG2000, вот его исходники github.com/neutrinolabs/librfxcodec. А когда он появился, помню было несколько страниц маркетинговой воды какой он хороший, но что внутри jpeg умалчивалось. Вот сейчас у меня стойкое ощущение того же самого, когда от 4:4:4 якобы опять все стало значительно лучше. Все-таки, задержка и меньший битрейт это точно не от 4:4:4.


    1. gluko Автор
      06.11.2017 13:02

      Я конечно не специалист, но вот, что говорит сам Microsoft:
      cloudblogs.microsoft.com/enterprisemobility/2016/01/11/remote-desktop-protocol-rdp-10-avch-264-improvements-in-windows-10-and-windows-server-2016-technical-preview

      «As part of the AVC 444 mode in RDP 10 we solved the challenge to get 4:4:4 quality text with 4:2:0 hardware encoders / decoders. In addition, with the AVC 444 mode we were able to improve the frame throughput significantly, for example with 1440p we can achieve a consistent frame rates of up to 50 fps on standard hardware.»

      Так, что вы правы, не все так просто, и вероятно они решили попутно некоторое количество технических ребусов.


    1. gluko Автор
      06.11.2017 13:09

      И еще h264 AVC444, это не h264. Он не должен быть четче за счет битрейда, на самом деле это практически h265 (backport, если хотите), которые имеет те же характеристики!

      Посмотрите первое видео из моей статьи и вы увидите, что в среднем на FullHD ролике, развернутом на весь экран, новый кодек требует в 2 раза меньшую полосу пропускания и работает существенно быстрее и четче.

      В сценариях повседневного использования разница между старым и новым кодеком будет в среднем еще выше! По моим прикидкам экономия полосы 60-80%


      1. lieff
        06.11.2017 13:22

        Все же дкмаю это GPU кодер такой эффективный по сравнению с прошлым. По названию ничего не выдает в нем HEVC, h264 вполне поддерживает 4:4:4 en.wikipedia.org/wiki/H.264/MPEG-4_AVC

        Support of monochrome (4:0:0), 4:2:0, 4:2:2, and 4:4:4 chroma subsampling (depending on the selected profile).

        И все современные h264 кодеры это умеют. Еслиб там был h265, думаю они бы не примянули это упомянуть. Думаю дело в поддержке железа, h265 поддержтивают далеко не все. И те что поддерживают иногда есть проблемы, вот например проблема на интеле: habrahabr.ru/company/intel/blog/311320/#comment_9839892.


        1. gluko Автор
          06.11.2017 13:26

          Возможно. Но не будем спорить о значениях слов… думаю мы оба правы.
          В любом случае, результат достойный.
          Не важно заслуга ли это кодека или чего то другого. Это работает!


    1. gotch
      06.11.2017 13:37

      Разрешите несколько вопросов:
      — RemoteFX плохой?
      — Как выяснилось, что в основе rFX jpeg2000? Реверс клиента RDP, работающего в RemoteFX?


      1. lieff
        06.11.2017 13:53

        Если честно — не знаю как выяснили, но этот кодек совместим, может декодировать то что приходит с виндового RDP и наоборот. Благодаря нему Remmina может коннектиться к винде, а на xrdp/freerdp можно заходить с винды. RemoteFX очень даже хороший в сценарии работы в ворде, почих статичных приложений, бравзере без сильной анимации. А вот для игр и видео в плеере — h264 лучше.
        Так же есть очень простой софт для переброски игр, такие как Single Player Game Transmitter — в них очень просто поменять кодек. Я менял на h265/nvidia, так еще лучше.


        1. quwy
          07.11.2017 02:14

          Еще на win7 с активированным RemoteFX и UDP гонял в «сталкер чн» по 802.11g, причем видео на «сервере» — AMD. Вполне юзабельно было, только мышка бесилась, приходилось крутить чуйло на минимум.


          1. lieff
            07.11.2017 03:17

            Ну теоретически и MJPEG можно по 802.11g передать в приемлимом качестве, а RFX качественее MJPEG. Дьявол кроется в деталях — надо измерять и сравнивать. Кстати не факт что у вас H264 не включался, алгоритм выбора виндового сервера не известен. Чтобы быть уверенным надо собрать клиент с чем-то типа libfreerdp и прологировать что там приходит, в самом портоколе может быть все вот это github.com/neutrinolabs/xrdp/blob/devel/xrdp/xrdp_mm.c#L65. Так же WMP, например, умеет делать отдельный канал для видео, хотя в игре поддержка врядли есть.


            1. dklm
              07.11.2017 12:59

              С включенным RemoteFX — WMP уже не будет снимать нагрузку с процесора сервера и декодировать видео на стороне клиента.
              Но это было забавно — когда я смотрел видео 1080p, а нагрузка на процесор сервера была по нулям…


  1. qw1
    06.11.2017 13:32

    Для типовых программерских задач то, что намутили в 10-ке, ужасно.

    Захожу с Windows 8 по RDP на сервер Windows 2012R2 — всё четко, максимальное качество картинки.
    Захожу на Windows Server 2016 — мелькают артефакты сжатия при смене всяких окон. При работе с FAR сначала при обновлении панелей сначала картинка прорисовывается схематически-мутно, а через полсекунды стабилизируется, как при загрузке прогрессивного jpeg.

    Не исключено, что кодеки 10-ки в каких-то случаях лучше, но конкретно на моих задачах выходит как png vs jpg.


    1. gluko Автор
      06.11.2017 13:37

      Windows Server 2016 получает обновления функций из LTS канала. Другими словами новый кодек все еще не доступен для сервера.


      1. gluko Автор
        06.11.2017 13:49

        Точнее вероятно он доступен, но как я писал в статье, раньше с ним были проблемы и он был отключен по-умолчанию!


      1. qw1
        06.11.2017 14:14

        Дело не в новом кодеке, а вообще в подходе (до Win10 же всё было хорошо, я думаю были lossless кодеки). Возможно, дело в настройках. Завтра попробую поиграться с опциями в RDP-клиенте. Но с настройками по умолчанию, как только я зашёл по RDP на новый сервер, впечатление было ужасное.


        1. gluko Автор
          06.11.2017 14:24

          Я понял, но сжатие в RDP можно вообще выключить или настроить соотношение качество\скорость. По-умолчанию это соотношение = баланс.

          Думаю с появлением h264 у MS была дилемма, оставить как было, или использовать новый на тот момент «быстрый» кодек в ущерб качеству. Теперь такой дилеммы не стоит.
          Возрадуемся!


          1. lieff
            06.11.2017 14:57
            +1

            Вот этим можно еще открыть доп канал https://msdn.microsoft.com/en-us/library/bb540882(v=vs.85).aspx и слать h264 отдельно для видео. Вот, например, небольшой плеер для этих целей github.com/PKRoma/xrdp/tree/master/vrplayer


  1. Arxitektor
    06.11.2017 14:48

    Новость понравилась. Если учесть уменьшение расхода трафика при той же картинке )
    Как я понял работает только в 10 десктопе. А с какой версии?
    И будет ли работать на тонких клиентах?
    Для работы на обоих пк должна стоять 10?

    Я понял, но сжатие в RDP можно вообще выключить или настроить соотношение качество\скорость.

    А как это сделать?
    И еще вопрос


    1. gluko Автор
      06.11.2017 14:57

      Насчет тонких клиентов, думаю, что работать будет, когда обновят прошивку, так как MS умудрились сделать совместимость с обычными h264 кодерами\декодерами.
      Версия Windows10, где установлен RDP сервер должна быть самой свежей 1709. Посмотреть версию Windows можно при помощи winver (пуск — выполнить — winver)

      Кстати, забыл указать в статье, я пробовал клиент RDP из магазина Windows Store и к моему великому удивлению AVC444 кодек не запустился. RDP работало со старыми добрыми тормозами. Хотя я думаю, что если форсировать новый кодек на сервере, то все заработает.

      Принудительное включение кодека и его настройки можно выполнить через групповые политики.
      Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment

      Подробности здесь


  1. FisHlaBsoMAN
    06.11.2017 15:49

    На самом деле немного напрягают рывки картинки. Это проблема же не слабого канала? У вас есть тесты нагрузки на процессор с быстрой и динамической картинкой? Было бы интересно посмотреть. Я сейчас как раз глянул в исходники на ЯД. У меня VNC получше работает (имхо) с работы домой, но трафика жрёт да больше, хотя если выставить низкое качество может чего то и получится сопоставимое. Я тут несколько постов назад на слабой железке показывал тест.


    1. gluko Автор
      06.11.2017 16:00

      Боюсь, что для энерго-эффективного процессора ноутбука может быть сложно захватывать видео и рендерить RDP FullHD. К сожалению у меня нет отдельной платы видео захвата.
      Не исключаю, что VNC в игровых сценариях может работать лучше… Но я все равно остался крайне доволен. Старый и новый RDP — земля и небо. Поверьте. К тому же все шрифты и текст теперь пиксель-в-пиксель. Ничего не раздражает глаз. Реакция на нажатие в Word\Excel моментальная.

      Кстати, небольшой офтоп. Во время сравнения шрифтов и текста, я отчетливо понял, что мой 27 дюймовый IPS монитор от Acer несравненно хуже монитора жены. Dell Ultrasharp.
      Косые линии в SketchUp имеют на моем мониторе какую то рябь или стробицу.
      Думали, что проблема в RDP, оказалось в мониторе! Заказал себе новый монитор в магазине.


  1. Arxitektor
    06.11.2017 16:02

    Версия Windows10, где установлен RDP сервер должна быть самой свежей 1709. Посмотреть версию Windows можно при помощи winver (пуск — выполнить — winver)

    Спасибо)
    То то я вижу что с RDP что-то произошло. Когда заходил на дjмешний ПК с ноута на обоих Win 1709.


  1. fijj
    07.11.2017 17:41

    Вопрос по теме, существует ли какие нибудь решения для стрима игр и медиаконтента, с использованием нескольких тонких клиентов? Хочется иметь дома один мощный ПК с несколькими видеокартами для проброса на виртуальную машину. Дома имеется гигабитный лан. Я так понял из действительно производительных решений есть TERA Host Card (вроде бы дает плавную картинку и минимальные задержки), но уж больно не дешевое решение получается. Может есть какие нибудь альтернативные варианты?


    1. gluko Автор
      07.11.2017 20:44

      Нужно решить 2 проблемы:
      1) Виртуализация с поддержкой проброса видеокарты
      2) Не лагающий стриминг.

      Решения:
      1) Proxmox — на хабре уже печатали статьи об этом гипервизоре и о том, как пробрасывать видеокарту внутрь VM
      2) Steam трансляции — безоговорочный лидер для игр. Попробуйте, между 2 обычными компами. Никаких лагов, все летает. Кроме того в отличие от RDP, игры не будут капризничать.


  1. TeremokLol
    08.11.2017 19:10

    Здравствуйте, извеняюсь за оффтоп, но уже дней 5 эксперементирую с вертуализацией. В интернете полно информации, но почти вся она древняя за 12-14 годы. Основная цель моей идеи, это выделить старую видеокарту 560ti исключительно на виртуалку. Использовал разные варианты, сейчас тестирую Hyper-V. Читал что виртуалки адекватно кушают только всякие квады, можно ли без лишнего гемороя пробросить видеокарту?

    Делаю все это дело, чтобы друг один мог через домашнюю трансляцию стима играться во всякое. Нужна полная поддержка видеокарты, у RemoutFX я так понимаю потолок это 11 директ, но играми кушаеться очень плохо и не всегда (приходится с бубном над конфигами прыгать). Если взять fortnite, по логике remoutfx имеет функции 10.1, но при запуске ругается мол что видеокарта не имеет такого. Грешил в начале на сборку винды, накатывал разные итог один.

    Думал копать в сторону Xen, но еще слабоват я для линукса и прочего. В реалиях Hyper-V без квада никак? Читал про перепайку транзисторов на матери, чтобы определялась как квад, но это уже мракобесие. Я так понял, если даже и пробросить видеокарту, она сама понимает что находится в виртуалке и не хочет корректно работать. (могу ошибаться)

    p.s. (знакомства с виртуализацией раньше не имел)
    p.p.s (процессор и мать поддерживает все необходимое для проброса и виртуализации)


    1. gluko Автор
      08.11.2017 19:14

      К сожалению, коммерческие системы виртуализации, такие, как Hyper-V, ESXI нельзя настроить на проброс видеокарт, не предназначенных для этого. Это договоренность производителей видеокарт и гипервизоров.

      Вам нужен гипервизор KVM. Для простоты советую использовать Proxmox (это такой законченный продукт для виртуализации, использующей KVM).

      Про то, как пробрасывать видеокарту внутрь KVM почитайте тут:
      habrahabr.ru/post/339456

      PS: Xen тоже это позволяет, но как гипервизор он для меня давно умер…


      1. TeremokLol
        08.11.2017 21:05

        Спасибо, быстро ответили)

        Я так понял там не принципиально что за видеокарта, но вот с дровами проблемы могут быть. Попробую провернуть это дело в выходные.


    1. dklm
      08.11.2017 19:46

      Что вы подразумеваете под «домашнюю трансляцию стима»?
      Зачем вам «велосипед» если стим сам может все стримить?

      П.С.
      На quadro играть не получится — fps будет ниже чем у жфорсоф.

      П.П.С.
      3Д через «удаленное подключение» для домашних пользователей экономичиски не выгодная фича…


      1. TeremokLol
        08.11.2017 20:54

        Под домашней трансляцией я подразумеваю функцию стрима экрана на удаленную машину клиент. Работает все это дело только внутри локальной сети. Доступ сделал через эмулятор локалки evolve (не скажу точно эмулятор это или нет)

        вот тут написано про примочку habrahabr.ru/post/223999

        Велосипед я строил, дабы одновременно 2 человека могли за одной машиной работать. Грубо говоря на одной виртуалке сижу я, на другой сидит друг. Логика какая, на мошине хосте стоит 2 виртуалки, на одной из них я ставлю evolve и стим. На машине клиенте ставлю стим и эволв тоже. Кидаю их в одну сеть, а дальше устанавливаю игры на виртуалку и можно смело запускать их через стим. Тут все упирается только в пропускную способность интернета по сути.

        А чем это все плохо то?