Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Verwalten von Anwendungen von Drittanbietern

Verwenden von Intercept-Bibliotheken

Junos OS Evolved kann Anwendungen von Drittanbietern ausführen, da es unter nativem Linux ausgeführt wird. Es gibt einige Unterschiede zwischen der Art und Weise, wie Linux angeforderte Netzwerktopologieinformationen wie Schnittstellen- und Routendaten anzeigt, und der Art und Weise, wie Junos OS diese Informationen anzeigt. Die CLI wurde entwickelt, um diese Unterschiede zu überwinden. In der Regel beziehen Anwendungen von Drittanbietern, die unter nativem Linux ausgeführt werden, diese Informationen mithilfe von Shell-Befehlen direkt von den nativen Linux-Quellen.

Junos OS Evolved verwendet einen Intercept-Mechanismus, der Shell-Anfragen nach Netzwerktopologieinformationen an einen Bereich umleitet, in dem die Informationen von Junos OS abgerufen werden können. Dieser Intercept-Mechanismus wird durch Intercept-Bibliotheken und erreicht, libsi.so libnli.sodie Sie vorab laden. Nachdem Sie die Intercept-Bibliothek vorab geladen haben, werden bestimmte Arten von Anforderungen abgefangen und zeigen Junos OS-Informationen an.

Die Intercept-Bibliotheken sind optional. Sie werden nur benötigt, wenn die Anwendung die in Tabelle 1 genannten APIs erfordert:

Tabelle 1: APIs, für die Intercept-Bibliotheken erforderlich sind

API

Beschreibung

Paket-E/A- und Linux-Socket-APIs

Möglichkeit zum Senden und Empfangen von Paketen über Verwaltungs- und/oder Datenschnittstellen. Standard-libc, wie z. B. senden, empfangen, hören.

rtnetlink

Möglichkeit zur Verwendung von rtnetlink zur Abfrage von Netzwerkzuständen wie Schnittstellen und Routen.

netdevice

Möglichkeit zur Konfiguration von Netzwerkgeräten.

Proc

Möglichkeit zur Abfrage von Kernel-Datenstrukturen unter Verwendung von Standardschnittstellen, die vom Linux-Kernel bereitgestellt werden.

Junos-APIs

Möglichkeit des Zugriffs auf Juniper North Bound APIs – NetConf/JET/Telemetry.

Hinweis:

Junos OS Evolved Version 20.1R1 unterstützt die folgenden Funktionen:

  • Verwenden Sie die Konfiguration set system netlink-async-mode , um NETLINK_ROUTE asynchrone Benachrichtigungen zu aktivieren. Diese Funktion ist standardmäßig deaktiviert. Verwenden Sie diese Option show nsld mode , um den aktuellen asynchronen Netlink-Modus anzuzeigen.

  • SIOCETHTOOL ioctl, das von anderen Anwendungen verwendet werden kann.

  • Multipath-Next-Hop-Routeninformationen über Netlink-Routenattribute.

Beispiel für einen vorinstallierten Linux-Befehl

Ein Beispiel für die Funktionsweise der preload-Direktive folgt mit dem Befehl ifconfig, der Schnittstellen anzeigt.

Wenn Sie den ifconfig Befehl mit der Intercept-Bibliothek vorab laden, werden Junos OS-Schnittstelleninformationen zurückgegeben. Beachten Sie, dass die Intercept-Bibliothek nur logische Schnittstellen übersetzt. Da in diesem Beispiel nur logische Schnittstellen für lo0 und re0:mgmt-0.0 vorhanden sind, werden in der Ausgabe nur diese beiden Schnittstellen für den vorab geladenen ifconfig Befehl angezeigt.

Sie können die gleichen Ergebnisse erzielen, indem Sie jbash ausführen, eine Shell, die mit Junos OS Evolved bereitgestellt wird und libsi.so standardmäßig vorgeladen libnli.so wird.

VORSICHT:

Verwenden Sie jbash nur, um die Netzwerkstatusinformationen abzurufen. Verwenden Sie jbash nicht als Standard-Shell.

Wenn Sie den Befehl absetzen, ohne ihn vorab mit der Intercept-Bibliothek zu laden, stammt die angezeigte Ausgabe von Linux. Beachten Sie, dass die folgende Ausgabe länger ist als die von Junos OS. Linux unterscheidet nicht zwischen physischen und logischen Schnittstellen, wie dies bei der Junos CLI der Fall ist.

Übersetzung von Schnittstellennamen

Ein einschränkender Faktor bei der Verwendung dieses Abfangmechanismus besteht darin, dass die Benennung der Linux-Schnittstelle nicht mit der Benennung der Junos OS-Schnittstelle kompatibel ist. Linux unterstützt 15-Byte-Schnittstellennamen (15 + Nullzeichen); Netzwerkschnittstellennamen, die diesen Grenzwert überschreiten, werden in Ausgaben abgeschnitten. Die Namen der logischen Schnittstellen von Junos OS können länger als 15 Byte sein, z. B et-0/0/10:2.32767. . .

