Skip to content

Commit 7277f1c

Browse files
committed
Documentation updates.
- Add snapshot management section - Update snapshot docs to reflect ARM support. Signed-off-by: Andrei Sandu <[email protected]>
1 parent 4eef9f7 commit 7277f1c

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

docs/snapshotting/snapshot-support.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- [Snapshotting in Firecracker](#snapshotting-in-firecracker)
77
- [Supported platforms](#supported-platforms)
88
- [Overview](#overview)
9+
- [Snapshot files management](#snapshot-files-management)
910
- [Performance](#performance)
1011
- [Known issues and limitations](#known-issues-and-limitations)
1112
- [Firecracker Snapshotting characteristics](#firecracker-snapshotting-characteristics)
@@ -75,6 +76,27 @@ This has the advantage of very fast snapshot loading times, but comes with the c
7576
of having to keep the guest memory file around for the entire lifetime of the
7677
resumed microVM.
7778

79+
### Snapshot files management
80+
81+
The Firecracker snapshot design offers a very simple interface to interact with
82+
snapshots but provides no functionality to package or manage them on the host.
83+
Using snapshots in production is currently not recommended as there are open
84+
[Known issues and limitations](#known-issues-and-limitations).
85+
86+
The [threat containment model](../design.md#threat-containment) model states
87+
that the host, host/API communication and snapshot files are trusted by Firecracker.
88+
89+
To ensure a secure integration with the snapshot functionality, users need to secure
90+
snapshot files by implementing authentication and encryption schemes while managing their
91+
lifecycle or moving them across the trust boundary, like for example when provisioning
92+
them from a respository to a host over the network.
93+
94+
Firecracker is optimized for fast load/resume and it's designed to do some very basic
95+
sanity checks only on the vm state file. It only verifies integrity using a 64 bit CRC
96+
value embedded in the vm state file, but this is only as a partial measure to protect
97+
against accidental corruption, as the disk files and memory file need to be secured as
98+
well.
99+
78100
### Performance
79101

80102
The Firecracker snapshot create/resume performance depends on the memory size,

docs/snapshotting/versioning.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,9 @@ new Firecracker process.
113113

114114
### CPU model
115115

116-
Firecracker micromVMs can run on Intel/AMD CPU models that support the hardware virtualizations extensions. Snapshots are not compatible across CPU architectures and even across CPU models of the same architecture. They are only compatible if the CPU features exposed to the guest are an invariant when saving and restoring the snapshot. The trivial scenario is creating and restoring snapshots on hosts that have the same CPU model.
116+
Firecracker micromVMs snapshot functionality is available for Intel/AMD/ARM64 CPU models that support the hardware virtualizations extensions, more details are available [here](../../README.md#supported-platforms). Snapshots are not compatible across CPU architectures and even across CPU models of the same architecture. They are only compatible if the CPU features exposed to the guest are an invariant when saving and restoring the snapshot. The trivial scenario is creating and restoring snapshots on hosts that have the same CPU model.
117117

118-
To make snapshots more portable across Intel CPUs Firecracker provides an API to select a CPU template which is only available for Intel - T2 and C3. These templates are mapped as close as possible to AWS T2/C3 instances in terms of CPU features. There are no templates available for AMD. Firecracker CPU templates mask CPUID to restrict the exposed features to a common denominator of multiple CPU models.
118+
To make snapshots more portable across Intel CPUs Firecracker provides an API to select a CPU template which is only available for Intel - T2 and C3. Firecracker CPU templates mask CPUID to restrict the exposed features to a common denominator of multiple CPU models. These templates are mapped as close as possible to AWS T2/C3 instances in terms of CPU features. There are no templates available for AMD or ARM64.
119119

120120
It is important to note that guest workloads can still execute instructions that are being masked by CPUID and restoring and saving of such workloads will lead to undefined result. Firecracker retrieves the state of a discrete list MSRs from KVM, more specificically the MSRs corresponding to the guest exposed features.
121121

0 commit comments

Comments
 (0)