Today's mainstream virtualization systems comprise of two cooperative components: a kernel-resident driver that accesses virtualization hardware and a user-level helper process that provides VM management and I/O virtualization. However, this virtualization architecture has intrinsic issues in both security (a large attack surface) and performance. While there is a long thread of work trying to minimize the kernel-resident driver by offloading functions to user mode, they face a fundamental tradeoff between security and performance: more offloading may reduce the kernel attack surface, yet increase the runtime ring crossings between the helper process and the driver, and thus more performance cost. This paper explores a new design called delegated virtualization, which completely separates the control plane (the kernel driver) from the data plane (the helper process) and thus eliminates the kernel driver from runtime intervention. The resulting user-level hypervisor, called DuVisor, can handle all VM operations without trapping into the kernel once the kernel driver has done the initialization. DuVisor retrofits existing hardware virtualization support with a new delegated virtualization extension to directly handle VM exits, configure virtualization registers, manage the stage-2 page table and virtual devices in user mode. We have implemented the hardware extension on an open-source RISC-V CPU and built a Rust-based hypervisor atop the hardware. Evaluation on FireSim shows that DuVisor outperforms KVM by up to 47.96\% in a variety of real-world applications and significantly reduces the attack surface.
翻译:今天的主流虚拟化系统由两个合作组成部分组成:一个内核常住驱动器,可以访问虚拟化硬件和一个提供 VM 管理和 I/O 虚拟化的用户级辅助程序。 但是,这个虚拟化架构在安全( 大型攻击表面) 和性能两方面都有内在问题。 虽然有很长的一线工作试图通过将功能卸载到用户模式来将内核常住驱动器最小化,但它们面临着安全和性能的根本权衡: 更多的卸载驱动器可能会减少内核攻击表面, 但却会增加帮助者进程和驱动者之间的运行时间环环交叉点, 从而增加性能成本。 本文探索了一种名为授权虚拟化的新设计, 将控制平面( 内核驱动器) 与数据平面( 帮助程序) 完全分开, 从而将内核内核驱动器从运行到运行模式, 由此产生的用户级超视像仪( Duvisor) 能够处理所有VM 的 VM 操作操作, 而不在内部内核驱动器初始化后, 将现有的硬件虚拟化软化版本化支持到新的虚拟化S 虚拟化系统化系统。