返回首页

ZVM技术解读·内核篇②|HyperTwin 双核分治

01 什么是HyperTwin双核分治

安全关键虚拟化系统既需要客户OS管理及CPU、内存等关键资源管理保持稳定可靠,又需要外设驱动、VirtIO及网络/存储协议栈等复杂数据服务提供完整功能。然而,复杂数据服务具有更大的软件规模和故障风险,一旦与关键控制功能共享执行资源和运行环境,其阻塞、异常或故障可能进一步影响关键控制功能。

基于上述需求,ZVM构建了HyperTwin同特权级双核分治架构,将关键控制功能与数据服务分别固定在EL2内的控制核和数据核运行,通过同特权级物理核分治建立明确的执行与故障隔离边界。其中,控制核负责客户OS管理以及CPU、内存等关键资源管理,数据核负责外设驱动、VirtIO及网络/存储等数据服务,并通过访问控制和任务委托机制实现两核间的受控协作。

02 主流安全方案对比

在安全关键虚拟化系统中,将关键控制功能与复杂数据服务进行隔离是降低故障传播的重要方式。主流微内核方案通常采用上下特权级分治,将两类功能部署在不同异常级;ZVM则通过HyperTwin在EL2内采用同特权级双核分治。图1对比两种分治方式。

双核分治模式对比

图1. 双核分治模式对比

  • 微内核采用上下特权级分治:将外设驱动、VirtIO和网络/存储协议栈等置于EL1,将客户OS管理及CPU、内存等硬件资源管理保留在EL2。两类功能协作需要跨越EL1与EL2,伴随异常级切换和上下文保存/恢复开销。
  • ZVM通过HyperTwin同特权级双核分治:将控制功能与数据服务分别固定在同一特权级EL2内的控制核和数据核。控制核和数据核属于同一内核实例,但固定运行在不同物理CPU核心上。两核协作无需EL1/EL2异常级切换及相应的上下文保存/恢复,仅引入必要的跨核通信与同步开销。这里的控制核和数据核是同一内核实例中的不同组件固定运行在两个不同的物理CPU核心上。无需EL1/EL2异常级切换与相应的上下文保存恢复开销,仅引入必要的跨核通信与同步开销。

通过HyperTwin,ZVM在保持控制功能与数据服务分离的同时,将安全关键功能收敛到控制核,使控制核形成更小的可信计算基(TCB)。配合控制/数据隔离机制,可进一步缩小功能安全验证边界。控制核中的关键组件后续还可采用Rust等内存安全语言重写,进一步提升安全关键部分的可信性。

03 HyperTwin 如何实现双核隔离与协作

1)访问控制

双核职责固定后,HyperTwin首先按资源归属划分内存,控制核与数据核拥有各自独立的堆栈、页表、锁及其他私有数据,并设置共享区用于必要的状态交换。通过MMU限制数据核只能访问自身内存区和共享区,不能访问控制核私有内存;通过SMMU限制网卡、存储等设备的DMA访问范围在数据核内存区内,避免设备越界访问控制核关键内存。共享区对数据核默认只读,确需修改时由控制核统一授权。

共享区主要承载两核必须交换的管理状态。以镜像管理为例,数据核通过TF卡驱动读取客户OS镜像的分区信息,并需要将其登记到共享区中的镜像管理表,供控制核统一管理。

HyperTwin采用访问授权模式,控制核通过访问控制列表(ACL)管理共享区访问权限,数据核发起写入请求后,由控制核检查并授权相应访问。

访问控制:控制核授权数据核访问共享内存区

图2. 访问控制:控制核授权数据核访问共享内存区

图2以镜像分区信息登记为例。① 数据核根据TF卡中的镜像分区信息发起镜像管理表写入请求;② 控制核依据访问控制列表(ACL)检查目标共享区并完成授权;③ 数据核获得授权后将分区信息写入镜像管理表对应表项。控制核依据访问控制列表(ACL)检查目标共享区并完成授权将分区信息。

访问控制要点:将共享管理状态的写入纳入控制核统一管理,数据核的写入操作必须先经过控制核授权,从而在保留必要双核协作能力的同时限制数据核对关键管理数据的访问范围。

2)任务委托代理

访问控制解决共享管理数据的受控访问,但控制核发起的管理任务还可能涉及实际设备I/O。以客户OS快照为例,控制核负责生成快照任务,而快照数据需要通过固定在数据核的TF卡驱动写入TF卡。

为实现双核隔离基础上的受控协作,ZVM采用任务委托代理机制,将控制核需要的设备操作委托给数据核执行,并由数据核返回执行结果。

委托代理:控制核委托数据核代理其完成数据操作

图3. 委托代理:控制核委托数据核代理其完成数据操作

图3给出客户OS快照写入TF卡的委托过程。① 控制核生成快照任务,并将TF卡写入操作委托给数据核;② 数据核调用本地TF卡驱动将快照数据写入TF卡;③ 写入完成后,数据核向控制核返回执行结果。

控制核保留任务决策与结果处理,数据核保留设备及驱动状态。设备访问始终在数据核内完成,跨核仅传递任务和结果,避免将复杂设备服务重新引入控制核。

04 HyperTwin 双核分治的收益

通过HyperTwin双核分治,ZVM将安全关键控制功能与复杂数据服务限制在明确的执行与故障边界内,并通过访问控制和任务委托在隔离基础上保留必要的双核协作能力。由此,HyperTwin主要带来以下四方面收益:

  • 1) 更强的故障隔离。控制功能与数据服务固定运行在不同物理核,外设驱动、VirtIO、网络/存储协议栈等复杂数据服务产生的阻塞、异常和故障被限制在数据核侧;结合独立堆、页表以及MMU/SMMU访问约束,可进一步限制数据侧故障向关键控制功能传播。
  • 2) 更小的可信计算基与验证边界。客户OS管理以及CPU、内存等关键资源管理集中在控制核,复杂设备和数据服务收敛至数据核,使需要重点保证和验证的对象进一步集中于控制核关键组件,有利于缩小TCB和功能安全验证边界;后续还可通过Rust等内存安全语言强化关键组件可信性。
  • 3) 更低的双核协作开销。不同于上下特权级分治方案,HyperTwin的控制核与数据核均运行于EL2,两核协作无需EL1/EL2异常级切换及相应的上下文保存/恢复;访问控制和任务委托均在EL2内完成,在保持功能分离的同时缩短控制与数据服务之间的协作路径。
  • 4) 更好的执行确定性。物理核分治使关键控制功能拥有相对独立的CPU执行资源,独立堆、页表和受控共享区进一步减少数据侧资源竞争与非预期访问对控制侧的干扰;复杂I/O操作始终由数据核代理执行,使控制核职责和执行路径更加稳定,为安全关键任务提供更可控的运行环境。

05 小结

HyperTwin并非简单地将虚拟化功能分配到两个CPU核,而是由ZVM通过同特权级物理核分治重新组织安全关键虚拟化系统的控制功能与数据服务,在保持必要协作能力的同时,实现故障影响范围、可信计算基和功能安全验证边界的收敛,并降低跨特权级协作开销,提升关键控制功能的执行确定性。