marionnet.org — a virtual network laboratory

Le projet

Marionnet est un laboratoire de réseaux virtuel : il permet de définir, de câbler, de démarrer et d’administrer un réseau informatique sans aucun matériel. Un seul ordinateur sous GNU/Linux, l’hôte, suffit pour y faire tourner un réseau Ethernet composé de machines, de routeurs, de switchs, de hubs et de câbles droits ou croisés. D’autres composants relient, si on le souhaite, ce réseau virtuel au réseau réel de l’hôte.

À quoi il sert

Marionnet a été écrit pour enseigner les réseaux en salle de TP. Il y est employé depuis 2007, à l’université Paris 13 puis dans d’autres établissements, en France et à l’étranger. L’étudiant câble son réseau à la souris, puis il administre chaque machine en ligne de commande, comme il le ferait sur du matériel réel. Le même outil peut aussi servir à monter un réseau d’essai, par exemple pour tester une configuration ou un service avant de le déployer.

Un projet s’enregistre dans un fichier, avec l’état des disques de chaque machine. On peut donc reprendre plus tard une séance là où on l’avait laissée, ou bien revenir à un état antérieur d’une machine.

Comment il fonctionne

Les machines et les routeurs sont émulés, de l’anglais technique emulated : chacun repose sur son propre noyau Linux, qui tourne comme un processus ordinaire de l’hôte grâce à User Mode Linux, et démarre un système GNU/Linux avec ses commandes et ses services. Les hubs, les switchs et les câbles sont en revanche simulés par les outils de VDE (Virtual Distributed Ethernet), c’est-à-dire par de petits programmes de l’hôte, qui savent aussi introduire des défauts sur une liaison : des trames perdues, dupliquées ou retardées.

La distinction a une portée pédagogique. Un logiciel qui simule les systèmes eux-mêmes, comme Packet Tracer de Cisco ou NetSim de Boson, en imite le comportement ; sur Marionnet, en revanche, l’étudiant administre un vrai système.

Marionnet orchestre l’ensemble et en donne l’interface graphique. Le dessin du réseau est tracé automatiquement par Graphviz, de sorte que l’utilisateur n’a jamais à placer lui-même un équipement.

Marionnet est écrit en OCaml, le langage fonctionnel né à l’Inria, qui a inspiré le F# de Microsoft. Ses auteurs lui doivent un remerciement : sans un langage d’un tel niveau d’abstraction, ils n’auraient pas osé, à deux, une architecture concurrente de cette envergure, et ne l’auraient écrite ni aussi vite ni aussi robuste. Leur article de 2007 le dit dès son titre : How to Implement a Virtual Network Laboratory in Six Months and Be Happy.

Marionnet est un logiciel libre, distribué sous la licence GNU GPL.

Dessin de Silviu Bârsanu : trois étudiants manipulent des pingouins-marionnettes au-dessus du mot marionnet
Dessin de Silviu Bârsanu (1965-2021)