PV-IOMMU ซึ่งเป็นกลไกพาราเวอร์ชวลไลเซชันของ Xen IOMMU

โลโก้เซน

ลอส ประกาศผู้พัฒนาโครงการ XCP-NG ล่าสุดพวกเขากำลังทำโปรเจ็กต์ใหม่ซึ่งมีชื่อว่า «PV-IOMMU» และช่วยให้ระบบแขกสามารถเข้าถึงฟังก์ชันที่จำกัดของ IOMMU ที่ใช้งานผ่าน paravirtualization ในสภาพแวดล้อม Xen

โดยพื้นฐานแล้ว PV-IOMMU สัญญาว่าจะเปิดใช้งาน Dom0 เพื่อใช้ IOMMU แบบพาราเวอร์ชวลไลซ์ซึ่งมีข้อดีหลายประการ เช่น การป้องกัน DMA สำหรับ Dom0 และการสนับสนุน Linux VFIO

IOMMU คืออะไร?

IOMMU เป็นที่รู้จักในชื่อที่แตกต่างกันขึ้นอยู่กับผู้ผลิต (VT-d ใน Intel, AMD-Vi ใน AMD, SMMU ใน ARM และอื่นๆ) เป็นอุปกรณ์พิเศษที่นำมาใช้ ซึ่งมีหน้าที่หลักคือ แปลหรือกรองคำขอ DMA (Direct Memory Access) จากอุปกรณ์ไปยังหน่วยความจำกายภาพของเครื่อง ในระบบเสมือนจริงนั้นใช้เพื่ออนุญาตให้ระบบเกสต์เข้าถึงอุปกรณ์ต่อพ่วงได้โดยตรง เช่น อะแดปเตอร์อีเทอร์เน็ต การ์ดกราฟิก และตัวควบคุมการจัดเก็บข้อมูล

Paravirualization ของ IOMMU มีประโยชน์อะไรบ้าง?

ก่อนหน้านี้ ไฮเปอร์ไวเซอร์ Xen ใช้ IOMMU เพื่อเปลี่ยนเส้นทางการเข้าถึง ของอุปกรณ์ PCI และควบคุมการเข้าถึงอุปกรณ์เหล่านี้ไปยังหน่วยความจำ อย่างไรก็ตาม, เพื่อเหตุผลด้านความมั่นคงและความปลอดภัย ผู้เข้าพักจึงไม่สามารถเข้าถึงบล็อก IOMMU ได้โดยตรง จัดทำโดยฮาร์ดแวร์

เรานำเสนอ IOMMU แบบพาราเวอร์ชวลไลซ์ใหม่ที่เรียกว่า PV-IOMMU โดยพื้นฐานแล้วจะใช้คุณสมบัติที่แขกคาดหวังจาก IOMMU โดยสรุปรายละเอียดภายในทั้งหมดของฮาร์ดแวร์ ใน Xen เราได้เพิ่มไฮเปอร์คอลใหม่สำหรับการดำเนินการดังกล่าว (ซึ่งก็คือ HYPERVISOR_iommu_op) ที่ให้การดำเนินการ IOMMU ต่างๆ ที่แขกสามารถใช้ได้ (หากได้รับอนุญาต)

อย่างไรก็ตามเรื่องนี้ สามารถเสนออินเทอร์เฟซให้กับแขกได้ เพื่อให้คุณสามารถเข้าถึง IOMMU ใช้โครงสร้างพื้นฐาน Xen paravirtualized ที่เรียบง่ายพร้อมซ่อนรายละเอียดฮาร์ดแวร์ระดับต่ำ อินเทอร์เฟซนี้เรียกว่า PV-IOMMU จะสรุปรายละเอียดภายในทั้งหมดของฮาร์ดแวร์ และจัดเตรียมชุดการดำเนินการของ IOMMU ที่แขกสามารถเข้าถึงได้ หากได้รับอนุญาต การดำเนินการใน PV-IOMMU ได้รับการเปิดเผยเป็นการดำเนินการย่อยในไฮเปอร์คอล HYPERVISOR_iommu_op และได้รับการออกแบบในลักษณะที่สะดวกสำหรับแขก

