Открыть сервис

VT-d

VT-d (Virtualization Technology for Directed I/O) — это аппаратная технология виртуализации ввода-вывода, разработанная компанией Intel, которая позволяет операционной системе или гипервизору напрямую предоставлять физические устройства ввода-вывода (например, сетевые карты, контроллеры жёстких дисков, графические процессоры) виртуальным машинам, минуя программную эмуляцию. Технология является частью более широкого набора Intel Virtualization Technology (VT) и основана на спецификации DMA Remapping (DMAR), определённой в стандарте ACPI.

История

Разработка VT-d началась в середине 2000-х годов как ответ на растущие потребности в производительности виртуальных сред. Первая аппаратная реализация была представлена в 2005 году в чипсетах Intel 955X и 975X, а затем в процессорах на архитектуре Core (например, серия Core 2 Duo). Однако массовое внедрение произошло с выходом чипсетов серии Intel 5000 (2006 год) и процессоров Xeon 5300, которые поддерживали VT-d в серверном сегменте.

В 2008 году Intel включила поддержку VT-d в процессоры Core i7 (Nehalem), что сделало технологию доступной для настольных и мобильных платформ. С тех пор VT-d является стандартной функцией практически всех современных процессоров Intel (за исключением некоторых бюджетных линеек, где она может быть отключена). В 2010-х годах технология была дополнена поддержкой виртуализации графических процессоров (GVT-d) и улучшенной изоляцией устройств.

Архитектура и принцип работы

VT-d реализуется на уровне чипсета (или встроенного контроллера в процессорах с интегрированным северным мостом) и процессора. Основные компоненты включают:

  • DMAR (DMA Remapping) — механизм перенаправления запросов прямого доступа к памяти (DMA) от устройств ввода-вывода. VT-d использует таблицы DMAR, хранящиеся в системной памяти, чтобы сопоставлять физические адреса устройств с адресами виртуальных машин. Это позволяет изолировать DMA-доступ каждой виртуальной машины, предотвращая несанкционированное чтение или запись в память других гостевых систем.
  • Interrupt Remapping — перенаправление прерываний от устройств к соответствующим виртуальным машинам. Без этой функции прерывания могли бы попадать в неправильную гостевую ОС, вызывая сбои.
  • Device Passthrough (пропуск устройств) — возможность напрямую назначить физическое устройство (например, сетевую карту) конкретной виртуальной машине, минуя гипервизор. Устройство при этом работает с минимальной задержкой, так как не требует программной эмуляции.
  • I/O Virtualization (IOV) — поддержка виртуализации самих устройств, например, SR-IOV (Single Root I/O Virtualization), где одно физическое устройство может представляться нескольким виртуальным машинам как отдельные виртуальные функции.

Взаимодействие с гипервизором

Гипервизор (например, KVM, Xen, VMware ESXi) использует VT-d для создания защищённых каналов между виртуальными машинами и устройствами. При включении VT-d гипервизор настраивает таблицы DMAR, которые процессор использует для проверки каждого DMA-запроса. Если запрос не соответствует разрешённому адресному пространству, он блокируется аппаратно, что повышает безопасность.

Классификация и варианты

VT-d существует в нескольких версиях, которые различаются набором поддерживаемых функций:

  • VT-d 1.0 (2005–2008) — базовая поддержка DMA Remapping и Interrupt Remapping.
  • VT-d 2.0 (2009–2012) — добавлена поддержка SR-IOV, улучшенная обработка прерываний (MSI-X), поддержка больших таблиц DMAR (до 4 ГБ).
  • VT-d 3.0 (2013–2016) — введена поддержка виртуализации ввода-вывода для устройств с несколькими функциями (Multi-Function), улучшена производительность при работе с графическими процессорами (GVT-d).
  • VT-d 4.0 (2017–2022) — поддержка виртуализации для устройств NVMe, улучшенная изоляция для контейнерных сред, расширенные возможности управления питанием.
  • VT-d 5.0 (2023–настоящее время) — поддержка виртуализации для устройств CXL (Compute Express Link), улучшенная безопасность с использованием Intel Trusted Execution Technology (TXT), оптимизация для облачных сред.

Применение

VT-d используется в различных сценариях, где требуется высокая производительность и безопасность виртуализации:

  • Серверные решения — в дата-центрах для виртуализации сетевых карт (NIC), контроллеров хранения (SAS/SATA), графических процессоров (GPU) и устройств NVMe. Это позволяет запускать критически важные приложения (базы данных, СУБД) с минимальными накладными расходами.
  • Облачные вычисления провайдеры облачных услуг (например, Amazon Web Services, Microsoft Azure, Яндекс.Облако) используют VT-d для предоставления выделенных устройств (например, GPU для машинного обучения) клиентам без потери производительности.
  • Виртуализация рабочих станций — в средах VDI (Virtual Desktop Infrastructure) для проброса графических карт (например, NVIDIA Quadro) в виртуальные машины, что позволяет запускать CAD-приложения или игры.
  • Контейнерные технологии — в Docker и Kubernetes VT-d используется для изоляции устройств между контейнерами, особенно в сценариях с GPU-ускорителями.
  • Безопасность — изоляция DMA-доступа предотвращает атаки типа DMA-атаки (например, через Thunderbolt или PCIe), когда вредоносное устройство может читать память хост-системы.

