La version v09-00 est issue du temps du confinement, parenthèse calme dans un monde habituellement agité par le rythme aliénant « métro, boulot, dodo ».
Cette version prend maintenant en charge trois techniques de liens entre les interfaces Ethernet des machines virtuelles : « vhost », « dpdk » et « sock » dont les débits maximum sont les suivants :
Comment sommes‑nous arrivés à cela ? C’est ce que nous allons voir.
Un peu d’historique sur le passé de cloonix pour comprendre son cheminement vers cette dernière version :
Cloonix a démarré avant 2009 avec User‑mode Linux. Son but était de lancer des démonstrations sur des réseaux virtuels, les machines étaient basées sur un noyau lancé comme un processus en mode utilisateur : « User‑mode Linux » (UML) et les câbles de jonction entre machines virtuelles étaient basés sur des sockets UNIX ou TCP selon les cas. Je bossais sur des protocoles réseau et n’avais pas assez de machines physiques pour valider les fonctionnements.
À l’époque du démarrage de cloonix (2007), QEMU existait déjà (2003) mais il « émulait » un processeur ainsi que tous les autres périphériques d’une machine. La vitesse du processeur émulé rendait cette machine virtuelle inutilisable. Un simple démarrage de machine virtuelle prenait de cinq à dix minutes. En revanche, UML court‑circuitait le processeur pour faire tourner le noyau Linux directement dans un processus, la performance était donc très bonne.
Les processeurs étaient encore à cette époque majoritairement des éléments matériels et leur émulation peu performante, mais quand les processeurs virtuels ont fait leur apparition, intégrés en 2007 dans le noyau Linux sous le nom de « Kernel‑based Virtual Machine » (KVM), tout a changé. UML a perdu son intérêt et QEMU a été modifié pour remplacer l’émulation processeur par l’utilisation d’un processeur virtuel, tout en gardant l’énorme travail d’émulation de tout le reste des périphériques contenu dans QEMU.
Pour continuer l’amélioration de QEMU, les périphériques émulés ont été à leur tour remplacés par des périphériques « paravirtualisés » ; c’est ainsi que toute la série des pilotes VirtIO a été introduite dans le noyau pour tourner dans les systèmes invités avec plus d’efficacité. Pour clarifier mes propos, deux exemples : les cartes Ethernet émulées étaient le plus souvent les Realtek RTL8139 et Intel e1000, le pilote paravirtualisé est virtio-net ; pour le disque dur, il y avait émulation d’un disque avec ide-hd, son équivalent paravirtualisé est virtio-blk, beaucoup plus rapide.
Autour de 2012, cloonix n’a plus utilisé que des machines virtuelles de type QEMU‑KVM avec les pilotes paravirtualisés. La machine virtuelle étant stabilisée, restait à rénover la méthode d’émulation des câbles entre les machines virtuelles. Pour mieux comprendre la gestion de ces flux entre les machines virtuelles, partons du départ de ces flux : nous sommes donc dans l’invité qui voit le pilote virtio-net comme pilote de sa carte Ethernet. Le nom générique d’un pilote se trouvant dans l’invité est le frontal (front‑end), c’est ce qui est présenté au noyau invité. Ce frontal dans l’invité correspond à un back‑end dans QEMU, donc dans la machine hôte.
Depuis le début, pour cloonix, ce back‑end a été modifié pour que les octets en provenance du frontal entrent dans un socket UNIX. Cloonix s’est longtemps contenté de ce socket modifié dans QEMU amenant les octets vers un processus qui transférait à son tour les octets d’un socket vers un autre. Le type de travail de ces processus pour la gestion des flux d’octets ressemble beaucoup à ce que fait un commutateur réseau (switch). Vers 2009, Open vSwitch (OVS) apparaît, ce fut la naissance du premier commutateur réseau virtuel.
Vers 2013 arriva le Data Plane Development Kit (DPDK), logiciel focalisé performance dont le but est de reprendre au noyau la gestion d’une partie du matériel pour permettre une meilleure vitesse et une plus grande efficacité de traitement. Le matériel étant un nombre de processeurs choisi, une quantité de page mémoire de type « huge » configurable, ainsi que les ports physiques de notre choix — les ports étant des cartes d’interface réseau. L’association logicielle Open vSwitch‐DPDK est très logique pour avoir l’efficacité de la gestion du matériel par le DPDK associée à la souplesse d’un commutateur logiciel avec Open vSwitch.
En 2019, de la même façon qu’il a fallu suivre la meilleure solution libre pour la virtualisation avec le remplacement d’UML par QEMU‑KVM, cloonix a adopté le couple Open vSwitch‐DPDK pour l’évolution de la gestion des flux.
La version 09-00 stabilise l’utilisation de ces logiciels, le passage des sockets à Open vSwitch a généré un gros gain de bande passante pour les flux entre machines virtuelles.
Aller plus loin
- vhost (121 clics)
- dpdk (51 clics)
- sock (35 clics)
- User‑mode Linux (UML) (22 clics)
- cloonix UML (72 clics)
- cloonix OVS (115 clics)
# Contribution?
Posté par Thomas Monjalon . Évalué à 1.
Bonjour,
S'agit-il d'un projet ouvert à participation ?
Je ne trouve pas de liste de diffusion ni de dépôt git.
[^] # Re: Contribution?
Posté par Thomas Monjalon . Évalué à 1.
Trouvé sur GitHub : https://github.com/clownix/cloonix
[^] # Re: Contribution?
Posté par clownix (site web personnel) . Évalué à 2.
Oui, en effet c'est là.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.