Routing-Auswahl: Spezifität vs. Metrik


17

Ich verstehe, dass Linux bei der Auswahl des Routings die spezifischste Route zum Ziel auswählt . Aber was ist mit der Metrik einer Route? Hat es eine höhere Priorität als die Spezifität der Route?

Ein Verweis auf die Details des von Linux verwendeten Routing-Auswahl-Algorithmus wäre ebenfalls wünschenswert.

Antworten:


26

Die Routenmetrik dient zum Festlegen der Präferenz unter Routen mit gleicher Spezifität. Dies gilt im Allgemeinen für das Routing (z. B. Cisco, Windows usw.). Das Modell funktioniert also wie folgt:

  1. Finden Sie die spezifischste Route (auch bekannt als die längste Präfixübereinstimmung * )
  2. Wenn es mehrere Routen mit derselben Spezifität gibt, wählen Sie die Route mit der geringsten administrativen Entfernung aus (dies unterscheidet zwischen direkt verbundenen Routen, statischen Routen und verschiedenen Routing-Protokollen).
  3. Wählen Sie innerhalb dieses Routing-Protokolls und der spezifischen Route (wenn Routenspezifität und administrative Entfernung identisch sind) die Route mit der niedrigsten Metrik aus

Beachten Sie, dass es andere Dinge gibt, die bei einem solchen richtlinienbasierten Routing passieren können, bei dem Sie Dinge wie das Routen anhand der Quell-IP-Adresse ausführen können. Aber Routenspezifität, administrative Entfernung und dann Metrik sind das, was ich als die drei wichtigsten Dinge betrachten würde.

* Es wird die längste Präfixübereinstimmung genannt, da ein Subnetz in Binärform (z. B. / 24) so ​​aussieht 11111111.11111111.11111111.00000000. Ein Router kann also einfach das Präfix nach binären Einsen absuchen und stoppen, sobald eine Null erreicht ist, und dann hat er das Präfix gefunden.


1
Dies ist unter Linux nicht der Fall, da hier kein Unterschied zwischen metrischer und administrativer Distanz besteht.
20.

1
@jch Tut Quagga und Co. AD nachahmen, indem Sie die Metrik entsprechend einstellen? (Nicht, dass Ihr Standpunkt nicht entscheidend ist, nur neugierig)
Kyle Brandt

1
Nein, Quagga implementiert AD intern im zebraDämon und sendet nur die ausgewählten Routen an den Kernel. Der Kernel muss sich also nie mit AD befassen. Ich müsste das überprüfen, aber ich denke, dass Quagga die Kernel-Metrik auf einen konstanten Wert setzt.
21.

Ich möchte nur erwähnen, dass dies bei Ethernet-Bridges nicht zutrifft. Beispielsweise führten zwei identische Routen über verschiedene Geräte mit derselben Metrik immer noch dazu, dass der Verkehr über die längere und falsche Verbindung fehlgeleitet wurde.
Areeb Soo Yasir

9

Linux bietet eine Reihe von Tools für die flexible Auswahl des Routings.

Einzelne Routing-Tabelle

Im einfachsten Fall gibt es nur eine Kernel-Routing-Tabelle und keine Routen mit dem SRC-Attribut. Diese Tabelle enthält eine Reihe von Routen, die ip route addvom DHCP-Dämon oder von Routing-Dämonen manuell ( ) dort abgelegt wurden . In diesem Fall wählt der Kernel:

  • die spezifischste Route;
  • Gibt es mehrere gleichermaßen spezifische Routen, die mit der kleinsten Kernelmetrik.

Beachten Sie, dass die (von angezeigte ip route show) Kernel-Metrik vom Routing-Daemon ausgewählt wird und nicht unbedingt mit der Metrik eines bestimmten Routing-Protokolls zusammenhängt. Beispielsweise verwendet Quagga dieselbe Metrik für alle Routen, die es im Kernel installiert, unabhängig von der Metrik des Protokolls.

Quellenspezifische Routen

Linux unterstützt auch Routen mit einem SRC-Attribut, die nur mit Paketen mit einer bestimmten Quelladresse übereinstimmen. SRC funktioniert nur für IPv6 und war bis vor kurzem fehlerhaft (3.11, wenn der Speicher belegt ist). Ich empfehle es nicht, es sei denn, Sie wissen, was Sie tun.

Mehrere Routingtabellen

Wenn Sie mehr Flexibilität benötigen als oben angegeben, müssen Sie mit mehreren Routingtabellen spielen und Regeln schreiben, um eine bestimmte Routingtabelle für jedes Paket auszuwählen. Eine gebräuchliche Technik ist das Versenden auf Quelladresse, um quellenspezifische Routen zu simulieren. Eine andere Technik besteht darin, jeden Routing-Daemon in einer eigenen Routing-Tabelle auszuführen und die "administrative Distanz" von Cisco zu simulieren. All dies wird ausführlich in Kapitel 4 der LARTC beschrieben .


Das ist nicht das, was das srcAttribut tut. Sie möchten man ip-routeoder andere Dokumente lesen . Und es funktioniert mit IPv4. Ich verwende es, um den gesamten Datenverkehr, einschließlich des Datenverkehrs des Routers, über einen einzelnen Net-to-Net-IPSec-Tunnel abzurufen.
Zan Lynx

1
Das RTA_SRCAttribut macht genau das, was ich gesagt habe; Es kann mit der fromOption des ipBefehls zugegriffen werden . Die Option des ipBefehls srclegt das RTA_PREFSRCAttribut fest, das Sie beschreiben.
2.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.