Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

So definieren Sie die Routing-Instanz in Python 3-Anwendungen auf Geräten, auf denen Junos OS Evolved ausgeführt wird

Das libpyvrf-Modul verstehen

Eine Routing-Instanz ist eine Sammlung von Routing-Tabellen, Schnittstellen und Routingprotokollparametern. Jede Routing-Instanz hat einen eindeutigen Namen und eine entsprechende IP-Unicast-Tabelle, die verwendet werden kann, um den Datenverkehr für diese Instanz vom anderen Datenverkehr zu trennen. Auf Geräten, auf denen Junos OS Evolved ausgeführt wird, können Sie beispielsweise eine dedizierte VRF-Instanz (Management Virtual Routing and Forwarding) aktivieren, die eine separate administrative Routing-Tabelle verwendet, mgmt_junosdie für Verwaltungsaufgaben bestimmt ist.

Routing-Instanzen ermöglichen es Ihnen, Datenverkehr zu isolieren, der das Netzwerk durchquert, ohne mehrere Geräte zur Segmentierung Ihres Netzwerks zu verwenden. Wenn Sie Routing-Instanzen zur Isolierung des Datenverkehrs verwenden, können Netzwerkversorger ping ssh die richtige Routing-Instanz referenzieren, um den Datenverkehr an ein Ziel zu senden, das über diese Instanz erreichbar ist.

Das Junos OS Evolved-Image läuft nativ unter Linux und bietet direkten Zugriff auf alle Linux-Dienstprogramme und -Vorgänge, einschließlich der Python-Bibliotheken, die Teil des Basisimages sind. Die Python 3-Bibliothek auf Geräten, auf denen Junos OS Evolved ausgeführt wird, umfasst auch das Modul von Juniper Networks libpyvrf , mit dem Python 3-Anwendungen, die in der Shell ausgeführt werden, die Routing-Instanz angeben können, die für bestimmte Prozesse und Netzwerkversorger verwendet werden soll.

Tabelle 1 zeigt die libpyvrf Funktionen, die Sie in Python 3-Anwendungen verwenden können, die in der Linux-Shell ausgeführt werden. Sie können die Funktionen verwenden, um einen Prozess anzuweisen, eine bestimmte Routing-Instanz zu verwenden. Wenn für denselben Prozess mehrere Routing-Instanzen erforderlich sind, können Sie auch den Routinginstanzenkontext für einen bestimmten Socket festlegen, was sich nicht auf den Kontext für den Prozess selbst auswirkt. Pakete durch den Socket verwenden dann die Routing-Tabelle, die dieser Instanz zugeordnet ist. Wenn Sie die Routing-Instanz für einen Prozess oder Socket festlegen, setzt das libpyvrf Modul den Kontext auf die Linux VRF, die der Routing-Instanz von Junos OS entspricht.

Tabelle 1: libpyvrf-Funktionen

libpyvrf Funktion

Beschreibung

get_host_vrf_name()

Geben Sie die Linux VRF zurück, die einer Routing-Instanz von Junos OS entspricht.

get_table_id()

Geben Sie den Index der Routing-Tabelle zurück, die der angegebenen Routing-Instanz zugeordnet ist.

get_task_vrf()

Geben Sie die Routing-Instanz zurück, die der angegebenen Aufgabe zugeordnet ist.

Hinweis:

Diese Funktion ist ab Junos OS Evolved Version 22.1R1 veraltet.

get_vrf()

Geben Sie die Routing-Instanz zurück, die dem aktuellen Prozess zugeordnet ist.

set_socket_vrf()

Legen Sie die Routing-Instanz für den angegebenen Socket fest.

set_task_vrf()

Legen Sie die Routing-Instanz für den angegebenen Prozess fest.

Hinweis:

Diese Funktion ist ab Junos OS Evolved Version 22.1R1 veraltet.

set_vrf()

Legen Sie die Routing-Instanz für den aktuellen Prozess fest.

Funktionen im libpyvrf Modul können je nach Funktion und Fehler die folgenden Ausnahmen erheben:

  • libpyvrf.error– Wird generiert, wenn libvrf ein Fehler zurückgegeben wird.

  • libpyvrf.evo_not_ready— Wird generiert, wenn der Junos OS Evolved-Netzwerkstack nicht bereit ist, z. B. wenn das Gerät gestartet wird.

  • libpyvrf.invalid_table— Wird generiert, wenn die angegebene Routing-Instanz- oder Tabellen-ID ungültig ist.

