VT2021 Cloud-Hypervisor Fiche

From air
Revision as of 21:58, 28 November 2021 by Lucas.Chaloyard (talk | contribs)
Jump to navigation Jump to search

Cloud Hypervisor

Résumé

Mots clés : Cloud, VMM, Hyperviseur, Rust, KVM, Qemu

Le projet "Cloud Hypervisor" est une VMM open source qui s'exécute au-dessus de KVM.
Ce projet est développé en Rust, langage qui fournit non seulement des performances intéréssantes, mais aussi une sécurité et fiabilité très grande. Il est basé sur les crates rust-vmm dont on parlera.
Il est destiné à exécuter des tâches typiques d'application Cloud moderne.

Abstract

Keywords : Cloud, VMM, Hypervisor, Rust, KVM, Qemu

The "Cloud Hypervisor" project is an open source VMM that runs on top of KVM.
This project is developed in Rust, a language that provides not only good performance but also great security and reliability. It is based on the rust-vmm crates that we will talk about.
It is intended to perform typical tasks of modern cloud applications.

A. VMM

VirtBasic.png
HypervisorLevels.png
  • TO DO : Partie Elias

B. Rust

Langage Rust

Performance
Rust est dépourvu de garbage collector et ne s'exécute pas dans un environnement virtuel.
L'explicité du langage (typage dynamique) permet au compilateur de produire un code Assembleur d'une efficacité folle.
Lors de sa compilation, Rust passera à travers le compilateur LLVM qui est l'un des compilateurs les plus utilisés (avec GCC) et dont la capacité à produire du code efficace n'est plus remise en doute.

Securité et fiabilité
Le point le plus important concernant Rust, et celui dont on parle le plus est sa capacité en terme de sécurité et fiabilité.
Le compilateur Rust va en fait forcer le développeur à éviter de produire certaines failles de sécurité.
Son système de typage puissant et son modèle d'ownership permet de contraindre le developpeur à garantir une certaine sécurité mémoire.

Bien sûr, ce point peut-être discutable, car ce n'est qu'au final qu'une assistance au développeur lui permettant d'éviter ces bugs, mais un développeur ne devrait-il pas être capable par lui même d'éviter de créer ce genre de faille ?

Productivité
Aussi, Rust vient accompagner d'une panoplie d'outils extrêmement bien développé et très utile, permettant à n'importe quel développeur une grande productivité.
On pensera à :

  • cargo (gestionnaire de crate)
  • clippy (linter)
  • rustfmt (formatteur)
  • plugins vs-code, emacs, vim, etc...

Conclusion
Ce sont ces caractéristiques qui font que Rust a été choisi pour ce projet dédié au Cloud, un milieu où on recherche à la fois performance, sécurité et fiabilité.

rust-vmm

Qu'est-ce que Rust-Vmm ?
Rust-Vmm est un projet open source destiné à encourager la communauté Rust à construire et développer des Virtual Machine Monitors (VMMs) et des hyperviseurs (ainsi que les outils qui les entourent).
Ce projet est donc un ensemble de sous-projets, pouvant servir de composant dans la création d'une VMM par exemple.
Dans le jargon de Rust, on parlera de crates (ce qui correspond en fait à un framework ou une application).

On citera quelqu'un de ces composants tel que :

  • vm-virtio : VirtIO (Virtual I/O).
  • vm-device : Modélisation des devices que l'on souhaite ajouter à une machine virtuelle.
  • vm-memory : Création/conception de la mémoire virtuelle d'une machine virtuelle.

Est-ce un problème ?
Le projet Cloud-Hypervisor repose sur le projet rust-vmm.
On peut alors se demander si ce n'est pas un problème de compter sur autant de composants publique, dont la maintenance n'est assuré que par la communauté Open Source Rust.

Inspiration
Une grande partie du code du Cloud-Hypervisor est basé sur soit le projet Firecrack d'Amazon ou sur les projets CrosVM de Google.

Ces 2 projets sont aussi des projets de VMM écrit en Rust, dont certains objectifs se veulent similaires à ceux du Cloud-Hypervisor.
Néamoins, le projet Cloud-Hypervisor possède un but final différent, celui-ci à créer une (infrastructure?) capable de supporter des images ? (partie à revoir)

Grâce à ces projets, rust-vmm est bien maintenu, et se trouve fournit de code de qualité, surtout pour les parties orienté wrapping de l'API KVM et la gestion mémoire du Guest OS.

C. KVM et Qemu

KVM

Outil de virtualisation
KVM correspond à une technologie de virtualisation open source.
Cette technologie est directement intégrée au noyau Linux et peut être chargée dans le noyau en tant que module en fonction du bon vouloir de l'utilisateur.

KVM permet de convertir votre système Linux en un hyperviseur de type 1.
Les machines virtuelles qu'on lancera à l'aide de KVM seront traitées comme des processus standards du système. Cela permet de laisser la gestion de l'ordonnancement des machines virtuelles à l'ordonnanceur des processus du noyau Linux.

Schéma KVM

KQemu
KVM est accompagné d'une version modifiée de Qemu (dont on parlera plus tard), appelé KQemu.
Cette version de Qemu est prévue pour une utilisation couplée à KVM, ce qui permettra des optimisations accélérant l'émulation.

Qemu

  • TO DO : Partie Elias

D. VirtIO

VirtIO.png
  • TO DO : Partie Elias

Références