Cloonix est un gestionnaire de machines virtuelles orienté réseau, son utilité principale est la création de démonstrations mettant en œuvre des protocoles de communication entre machines.
Une évolution majeure a été commencée sur ce logiciel, basé jusqu’à présent sur des connexions entre machines virtuelles implémentées par des sockets UNIX, Cloonix utilise maintenant deux logiciels libres de grande qualité : DPDK et Open vSwitch en plus de QEMU‐KVM.
Ces deux logiciels sont spécialisés dans la gestion des flux d’octets la plus performante possible, ils sont donc utilisés dans Cloonix comme remplacement des sockets UNIX.
Sommaire
Même si ces trois logiciels libres sont très populaires, voilà quelques rappels sur leur histoire :
DPDK
DPDK a été créé en 2010 par Intel, le site correspondant a été mis en ligne en 2013 par 6WIND. En avril 2017, le « Data Plane Development Kit » devient officiellement un projet de la Linux Foundation.
Le DPDK, est un ensemble de bibliothèques en C écrites spécifiquement pour gérer le « plan de trafic » sur lequel les contraintes peuvent soit être une exigence de fort débit, soit une exigence de faible latence, ou encore les deux à la fois. Très proche du matériel (surtout d’Intel), son but est l’optimisation des performances du logiciel pour le traitement des flux d’octets. Il inclut aussi des contrôleurs d’interface Ethernet (NIC) spécifiques aux cartes matérielles pour traiter la chaîne de circulation des paquets de données jusqu’aux extrémités.
Les bibliothèques DPDK implémentent principalement :
- un gestionnaire de files d’attente sans point de blocage ou d’attente ;
- un gestionnaire de mémoire vive optimisé pré‐allouant des tampons de taille fixe ;
- un cadriciel de fonctions d’aide à la gestion du transit de paquets ;
- des contrôleurs PMD (Poll Mode Driver) évitant les asynchronismes, pour réduire la latence et le passage par Linux.
La contrepartie de l’utilisation du DPDK est la monopolisation d’une partie des ressources en mémoire vive et temps processeur qui étaient propriétés exclusives de Linux. La mémoire vive est donnée au DPDK sous la forme de « huge pages », la configuration en huge page permet de minimiser les défaut de cache (cache misses). Le processeur est donné au DPDK sous la forme d’un ou plusieurs cœurs qui seront utilisés à 100 % une fois attribués au DPDK.
Le DPDK permet de court‐circuiter le noyau Linux pour accéder au matériel plus efficacement dans le but de traiter les flux d’octets.
Sociétés impliquées : Intel, 6wind, Cisco, VMware, Red Hat…
Open vSwitch
Fondée en 2007, Nicira Network Inc. (nicira.com) est le créateur des projets OpenFlow (protocole pour contrôler un commutateur réseau) et Open vSwitch (commutateur réseau virtuel).
La première version d’Open vSwitch sort en 2010. En 2012, VMware achète Nicira Network Inc. pour 1,2 milliard de dollars et s’engage à continuer le support d’Open vSwitch. La vision de VMware est que tout ce que l’on peut faire, ou presque, dans un réseau physique avec des boîtiers et du matériel, VMware peut le réaliser avec un logiciel.
En 2016, Open vSwitch ou encore OVS devient un projet de la Linux Foundation.
La fonction principale d’Open vSwitch est la gestion des flux d’octets passants à travers des ponts réseau (bridges) logiciels que l’utilisateur a déclarés, chaque pont ayant des ports d’accès.
Sociétés impliquées : Nicira, VMware, Citrix, Cisco, IBM, Intel, Red Hat…
QEMU‐KVM
QEMU est un émulateur de machine développé par Fabrice Bellard, dont la première version est sortie en 2003. C’est un logiciel applicatif du monde utilisateur. Au départ, QEMU émulait tous les composants de la machine y compris le processeur, c’était assez lourd et lent.
KVM, un module du noyau Linux a été écrit au départ par le développeur Avi Kivity, qui travaillait à Qumranet. C’est un accélérateur qui remplace l’émulation logicielle du processeur par un émulateur matériel basé sur Intel-VT.
En 2007, le module KVM a été inclus dans le noyau Linux 2.6.20. L’association QEMU‐KVM devient l’utilisation de base de QEMU. Le processeur est émulé par KVM dans le noyau, alors que le reste de la machine est encore constitué de pilotes émulés par QEMU dans l’espace utilisateur, ces pilotes sont constitués d’un « back-end » applicatif et présentent au noyau invité un frontal ayant une apparence de matériel bien réel qui trompe les modules du noyau invité.
Petit à petit, des pilotes de « para‐virtualisation » remplacent l’émulation lourde du matériel réel par QEMU, les pilotes frontaux qui tournent dans l’invité savent qu’il n’y a pas de matériel à gérer, ils sont adaptés à la virtualisation et transmettent au « back‐end » avec de bien meilleures performances. Par exemple, le module « virtio-blk » du noyau Linux gère le disque dur de la machine virtuelle invitée si l’on donne la configuration suivante côté QEMU : -drive file=tst.qcow2,if=virtio
Qumranet a été acheté par Red Hat pour 107 millions de dollars en 2008.
Cloonix
Attention, ce logiciel ne prétend aucunement jouer dans la même cour que les trois superstars précédentes, mais il les utilise.
Avec Open vSwitch orientant les flux d’octets à la manière d’un commutateur réseau matériel, associé à DPDK améliorant la performante de cette gestion des flux, et enfin avec QEMU‐KVM, comme moteur de virtualisation qui, lui aussi, est conçu pour travailler en association avec à la fois le DPDK et Open vSwitch, nous avons les éléments pour faire un réseau virtuel de grande qualité.
Cloonix permet de présenter une interface simplifiée à l’utilisateur, masquant ainsi les appels relativement complexes aux trois logiciels exceptionnels dont nous avons parlé ci‐dessus.
Le gain de débit apporté par le passage des sockets UNIX pour émuler les câbles, qui est l’ancienne solution pour Cloonix, à l’utilisation de DPDK/OVS est approximativement d’un facteur 2 entre deux machines virtuelles, selon les mesures de iperf3. Les gains en débit ne sont pas les plus importants pour l’outil de simulation qu’est Cloonix. En revanche, les gains en latence sont un objectif, car les flux RTP de communication SIP exigent une gigue et une latence faible.
Sur le long terme, je pense que Cloonix deviendra aussi un très bon outil de test de communications SIP.
Aller plus loin
- Cloonix (355 clics)
- Git de Cloonix (68 clics)
- Documentation de Cloonix (73 clics)
- Performances réseau DPDK Cloonix (65 clics)
# quelques précisions au sujet de DPDK
Posté par Thomas Monjalon . Évalué à 10.
Merci pour les descriptifs de ces projets.
Je me permet d'apporter quelques précisions pour DPDK.
Tout d'abord, la baisse de latence est plus un effet heureux qu'un objectif dans DPDK.
Le véritable objectif était initialement d'augmenter le débit.
Le deuxième objectif, qui s'ajoute au fil des années, est la pleine utilisation et compatibilité des cartes du marché, notamment tous les offloads hardware possibles.
La liste des cartes compatibles est longue : http://core.dpdk.org/supported/
Et les CPUs autres qu'Intel (Marvell, NXP, IBM) sont supportés.
Au sujet des sociétés impliquées, Cisco et VMware ont un rôle assez mineur. L'essentiel des contributions provient des fournisseurs de matériel tels que Intel, Mellanox, Marvell, NXP, Solarflare. La liste des sponsors donne un bon aperçu : https://www.dpdk.org/ecosystem/#members
Au sujet de la monopolisation du CPU, il est possible de mixer le "polling" et les interruptions. Il est également possible de baisser la fréquence de cores CPU quand l'utilisation est plus faible.
Si vous voulez modifier la description, n'hésitez pas à copier le texte qui vous semble pertinent.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.