Das folgende Python-Beispielskript versucht, einen Host zu pingen, der nur über die mgmt_junos Routing-Instanz erreichbar ist. Das Skript pingt zunächst den Host, bevor es die set_vrf() Funktion aufruft. Das Skript ruft dann die Funktion auf, um die set_vrf() mgmt_junos Routing-Instanz mit dem aktuellen Prozess zu verknüpfen, und pingt den Host erneut.

Wenn Sie das Skript ausführen, schlägt der erste Ping-Befehl fehl, da der Prozess in diesem Fall die Standard-Routing-Instanz verwendet und der Host nur über die mgmt_junos Routing-Instanz erreichbar ist. Der zweite Ping-Befehl, der die mgmt_junos Routing-Instanz verwendet, ist erfolgreich.

Sie können die Routing-Instanz wieder auf die Standard-Routing-Instanzzuordnung in einer Python-Anwendung zurücksetzen, indem Sie eine leere Zeichenfolge für den Namen der Routing-Instanz angeben. Zum Beispiel:

Wenn in einer Anwendung keine Routinginstanz angegeben wird, hängt die Standard-Routinginstanzenzuordnung von der Umgebung des Prozesses ab. Wenn die Umgebung die libsi.so-Bibliothek vorab lädt, verwendet die Anwendung standardmäßig die Standard-Routing-Instanz und -Tabelle, default.inet. Andernfalls ist keine Standard-Routing-Instanz mit dem Prozess oder den Sockets verknüpft.

Um zu bestimmen, ob die Umgebung die libsi.so Bibliothek vorab lädt, überprüfen Sie, ob der Wert der LD_PRELOAD Umgebungsvariable den Pfad zur Bibliothek enthält.

Wenn die LD_PRELOAD Variable nicht den libsi.so Bibliothekspfad enthält, können Sie die für Ihre Shell geeigneten Befehle verwenden, um ihn z. B.:

get_host_vrf_name()-Funktion

Syntax

Beschreibung

Geben Sie die Linux VRF zurück, die einer Routing-Instanz von Junos OS entspricht.

Parameter

vrf_name

Name einer Junos OS-Routing-Instanz.

Rückgabewert

host_vrf_name

Der Name der Linux VRF entspricht der Routing-Instanz von Junos OS.

Anwendungsbeispiele

Im folgenden Beispiel wird die Linux VRF gedruckt, die mehreren Junos OS-Routing-Instanzen entspricht:

Versionsinformationen

Funktion in Junos OS Evolved Version 20.3R1 eingeführt.

get_table_id()-Funktion

Syntax

Beschreibung

Geben Sie den Index der Routing-Tabelle zurück, die der angegebenen Routing-Instanz zugeordnet ist. Wenn die Routing-Instanz nicht definiert ist, gibt die Funktion -1 zurück.

Parameter

vrf_name

Name einer Junos OS-Routing-Instanz.

Rückgabewert

table_id

Index der Routing-Tabelle für die gegebene Routing-Instanz.

Anwendungsbeispiele

Im folgenden Beispiel wird der Tabellenindex für die mgmt_junos Routing-Instanz und eine undefinierte Routing-Instanz fooabgerufen und gedruckt.

Das Skript gibt den Tabellenindex für die mgmt_junos Instanz und -1 für die undefinierte Instanz zurück.

Versionsinformationen

Funktion in Junos OS Evolved Version 20.3R1 eingeführt.

get_task_vrf()-Funktion

Syntax

Beschreibung

Geben Sie die Junos OS-Routing-Instanz zurück, die der angegebenen Prozess-ID zugeordnet ist.

Parameter

tid

Prozess-ID, für die die zugehörige Routing-Instanz abgerufen werden soll.

Rückgabewert

vrf_name

Name der Routing-Instanz, die der Prozess-ID zugeordnet ist.

Anwendungsbeispiele

Im folgenden Beispiel wird die Prozess-ID für den aktuellen Prozess abgerufen und die mgmt_junos Routinginstanz diesem Prozess zugeordnet. Wenn das Skript die get_task_vrf() Funktion aufruft, um die Routing-Instanz für diese Prozess-ID anzufordern, gibt es die mgmt_junos Routing-Instanz zurück.

