Die Routing-Tabelle (TCP/IP-Netzwerkadministration, 3. Auflage)
2.4. Die Routing-Tabelle
Gateways leiten Daten zwischen Netzwerken weiter, aber alle Netzwerkgeräte, sowohl Hosts als auch Gateways, müssen Routing-Entscheidungen treffen. Für die meisten Hosts sind die Routing-Entscheidungen einfach:
-
Wenn sich der Zielhost im lokalen Netzwerk befindet, werden die Daten an den Zielhost geliefert.
-
Wenn sich der Zielhost in einem entfernten Netzwerk befindet, werden die Daten an ein lokales Gateway weitergeleitet.
IP-Routing-Entscheidungen sind einfach Tabellensuchen. Pakete werden gemäß den Anweisungen der Routingtable (auch Forwardingtable genannt) zu ihren Zielen geroutet. Die Routing-Tabelle ordnet Ziele der Routerand-Netzwerkschnittstelle zu, die IP verwenden muss, um dieses Ziel zu erreichen.Die Untersuchung der Routing-Tabelle auf einem Linux-System zeigt dies.
Verwenden Sie auf einem Linux-System den Befehl route mit der Option -n, um die Routing-Tabelle anzuzeigen. Die Option -n verhindert die Konvertierung von IP-Adressen in Hostnamen, wodurch die Anzeige klarer wird. Hier ist eine Routing-Tabelle aus einem Red Hat-Beispielsystem:
Der Befehl Netstat wird verwendet, um die Routingtabelle auf Solaris 8-Systemen zu untersuchen. Ein Solaris-Beispiel wird später in diesem Kapitel behandelt.
# route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface172.16.55.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0172.16.50.0 172.16.55.36 255.255.255.0 UG 0 0 0 eth0127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo0.0.0.0 172.16.55.1 0.0.0.0 UG 0 0 0 eth0
Auf einem Linux-System zeigt der Befehl route -n die Routing-Tabelle mit den folgenden Feldern an:
Ziel
Der Wert, mit dem die Ziel-IP-Adresse übereinstimmt.
Gateway
Der Router, mit dem die angegebene Destination erreicht werden soll.
Genmask
Die Adressmaske, die verwendet wird, um eine IP-Adresse mit dem im Zielfeld angezeigten Wert abzugleichen.
Flags
Bestimmte Eigenschaften dieser Route.Die möglichen Linux-Flag-Werte sind:
Die Flags R, M,C, I und ! sind spezifisch für Linux. Die anderen Flags werden auf den meisten Verwendetunix-Systeme.
U
Zeigt an, dass die Route in Betrieb ist.
H
Gibt an, dass dies eine Route zu einem bestimmten Host ist (die meisten Routen führen zu Netzwerken).
G
Gibt an, dass die Route einen externalgateway verwendet. Die Netzwerkschnittstellen des Systems bieten Routen zudirekt verbundene Netzwerke. Alle anderen Routen verwenden externe Gateways.Bei direkt verbundenen Netzwerken ist das G-Flag nicht gesetzt. alle anderen Routen tun es.
R
Gibt eine Route an, die installiert wurde, wahrscheinlich durch ein dynamisches Routingprotokoll, das auf diesem System ausgeführt wird, mit der Option instate.
D
Zeigt an, dass diese Route aufgrund einer ICMP-Umleitungsnachricht hinzugefügt wurde. Wenn ein System über eine ICMP-Umleitung von einer Route erfährt, fügt es die Route zu seiner Routing-Tabelle hinzu, sodass zusätzliche Pakete, die an dieses Ziel gebunden sind, nicht umgeleitet werden müssen. Das System verwendet das D-Flag, um diese Routen zu markieren.
M
Gibt eine Route an, die geändert wurde, wahrscheinlich durch ein dynamisches Routingprotokoll, das auf diesem System mit der Option mod ausgeführt wird.
A
Gibt eine zwischengespeicherte Route mit einem associatedentry in der ARP-Tabelle an.
C
Gibt an, dass diese Route aus dem Kernelrouting-Cache stammt. Die meisten Systeme verwenden zwei Routing-Tabellen: die ForwardingInformation Base (FIB), die Tabelle, an der wir interessiert sind, weil sie für die Routing-Entscheidung verwendet wird, und den Kernel-Routingcache, der die Quelle und das Ziel der kürzlich verwendeten Routen auflistet. Dieses Flag ist dokumentiert, aber ich habe das C-Flag noch nie in einer Routing-Tabellenliste gesehen, selbst wenn der Routing-Cache aufgelistet wurde.
L
Gibt an, dass das Ziel dieser Route eine der Adressen dieses Computers ist. Diese „localroutes“ werden nur im Routing-Cache gefunden.
B
Gibt eine Route an, deren Ziel eine broadcastaddress ist. Diese „Broadcast-Routen“ werden nur im Routing-Cache gefunden. Solaris weist das Flag sowohl Broadcast-Adressen als auch Netzwerkadressen zu; dh sowohl 172.16.255.255 als auch 172.16.0.0 erhalten das B-Flag von Solaris-Systemen, die im netzwerk172.16.0.0/16 betrieben werden.
I
Gibt eine Route an, die die Loopback-Schnittstelle für einen anderen Zweck als die Adressierung des Loopback-Netzwerks verwendet. Diese „internen Routen“ werden nur im Routing-Cache gefunden.
!
Gibt an, dass Datagramme, die für thisdestination gebunden sind, abgelehnt werden. Mit Linux können Sie „negative“ Routen manuell installieren. Dies sind Routen, die explizit Blockierendaten, die an ein bestimmtes Ziel gebunden sind. Dies ist Linux-spezifisch undselten verwendet, aber es ist eine mögliche Flag-Einstellung.
Metrik
Die „Kosten“ der Route. Die Metrik wird verwendet, um doppelte Routen zu sortieren, falls welche in der Tabelle angezeigt werden. Darüber hinaus ist ein adynamisches Routing-Protokoll erforderlich, um die Metrik zu verwenden.
Ref
Wie oft auf die Route verwiesen wurde, um eine Verbindung herzustellen. Dieser Wert wird von Linux-Systemen nicht verwendet.
Use
Die Anzahl, wie oft diese Route von IP gesucht wurde.
Iface
Der Name der Netzwerkschnittstelle, die von dieser Route verwendet wird.
Die Netzwerkschnittstelle ist die Netzwerkzugriffshardware und -software, die IP zur Kommunikation mit dem physischen Netzwerk verwendet. Siehe Kapitel 6, „Konfigurieren der Schnittstelle “ fürdetails.
Jeder Eintrag in der Routing-Tabelle beginnt mit einem Zielwert. Der Zielwert ist der Schlüssel, mit dem die IP-Adresse abgeglichen wird, um festzustellen, ob dies der richtige Weg ist, um die IP-Adresse zu erreichen. Der Zielwert wird normalerweise als „Zielnetzwerk“ bezeichnet, obwohl es sich nicht um eine Netzwerkadresse handeln muss. Der Zielwert kann eine Host-Adresse, eine Multicast-Adresse, ein Adressblock, der eine Aggregation vieler Netzwerke abdeckt, oder ein spezieller Wert für die Standardroute oder die Loopback-Adresse sein. In allen Fällen enthält das Feld Destination jedoch den Wert, mit dem die Zieladresse aus dem IP-Paket abgeglichen wird, um zu bestimmen, obIP das Datagramm auf dieser Route liefern soll.
Das Feld Genmask ist die Bitmaske, die IP auf die Zieladresse aus dem Paket anwendet, um festzustellen, ob die Adresse mit dem Zielwert in der Tabelle übereinstimmt. Wenn ein Bit in der Bitmaske eingeschaltet ist, ist das entsprechende Bit in der Zieladresse das Formatieren der Adresse. Somit würde die Adresse 172.16.50.183 mit dem zweiten Eintrag in der Beispieltabelle übereinstimmen, da die Adresse mit 255.55.255 übereinstimmt.0 ergibt 172.16.50.0.
Wenn eine Adresse mit einem Eintrag in der Tabelle übereinstimmt, teilt das Gatewayfield IP mit, wie die angegebene Destination erreicht werden soll. Wenn das Gateway-Feld die IP-Adresse von arouter enthält, wird der Router verwendet. Wenn das Gateway-Feld alle 0s (0.0.0.0, wenn Route mit-n ausgeführt wird) oder ein Sternchen (*, wenn route ohne -n ausgeführt wird) enthält, ist das Zielnetzwerk ein direkt verbundenes Netzwerk und das „Gateway“ ist die Netzwerkschnittstelle des Computers. Das letzte Feld, das für jeden Tabelleneintrag angezeigt wird, ist die Netzwerkschnittstelle, die für die Route verwendet wird. Im Beispiel ist es entweder das erste Ethernetinterface (eth0) oder das Loopback Interface(lo). Ziel, Gateway, Maske Undschnittstelle definieren die Route.
Die restlichen vier Felder (Ref, Use, Flags und Metric) werden angezeigtunterstützende Informationen zur Route. Diese Informationsfelder sind nur von marginalem Wert. Einige Systeme halten eine genaue Zählung im Ref-Feld; andere, wie Linux, verwenden es nicht wirklich. Linux verwendet das Usefield , um zu zählen, wie oft aroute nachgeschlagen werden musste, da es sich nicht im Routing-Cache befand, als IP es benötigte. Einige andere Systeme zeigen die Anzahl der über die Route übermittelten Pakete im Feld Verwenden an. Das Flagsfeld zeigt Informationen an, die auch ohne die Flags oft sichtbar sind: Für jede Route ist das U-Flag gesetzt, da jede Route in der Routingtabelle per Definition oben ist, und wenn Sie sich das Gateway-Feld ansehen, erfahren Sie, ob ein externes Gateway verwendet wird oder nicht, ohne nach dem G-Flag zu suchen. Der Metricvalue wird nur verwendet, wenn Sie eine Version des RoutingInformation Protocol (RIP) auf Ihrem System ausführen. Lassen Sie sich nicht von diesen Informationen ablenken. Das Herzstück der Routing-Tabelle ist die Route, die sich aus dem Ziel, der Maske, dem Gateway und der Schnittstelle zusammensetzt.
IP verwendet die Informationen aus der Routing-Tabelle (der Weiterleitungstabelle), um die Routen für aktive Verbindungen zu erstellen. Die routesassociated mit aktiven Verbindungen werden im routingcache gespeichert. Auf Linuxsystemen kann der Routing-Cache durch Hinzufügen des Arguments -C zur Befehlszeile route überprüft werden:
$ route -CnKernel IP routing cacheSource Destination Gateway Flags Metric Ref Use Iface127.0.0.1 127.0.0.1 127.0.0.1 l 0 0 0 lo192.203.230.10 172.16.55.3 172.16.55.3 l 0 0 0 lo172.16.55.1 172.16.55.255 172.16.55.255 ibl 0 0 243 lo172.16.55.2 172.16.55.255 172.16.55.255 ibl 0 0 15 lo172.16.55.3 192.203.230.10 172.16.55.1 0 0 0 eth0127.0.0.1 127.0.0.1 127.0.0.1 l 0 0 0 lo172.16.55.3 132.163.4.9 172.16.55.1 0 0 0 eth0172.16.55.2 172.16.55.3 172.16.55.3 il 0 0 149 lo172.16.55.3 172.16.55.2 172.16.55.2 0 1 0 eth0132.163.4.9 172.16.55.3 172.16.55.3 l 0 0 0 lo
Der Routing-Cache unterscheidet sich von der Routing-Tabelle, da der Cache etablierte Routen anzeigt. Die Routing-Tabelle wird verwendet, um Entscheidungen zu treffen; Der Routing-Cache wird verwendet, nachdem die Entscheidung getroffen wurde. Der Routing-cacheshows die Quelle und das Ziel einer Netzwerkverbindung und thegateway und Schnittstelle verwendet, um diese Verbindung herzustellen.
Linux bietet ein gutes Beispiel für die Darstellung des Inhalts der Routingtable, da der Linux-Befehl route die Tabelle so deutlich anzeigt. Auf Solaris-Systemen hat der Befehl route eine ganz andere Syntax. Zeigen Sie beim Ausführen von Solaris den Inhalt der Routingtabelle mit dem Befehl netstat -nr an. Die Option -r weist netstat an, die Routing-Tabelle anzuzeigen, und die Option -n weist netstat an, die Tabelle in numerischer Form anzuzeigen.
Linux integriert die Adressmaskeninformationen in die Anzeige der Routingtabelle. Solaris 8 unterstützt Adressmasken; Es zeigt sie nur nicht an, wenn die Routing-Tabelle angezeigt wird.
% netstat -nr Routing Table: IPv4 Destination Gateway Flags Ref Use Interface ----------- ----------- ----- ---- ----- --------- 127.0.0.1 127.0.0.1 UH 1 298 lo0 default 172.16.12.1 UG 2 50360 172.16.12.0 172.16.12.2 U 40 111379 dnet0 172.16.2.0 172.16.12.3 UG 4 1179 172.16.1.0 172.16.12.3 UG 10 1113 172.16.3.0 172.16.12.3 UG 2 1379 172.16.4.0 172.16.12.3 UG 4 1119
Der erste Tabelleneintrag ist die Loopback-Route für den lokalen Host. Dies ist die zuvor als reservierte Netzwerknummer erwähnte loopbackaddress. Da jedes System die Loopback-Route verwendet, um Datagramme an sich selbst zu senden, befindet sich in der Routing-Tabelle jedes Hosts ein Eintrag für die Loopback-Schnittstelle.Das Flag H wird gesetzt, da Solaris eine Route zu einem bestimmten Host (127.0.0.1) und nicht zu einem gesamten Netzwerk (127.0.0.0) erstellt.Wir werden die Loopback-Funktion erneut sehen, wenn wir kernelconfiguration und den Befehl ifconfig diskutieren. Im Moment besteht unser echtes Interesse jedoch in externen Routen.
Ein weiterer eindeutiger Eintrag in dieser Routingtabelle ist der mit dem Wort „default“ im felddestination. Dieser Eintrag ist für die defaultroute, und das in diesem Eintrag angegebene Gateway ist thedefault Gateway. Die Standardroute ist die zuvor erwähnte Otherreserved-Netzwerknummer: 0.0.0.0. Der defaultgateway wird verwendet, wenn in der Tabelle für eine Zielnetzwerkadresse keine bestimmte Route vorhanden ist. Diese Routingtabelle enthält beispielsweise keine Werte für das Netzwerk 192.168.16.0. Wenn IP Datagramme empfängt, die an dieses Netzwerk adressiert sind, werden diese über das Standard-Gateway172.16.12.1 gesendet.
Alle Gateways, die in der Routing-Tabelle angezeigt werden, befinden sich in Netzwerken, die direkt mit dem lokalen System verbunden sind. Im obigen Beispiel bedeutet dies, dass die Gateway-Adressen unabhängig von der Zieladresse alle mit 172.16.12 beginnen. Dies ist das einzige Netzwerk, an das dieser Beispielhost direkt angeschlossen ist, und daher das einzige Netzwerk, an das er Daten direkt liefern kann. Die Gateways, die ein Host verwendet, um den Rest des Internets zu erreichen, müssen sich in seinem Subnetz befinden.
In Abbildung 2-4 wird die IP-Schicht zweier Hosts und eines Gateways in unserem imaginären Netzwerk durch eine kleine Routing-Tabelle ersetzt, die Zielnetzwerke und die Gateways zeigt, mit denen diese Ziele erreicht werden. Angenommen, die Adressmaske fürnetzwerk 172.16.0.0 ist 255.255.255.0. Wenn der Quellhost (172.16.12.2) Daten an den Zielhost (172.16.1.2) sendet, wendet er die Adressmaske an, um zu bestimmen, dass er in der Routingtabelle nach der Zielnetzadresse 172.16.1.0 suchen soll. Die Routing-Tabelle im Quellhost zeigt, dass für 172.16.1.0 gebundene Daten an Gateway 172.16.12.3 gesendet werden. Der Quellhost leitet das Paket an das Gateway weiter. Das Gateway führt die gleichen Schritte aus und sucht die Zieladresse in seiner Routing-Tabelle. Gateway 172.16.12.3 thenmakes direkte Lieferung durch seine 172.16.1.5 Schnittstelle. Die Untersuchung der Routing-Tabellen in Abbildung 2-4 zeigt, dass alle Systeme nur Gateways in Netzwerken verwenden, mit denen sie direkt verbunden sind.Dies wird durch die Tatsache veranschaulicht, dass 172.16.12.1 der defaultgateway für 172.16.12.2 und 172.16.12.3 ist, aber weil 172.16.1.2kann nicht erreichen netzwerk 172.16.12.0 direkt, es hat eine andere defaultroute.
Abbildung 2-4. Tabellenbasiertes Routing
Eine Routingtabelle enthält keine End-to-End-Routen. Eine Route zeigt nur auf das Nextgateway, den so genannten Next Hop, entlang des Pfades zum Zielnetzwerk. Der Hostrelies auf dem lokalen Gateway, um die Daten zu liefern, und der Gatewayrelies auf anderen Gateways. Wenn sich ein Datagramm von einem Gateway zu einem anderen bewegt, sollte es schließlich eines erreichen, das direkt mit seinem Zielnetzwerk verbunden ist. Es ist dieses letzte Gateway, das schließlichliefert die Daten an den Zielhost.
Wie wir in Kapitel 7, „Routing konfigurieren “ sehen werden, erhalten einige Routingprotokolle wie OSPF und BGP Ende-zu-Ende-Routinginformationen. Trotzdem wird das Paket immer noch an den Next-Hop-Router übergeben.
IP verwendet den Netzwerkteil der Adresse, um das Datagramm zwischen Netzwerken zu routen. Die vollständige Adresse, einschließlich der Host-Informationen, wird verwendet, um die endgültige Lieferung zu machen, wenn das Datagramm thedestination Netzwerk erreicht.
2.3. Internet Routing Architecture | 2.5. Address Resolution |