Contexte et objectifs

Le développement de solutions rack‑scale nécessite un accès physique aux racks, or les unités finies sont rapidement déployées chez les clients. Oxide Computer a donc créé Virtual Oxide Labs (Voxel) pour reproduire, sans matériel réel, l’ensemble des composants d’un rack : sleds, commutateurs P4, microcontrôleurs Service Processor (SP) et Root of Trust (RoT). L’objectif principal est de tester le plan de contrôle Omicron et les topologies réseau client en conservant le même logiciel stock que sur le matériel commercial.

Architecture de Voxel

Voxel repose sur une pile d’émulation complète écrite en Rust et s’appuie sur le système d’exploitation illumos. Chaque sled est virtualisé par Propolis, un hyperviseur qui exécute les VM Linux et les zones Helios. Le réseau est reproduit soit par BGP (numéroté ou non) soit par une configuration statique Debian/FRR, tandis que les commutateurs sont simulés par SoftNPU, un switch logiciel P4 développé par Oxide. La simulation du microcontrôleur SP/RoT utilise également une implémentation logicielle, garantissant que les interactions matérielles restent fidèles au comportement réel.

Processus de création d’images

La première étape consiste à créer un instantané réutilisable du sled. Deux types de sled existent : le « gimlet » (première génération) ou le « cosmo » (actuelle), et le « scrimlet » qui intègre un switch côté‑carte. Voxel clone le dépôt Omicron depuis GitHub ou récupère un paquet signé via le TUF (The Update Framework). Un exemple de commande montre le flux :

pfexec ./target/debug/voxel image create --from-tuf ../5d176e0be7e...zip

Le processus extrait 12 zones, 3 artefacts de mesure et les firmwares SP/RoT, puis crée une image ZFS de 1 258 295 296 octets avec un ROM de 33 554 432 octets. L’image, horodatée (2026‑09‑06T21:37:58), devient la base pour le lancement du rack virtuel.

Déploiement, performances et limites

Sur un mini‑PC Minisforum MS‑A2 équipé d’un processeur AMD Ryzen 9 9955HX à 32 threads et de 96 Go de RAM, Voxel peut instancier six sleds simultanément, soit un rack complet ou deux racks séparés, en environ dix minutes. Le lancement utilise le même agent voxel‑init que sur le matériel, ce qui garantit que le plan de contrôle s’exécute sans modification. La taille réduite du footprint (un seul SSD NVMe) rend la solution adaptée aux environnements CI, mais la capacité maximale dépend du nombre de cœurs et de la mémoire disponible ; des racks plus grands nécessiteraient du matériel plus puissant. De plus, bien que la simulation reproduise les comportements logiciels, les limites physiques du matériel (latence du réseau réel, consommation énergétique) ne sont pas capturées, ce qui peut affecter la validation de scénarios d’échelle très élevée.