Ein Netzwerk testen, bevor man es baut
Eine Schule will wissen, ob ihr Netzwerk zurechtkommt, wenn jede Klasse gleichzeitig ein Video streamt. Niemand kauft Kabel, um das herauszufinden. Ingenieure bauen das Netzwerk in einem Programm nach, einem Simulator, und lassen es laufen, um zu sehen, was die Pakete tun würden.
Am Ende dieser Lektion
Notiz
Ich kann ein simuliertes Netzwerk laufen lassen und seine Verzögerung und seinen Paketverlust ablesen.
Schlüsselwörter
- Simulator: ein Programm, das ein Netzwerk nachahmt.
- Knoten: ein Computer im Netzwerk.
- Verzögerung: wie lange ein Bit braucht, um eine Verbindung zu durchqueren.
- Datenrate: wie viele Bits eine Verbindung pro Sekunde überträgt.
- Paketverlust: gesendete Pakete, die nie ankommen.
Zum Start: Was du schon weißt
Notiz
Antworte im Kopf. 1. Was ist ein Paket? 2. Was macht ein Router? 3. Ist eine schnellere Verbindung dasselbe wie eine kürzere? Die dritte Antwort brauchst du gleich.
Bevor du anfängst
Notiz
Klicke oben in der Leiste dieser Lektion auf Lab starten. Dieses Lab ist eine ganze Ubuntu-Maschine nur für dich und braucht deshalb etwas länger zum Starten als ein Container. Jede Schaltfläche Ausführen tippt ihren Befehl ins Terminal der Maschine, einen nach dem anderen in derselben Sitzung. Wenn eine meldet, dass die Maschine noch startet, warte ein paar Sekunden und klicke noch einmal. Um zuzusehen oder eigene Befehle zu tippen, klicke in der Leiste auf Terminal öffnen (neuer Tab).
Ein Netzwerk ist ein kurzes Programm
Deine Dateien liegen im Ordner ns3. Der erste Befehl wechselt hinein. first.cc erzeugt zwei Knoten, verbindet sie mit einer Verbindung und schickt ein Paket an einen Echo-Server, der es zurückschickt. sim build kompiliert es gegen ns-3 und braucht ein paar Sekunden. Das Programm heißt danach first. Führe es aus: Die erste Zeile sagt, wann der Client sein Paket gesendet hat, die zweite, wann die Antwort zurückkam.
cd ns3Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
sim build first.ccHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
./firstHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Prüfe dich
Tipp
Wie lange dauerte die Rundreise? Antwort: etwas über 7 Millisekunden. Der Client sendete bei 2 Sekunden, und die Antwort kam bei etwa 2,0074 Sekunden.
Ein Mitschnitt zeigt jedes Paket
ns-3 hat auch first-0-0.pcap geschrieben, eine Aufzeichnung jedes Pakets, das über das Gerät von Knoten 0 lief. Eine pcap-Datei ist das echte Format, das Werkzeuge wie tcpdump lesen. sim pcap listet sie auf, ein Paket pro Zeile, mit der Zeit in Sekunden. Es gibt zwei Zeilen: die Anfrage bei 2.000000 und die Antwort einige Millisekunden später, jeweils mit 1024 Bytes Daten.
sim pcap first-0-0.pcapHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele glauben, die Geschwindigkeit einer Verbindung sei die, mit der ein Paket reist. Das stimmt nicht. Die Verzögerung ist die Zeit, die ein Bit zum Durchqueren braucht, und die Datenrate ist, wie schnell ein Knoten Bits auf die Verbindung legen kann. Eine langsame Verbindung braucht für ein großes Paket länger zum Senden. Eine lange Verbindung lässt jedes Paket später ankommen, ob groß oder klein.
Verzögerung und Datenrate sind verschieden
Die beiden Einstellungen stehen auf der Kommandozeile. Der erste Lauf gibt der Verbindung eine lange Verzögerung und behält die Rate. Der zweite behält die Verzögerung und senkt die Rate auf 1 Mbps. Vergleiche beide mit der Rundreise von vorhin, etwas über 7 ms. Eine Verzögerung von 50 ms addiert etwa 96 ms, weil das Paket die Strecke zweimal durchquert. Die langsamere Rate addiert etwa 13 ms, weil jedes Bit länger braucht, um auf die Leitung zu kommen.
./first --delay=50msHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
./first --rate=1MbpsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Prüfe dich
Tipp
Bei welcher Einstellung macht die Größe eines Pakets einen Unterschied? Antwort: bei der Datenrate. Ein größeres Paket hat mehr Bits, die auf die Leitung müssen, und die Verzögerung ist für jedes Paket gleich.
Ein Engpass verliert Pakete
bottleneck.cc hat Sender, die je eine schnelle Verbindung zu einem Router haben, und eine langsamere Verbindung vom Router zum Empfänger. FlowMonitor zählt, was jeder Fluss gesendet hat und was angekommen ist. Bei zwei Sendern mit je 4 Mbps in den Engpass von 10 Mbps kommt jedes Paket an. Der zweite Lauf schickt fünf Flüsse mit je 1 Mbps in eine Verbindung mit 4 Mbps: Etwa ein Fünftel jedes Flusses geht verloren, weil die Warteschlange des Routers voll ist und er verwirft, was er nicht halten kann.
sim build bottleneck.ccHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
./bottleneck --senders=2Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
./bottleneck --senders=5 --each=1Mbps --bottleneck=4MbpsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Abschlusscheck
Tipp
Antworte, ohne zurückzublättern. 1. Was tut ein Simulator? 2. Was ist eine pcap-Datei? 3. Welche Einstellung bremst ein größeres Paket, die Verzögerung oder die Datenrate? 4. Wann geht an einem Engpass ein Paket verloren? Antworten: er ahmt ein Netzwerk in einem Programm nach; eine Aufzeichnung der Pakete auf einem Gerät; die Datenrate; wenn mehr gesendet wird, als die Verbindung tragen kann, und die Warteschlange voll ist. Öffne jetzt die README.md in deinem Home-Ordner mit cat ~/README.md: Du schreibst zwei Szenarien.
Für Lehrkräfte
Tipp
Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab bearbeitet wird: Die Schritte und die Schaltflächen „Ausführen“ sind die Lektion, und das Lab ist die eigene Kopie jeder lernenden Person. Die Lektion wird in einem VM-Lab bearbeitet: Jede lernende Person hat eine eigene Ubuntu-Maschine mit installiertem ns-3, und „Ausführen“ tippt in deren Terminal und zeigt, was ausgegeben wurde. Kernpunkte: 1. Ein Simulator ahmt ein Netzwerk in einem Programm nach. 2. Ein Mitschnitt zeichnet jedes Paket auf. 3. Verzögerung und Datenrate sind verschieden, und ein größeres Paket wird von der Rate gebremst. 4. Pakete gehen verloren, wenn mehr gesendet wird, als eine Verbindung trägt. Häufiger Fehler: Geschwindigkeit und Verzögerung für dasselbe halten. Material: das Lab und ein Browser. Tipp: Lassen Sie die Klasse vor dem Lauf mit 1 Mbps vorhersagen, was sich stärker ändert, die Verzögerung oder die Rate. Das Lab selbst hat eine Prüfung, die zwei C++-Programme mit versteckten Werten bewertet. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie im Lektionseditor über das Menü Lab eine neue von Grund auf.