Das Paketzentrum plant nicht voraus
Ein Paketzentrum liest die Postleitzahl und legt das Paket auf ein Band. Die ganze Reise plant es nie.
Ein Router macht es mit einem Paket genauso. Er liest die Zieladresse, wählt eine Zeile seiner Tabelle und reicht das Paket weiter.
Jeder Router auf dem Weg erledigt dieselbe Arbeit noch einmal.
Am Ende dieser Lektion
Notiz
Ich kann eine Routing-Tabelle lesen und die Route eines Pakets bestimmen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Routing-Tabelle | die Liste eines Routers: Netze und wohin Pakete dafür gehen | |
| Next Hop | der Nachbar-Router, der das Paket als Nächster bekommt | via 10.0.1.1 |
| Direkte Route | ein Netz, an dem der Router unmittelbar hängt | |
| Statische Route | eine Route, die ein Mensch von Hand eingetragen hat | |
| Standardroute | die Zeile, die gilt, wenn keine andere passt | 0.0.0.0/0 |
| Längstes Präfix | die passende Zeile mit den meisten Netz-Bits |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Host sendet direkt oder an sein Gateway
Ein Host stellt zuerst eine Frage. Liegt das Ziel in meinem eigenen Netz?
Wenn ja, sendet er das Paket direkt dorthin. Wenn nein, schickt er es an sein Standard-Gateway, einen Router in seinem Netz.
Den Rest der Reise plant der Host nicht.
Die Routen eines Hosts lesen
sudo ip netns exec h1 ip routeHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Fragen, wohin h1 ein Paket sendet
sudo ip netns exec h1 ip route get 10.0.3.2Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Antworten lesen
Der erste Run gibt zwei Zeilen aus. Eine nennt das Netz von h1. Die andere beginnt mit default via 10.0.1.1: Alles Übrige geht an r1.
Der zweite Run beginnt mit 10.0.3.2 via 10.0.1.1 dev to-r1. Das Wort via nennt den Next Hop.
Ein Router folgt seiner Tabelle
Ein Router hat mehrere Schnittstellen und eine Routing-Tabelle. Jede Zeile sagt: Für dieses Netz nimm diesen Weg.
Anfangs kennt er nur seine direkten Routen. Jedes andere Netz lernt er, weil ein Mensch eine statische Route einträgt oder weil ein Protokoll Routen verteilt.
Ohne Zeile für ein Netz kann der Router dorthin nichts weiterleiten.
Ein Beispiel: die erste Tabelle eines Routers
| Netz | Next Hop | Art |
|---|---|---|
| 10.0.1.0/24 | direkt, an to-h1 | Direkt |
| 10.0.12.0/24 | direkt, an to-r2 | Direkt |
| 10.0.3.0/24 | keiner | Keine Zeile, also kein Weg |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Tabelle von r1 in seiner Konsole lesen
sudo vtysh -N r1 -c "show ip route"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
r1 nach einem unbekannten Netz fragen
sudo ip netns exec r1 ip route get 10.0.3.2Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein echtes Paket von h1 senden
sudo ip netns exec h1 ping -c 2 -W 1 10.0.3.2Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Keine Zeile heißt kein Weg
Die Konsole listet vier Zeilen für r1. Zwei beginnen mit C für direkt verbunden, zwei mit L für die eigenen Adressen des Routers.
Der Run mit ip route get gibt RTNETLINK answers: Network is unreachable aus. Die Tabelle hat keine Zeile für 10.0.3.2, also weiß r1 nicht, wohin damit.
Der Ping zeigt dieselbe Lücke aus Sicht des Hosts. Jede Antwort beginnt mit From 10.0.1.1 und endet mit Destination Net Unreachable.
Das längste Präfix gewinnt
Mehrere Zeilen können auf eine Adresse passen. Der Router wählt die Zeile mit dem längsten Präfix, also die, die das Netz am genauesten benennt.
Die Standardroute 0.0.0.0/0 passt auf alles, mit null Bits Präfix. Jede andere Zeile schlägt sie, sie kommt zuletzt.
Ein häufiger Fehler
Warnung
Viele glauben, die erste passende Zeile gewinne. Ein Router liest nicht von oben nach unten. Er prüft jede Zeile und nimmt die längste Übereinstimmung. Die Reihenfolge in der Tabelle ändert die Antwort nicht.
Ein Beispiel: welche Zeile gewinnt
| Ziel | Passende Zeilen | Gewinner |
|---|---|---|
| 10.0.3.200 | 0.0.0.0/0, 10.0.0.0/8, 10.0.3.0/24, 10.0.3.128/25 | 10.0.3.128/25 |
| 10.0.3.5 | 0.0.0.0/0, 10.0.0.0/8, 10.0.3.0/24 | 10.0.3.0/24 |
| 10.9.9.9 | 0.0.0.0/0, 10.0.0.0/8 | 10.0.0.0/8 |
| 8.8.8.8 | 0.0.0.0/0 | 0.0.0.0/0 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Weiterführend: begründen, warum eine Zeile gewinnt
Kopieren Sie Ihre Funktion waehle_route in eine neue Funktion erklaere_route. Sie gibt die ganze gewinnende Zeile zurück, nicht nur den Next Hop.
Wenden Sie sie auf die TABELLE aus den Tests an, für 10.0.3.129, 10.0.3.127, 10.200.0.1 und 1.1.1.1. Schreiben Sie zu jedem Ziel einen Satz: Welche Zeilen passen, und warum schlägt die Gewinnerin die anderen?