Лос обявиха разработчиците на проекта XCP-NG Наскоро те работят по нов проект, който има името «PV-IOMMU» и това позволява на системите за гости да имат достъп до ограничени функции на IOMMU, реализирани чрез паравиртуализация в средата на Xen.
По принцип, PV-IOMMU обещава да позволи на Dom0 да използва паравиртуализиран IOMMU, който предлага няколко предимства като DMA защита за Dom0 и поддръжка за Linux VFIO.
Какво е IOMMU?
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 улеснява поддръжката на виртуализирана гъвкава I/O инфраструктура за потребителски устройства (VFIO) във виртуализационни среди, позволявайки на потребителските приложения и виртуалните машини да имат директен достъп до хардуерни устройства.
- Улеснява внедряването на SPDK с Xen: Паравиртуализацията на IOMMU също е част от продължаващите усилия за поддръжка на SPDK с Xen. Това отваря вратата към нов бърз път на данни за съхранение на виртуални машини, което потенциално може да повиши производителността на съхранение във виртуализирани среди.
В допълнение към това също един от проблемите на Xen е планиран да бъде разрешен с IOMMU, тъй като в моментаили позволява съществуването на множество IOMMU контексти в един Xen домейн. Обмисля се обаче редизайн на подсистемата Xen IOMMU, за да се отчетат множество контексти на IOMMU и да се модифицират съществуващите функции, за да се използват. Въпреки че е внедрен функционален PoC, който прилага първия подход, с определени ограничения и непълна поддръжка, се споменава, че се работи върху пълен редизайн на подсистемата за в бъдеще.
И накрая, трябва да се спомене, че В настоящата фаза на разработка PV-IOMMU поддържа само Intel VT-d, но се планира скоро да бъде добавена поддръжка за AMD-Vi и SMMUv3. Ако се интересувате да научите повече за него, можете да се консултирате с подробности в следваща връзка.