الكثير أعلن مطورو مشروع 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 أو تصفيتها (الوصول المباشر للذاكرة) من الأجهزة إلى الذاكرة الفعلية للجهاز. في المحاكاة الافتراضية، يتم استخدامه للسماح لأنظمة الضيف بالوصول مباشرة إلى الأجهزة الطرفية مثل محولات إيثرنت، وبطاقات الرسومات، وأجهزة التحكم في التخزين.
ما هي الفوائد التي يتم الحصول عليها مع IOMMU paravirualization؟
سابقا، استخدم برنامج Xen Hypervisor IOMMU لإعادة توجيه الوصول أجهزة PCI والتحكم في وصول هذه الأجهزة إلى الذاكرة. لكن، لأسباب تتعلق بالاستقرار والأمن، لم يتمكن الضيوف من الوصول مباشرة إلى مبنى IOMMU المقدمة من الأجهزة.
نقدم IOMMU جديد شبه افتراضي يسمى ببساطة PV-IOMMU. فهو يطبق بشكل أساسي الميزات التي يتوقعها الضيف من IOMMU، ويلخص جميع التفاصيل الداخلية للأجهزة. في Xen، أضفنا استدعاء فائقًا جديدًا لمثل هذه العمليات (وهو HYPERVISOR_iommu_op) الذي يوفر عمليات IOMMU المتنوعة التي يمكن للضيف استخدامها (إذا كان مسموحًا به).
رغم هذا ، لقد أصبح من الممكن تقديم واجهة للضيف للسماح لك بالوصول إلى IOMMU، باستخدام بنية تحتية مبسطة لـ Xen شبه افتراضية، مع إخفاء تفاصيل الأجهزة ذات المستوى المنخفض. هذه الواجهة، التي تسمى PV-IOMMU، تلخص جميع التفاصيل الداخلية للأجهزة وتوفر مجموعة من عمليات IOMMU التي يمكن للضيف الوصول إليها، إذا سمح له بذلك. يتم عرض العمليات في PV-IOMMU كعمليات فرعية في HYPERVISOR_iommu_op، وهي مصممة بطريقة مناسبة للضيف.
إحدى الميزات الرئيسية التي يتوقعها المضيف من IOMMU هي القدرة على إنشاء وتعديل "IOMMU Domains" وهي مجموعة من الترجمات التي تشكل سياق الذاكرة والتي يمكن تطبيقها على جهاز (أو أجهزة متعددة). تسمى هذه المجالات "سياقات IOMMU" في Xen لتجنب الخلط مع مجالات Xen وهي أجهزة افتراضية.
من بين الفوائد المختلفة التي تبرز من المحاكاة الافتراضية لـ IOMMU، ما يلي:
- حماية DMA لـ Dom0: تتيح تقنية IOMMU paravirtualization حماية الوصول المباشر للذاكرة (DMA) لمجال الإدارة (Dom0) في بيئات المحاكاة الافتراضية. ويساعد ذلك على تحسين أمان النظام واستقراره عن طريق منع الأجهزة من الوصول مباشرة إلى ذاكرة النظام، مما قد يؤدي إلى تعريض سلامة Dom0 للخطر.
- دعم لينكس VFIO: تسهل تقنية IOMMU شبه الافتراضية دعم البنية التحتية الافتراضية للإدخال/الإخراج المرنة لأجهزة المستخدم (VFIO) في بيئات المحاكاة الافتراضية، مما يسمح لتطبيقات المستخدم والأجهزة الافتراضية بالوصول مباشرة إلى الأجهزة.
- يجعل من السهل تنفيذ SPDK مع Xen: تعد تقنية IOMMU شبه الافتراضية أيضًا جزءًا من جهد مستمر لدعم SPDK مع Xen. وهذا يفتح الباب أمام مسار بيانات سريع جديد لتخزين الأجهزة الافتراضية، والذي يمكن أن يعزز أداء التخزين في البيئات الافتراضية.
بالإضافة إلى ذلك أيضًا من المقرر معالجة إحدى مشكلات Xen مع IOMMU، منذ الآنأو يسمح بوجود سياقات IOMMU متعددة في مجال Xen واحد. ومع ذلك، يتم النظر في إعادة تصميم النظام الفرعي Xen IOMMU لمراعاة سياقات IOMMU المتعددة وتعديل الميزات الموجودة للاستفادة منها. على الرغم من أنه قد تم تنفيذ إثبات المفهوم الوظيفي الذي ينفذ النهج الأول، مع بعض القيود والدعم غير الكامل، إلا أنه يُذكر أنه يجري العمل على إعادة تصميم كاملة للنظام الفرعي في المستقبل.
أخيرًا ، يجب ذكر ذلك في المرحلة الحالية من التطوير، يدعم PV-IOMMU فقط Intel VT-d، ولكن من المقرر إضافة دعم AMD-Vi وSMMUv3 قريبًا. إذا كنت مهتمًا بمعرفة المزيد حول هذا الموضوع، يمكنك الرجوع إلى التفاصيل في الرابط التالي.