Which Virtualization Technologies Have Powered Amazon EC2?
Amazon Elastic Compute Cloud has transitioned through several major virtualization architectures since its initial beta launch in 2006. Starting with a heavily customized version of the Xen hypervisor utilizing paravirtualization, Amazon Web Services later adopted hardware-assisted virtualization to improve performance and support broader operating systems. In 2017, Amazon introduced the AWS Nitro System, which offloaded virtualization management, networking, and storage functions to dedicated hardware cards alongside a lightweight KVM-based hypervisor. This evolution enabled modern virtualized instances, bare-metal instances, and specialized micro-virtualization architectures that power cloud computing workloads today.
The Early Era: Xen Paravirtualization (PV)
When Amazon EC2 launched in August 2006, hardware-assisted virtualization extensions from CPU manufacturers (such as Intel VT-x and AMD-V) were either brand new, unavailable at scale, or carried significant performance penalties. To slice physical servers into isolated virtual machines efficiently, AWS built its initial infrastructure on the open-source Xen hypervisor using Paravirtualization (PV).
In a traditional x86 architecture, processor privilege levels are divided into four protection rings, numbered from \(0\) (most privileged) to \(3\) (least privileged):
\[\text{Ring } 0 \text{ (Kernel)} > \text{Ring } 1 > \text{Ring } 2 > \text{Ring } 3 \text{ (User Space)}\]
Under Xen PV, the Xen hypervisor itself ran in \(\text{Ring } 0\) to maintain total control over the physical hardware. Because the guest operating system kernel could no longer run in \(\text{Ring } 0\), its kernel was modified to run in \(\text{Ring } 1\) (or \(\text{Ring } 3\) on 64-bit x86 architectures), while user applications remained in \(\text{Ring } 3\).
Key characteristics of Xen Paravirtualization on EC2 included:
- Modified Guest Kernels: Guest operating systems had
to be explicitly aware that they were running in a virtualized
environment. Standard operating systems could not boot unmodified;
instead, they relied on special kernel builds (originally managed via
Amazon Kernel Images, or AKIs, and later loaded via
PvGrub). - Hypercalls: Instead of executing privileged CPU instructions that would trap and fail outside of \(\text{Ring } 0\), the modified guest kernel made direct synchronous software calls—known as hypercalls—directly to the Xen hypervisor to handle memory management, page table updates, and I/O operations.
- Domain 0 (Dom0) Bottlenecks: In the Xen
architecture, a privileged control domain known as
Dom0ran alongside guest instances (DomU). Every network packet and storage request from a guest instance had to pass throughDom0software emulation and routing layers before reaching physical hardware, which introduced jitter and consumed host CPU cycles.
Transition to Xen Hardware Virtual Machine (HVM)
As Intel and AMD matured their hardware virtualization extensions—specifically Intel VT-x with Extended Page Tables (EPT) and AMD-V with Rapid Virtualization Indexing (RVI)—AWS introduced Hardware Virtual Machine (HVM) instances.
Xen HVM allowed guest operating systems to run completely unmodified, as if they were executing on bare-metal hardware. Processors introduced a new privilege mode altogether: root mode for the hypervisor and non-root mode for the guest virtual machines, allowing the guest OS kernel to reside in its native \(\text{Ring } 0\) within non-root mode.
The transition from PV to HVM occurred in stages:
- Pure HVM: Allowed unmodified operating systems such as Microsoft Windows Server to run on EC2, alongside standard Linux distributions using their native bootloaders. However, early HVM relied on emulated hardware for disk and network controllers, which was slower than paravirtualized I/O.
- PV on HVM: To combine the CPU and memory benefits of hardware virtualization with the I/O speed of paravirtualization, AWS adopted "PV on HVM" drivers. Guest operating systems ran unmodified in hardware-assisted mode but loaded specialized Xen paravirtualized drivers for network and storage access, bypassing slow hardware emulation.
- SR-IOV and Enhanced Networking: As instance sizes
grew, passing network and storage traffic through
Dom0remained a latency bottleneck. AWS began integrating Single Root I/O Virtualization (SR-IOV), allowing guest instances to bypassDom0for data plane operations and communicate directly with physical network interface cards (NICs).
The Annapurna Labs Acquisition and the Road to Nitro
Despite optimizations to Xen HVM, the fundamental architecture still
required the host CPU and system RAM to run Dom0 management
software, software-defined networking (VPC encapsulation), and storage
encryption. For a host server with \(N\) physical CPU cores, a noticeable
fraction of compute and memory had to be reserved for the hypervisor and
control plane rather than sold to customers:
\[C_{\text{available}} = C_{\text{total}} - C_{\text{Dom0}} - C_{\text{hypervisor}}\]
In 2013, AWS began offloading networking tasks to custom hardware, culminating in the January 2015 acquisition of Annapurna Labs, an Israeli microelectronics company. This acquisition laid the groundwork for a complete architectural overhaul of EC2 virtualization: moving the control plane, I/O virtualization, and security monitoring off the main server motherboard and onto dedicated Application-Specific Integrated Circuits (ASICs).
The AWS Nitro System and the KVM Hypervisor
Officially unveiled in November 2017 with the launch of the C5 instance family, the AWS Nitro System replaced the legacy Xen architecture for all new EC2 instance generations. Rather than relying on a heavy software layer running on the host processor, the Nitro System breaks virtualization down into three modular hardware and firmware components:
1. Nitro Cards
Dedicated PCIe hardware cards powered by custom Annapurna Labs ASICs handle all I/O functions. Separate Nitro Cards manage Amazon Virtual Private Cloud (VPC) networking, Amazon Elastic Block Store (EBS) volume attachment and encryption, local NVMe instance storage, and system control. To the main host CPU, these cards present themselves simply as standard PCIe devices (using NVMe and Elastic Network Adapter [ENA] interfaces) via SR-IOV.
2. Nitro Security Chip
Integrated directly onto the host motherboard, the Nitro Security Chip monitors and protects hardware resources. It establishes a hardware root of trust, verifies firmware integrity at boot, and blocks unauthorized access or modification to non-volatile memory from software running on the host CPU.
3. The Nitro Hypervisor (KVM-based)
Because networking, storage, and management tasks are handled
entirely by the dedicated Nitro Cards, Dom0 is eliminated.
In place of Xen, AWS implemented the Nitro Hypervisor, which is built on
core Linux Kernel-based Virtual Machine (KVM) technology.
Unlike standard general-purpose KVM deployments, the Nitro Hypervisor is stripped down to a minimal firmware-like footprint. It does not include a general-purpose operating system, networking stack, or device drivers, and it never initiates network connections. Its sole responsibility is partitioning the host CPU and physical memory (\(\text{RAM}\)) among guest instances. As a result, nearly \(100\%\) of the host server's compute and memory resources are delivered directly to customer instances, with performance indistinguishable from bare metal.
Bare Metal Instances
(*.metal)
A direct consequence of shifting virtualization management and I/O to
Nitro Cards is the ability to offer EC2 Bare Metal instances (such as
i3.metal, c5.metal, and
m7i.metal).
Because the Nitro Cards and Nitro Security Chip control boot orchestration, EBS storage, and VPC networking independently of the host CPU, AWS can boot an instance without loading the Nitro Hypervisor at all. The customer's operating system boots directly on the physical processor and memory, retaining full access to hardware performance counters and Intel VT-x or AMD-V extensions. This enables customers to run their own hypervisors (such as VMware ESXi or KVM) or licensing-restricted workloads directly on EC2 hardware while still utilizing cloud-native EBS volumes and VPC networking.
Specialized Virtualization on Modern EC2
Beyond standard x86 and Arm (AWS Graviton) virtual machines, the Nitro foundation has enabled specialized virtualization models for specific workloads:
Mac Instances
Introduced in 2020, EC2 Mac instances run on physical Apple Mac mini hardware (featuring Intel or Apple Silicon M-series processors) connected to the AWS Nitro System via high-speed Thunderbolt interfaces. The Nitro Controller manages the physical Mac as a bare-metal host, providing it with EBS storage and VPC networking while running macOS natively or through Apple’s native Virtualization framework.
Nitro Enclaves
To support workloads processing highly sensitive data (such as
cryptographic keys or personally identifiable information), AWS
introduced Nitro Enclaves. Using the same Nitro Hypervisor technology
that isolates EC2 instances from one another, a customer can carve out
CPU cores and memory from an existing EC2 instance to create an
isolated, hardened virtual machine. An enclave has no persistent
storage, no interactive shell access, and no external
networking—communicating with its parent instance solely over a local
virtual socket (vsock).
Firecracker MicroVMs
While not used directly to boot standard customer EC2 instances, AWS
developed Firecracker in 2018 as an open-source Virtual Machine Monitor
(VMM) written in Rust that utilizes KVM. Running atop EC2
.metal instances, Firecracker creates lightweight microVMs
in milliseconds with a memory overhead of less than \(5\text{ MiB}\) per microVM. This
specialized layer powers AWS serverless compute services, including AWS
Lambda and AWS Fargate, combining the multi-tenant hardware isolation of
KVM virtualization with the rapid startup speed of containers.
Summary of EC2 Virtualization Generations
| Era | Virtualization Technology | Hypervisor Base | Key Architectural Traits | Example Instance Families |
|---|---|---|---|---|
| 2006 – 2011 | Xen Paravirtualization (PV) | Xen | Modified Linux kernels, software
hypercalls, Dom0 handles all I/O |
M1, C1, M2, T1 |
| 2010 – 2017 | Xen HVM | Xen | Hardware-assisted CPU/MMU (VT-x/AMD-V), unmodified OS support, SR-IOV networking | CC1, M3, C3, R3, M4, C4, R4, T2 |
| 2017 – Present | AWS Nitro System | KVM (Nitro Hypervisor) | Dedicated ASICs (Nitro Cards) for I/O and
control, no Dom0, near-zero CPU overhead |
C5, M5, R5, T3, M6i, C6g, M7g, C7i, M8g |
| 2017 – Present | Nitro Bare Metal | None | Nitro Cards manage I/O and boot; guest OS runs directly on physical host CPU | i3.metal,
c5.metal, m6i.metal, mac1.metal,
mac2-m2.metal |