Netzwerksimulations-Lab: der Simulator ns-3 in einer privaten Ubuntu-VM
Dieses Lab gibt jeder lernenden Person den Netzwerksimulator, den viele Hochschulkurse verwenden, ns-3, in einer einzigen Ubuntu-VM. Die Lernenden bauen ein kleines Netzwerk in einem C++-Programm nach, lassen es laufen, lesen den Paketmitschnitt, den es schreibt, und messen Verzögerung, Durchsatz und Paketverlust. Zwei Programme, die die Lernenden selbst schreiben, bewertet ein Skript, das sie mit Werten ausführt, die die Lernenden nie sehen.
Auf dem Rechner der Lernenden wird nichts installiert, und Kabel sind nicht nötig. ns-3 ist der echte Simulator, aus dem Archiv von Ubuntu installiert, und ein Programm ist in wenigen Sekunden gebaut. Die Paketmitschnitte sind echte pcap-Dateien, sodass derselbe tcpdump-Befehl auf ihnen funktioniert wie auf dem Mitschnitt eines echten Netzwerks.
Was die Lernenden lernen
Wie ein Netzwerk beschrieben und gemessen wird. Ein erstes Programm verbindet zwei Knoten mit einer Punkt-zu-Punkt-Verbindung und sendet ein UDP-Echo. Seine pcap-Datei zeigt Anfrage und Antwort mit ihren Zeiten, und wer Verzögerung und Datenrate ändert, sieht, welchen Teil der Rundreise jede verschiebt: Die Verzögerung ist für jedes Paket gleich, und die Datenrate zählt umso mehr, je größer das Paket ist. Dann teilen sich mehrere Sender über einen Router eine langsamere Verbindung, und FlowMonitor zählt, was jeder Fluss gesendet hat und was angekommen ist. So zeigt sich, wann Pakete verloren gehen und warum.
Die fünf Teile
Erstens zwei Knoten und ein Echo: Ein vorgegebenes Programm wird mit sim build gebaut und ausgeführt. Zweitens ein Mitschnitt: sim pcap listet die Pakete auf, die über ein Gerät liefen. Drittens die Verbindung, von der Kommandozeile aus geändert, mit einer Vorhersage vor jedem Lauf. Viertens ein Engpass mit FlowMonitor: Sender, ein Router und eine langsamere Verbindung, mit Verlust und Durchsatz pro Fluss. Fünftens zwei Programme, die die Lernenden selbst schreiben, scenario.cc und loss.cc, nach einem Kommentar, der genau sagt, was jedes tun muss. Alles, was die Lernenden bearbeiten, liegt im Ordner ns3, und die README.md im Home-Ordner sagt, was zu tun ist, und gibt keine Antworten vor.
Im Browser ausführen
VM-Labs werden als Lab-Aufgabe in einem Modul gestellt, und das Beispiel steht auf der Seite des Labs. Die Maschine ist klein: eine CPU, 1 GB Arbeitsspeicher und 10 GB Festplatte. Ein Programm kompiliert in zwei bis fünf Sekunden.
- Lab hinzufügen. Fügen Sie in einem Modul, das Sie unterrichten, eine Aufgabe hinzu und wählen Sie die Karte für das Ubuntu-VM-Lab. Die Seite zeigt statt einer Compose-Datei eine kurze Beschreibung der Maschine.
- Mit dem Beispiel beginnen. Die Seite bietet fertige Labs zum Einstieg an. Wählen Sie Network simulation. Ein Beispiel ersetzt den Text, und Rückgängig holt Ihren zurück.
- Veröffentlichen und eigene Kopie starten. Veröffentlichen Sie und klicken Sie auf Starten. Das Setup-Skript des Labs installiert beim ersten Start der VM ns-3, einen C++-Compiler und tcpdump aus dem Archiv von Ubuntu und schreibt den Hilfsbefehl sim, die Programme zum Arbeiten und die README, in wenigen Minuten.
- Terminal öffnen. Öffnen Sie das Terminal und lesen Sie die README.md im Home-Ordner. Im Browser öffnet sich nichts: Das Lab ist das Terminal.
Eine Basics-Lektion zu diesem Lab
Network Simulation Basics ist eine kleine Lektion, die in diesem Lab durchgeführt wird, einer Ubuntu-VM. Sie hat einen Einstieg, ein Ich-kann-Ziel, Schlüsselwörter, einen Start, nach jeder Idee eine Prüfung, einen häufigen Fehler und einen Abschlusscheck, und jeder Schritt hat eine Schaltfläche Ausführen, die ihren Befehl ins Terminal der Maschine tippt. Die Lernenden bauen das Echo und führen es aus, lesen seine pcap-Datei, führen es noch einmal mit längerer Verzögerung und langsamerer Rate aus und lassen den Engpass zweimal laufen, um zu sehen, wann Pakete verloren gehen.
Die Lektion schaut sich nur um und überlässt die eigentliche Aufgabe des Labs, die zwei Programme, den Lernenden, sodass sie keine Antworten verrät.
Wie bewertet wird
Das Lab hat eine Prüfung. Sie läuft auf einer Kopie der gespeicherten Maschine und kompiliert scenario.cc und loss.cc. Sie führt scenario.cc zweimal mit einer Verzögerung, einer Datenrate und einer Paketgröße aus, die sie jedes Mal neu zieht, und die vom Programm ausgegebene Rundreisezeit muss zur Rechnung und zu den zwei Zeitstempeln in der vom Programm geschriebenen pcap-Datei passen. Sie führt loss.cc mit einer Anzahl von Sendern, einer Rate und einem Engpass aus, die sie jedes Mal neu zieht, einmal überlastet und einmal nicht, und Verlust und Durchsatz, die das Programm ausgibt, müssen zum XML, das FlowMonitor geschrieben hat, und zu einem Lauf des vorgegebenen Engpass-Programms passen. Ein Programm, das ein anderes Programm startet oder kein ns-3 enthält, wird abgelehnt. Die erste Zeile der Ausgabe der Prüfung sagt, warum.
- Austeilen. Weisen Sie das Lab wie jede Aufgabe zu, auf Wunsch mit einem Abgabetermin. Jede lernende Person bekommt eine eigene VM, die zwischen den Sitzungen erhalten bleibt.
- Prüfung ausführen. Klicken Sie in der Klassenliste in der Zeile einer lernenden Person auf Prüfung ausführen. Das startet eine Kopie ihrer gespeicherten Maschine, die nicht zurückgespeichert wird, führt das Prüfskript des Labs als root aus und zeigt, ob es bestanden wurde, was es ausgegeben hat und wann. Die lernende Person erfährt das Ergebnis nicht.
- Bewerten. Lesen Sie die erste Zeile der Ausgabe der Prüfung: Sie sagt, was nicht stimmt, zum Beispiel eine Rundreisezeit, die nicht zur pcap-Datei des Programms passt, oder ein Verlust, der nicht zu loss.xml passt. Geben Sie die Arbeit mit einer Begründung zurück, wenn mehr nötig ist.
Die Definition auf GitHub
Die Datei ist die ganze Lab-Definition, derselbe Text, den die Plattform ausführt: Größe, Setup-Skript, Hilfsbefehl, die Programme zum Arbeiten, die README und die Prüfung. Kopieren Sie sie und ändern Sie die Topologie oder die Zahlen, um ein längeres Lab zu bauen.
Dieses Lab ausprobieren, und was es kostet
Mit einem kostenlosen persönlichen Konto können Sie die Grundlagenlektionen in diesem Lab durcharbeiten, mit genug kostenlosem Guthaben pro Monat für die meisten Lektionen und ohne Karte. Für eine Klasse sind die ersten 365 Tage für eine Schule kostenlos, für bis zu 50 Lernende; danach zahlt sie je lernender Person und Jahr, alle Labs inklusive und Lehrkräfte kostenlos.
Häufige Fragen
- Braucht das Lab eine Lizenz?
- Nein. ns-3 ist quelloffen, unter der GNU General Public License Version 2, und wird beim Start der VM der Lernenden aus dem Archiv von Ubuntu installiert, wir verteilen also nichts davon.
- Warum C++ und nicht Python?
- Ubuntu 26.04 liefert ns-3 3.46 mit Bibliotheken und Headern, aber ohne Python-Anbindung, deshalb nutzt das Lab die Sprache, in der ns-3 geschrieben ist und die auch seine Tutorials verwenden. Die Lernenden bearbeiten eine kurze Funktion main, und sim build kompiliert sie in wenigen Sekunden gegen die installierten Bibliotheken.
- Können Lernende etwas kaputt machen?
- Nur ihre eigene Kopie. Die Maschine einer Besucherin ohne Konto erreicht das Archiv von Ubuntu und sonst nichts, das simulierte Netzwerk liegt in einem Programm und berührt kein echtes, und wenn jemand eine Datei zerstört, stellt sim reset sie so wieder her, wie sie ausgegeben wurde.
- Wurde das Lab in einer echten VM von Lernenden getestet?
- Das Setup-Skript, die Befehle der Lektion und die Prüfung, mit jedem Weg, sie zu täuschen, liefen in einem echten Ubuntu-26.04-Container, der die VM vertritt, auf einem arm64-Rechner. Eine gestartete VM der Lernenden und die amd64-Pakete der Rechner der Lernenden sind einen Versuch wert, bevor eine Klasse sie nutzt.