Lab Simulation de réseau : le simulateur ns-3 dans une VM Ubuntu privée
Ce lab donne à chaque élève le simulateur de réseau qu’utilisent de nombreux cours universitaires, ns-3, dans une seule VM Ubuntu. L’élève construit un petit réseau dans un programme C++, le lance, lit la trace de paquets qu’il écrit et mesure le délai, le débit et la perte de paquets. Deux programmes écrits par l’élève sont notés par un script qui les exécute avec des valeurs que l’élève ne voit jamais.
Rien n’est installé sur l’ordinateur de l’élève et aucun câble n’est nécessaire. ns-3 est le vrai simulateur, installé depuis l’archive d’Ubuntu, et un programme se compile en quelques secondes. Les traces de paquets sont de vrais fichiers pcap : la même commande tcpdump fonctionne dessus comme sur une capture d’un vrai réseau.
Ce que les élèves apprennent
Comment on décrit et on mesure un réseau. Un premier programme relie deux nœuds par une liaison point à point et envoie un écho UDP. Son fichier pcap montre la requête et la réponse avec leurs instants, et changer le délai et le débit montre quelle part de l’aller-retour chacun déplace : le délai est le même pour tous les paquets, et le débit compte d’autant plus que le paquet est gros. Ensuite plusieurs émetteurs se partagent une liaison plus lente à travers un routeur, et FlowMonitor compte ce que chaque flux a envoyé et ce qui est arrivé, ce qui montre quand des paquets sont perdus et pourquoi.
Les cinq parties
D’abord deux nœuds et un écho : un programme fourni est compilé avec sim build puis lancé. Deuxièmement une trace : sim pcap liste les paquets qui ont traversé une interface. Troisièmement la liaison modifiée en ligne de commande, avec une prédiction avant chaque exécution. Quatrièmement un goulot d’étranglement avec FlowMonitor : des émetteurs, un routeur et une liaison plus lente, avec pertes et débit comptés par flux. Cinquièmement deux programmes que l’élève écrit, scenario.cc et loss.cc, à partir d’un commentaire qui dit exactement ce que chacun doit faire. Tout ce que l’élève modifie est dans le dossier ns3, et README.md dans le dossier personnel dit quoi faire et ne donne aucune réponse.
Le lancer dans votre navigateur
Les labs VM se donnent comme tâche de lab dans un module, et l’exemple se trouve sur la page du lab. La machine est petite : un processeur, 1 Go de mémoire et 10 Go de disque. Un programme se compile en deux à cinq secondes.
- Ajouter le lab. Dans un module que vous enseignez, ajoutez une tâche et choisissez la carte Lab VM Ubuntu. La page affiche une courte description de la machine au lieu d’un fichier compose.
- Partir de l’exemple. La page propose des labs prêts à l’emploi pour démarrer. Choisissez Network simulation. Utiliser un exemple remplace le texte, et Annuler rend le vôtre.
- Publier et démarrer votre propre copie. Publiez, puis Démarrez. Le script setup du lab installe ns-3, un compilateur C++ et tcpdump depuis l’archive d’Ubuntu et écrit la commande d’aide sim, les programmes de travail et le README, au premier démarrage de la VM, en quelques minutes.
- Ouvrir le terminal. Ouvrez son terminal et lisez README.md dans le dossier personnel. Rien ne s’ouvre dans le navigateur : le lab, c’est le terminal.
Une leçon de base sur ce lab
Network Simulation Basics est une petite leçon donnée dans ce lab, une VM Ubuntu. Elle a une accroche, un objectif « Je peux », des mots-clés, une question de départ, une vérification après chaque idée, une erreur courante et une vérification finale, et chaque étape a un bouton Exécuter qui tape sa commande dans le terminal de la machine. L’élève compile et lance l’écho, lit son pcap, le relance avec un délai plus long et un débit plus lent, puis lance deux fois le goulot d’étranglement pour voir quand des paquets sont perdus.
La leçon regarde autour d’elle et laisse à l’élève la tâche propre au lab, les deux programmes : elle ne donne donc aucune réponse.
Comment il est noté
Le lab a une vérification. Elle s’exécute sur une copie de la machine enregistrée et compile scenario.cc et loss.cc. Elle lance scenario.cc deux fois avec un délai, un débit et une taille de paquet tirés à chaque fois, et l’aller-retour affiché par le programme doit correspondre au calcul et aux deux horodatages du pcap écrit par le programme. Elle lance loss.cc avec un nombre d’émetteurs, un débit et un goulot tirés à chaque fois, une fois en surcharge et une fois sans, et la perte et le débit affichés doivent correspondre au XML écrit par FlowMonitor et à une exécution du programme de goulot fourni. Un programme qui en lance un autre, ou qui n’utilise pas ns-3, est refusé. La première ligne de ce que la vérification a affiché dit pourquoi.
- Le distribuer. Attribuez le lab comme n’importe quelle tâche, avec une échéance si vous le souhaitez. Chaque élève reçoit une VM à lui, conservée d’une séance à l’autre.
- Lancer la vérification. Sur la ligne d’un élève dans la liste de la classe, appuyez sur Lancer la vérification. Elle démarre une copie de sa machine enregistrée, qui n’est pas sauvegardée ensuite, exécute le script de vérification du lab en root et indique s’il a réussi, ce qu’il a affiché et quand. L’élève n’est pas informé du résultat.
- Noter. Lisez la première ligne de ce que la vérification a affiché : elle dit ce qui ne va pas, par exemple un temps aller-retour qui ne correspond pas au fichier pcap écrit par le programme, ou des pertes qui ne correspondent pas à loss.xml. Renvoyez le travail avec un motif s’il faut aller plus loin.
La définition sur GitHub
Le fichier est toute la définition du lab, le texte même que la plateforme exécute : taille, script setup, commande d’aide, programmes de travail, README et vérification. Copiez-le et changez la topologie ou les nombres pour faire un lab plus long.
Essayer ce lab, et ce qu’il coûte
Un compte personnel gratuit permet de suivre les leçons de base de ce lab, avec chaque mois assez de crédit gratuit pour suivre la plupart des leçons, sans carte. Pour une classe, un établissement a ses 365 premiers jours gratuits pour 50 élèves au plus, puis paie par élève et par an, tous les labs compris et les enseignants gratuits.
Questions fréquentes
- Le lab demande-t-il une licence ?
- Non. ns-3 est libre, sous la licence GNU GPL version 2, et il est installé depuis l’archive d’Ubuntu au démarrage de la VM de l’élève : nous n’en distribuons rien.
- Pourquoi du C++ et pas du Python ?
- Ubuntu 26.04 fournit ns-3 3.46 avec ses bibliothèques et ses en-têtes, mais sans liaisons Python. Le lab utilise donc le langage dans lequel ns-3 est écrit et celui de ses tutoriels. L’élève modifie une courte fonction main, et sim build la compile en quelques secondes contre les bibliothèques installées.
- Les élèves peuvent-ils casser quelque chose ?
- Seulement leur propre copie. La machine d’un visiteur sans compte joint l’archive d’Ubuntu et rien d’autre, le réseau simulé est dans un programme et ne touche aucun vrai réseau, et si un élève abîme un fichier, sim reset le remet comme il a été donné.
- Le lab a-t-il été testé dans une vraie VM d’élève ?
- Le script setup, les commandes de la leçon et la vérification, avec chaque façon de la tromper, ont été exécutés dans un vrai conteneur Ubuntu 26.04 qui tient lieu de VM, sur une machine arm64. Une VM d’élève démarrée et les paquets amd64 des machines des élèves méritent un essai avant un cours.