объявили разработчики проекта XCP-NG Недавно они работают над новым проектом, который носит название «ПВ-ИОММУ» и это позволяет гостевым системам получать доступ к ограниченным функциям IOMMU, реализованным посредством паравиртуализации в среде Xen.
По сути, PV-IOMMU обещает дать возможность Dom0 использовать паравиртуализированный IOMMU, который предлагает несколько преимуществ, таких как защита DMA для Dom0 и поддержка Linux VFIO.
Что такое ИОММУ?
IOMMU известен под разными названиями в зависимости от производителя (VT-d в Intel, AMD-Vi в AMD, SMMU в ARM и др.), Это специальное устройство, реализованное основная функция которого переводить или фильтровать запросы DMA (Прямой доступ к памяти) от устройств к физической памяти машины. В виртуализации он используется для предоставления гостевым системам прямого доступа к периферийным устройствам, таким как адаптеры Ethernet, видеокарты и контроллеры хранения.
Какие преимущества дает паравируализация IOMMU?
ранее, гипервизор Xen использовал IOMMU для перенаправления доступа PCI-устройств и контролировать доступ этих устройств к памяти. Однако, По соображениям стабильности и безопасности гости не могли напрямую получить доступ к блоку IOMMU. обеспечивается аппаратным обеспечением.
Мы представляем новый паравиртуализированный IOMMU, называемый просто PV-IOMMU. Он в основном реализует функции, которые гость ожидает от IOMMU, абстрагируя все внутренние детали оборудования. В Xen мы добавили новый гипервызов для таких операций (HYPERVISOR_iommu_op), который предоставляет различные операции IOMMU, которые может использовать гость (если это разрешено).
Несмотря на это, появилась возможность предложить интерфейс гостю чтобы предоставить вам доступ к IOMMU, использование упрощенной паравиртуализированной инфраструктуры Xen, скрывая при этом низкоуровневые детали оборудования. Этот интерфейс, называемый PV-IOMMU, абстрагирует все внутренние детали оборудования и предоставляет набор операций IOMMU, к которым может получить доступ гость, если это разрешено. Операции в PV-IOMMU представлены как подоперации в гипервызове HYPERVISOR_iommu_op и спроектированы таким образом, чтобы это было удобно для гостя.
Одной из основных функций, которую хост ожидает от IOMMU, является возможность создавать и изменять «домены IOMMU», которые представляют собой набор преобразований, которые создают контекст памяти и могут применяться к устройству (или нескольким устройствам). Эти домены называются «контекстами IOMMU» в Xen, чтобы избежать путаницы с доменами Xen, которые являются виртуальными машинами.
Среди различных преимуществ паравиртуализации IOMMU упоминаются следующие:
- Защита DMA для Dom0: Паравиртуализация IOMMU обеспечивает защиту прямого доступа к памяти (DMA) для домена управления (Dom0) в средах виртуализации. Это помогает повысить безопасность и стабильность системы, предотвращая прямой доступ устройств к системной памяти, что может поставить под угрозу целостность Dom0.
- Поддержка Linux VFIO: Паравиртуализация IOMMU облегчает поддержку виртуализированной гибкой инфраструктуры ввода-вывода для пользовательских устройств (VFIO) в средах виртуализации, позволяя пользовательским приложениям и виртуальным машинам получать прямой доступ к аппаратным устройствам.
- Упрощает реализацию SPDK с Xen: Паравиртуализация IOMMU также является частью постоянных усилий по поддержке SPDK с помощью Xen. Это открывает путь к новому быстрому пути передачи данных для хранилища виртуальных машин, что потенциально может повысить производительность хранилища в виртуализированных средах.
Кроме того, также одну из проблем Зена планируется решить с помощью IOMMU, поскольку в настоящее времяили допускает существование нескольких контекстов IOMMU в одном домене Xen. Однако рассматривается возможность изменения конструкции подсистемы Xen IOMMU для учета нескольких контекстов IOMMU и изменения существующих функций для их использования. Хотя был реализован функциональный PoC, реализующий первый подход, с определенными ограничениями и неполной поддержкой, упоминается, что в будущем ведется работа над полной переработкой подсистемы.
Наконец, следует отметить, что На текущем этапе разработки PV-IOMMU поддерживает только Intel VT-d., но в ближайшее время планируется добавить поддержку AMD-Vi и SMMUv3. Если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями в по следующей ссылке.