Примеры использования

  • Проброс сетевой карты Intel X710 в виртуальную машину под управлением KVM — позволяет достичь пропускной способности до 40 Гбит/с без потерь, характерных для эмуляции.
  • Виртуализация GPU NVIDIA Tesla в среде VMware vSphere даёт возможность запускать ресурсоёмкие приложения машинного обучения в изолированных виртуальных машинах.
  • Использование VT-d в российских разработках — в гипервизоре «Зебра» (разработка АО «НПО «Эшелон») и в платформе «Астра» (АО «НПО «РусБИТех») для обеспечения работы с отечественными процессорами «Эльбрус» и «Байкал».

Требования к оборудованию

Для работы VT-d необходимы:

  • Процессор Intel с поддержкой VT-d (большинство моделей Core i3/i5/i7/i9, Xeon, Atom C3000, Pentium Gold/Platinum, Celeron J/N). Начиная с 2010 года практически все процессоры Intel поддерживают VT-d, за исключением некоторых бюджетных линеек (например, Celeron G).
  • Чипсет с поддержкой VT-d (все современные чипсеты Intel, начиная с серии 6 (H61, P67) и выше). В процессорах с интегрированным контроллером (например, Core i7-8700K) поддержка встроена в кристалл.
  • BIOS/UEFI с включённой опцией VT-d (обычно находится в разделе «Advanced» → «CPU Configuration» или «System Agent Configuration»).
  • Операционная система или гипервизор, поддерживающий VT-d: Linux (ядро 2.6.30+), Windows (начиная с Windows 7), VMware ESXi (5.0+), Xen (4.0+), KVM (встроенная поддержка), Hyper-V (Windows Server 2008 R2+).

Критика и ограничения

Несмотря на преимущества, VT-d имеет ряд недостатков:

  • Сложность настройки — требуется правильная конфигурация BIOS, гипервизора и гостевой ОС. Неправильные настройки могут привести к сбоям или утечкам памяти.
  • Ограничения по устройствам — не все устройства поддерживают SR-IOV или проброс. Например, некоторые дешёвые сетевые карты не имеют аппаратной поддержки виртуализации.
  • Проблемы с совместимостью — VT-d может конфликтовать с некоторыми технологиями Intel, такими как SpeedStep или Turbo Boost, если они неправильно настроены.
  • Безопасность — хотя VT-d изолирует DMA-доступ, атаки через уязвимости в драйверах устройств или гипервизоре могут обойти защиту. В 2017 году была обнаружена уязвимость CVE-2017-5715 (Spectre), которая затрагивала и VT-d.
  • Отсутствие поддержки в некоторых процессорах — в бюджетных моделях (например, Celeron N) VT-d может быть отключена производителем, что ограничивает использование в недорогих системах.

Интересные факты

  • VT-d является аналогом технологии AMD-Vi (ранее называвшейся IOMMU) от компании AMD. Обе технологии решают схожие задачи, но имеют различия в реализации и наборе функций.
  • В 2015 году Intel выпустила обновление микрокода, которое исправляло ошибку в VT-d, приводившую к потере данных при работе с устройствами NVMe в виртуальных средах.
  • В России VT-d активно используется в проектах по импортозамещению, в частности, в гипервизоре «Альт» (ООО «Базальт СПО») и в платформе «Эльбрус» (АО «МЦСТ»).
  • Технология VT-d является обязательной для сертификации по стандарту Common Criteria EAL4+ в некоторых государственных информационных системах.

Источники

  • Intel Corporation. «Intel Virtualization Technology for Directed I/O (VT-d) Architecture Specification». Revision 5.0, 2023.
  • Intel Corporation. «Intel 64 and IA-32 Architectures Software Developer’s Manual». Volume 3A, Chapter 17: «Virtual-Machine Extensions».
  • ACPI Specification, Version 6.5, Section 6.2.2: «DMA Remapping (DMAR)».
  • VMware, Inc. «VMware vSphere 7.0 Documentation: Using Intel VT-d with DirectPath I/O».
  • Red Hat, Inc. «Red Hat Enterprise Linux 8 Virtualization and Administration Guide: Configuring PCI Passthrough with VT-d».
  • АО «НПО «РусБиТех». «Руководство по настройке виртуализации на платформе «Астра»». 2022.
  • CVE-2017-5715: «Bounds Check Bypass (Spectre Variant 2)». National Vulnerability Database, 2017.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →