Один из основных сценариев использования VDI - организация удаленной работы сотрудников. Но далеко не все пользователи VDI, работающие вне офиса или подключающиеся из других регионов, могут похвастаться качественным широкополосным доступом в Интернет. Часто пользователи подключаются к VDI через мобильных операторов, либо через местных провайдеров, а в нередких случаях и через спутник.
Horizon содержит множество механизмов, которые из коробки позволяют настроить параметры подключения на медленных и нестабильных каналах, но в ряде случаев администраторам VDI потребуется выполнить дополнительные настройки. В этой статье мы рассмотрим несколько рекомендаций, которые позволят оптимизировать подключение и улучшить качество работы пользователей VDI.
Общие рекомендации
Самая очевидная рекомендация - обновитесь до последней актуальной версии агента и клиента Horizon. Средства удаленного доступа в Horizon активно развиваются, пример тому - улучшение работы кодека BlastCodec и RTAV в Horizon 8 2106 и 2111. Об улучшениях можно прочитать в статьях What's New:
https://techzone.vmware.com/blog/whats-new-horizon-8-2106
Также проверьте, что Blast может работать и по TCP, и по UDP. В Blast реализована технология Blast Extreme Network Intelligent Transport (https://blogs.vmware.com/euc/2018/08/blast-extreme-network-intelligent-transport.html), которая может динамически переключать виртуальные каналы Blast между транспортными протоколами в зависимости от параметров канала. Так, например, UDP лучше подходит для передачи потокового видео и приспособлен для работы на каналах с потерями пакетов (5% и более), в то время как TCP лучше работает на каналах с высокими задержками (250 мс и более), а также через SSL VPN. Соотственно, чтобы Blast мог использовать плюсы обоих транспортных протоколов, должны быть открыты соответствующие TCP и UDP порты между клиентами, серверами UAG и десктопами. Диаграмма соединений приведена в документе: https://techzone.vmware.com/resource/network-ports-vmware-horizon
Для работы с периферийными устройствами на WAN каналах не используйте USB Redirection, т.к. данная функция крайне требовательна к полосе пропускания и уровню задержек. Вместо этого применяйте другие механизмы "проброса" устройств, например, VMware Integrated Printing для подключения принтеров, Real Time Audio-Video - для гарнитур и веб-камер, Scanner redirection - для сканеров, Client drive redirection - для USB накопителей, Smart card redirection - для токенов и смарт-карт.
Учтите, что при подключении веб-камеры через RTAV с настройками по умолчанию с клиента будет передаваться изображение в разрешении 320 x 240 и частотой в 15 кадров в секунду. Хотя при таком разрешении можно получить изображение весьма посредственного качества, даже оно будет требовать канал с пропускной способностью ~300 Кбит/с. Изменить настройки изображения можно на клиенте через реестр (Windows) или файлы конфигурации (Linux, Mac), а также через групповые политики на виртуальном десктопе. Подробная информация о настройке RTAV приведена в серии статей https://blogs.vmware.com/euc/2013/07/3370.html. Там же приводится справочная информация о средней утилизации канала при передаче видео различного разрешения с веб-камер.
Хотя RTAV работает с любыми приложениями, при организации ВКС через Microsoft Teams более оптимальным вариантом будет Media Optimization for Microsoft Teams. Данная функция позволяет передавать аудио и видео поток от клиента до клиента, минуя виртуальный десктоп. Такой трафик проще оптимизировать, используя настройки качества звука и видео в самой ВКС, а также задав приоритезацию на стороне сетевого оборудования. Подробнее о Media Optimization для MS Teams можно прочитать по ссылке: https://techzone.vmware.com/resource/microsoft-teams-optimization-vmware-horizon. Схожие возможности доступны и для других ВКС:
- Zoom: https://support.zoom.us/hc/en-us/articles/360031096531-Getting-started-with-VDI
- Cisco Webex: https://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cloudCollaboration/wbxt/vdi/wbx-vdi-deployment-guide.html
Если у пользователей установлены мониторы с высоким разрешением в 2.5K или 4K, рекомендуйте им настраивать более низкое разрешение виртуального десктопа в Horizon Client: Customize Remote Desktop Settings -> Resolution. В этом случае изображение виртуального десктопа можно будет растягивать на полный эран на клиенте без изменения разрешения экрана в гостевой ОС.
Оптимизация ОС
Отключение различных эффектов в виртуальном десктопе также позволяет уменьшить утилизацию канала. В первую очередь это касается отключения фона рабочего стола, звуков и анимаций ОС.
В этом может помочь утилита VMware OS Optimization Tools, доступная для загрузки с сайта: https://flings.vmware.com/vmware-os-optimization-tool Она позволяет оптизировать настройки десктопа из одной консоли.
Не забывайте и об оптимизации клиентского устройства. Если пользователь работает со своего домашнего ПК, то параллельно с VDI сессией могут быть запущены и другие приложения, утилизирующие канал: веб-плееры, приложения-лаунчеры игр с автоматическим обновлением, социальные сети и мессенджеры. Посоветуйте пользователям на время работы воздержаться от запуска сторонних приложений.
Оптимизация Blast
Несмотря на то, что Blast умеет подстраиваться под параметры канала, менять качество изображения и переключаться между кодеками в зависимости от информации, отображаемой на экране, вы можете применить следующие настройки групповых политик на виртуальном десктопе для уменьшения требований к полосе пропускания при работе на очень медленных или нестабильных каналах. Я настоятельно рекомендую протестировать указанные настройки на нескольких пользователях VDI перед тем, как применять их на все виртуальные десктопы, чтобы найти золотую середину между качеством изображения и утилизацией канала.
Импортируйте ADMX шаблоны из VMware-Horizon-Extras-Bundle и запустите редактор групповых политик Windows.
Если пользователи не работают с мультимедиа приложениями, отключите поддержку звука (Computer Configuration -> Administrative Templates -> VMware Blast):
Audio playback: Disabled.
Отключите передачу буфера обмена и копирование файлов между клиентским устройством и виртуальным десктопом (Computer Configuration -> Administrative Templates -> VMware View Agent Configuration -> Clipboard Redirection):
Configure clipboard redirection: Disabled
Configure file transfer: Disabled
Задайте минимальный порог полосы пропускания для одной сессии (Computer Configuration -> Administrative Templates -> VMware Blast):
Min Session Bandwidth: 128
Задайте максимальный порог полосы пропускания для одной сессии. Этот лимит включает в себя все типы трафика удаленной сессии: видео, аудио, проброс устройств, передача буфера обмена. Не устанавливайте данный параметр в слишком низкое значение (минимальное значение 256 Кбит/с), т.к. это напрямую повлияет на удобство работы пользователей со своими рабочими столами. Если пользователи подключаются через медленный канал в 1 Мбит/с, укажите в качестве начального значения - 1024, а затем попробуйте уменьшить значение до 768 или 512 Кбит/с, если пропускной способности канала недостаточно:
Max Session Bandwidth: 1024
Если вы хотите задать максимальное пороговое значение для видео трафика, отредактируйте параметр:
Max Session Bandwidth kbit/s Megapixel Slope: 400
Этот параметр задает лимит в Kbit/s для части экрана размером 1 мегапиксель (условно, 1000x1000 точек), соответственно, чтобы посчитать суммартный лимит канала для видео трафика требуется перемножить кол-во мегапикселей на значение параметра. Например, для экрана с разрешением 1920x1080 точек и значением Slope в 400, ограничение сверху будет: 2 мегапикселя * 400 Кбит/с = 800 Кбит/с.
Выставьте ограничение по максимальной частоте кадров:
Max Frame Rate: 20
Если пользователи не просматривают видео и не работают с графикой, то 15-24 кадров в секунду должно быть достаточно для работы с документами и типовыми офисными приложениями (по умолчанию настроено значение в 30 кадров в секунду).
Остальные настройки зависят от профиля работы пользователя.
Оптимизация для мультимедиа приложений
Если пользователи активно работают с мультимедийными приложениями: просматривают видео или используют ВКС, то для них оптимальным будет использование кодеков H.264 или H.265 с возможность автоматического переключения на BlastCodec (функция Encoder Switch), когда пользователи переключаются на работу с текстом.
Для оптимизации работы H.264 / H.265 задайте следующие настройки (Computer Configuration -> Administrative Templates -> VMware Blast):
Включите поддержку H.264 и H.265:
H.264: Enabled
HEVC: Enabled
Отключите поддержку режима кодирования 4:4:4 (режим High Color Accuracy), т.к. он требует больше полосы пропускания:
H.264 High Color Accuracy: Disabled
HEVC High Color Accuracy: Disabled
Задайте максимальное и минимальное значение параметра квантования (уровня сжатия изображения):
H.264 Quality
- H.264 Maximum QP: 40
- H.264 Minimum QP: 15
Старайтесь не менять значение данных параметров слишком сильно (рекомендуемый диапазон значений Maximum QP: 31-41 и Minimum QP: 5-15). Чем большее значение QP вы устанавливаете, тем больше артефактов сжатия вы будете видеть на экране (максимальное значение - 51). На практике, при установке Minimum QP в значение >30 работать с мелким текстом становится невозможно.
Для включения режима Encoder Switch создайте в реестре виртуального десктопа следующее значение типа REG_SZ:
HKLM\SOFTWARE\VMware, Inc.\VMware Blast\Config\EncoderSwitchEnabled = 1
Включите поддержку BlastCodec:
HKLM\SOFTWARE\VMware, Inc.\VMware Blast\Config\EncoderBlastCodecEnabled = 1
Проверить, что режим Encoder Switch включен, можно с помощью Horizon Performance Tracker (Encoder Name: switch).
Для оптимизации BlastCodec выполните следующие настройки (Computer Configuration -> Administrative Templates -> VMware Blast).
Отключите поддержку Lossless сжатия:
PNG: Disabled
Lossless режим изначально передает изображение с худшем качестве, а затем достраивает его до эталонного при наличии достаточной полосы пропускания. Отключение PNG режима позволит снизить утилизацию канала, но при этом части изображения могут отрисовываться с артефактами.
Задайте уровень сжатия изображения для BlastCodec:
Blast Code Quality
- Blast Codec Maximum QP: 0
- Blast Codec Minimum QP: 0
Параметры Maximum QP и Mimum QP определяют значение максимального и минимального качества изображения в диапазоне от 1 до 8. Чем больше значение QP, тем сильнее видны артефакты сжатия. При установке значения QP в 0, качество изображения будет контролироваться другой политикой:
Image Quality: Enabled
- Low JPEG Quality: 10
- Mid JPEG Quality: 20
- High JPEG Quality: 55
Указанные значения позволяют снизить нагрузку на канал при приемлемом уровне сжатия. Не рекомендуется задавать для параметра High JPEG Quality слишком низкое значение, т.к. это приведет к сильному искажению изображения и появлению артефактов.
Оптимизация для текстовых приложений
Если пользователи не работают с мультимедийными приложениями, или канал передачи данных не обеспечивает достаточной пропускной способности, рекомендуется переключиться на использование только BlastCodec. Для этого отключите Encoder Switch, создав в реестре виртуального десктопа следующее значение типа REG_SZ:
HKLM\SOFTWARE\VMware, Inc.\VMware Blast\Config\EncoderSwitchEnabled = 0
Включите поддержку BlastCodec:
HKLM\SOFTWARE\VMware, Inc.\VMware Blast\Config\EncoderBlastCodecEnabled = 1
Отключите поддержку H.264 и HEVC через групповые политики:
H.264: Disabled
HEVC: Disabled
После этого Blast переключится на использование BlastCodec.
Примените остальные рекомендации для BlastCodec через групповые политики (отключение PNG и настройка качества изображения).
Если полученный результат не устраивает пользователей, попробуйте поменять значение некоторых настроек:
- Для увеличения частоты кадров: увеличьте Max Frame Rate, увеличьте Max Session Bandwidth и Max Session Bandwidth kbit/s Megapixel Slope, снизьте качество изображения (Image Quality, H.264 Quality).
- Для увеличения качества изображения: уменьшите Max Frame Rate, увеличьте Max Session Bandwidth и Max Session Bandwidth kbit/s Megapixel Slope, увеличьте качество (Image Quality, H.264 Quality).
- Для снижения утилизации канала: уменьшите Max Frame Rate, уменьшите Max Session Bandwidth и Max Session Bandwidth kbit/s Megapixel Slope, снизьте качество (Image Quality, H.264 Quality).
Дополнительная информация об оптимизации Blast доступна в статье: https://techzone.vmware.com/resource/vmware-blast-extreme-optimization-guide
а в BLAST как нибудь можно отключить использование UDP?
ОтветитьУдалитьчтобы чисто по tcp работало
Можно отключить UDP через групповую политику на агенте: Computer Configuration -> Administrative Templates -> VMware Blast -> UDP Protocol. Либо можно заблокировать UDP порты.
УдалитьДа, спасибо, уже нашел данную фишку и тестирую с отключенным UDP протоколом
УдалитьАндрей, а подскажите, достаточно ли отключение UDP Protocol на агенте вирт рабочего стола чтобы сессия шла только по tcp? По идее, должно работать только через TCP насколько я понимаю
УдалитьУ нас инсталляция с использование балансировщика на HA proxy, а он не поддерживает UDP к сожалению и идут периодически обрывы сессий
И второй вопросик - ознакомился с диаграммой (https://techzone.vmware.com/resource/network-ports-vmware-horizon), правильно я понимаю что при подключении через веб (веб акцесс) используется именно tcp и без UDP?
Проверить какой протокол используется при подключении можно с помощью Horizon Performance Tracker или по логам: https://techzone.vmware.com/resource/vmware-blast-extreme-optimization-guide#how-to-verify-the-configuration
УдалитьПри подключении через веб-браузер используется TCP.
Я не рекомендую передавать трафик сессии через балансировщик. Достаточно балансировать только HTTPS для первичного подключения, а трафик BLAST уже передавать в обход балансировчика напрямую на UAG или Connection Server.