หนึ่งในคุณสมบัติหลักที่โฮสต์คาดหวังจาก IOMMU คือความสามารถในการสร้างและแก้ไข "โดเมน IOMMU" ซึ่งเป็นชุดการแปลที่สร้างบริบทของหน่วยความจำและสามารถนำไปใช้กับอุปกรณ์ (หรืออุปกรณ์หลายเครื่อง) โดเมนเหล่านี้เรียกว่า "บริบท IOMMU" ใน Xen เพื่อหลีกเลี่ยงความสับสนกับโดเมน Xen ซึ่งเป็นเครื่องเสมือน

ในบรรดาคุณประโยชน์ต่างๆ ที่โดดเด่นจาก IOMMU paravirtualization มีการกล่าวถึงสิ่งต่อไปนี้:

  • การป้องกัน DMA สำหรับ Dom0: การจำลองเสมือนจริงของ IOMMU ช่วยให้สามารถป้องกันการเข้าถึงหน่วยความจำโดยตรง (DMA) สำหรับโดเมนการจัดการ (Dom0) ในสภาพแวดล้อมการจำลองเสมือน ซึ่งช่วยปรับปรุงความปลอดภัยและเสถียรภาพของระบบโดยการป้องกันไม่ให้อุปกรณ์เข้าถึงหน่วยความจำระบบโดยตรง ซึ่งอาจส่งผลต่อความสมบูรณ์ของ Dom0
  • รองรับลินุกซ์ VFIO: IOMMU paravirtualization อำนวยความสะดวกในการรองรับโครงสร้างพื้นฐาน I/O ที่ยืดหยุ่นเสมือนสำหรับอุปกรณ์ผู้ใช้ (VFIO) ในสภาพแวดล้อมการจำลองเสมือน ทำให้แอปพลิเคชันผู้ใช้และเครื่องเสมือนสามารถเข้าถึงอุปกรณ์ฮาร์ดแวร์ได้โดยตรง
  • ทำให้ง่ายต่อการใช้งาน SPDK กับ Xen: การจำลองเสมือนจริงของ IOMMU ยังเป็นส่วนหนึ่งของความพยายามอย่างต่อเนื่องเพื่อสนับสนุน SPDK ด้วย Xen นี่เป็นการเปิดประตูสู่เส้นทางข้อมูลที่รวดเร็วใหม่สำหรับพื้นที่จัดเก็บข้อมูลเครื่องเสมือน ซึ่งสามารถเพิ่มประสิทธิภาพการจัดเก็บข้อมูลในสภาพแวดล้อมเสมือนจริงได้

นอกจากนั้นยัง ปัญหาประการหนึ่งของ Xen ได้รับการวางแผนที่จะแก้ไขร่วมกับ IOMMUเนื่องจากในปัจจุบันหรืออนุญาตให้มีบริบท IOMMU หลายรายการในโดเมน Xen เดียว อย่างไรก็ตาม การออกแบบระบบย่อย Xen IOMMU ใหม่กำลังได้รับการพิจารณาเพื่อพิจารณาบริบทของ IOMMU หลายบริบท และแก้ไขคุณลักษณะที่มีอยู่เพื่อใช้ประโยชน์จากบริบทเหล่านี้ แม้ว่า PoC เชิงฟังก์ชันได้ถูกนำมาใช้ซึ่งนำแนวทางแรกไปใช้ โดยมีข้อจำกัดบางประการและการสนับสนุนที่ไม่สมบูรณ์ แต่ก็มีการกล่าวถึงว่าการออกแบบระบบย่อยใหม่ทั้งหมดกำลังดำเนินการอยู่สำหรับอนาคต

ในที่สุดก็ควรจะกล่าวถึงว่า ในขั้นตอนการพัฒนาปัจจุบัน PV-IOMMU รองรับเฉพาะ Intel VT-dแต่มีแผนจะเพิ่มการรองรับ AMD-Vi และ SMMUv3 เร็วๆ นี้ หากสนใจศึกษาเพิ่มเติมสามารถดูรายละเอียดได้ใน ลิงค์ต่อไปนี้