microsoft/openvmm

Public

mirrored from https://github.com/microsoft/openvmmAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
2fa7fcaafa8f12253f263a3868985da4e52a7c73

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Guide/src/reference/architecture/openhcl.md

73lines · modecode

1# OpenHCL Architecture
2
3**Prerequisites:**
4
5- [Getting Started: OpenHCL](../../user_guide/openhcl.md).
6- [Architecture: OpenVMM Architecture](./openvmm.md).
7
8* * *
9
10## Overview
11
12OpenHCL is a paravisor execution environment that runs within the guest partition of a virtual machine. It provides virtualization services to the guest OS from within the guest partition itself, rather than from the host as is traditionally done.
13
14The following diagram offers a brief, high-level overview of the OpenHCL Architecture.
15
16![OpenHCL High Level Overview](./_images/openhcl.png)
17
18## Virtual Trust Levels (VTLs)
19
20OpenHCL relies on [Virtual Trust Levels] (VTLs) to establish a security boundary between itself and the guest OS.
21
22- **VTL2:** OpenHCL runs here[^sk]. It has higher privileges and is isolated from VTL0.
23- **VTL0 (and sometimes VTL1):** The Guest OS (e.g., Windows, Linux) runs here. It cannot access VTL2 memory or resources.
24
25This isolation is enforced by the system configured by the underlying virtual machine monitor (Hyper-V) and can be backed by:
26
27- Hardware [TEEs], like Intel [TDX] and AMD [SEV-SNP].
28- Software-based constructs, like Hyper-V [VSM].
29
30## Scenarios
31
32OpenHCL enables several key scenarios by providing a trusted execution environment within the VM:
33
34### Azure Boost
35
36OpenHCL acts as a compatibility layer for Azure Boost. It translates legacy synthetic device interfaces (like VMBus networking and storage) used by the guest OS into the hardware-accelerated interfaces (proprietary [Microsoft Azure Network Adapter] (MANA) and NVMe) provided by the Azure Boost infrastructure. This allows unmodified guests to take advantage of next-generation hardware.
37
38The following diagram shows a high level overview of how synthetic networking is supported in OpenHCL over Microsoft Azure Network Adapter (MANA)
39
40![OpenHCL Synthetic Networking](./_images/openhcl-synthetic-nw.png)
41
42The following diagram shows a high level overview of how accelerated networking is supported in OpenHCL over MANA
43
44![OpenHCL Accelerated Networking](./_images/openhcl-accelnet.png)
45
46### Confidential Computing
47
48In Confidential VMs (CVMs), the host is not trusted. OpenHCL runs inside the encrypted VM context (VTL2) and provides necessary services (like device emulation and TPM) that the untrusted host cannot securely provide. Security-sensitive devices, such as the virtual TPM, can be further isolated by running them in separate worker processes within VTL2 for defense-in-depth protection.
49
50### Trusted Launch
51
52OpenHCL hosts a virtual TPM (vTPM) and enforces Secure Boot policies, ensuring the integrity of the guest boot process.
53
54## Architecture Components
55
56OpenHCL is built on top of a specialized Linux kernel and consists of several userspace processes that work together to provide these services.
57
58For more details on the internal components and boot process, see:
59
60- [Processes and Components](./openhcl/processes.md)
61- [Boot Flow](./openhcl/boot.md)
62- [Sidecar](./openhcl/sidecar.md)
63- [IGVM Artifact](./openhcl/igvm.md)
64
65[^sk]: Why not VTL1? Windows already uses VTL1 in order to host the [Secure Kernel].
66
67[VSM]: https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/tlfs/vsm
68[Virtual Trust Levels]: https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/tlfs/vsm
69[TDX]: https://www.intel.com/content/www/us/en/developer/tools/trust-domain-extensions/overview.html
70[SEV-SNP]: https://www.amd.com/content/dam/amd/en/documents/epyc-business-docs/white-papers/SEV-SNP-strengthening-vm-isolation-with-integrity-protection-and-more.pdf
71[TEEs]: https://en.wikipedia.org/wiki/Trusted_execution_environment
72[Secure Kernel]: https://www.microsoft.com/en-us/security/blog/2020/07/08/introducing-kernel-data-protection-a-new-platform-security-technology-for-preventing-data-corruption/
73[Microsoft Azure Network Adapter]: https://learn.microsoft.com/en-us/azure/virtual-network/accelerated-networking-mana-overview