VT2021 Cloud-Hypervisor Fiche: Difference between revisions

From air
Jump to navigation Jump to search
No edit summary
No edit summary
Line 6: Line 6:


Le projet "Cloud Hypervisor" est une VMM open source qui s'exécute au-dessus de KVM.
Le projet "Cloud Hypervisor" est une VMM open source qui s'exécute au-dessus de KVM.
Ce projet est dévéloppé 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.
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 typique d'application Cloud moderne.
Il est destiné à exécuter des tâches typiques d'application Cloud moderne.


== '''Abstract''' ==
== '''Abstract''' ==
Line 28: Line 28:
Rust est dépourvu de garbage collector et ne s'exécute pas dans un environnement virtuel.</br>
Rust est dépourvu de garbage collector et ne s'exécute pas dans un environnement virtuel.</br>
L'explicité du langage (typage dynamique) permet au compilateur de produire un code Assembleur d'une efficacité folle.</br>
L'explicité du langage (typage dynamique) permet au compilateur de produire un code Assembleur d'une efficacité folle.</br>
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 capcité à produire du code efficace n'est plus remise en doute.
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é'''</br>
'''Securité et fiabilité'''</br>
Le point le plus important conçernant Rust, et celui dont on parle le plus est sa capacité en terme de sécurité et fiabilité.</br>
Le point le plus important concernant Rust, et celui dont on parle le plus est sa capacité en terme de sécurité et fiabilité.</br>
Le compilateur Rust va en faite forcer le développeur à éviter de produire certaines faille de sécurité.</br>
Le compilateur Rust va en fait forcer le développeur à éviter de produire certaines failles de sécurité.</br>
Son système de typage puissant et son modèle d'ownership permet de contraindre le developpeur à garantir une certaine sécurité mémoire.</br>
Son système de typage puissant et son modèle d'ownership permet de contraindre le developpeur à garantir une certaine sécurité mémoire.</br>


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 ?
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é'''</br>
'''Productivité'''</br>
Aussi, Rust vient accompagné d'une panoplie d'outil extremement bien développé et très utile, permettant à n'importe quel développeur une grande 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é.


'''Conclusion'''</br>
'''Conclusion'''</br>
C'est 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é.
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===
===rust-vmm===


'''Qu'est-ce que Rust-Vmm ?'''</br>
'''Qu'est-ce que Rust-Vmm ?'''</br>
Rust-Vmm est un projet open source destiné à encourager la communauté Rust à construire et developper des Virtual Machine Monitors (VMMs) et des hyperviseurs (ainsi que les outils qui les entourent).</br>
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).</br>
Ce projet est donc un ensemble de sous projet, pouvant servir de composant dans la création d'une VMM par exemple.</br>
Ce projet est donc un ensemble de sous-projets, pouvant servir de composant dans la création d'une VMM par exemple.</br>
Dans le jargon de Rust, on parlera de crates (ce qui correspond enfaite à un framework ou une application simplement).
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 :
On citera quelqu'un de ces composants tel que :
Line 57: Line 57:
'''Est-ce un problème ?'''</br>
'''Est-ce un problème ?'''</br>
Le projet Cloud-Hypervisor repose sur le projet rust-vmm.</br>
Le projet Cloud-Hypervisor repose sur le projet rust-vmm.</br>
On peut alors se demander si ce n'est pas un probléme de compter sur autant de composant publique, dont la maintenance n'est assuré que par la communauté Open Source Rust.
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'''</br>
'''Inspiration'''</br>
Une grande partie du code du Cloud-Hypervisor est basé sur soit le projet Firecrack d'Amazon ou sur les projets CrosVM de Google.
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 similaire à ceux du Cloud-Hypervisor.</br>
Ces 2 projets sont aussi des projets de VMM écrit en Rust, dont certains objectifs se veulent similaires à ceux du Cloud-Hypervisor.</br>
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)
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)


Line 73: Line 73:
'''Outil de virtualisation'''</br>
'''Outil de virtualisation'''</br>
KVM correspond à une technologie de virtualisation open source. </br>
KVM correspond à une technologie de virtualisation open source. </br>
Cette technologie est directement intégré au noyau Linux et peut être chargé dans le noyau en tant que module en fonction du bon vouloir de l'utilisateur.
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.</br>
KVM permet de convertir votre système Linux en un hyperviseur de type 1.</br>
Les machines virtuelles qu'on lancera à l'aide de KVM seront traités comme des processus standard du système. Cela permet de laisser la gestion de l'ordonnancement des machines virtuelles à l'ordonnanceur des processus du noyau Linux.
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.


[[File:KVM_diagram.png|none|frame|300x400px|Schéma KVM]]
[[File:KVM_diagram.png|none|frame|300x400px|Schéma KVM]]
Line 82: Line 82:
'''KQemu'''</br>
'''KQemu'''</br>
KVM est accompagné d'une version modifiée de Qemu (dont on parlera plus tard), appelé KQemu.</br>
KVM est accompagné d'une version modifiée de Qemu (dont on parlera plus tard), appelé KQemu.</br>
Cette version de Qemu est prévu pour une utilisation couplé à KVM, ce qui permettra des optimisations accélérant l'émulation.
Cette version de Qemu est prévue pour une utilisation couplée à KVM, ce qui permettra des optimisations accélérant l'émulation.


===Qemu===
===Qemu===

Revision as of 19:46, 28 November 2021

Cloud Hypervisor

Lucas Chaloyard (lucas.chaloyard@etu.univ-grenoble-alpes.fr) - Elias El Yandouzi (elias.el@outlook.fr)

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é.

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 : Model d'une Virtual Machine - vm-memory : Utilisation à la création/conception de la virtual memory

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

- https://github.com/cloud-hypervisor/cloud-hypervisor - Repo git du projet Cloud Hypervisor - https://www.linux-kvm.org/page/Main_Page - Information sur KVM - https://www.cl.cam.ac.uk/research/security/seminars/archive/slides/2019-05-07-b.pdf - Discussion sur rust-vmm