Um diesen Unterschied zu umgehen, verwendet Junos OS Evolved eine Übersetzungsregel (siehe Tabelle 2), um logische Schnittstellennamen in einem Linux-kompatiblen Format zu rendern. Die Übersetzung rendert ein Format wie name-fpcSlot/picSlot/port:channelId.subUnit . nn-ffpttccssss Mithilfe von Schnittstellennamen, die gemäß dieser Regel übersetzt wurden, können Anwendungen von Drittanbietern die Topologieinformationen effektiv von Junos OS abrufen.

Es wird nur die Übersetzung von logischen Schnittstellennamen unterstützt, und die Übersetzung von kanalisierten und nicht kanalisierten logischen Schnittstellennamen wird unterstützt.

Tabelle 2: Übersetzungsregel für Schnittstellennamen

Wert

Beschreibung

Zugewiesener Speicherplatz (in Bytes)

Bereich

Nn

Zugeordnete Namensbytes

2

Ff

FPC in Hexadezimalformat

2

0-255

P

Bild in Hexadezimalformat

1

0-15

Tt

Portnummer in Hexadezimalform

2

0-255

Cc

Kanal in Hexadezimal; Verwenden Sie "xx", wenn nicht vorhanden

2

0-255

Ssss

Untereinheit in Sechskant

4

0-65535

Wenn der Name der logischen Schnittstelle keinen Bindestrich (-) enthält, wird der Punkt (.) im Namen in einen Unterstrich (_) geändert, z. B.: ifdname.subunit wird übersetzt in ifdname_subunit.

Für Verwaltungsschnittstellen bedeutet diesmgmt-x-yy-zzzz, reX:mgmt-Y.Z wobei x, yy, zzzz mit 0 für eine feste Länge hexadezimal aufgefüllt sind. Und die umgekehrte Übersetzung geschieht auf den gleichen Zeilen.

In Tabelle 3 finden Sie Beispiele für logische Junos-Schnittstellennamen und ihre Linux-kompatiblen Formulare.

Tabelle 3: Beispiele für übersetzte logische Schnittstellennamen

Name der logischen Junos-Schnittstelle

Übersetzter Linux-kompatibler Schnittstellenname

ET-1/2/3.4

ET-01203XX0004

GE-1/2/3.32

GE-01203xx0020

ET-1/15/3.4

ET-01F03XX0004

ET-02.01.255:6.7

ET-012FF060007

et-1/2/4:5.32767

ET-01204057FFF

RE0:MGMT-1.2

mgmt-0-01-0002

ae0.1

ae0_1

IRB0.11

irb0_11

Beim Zugriff auf Junos OS-Zustände durch Vorabladen libnli.sowird der Schnittstellenname in der Ausgabe als übersetzter Linux-kompatibler Schnittstellenname angezeigt. Sie müssen auch den übersetzten Linux-kompatiblen Schnittstellennamen verwenden, wenn Sie ihn als Argument in einem Befehl verwenden. Der übersetzte et-01000000000 Schnittstellenname wird im folgenden Beispiel als Argument verwendet:

Vorsichtsmaßnahmen für die Abfangfunktion

Diese Funktion zum Abfangen unterstützt schreibgeschützte Anforderungen. Jede Schreibanforderung gibt einen Fehler zurück.

Die Darstellung eines bestimmten Junos-Netzwerkstatus kann Linux-Entsprechungen möglicherweise nicht zugeordnet werden. In diesen Fällen werden die Daten entweder weggelassen oder auf ein vergleichbares Linux-Modell umgestellt. Junos OS Evolved unterstützt beispielsweise eine Vielzahl von Nexthop-Typen wie composite oder unilist ohne vergleichbare Implementierungen im nativen Linux.

Anwendungen von Drittanbietern, die statisch verknüpft sind, können nicht abgefangen werden und werden daher von dieser Funktion nicht unterstützt.

Entfernen von Anwendungen von Drittanbietern

Es gibt mehrere Methoden zum Entfernen von Anwendungen von Drittanbietern. Die Methode, die Sie verwenden sollten, hängt davon ab, wie Sie die Anwendung installiert haben.

  • Wenn eine Anwendung eines Drittanbieters mit dem request system software add Befehl installiert wurde, können Sie dieselbe Anwendung mithilfe des request system software delete Befehls entfernen.

  • Der erste Schritt beim Entfernen dieser Anwendungen besteht darin, die Verknüpfung des Schlüssels mit dem request security system-keystore unlink key Befehl aufzuheben.

    Entfernen Sie als Nächstes alle Binärdateien, die Sie für die Anwendung mit dem rm -f /path/to/binary1 /path/to/binary2 Befehl shell installiert haben.

  • Wenn eine Anwendung eines Drittanbieters über einen Docker-Container installiert wurde, verwenden Sie den folgenden Docker-Befehl, um den Container zu entfernen: