物联网Hypervisors---ACRN

ACRN 是一个灵活的、轻量级的 hypervisor,以实时性和安全性为设计出发点。-- Swapnil Bhartiya

随着物联网规模呈指数级增长,物联网开发者需要支持各种不同的硬件资源、操作系统、软件工具/应用程序。这是一个很大的挑战,因为许多互联的物联网设备在资源上会受到各种限制的,例如运行内存空间,闪存大小,CPU 核的个数。虚拟化有助于满足这些广泛的需求,但是现有的虚拟化方案无法为物联网开发提供同时满足尺寸、灵活性和功能的适当的组合。

ACRN 的设计有所不同。在 2018 年的 Linux 嵌入式大会上发布的 ACRN,是一款灵活的、轻量级的参考 hypervisor,以实时性和关键的安全性为设计出发点,并且通过开源平台为精简嵌入式开发进行优化。

ACRN 的最大优势之一是尺寸小,发布时大约只有 25K 行代码。英特尔开源技术中心为项目的发布贡献了源代码。英特尔公司副总裁兼开源技术中心总经理 Imad Sousou 表示,“ACRN 的想法来自于我们为用户提供虚拟技术的工作。嵌入式物联网开发工作量很大。使用 hypervisor 技术,具有不同重要性的负载可以被整合到一个平台上,从而降低开发和部署成本,并且允许更精简的系统架构。” 

 

ACRN 有两个关键组成:hypervisor 和 ACRN 设备模块。ACRN Hypervisor 是一个 Type 1 的 hypervior,可以直接运行于裸机上。ACRN 设备模块是针对虚拟设备仿真的参考框架实现,它提供丰富的 I/O 虚拟化支持,目前计划支持音频、视频、图形和 USB。随着社区发展,预计会有更多设备虚拟化功能加入。

 

ACRN Hypervisor 运行在裸机上,然后在其上可以运行一个基于 Linux 的服务操作系统Service OS(SOS),然后可以同时运行多个客户操作系统Guest OS(GOS),以便整合工作负载。ACRN hypervisor 为服务操作系统创造了第一个虚拟环境,然后启动客户操作系统。服务操作系统运行本地设备驱动程序来管理硬件,向客户操作系统提供 I/O mediation。

 

具体设计的步骤:

Spatial Isolation:空间隔离 ,确保只有虚拟机能有机会硬件资源,例如 寄存器和内存,

ACRN offers spatial isolation mainly through CPU core and memory partitioning to satisfy the isolation demands from IoT usages----ACRN主要通过CPU内核提供空间隔离和内存分区来满足隔离需求

 

CPU Core Partitioning:ACRN hypervisor为每个物理CPU(PCPU)维护一个运行队列列表。当创建一个虚拟CPU (VCPU)时,ACRN将根据用户配置为它选择一个PCPU,将VCPU添加到PCPU的运行队列中,然后启动VCPU执行,ACRN还利用硬件虚拟化支持,如Intel VT-x,以实现CPU虚拟化

 

Memory Partitioning:(内存分区)ACRN的内存分区功能旨在提供非服务vm之间的分离,而不是分离在服务VM和其他VM之间,因为服务VM起作用,ACRN中的管理角色。为了提供内存分区机制,ACRN利用了硬件辅助虚拟化技术,如Intel EPT和VT-d。同时为了简化开发,ACRN采用了一个简单的内存模型,除了hypervisor区域,SOS拥有其他所有的系统内存,并且是静态的为其他vm分配内存。---为了进一步减少内存虚拟化的运行时开销,ACRN使用预先构建的EPT表来映射hypervisor区域,---另外,为了支持服务VM访问其他VM的内准虚拟化,一个SOS内核模块被开发到提供远程内存映射API。

 

Temporal Isolation:(时间隔离)--- 时间隔离的目标是确保在具有不同临界性的vm之间正确分配CPU时间 --- ACRN管理程序需要确保I/O访问和中断将按照正确的VM优先级进行调度

 

I/O Flow:ACRN处理服务VM、用户VM和的I/O流RTVM不同--- 对于服务VM, ACRN只捕获它对中断的访问设备,虚拟化中断的好处,服务VM和用户VM的设备是每个VM都可以使用的,任意配置虚拟中断设备不必担心中断向量冲突--- 虚拟中断设备具有快速响应的能力,

 

Interrupt Delivery Flow:(中断交付流程)--- 物理的直通中断,对于来自直通设备的物理中断,系统管理程序将进行映它从物理中断到虚拟中断,然后注它进入服务VM或用户VM。对于虚拟中断从ACRN DM,通过MSI/MSIx或INTx, ACRN虚拟机监控程序将通过virtual将它们注入到用户VM中--- 虚拟机管理程序ACRN维护一个ACRN范围的优先级列表,让hypervisor决定要交付的正确中断。

 

Rich Embedded I/O Virtualization:(丰富的嵌入式I/O虚拟化):首先,一些嵌入式I/O要实现虚拟化的设备对于嵌入式世界至关重要,但在服务器世界中并不常见。典型的例子包括音频、USB、触摸、CSME等等。第二,不像标准和先进的硬件支持的服务器,嵌入式平台通常是通用的,并且有时在硬件支持方面受到限制,比如APIC虚拟化和post中断支持。第三,典型的嵌入式世界的用例是运行特定的工作负载对于特定硬件资源上的特定功能,因此,资源传递和分区比资源迁移和过度提交(如VM)更受欢迎迁移和内存过度使用。

 

ACRN DM支持四种典型的I/O虚拟化机制,包括完全仿真、半虚拟化、传递和介导的[36]传递,嵌入式I/O设备没有标准的硬件虚拟化支持,在没有硬件APIC虚拟化支持(APICv)的平台上,用户可以模拟它们,用于快速响应的管理程序,或将它们传递进来。

 

实时性能:RTVM被设计用来访问专用的硬件资源,通过hypervisor,以避免额外的延迟

由SOS引入的不确定性定时,使用硬件资源为用户vm提供服务的关键角色共享。

只使用专用设备的缺点,在RTVM中是很明显的。支持的RTVM数量,ACRN受到硬件资源可用性的限制

 

安全性能:目前ACRN针对两个主要的安全特性进行了验证启动和可信执行环境(TEE)

 

 

 

 

 

 

你可能感兴趣的:(物联网Hypervisors---ACRN)