Các các nhà phát triển dự án XCP-NG đã công bố Gần đây, họ đang thực hiện một dự án mới có tên «PV-IOMMU» và điều đó cho phép các hệ thống khách truy cập các chức năng hạn chế của IOMMU được triển khai thông qua ảo hóa song song trong môi trường Xen.
Về cơ bản, PV-IOMMU hứa hẹn sẽ cho phép Dom0 sử dụng IOMMU được ảo hóa song song, cung cấp một số lợi ích như bảo vệ DMA cho Dom0 và hỗ trợ Linux VFIO.
IOMMU là gì?
IOMMU được biết đến với các tên khác nhau tùy thuộc vào nhà sản xuất (VT-d trong Intel, AMD-Vi trong AMD, SMMU trong ARM, trong số các tên khác), Nó là một thiết bị đặc biệt được thực hiện chức năng chính của nó là dịch hoặc lọc các yêu cầu DMA (Truy cập bộ nhớ trực tiếp) từ thiết bị tới bộ nhớ vật lý của máy. Trong ảo hóa, nó được sử dụng để cho phép các hệ thống khách truy cập trực tiếp vào các thiết bị ngoại vi như bộ điều hợp Ethernet, card đồ họa và bộ điều khiển lưu trữ.
Những lợi ích nào thu được từ quá trình paravirualization của IOMMU?
Trước đây, trình ảo hóa Xen đã sử dụng IOMMU để chuyển hướng truy cập của các thiết bị PCI và kiểm soát việc truy cập của các thiết bị này vào bộ nhớ. Tuy nhiên, Vì lý do ổn định và bảo mật, khách không thể truy cập trực tiếp vào khối IOMMU được cung cấp bởi phần cứng.
Chúng tôi giới thiệu một IOMMU ảo hóa song song mới được gọi đơn giản là PV-IOMMU. Về cơ bản, nó triển khai các tính năng mà khách mong đợi từ IOMMU, tóm tắt tất cả các chi tiết bên trong của phần cứng. Trong Xen, chúng tôi đã thêm một siêu lệnh gọi mới cho các hoạt động như vậy (là HYPERVISOR_iommu_op) cung cấp nhiều hoạt động IOMMU khác nhau mà khách có thể sử dụng (nếu được phép).
Mặc dù vậy, có thể cung cấp một giao diện cho khách để cho phép bạn truy cập IOMMU, sử dụng cơ sở hạ tầng ảo hóa Xen đơn giản hóa, đồng thời ẩn các chi tiết phần cứng cấp thấp. Giao diện này, được gọi là PV-IOMMU, tóm tắt tất cả các chi tiết bên trong của phần cứng và cung cấp một tập hợp các hoạt động IOMMU mà khách có thể truy cập, nếu được phép. Các hoạt động trong PV-IOMMU được hiển thị dưới dạng các hoạt động phụ trong siêu lệnh gọi HYPERVISOR_iommu_op và được thiết kế theo cách thuận tiện cho khách.
Một trong những tính năng chính mà máy chủ mong đợi từ IOMMU là khả năng tạo và sửa đổi "Miền IOMMU", một tập hợp các bản dịch tạo ngữ cảnh bộ nhớ và có thể được áp dụng cho một thiết bị (hoặc nhiều thiết bị). Các miền này được gọi là “IOMMU Contexts” trong Xen để tránh nhầm lẫn với các miền Xen là máy ảo.
Trong số các lợi ích khác nhau nổi bật của ảo hóa song song IOMMU, có những lợi ích sau được đề cập:
- Bảo vệ DMA cho Dom0: Ảo hóa song song IOMMU cho phép bảo vệ truy cập bộ nhớ trực tiếp (DMA) cho miền quản lý (Dom0) trong môi trường ảo hóa. Điều này giúp cải thiện tính bảo mật và ổn định của hệ thống bằng cách ngăn chặn các thiết bị truy cập trực tiếp vào bộ nhớ hệ thống, điều này có thể ảnh hưởng đến tính toàn vẹn của Dom0.
- Hỗ trợ Linux VFIO: Ảo hóa song song IOMMU tạo điều kiện hỗ trợ cơ sở hạ tầng I/O ảo hóa linh hoạt cho thiết bị người dùng (VFIO) trong môi trường ảo hóa, cho phép các ứng dụng người dùng và máy ảo truy cập trực tiếp vào các thiết bị phần cứng.
- Giúp dễ dàng triển khai SPDK với Xen: Ảo hóa song song IOMMU cũng là một phần trong nỗ lực không ngừng nhằm hỗ trợ SPDK với Xen. Điều này mở ra cơ hội cho một đường dẫn dữ liệu nhanh mới dành cho việc lưu trữ trên máy ảo, có khả năng tăng hiệu suất lưu trữ trong môi trường ảo hóa.
Ngoài ra, cũng một trong những vấn đề của Xen dự kiến sẽ được IOMMU giải quyết, vì hiện tạihoặc cho phép tồn tại nhiều bối cảnh IOMMU trong một miền Xen. Tuy nhiên, việc thiết kế lại hệ thống con Xen IOMMU đang được xem xét để giải quyết nhiều bối cảnh IOMMU và sửa đổi các tính năng hiện có để tận dụng chúng. Mặc dù PoC chức năng thực hiện phương pháp tiếp cận đầu tiên đã được triển khai với một số hạn chế nhất định và sự hỗ trợ không đầy đủ, người ta đề cập rằng việc thiết kế lại hoàn toàn hệ thống con đang được thực hiện cho tương lai.
Cuối cùng, cần đề cập rằng Trong giai đoạn phát triển hiện nay, PV-IOMMU chỉ hỗ trợ Intel VT-d, nhưng dự kiến sẽ sớm bổ sung hỗ trợ cho AMD-Vi và SMMUv3. Nếu bạn muốn tìm hiểu thêm về nó, bạn có thể tham khảo chi tiết trong liên kết theo dõi.