ل מפתחי פרויקט XCP-NG הכריזו לאחרונה, הם עובדים על פרויקט חדש שיש לו את השם «PV-IOMMU» וזה מאפשר למערכות אורחים לגשת לפונקציות מוגבלות של ה-IOMMU המיושמות באמצעות פרוירטואליזציה בסביבת Xen.
בעיקרון, PV-IOMMU מבטיחה לאפשר ל-Dom0 להשתמש ב-IOMMU para-ווירטואלי, המציע מספר יתרונות כגון הגנת DMA עבור Dom0 ותמיכה עבור Linux VFIO.
מה זה IOMMU?
IOMMU ידוע בשמות שונים בהתאם ליצרן (VT-d באינטל, AMD-Vi ב-AMD, SMMU ב-ARM, בין היתר), זהו מכשיר מיוחד מיושם שתפקידו העיקרי הוא לתרגם או לסנן בקשות DMA (גישה ישירה לזיכרון) מהתקנים לזיכרון הפיזי של המכשיר. בווירטואליזציה, הוא משמש כדי לאפשר למערכות אורחות לגשת ישירות להתקנים היקפיים כגון מתאמי Ethernet, כרטיסים גרפיים ובקרי אחסון.
אילו יתרונות מתקבלים עם פאראווירואליזציה של IOMMU?
קוֹדֶם, ה-Hypervisor של 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 Domains" שהיא קבוצה של תרגומים שיוצרים הקשר של זיכרון ושניתן להחיל על מכשיר (או על מספר מכשירים). דומיינים אלו נקראים "IOMMU Contexts" ב-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 מתוכננת להתווסף בקרוב. אם אתה מעוניין ללמוד עוד על זה, אתה יכול לעיין בפרטים ב הקישור הבא.