Versionsinformationen

Funktion in Junos OS Evolved Version 20.3R1 eingeführt.

Funktion in Junos OS Evolved Version 22.1R1 veraltet.

get_vrf()-Funktion

Syntax

Beschreibung

Geben Sie die Junos OS-Routing-Instanz zurück, die dem aktuellen Prozess zugeordnet ist.

Rückgabewert

vrf_name

Name der Routing-Instanz, die dem aktuellen Prozess zugeordnet ist.

Anwendungsbeispiele

Im folgenden Beispiel wird die mgmt_junos Routing-Instanz mit dem aktuellen Prozess verknüpft. Wenn das Skript die get_vrf() Funktion aufruft, um die Routing-Instanz für den aktuellen Prozess anzufordern, gibt es die mgmt_junos Routing-Instanz zurück.

Versionsinformationen

Funktion in Junos OS Evolved Version 20.3R1 eingeführt.

set_socket_vrf()-Funktion

Syntax

Beschreibung

Legen Sie die Routing-Instanz fest, die vom angegebenen Socket verwendet wird. Das Festlegen der Routing-Instanz für einen Socket ist nützlich, wenn mehrere Sockets innerhalb derselben Anwendung unterschiedliche Routing-Instanzen verwenden müssen. Sie können den Routing-Instanzkontext für jeden Socket einzeln festlegen, ohne den Routinginstanzenkontext für den Prozess oder die Anwendung zu beeinträchtigen.

Parameter

socket_fd

Dateideskriptor des Sockets.

vrf_name

Name einer Junos OS-Routing-Instanz.

  • Werte: Zu den zulässigen Werten gehören "default", "iri"oder "mgmt_junos"der Name, der für jede benutzerkonfigurierte Routing-Instanz in der Junos OS-Konfiguration definiert wurde.

Versionsinformationen

Funktion in Junos OS Evolved Version 20.3R1 eingeführt.

set_task_vrf()-Funktion

Syntax

Beschreibung

Legen Sie die Routing-Instanz fest, die der Prozess mit der angegebenen Prozess-ID zum Ausführen von Vorgängen verwendet.

Während set_vrf() die Routing-Instanz für den aktuellen Prozess festgelegt wird, set_task_vrf() setzt die Routing-Instanz für den Prozess mit der angegebenen Prozess-ID.

Parameter

tid

Prozess-ID für den Prozess, der die angegebene Routing-Instanz verwendet.

vrf_name

Name einer Junos OS-Routing-Instanz.

  • Werte: Zu den zulässigen Werten gehören "default", "iri"oder "mgmt_junos"der Name, der für jede benutzerkonfigurierte Routing-Instanz in der Junos OS-Konfiguration definiert wurde.

Anwendungsbeispiele

Das folgende Python-Beispielskript ruft die Prozess-ID für den aktuellen Prozess ab und ordnet die mgmt_junos Routinginstanz diesem Prozess zu. Das Skript pingt dann einen Host, der nur über diese Routing-Instanz erreichbar ist.

Versionsinformationen

Funktion in Junos OS Evolved Version 20.3R1 eingeführt.

Funktion in Junos OS Evolved Version 22.1R1 veraltet.

set_vrf()-Funktion

Syntax

Beschreibung

Legen Sie die Routing-Instanz fest, die der aktuelle Prozess zum Ausführen von Vorgängen verwendet. Zukünftige Lookups werden diese Routing-Instanz verwenden.

Verwenden Sie die set_task_vrf() Funktion, um eine Routing-Instanz einem bestimmten Prozess anstelle des aktuellen Prozesses zuzuordnen.

Parameter

vrf_name

Name einer Junos OS-Routing-Instanz.

  • Werte: Zu den zulässigen Werten gehören "default", "iri"oder "mgmt_junos"der Name, der für jede benutzerkonfigurierte Routing-Instanz in der Junos OS-Konfiguration definiert wurde.

Anwendungsbeispiele

Das folgende Python-Beispielskript ordnet die mgmt_junos Routing-Instanz dem aktuellen Prozess zu. Das Skript pingt dann einen Host, der nur über diese Routing-Instanz erreichbar ist.

Versionsinformationen

Funktion in Junos OS Evolved Version 20.3R1 eingeführt.