Grundlegendes zum XML-Verwaltungsprotokoll NETCONF
Erfahren Sie mehr über das Netzwerkkonfigurationsprotokoll (NETCONF) und die Vorteile der Verwendung von NETCONF zur Verwaltung Ihrer Netzwerkgeräte.
Vorteile von NETCONF
-
NETCONF ist ein standardbasiertes Protokoll, das speziell für die Verwaltung von Netzwerkgeräten entwickelt wurde.
-
NETCONF verwendet sichere, verbindungsorientierte Sitzungen, die Authentifizierung, Datenintegrität und Vertraulichkeit gewährleisten.
-
NETCONF ist anbieterunabhängig, sodass Sie dieselben NETCONF-Basisoperationen verwenden können, um Geräte verschiedener Hersteller zu verwalten.
Übersicht über das NETCONF-XML-Managementprotokoll
Das NETCONF-XML-Verwaltungsprotokoll ist ein standardbasiertes Protokoll, das speziell auf die Kommunikation mit und die Verwaltung von Netzwerkgeräten zugeschnitten ist. NETCONF verwendet ein Client/Server-Modell und RPC-basierte (Remote Procedure Call). Ein NETCONF-Client stellt eine Verbindung und eine NETCONF-Sitzung mit einem NETCONF-Server her und führt Operationen auf dem Gerät aus. Junos-Geräte integrieren den NETCONF-Server in das Betriebssystem, sodass der Server nicht als separater Eintrag in Prozesslisten angezeigt wird.
NETCONF verwendet eine XML-basierte Datencodierung für die RPCs und Konfigurationsdaten. Das NETCONF-Protokoll definiert grundlegende Vorgänge, die Befehlen im CLI-Konfigurationsmodus entsprechen. Clientanwendungen verwenden die Protokolloperationen zum Anzeigen, Bearbeiten und Bestätigen von Konfigurationsdaten (neben anderen Vorgängen), genauso wie Administratoren die CLI-Konfigurationsmodusbefehle zum Ausführen dieser Vorgänge verwenden. Innerhalb einer NETCONF-Sitzung können Clientanwendungen auch RPCs ausführen, die Junos OS-Befehlen für den Betriebsmodus entsprechen.
Konzeptionell kann NETCONF in 4 Schichten unterteilt werden. In Tabelle 1 werden die Layer beschrieben.
| NETCONF-Layer-Beschreibung | |
|---|---|
| Transport |
Die Transportschicht erleichtert die Erstellung von Sitzungen zwischen dem Client und dem Server unter Verwendung verschiedener Protokolle. |
| Meldungen |
Die Nachrichtenschicht ist ein transportunabhängiger Framing-Mechanismus für die Codierung von RPCs und Benachrichtigungen. Zu den Tags gehören:
|
| Transaktionen |
Die Betriebsschicht definiert die Protokollvorgänge, die Sie auf einem Netzwerkgerät ausführen können. Die Vorgänge umfassen Basisprotokolloperationen, z. B |
| Inhalt |
Die Inhaltsschicht enthält die RPC-Anforderungs- und Antwortnutzlasten im XML-Format. Diese Ebene definiert die Konfigurationsdaten und die Benachrichtigungsdaten. |
Die Kommunikation zwischen dem NETCONF-Server und einer Clientanwendung erfolgt sitzungsbasiert. Der Server und der Client stellen explizit eine Verbindung und Sitzung her, bevor sie Daten austauschen. Wie von der Transportschicht definiert, kann NETCONF jedes sichere Transportprotokoll verwenden, das die erforderlichen Anforderungen erfüllt. Junos-Geräte unterstützen NETCONF-Sitzungen über SSH, ausgehendes SSH, TLS und ausgehendes HTTPS sowie NETCONF-Call-Home-Sitzungen über ausgehendes SSH.
Jede NETCONF-Sitzung beginnt mit einem Handshake, bei dem der Server und der Client Tags austauschen <hello> , die ihre unterstützten NETCONF-Funktionen enthalten. Innerhalb einer NETCONF-Sitzung tauschen der Client und der Server Nachrichten aus, die RPCs, RPC-Antworten oder Benachrichtigungen enthalten. Die NETCONF-Vorgangsschicht definiert die Protokollvorgänge, die eine Clientanwendung zum Verwalten eines Geräts verwenden kann. In der Inhaltsschicht werden die codierten Parameter und Daten beschrieben, die in den RPCs enthalten sind. In der Übersicht über NETCONF und die Junos XML-API wird die Inhaltsschicht ausführlicher beschrieben. Nachdem die Clientanwendung die Anforderungen erfüllt hat, schließt sie die NETCONF-Sitzung und -Verbindung.
Ein NETCONF-Client sendet RPCs an den NETCONF-Server, um Informationen anzufordern, Betriebsbefehle auszuführen oder die Konfiguration auf einem Gerät zu ändern. Der NETCONF-Server verarbeitet die RPCs und sendet RPC-Antworten an den Client. Abhängig von der Anforderung geben RPC-Antworten die angeforderten Informationen zurück oder geben den Erfolg oder Misserfolg des angeforderten Vorgangs an.
Weitere Informationen zu NETCONF finden Sie in den folgenden RFCS:
-
RFC 6241, Netzwerkkonfigurationsprotokoll (NETCONF)
-
RFC 6242, Verwenden des NETCONF-Protokolls über Secure Shell (SSH)
NETCONF und die Junos XML-API – Überblick
Die Junos XML-API ist eine XML-Darstellung von Junos OS-Konfigurationsanweisungen und Befehlen für den Betriebsmodus. Die Junos XML-API definiert eine XML-Entsprechung für alle Anweisungen in der Junos OS-Konfigurationshierarchie und für viele der Befehle, die Sie im CLI-Betriebsmodus ausgeben. Jeder Betriebsmodusbefehl mit einem Junos-XML-Gegenstück wird einem Anforderungs-Tag-Element und ggf. einem Antwort-Tag-Element zugeordnet. Junos XML-Anforderungs-Tags entsprechen in ihrer Funktion den entsprechenden Betriebsmodusbefehlen in der CLI.
NETCONF-Clientanwendungen können Informationen anfordern, Betriebsbefehle ausführen oder die Konfiguration auf einem Junos-Gerät ändern. Die Clientanwendung kodiert die Anforderung in NETCONF- und Junos XML-API-Tag-Elementen und sendet sie an den NETCONF-Server auf dem Gerät. Der NETCONF-Server leitet die Anforderung an die entsprechenden Softwaremodule weiter, kodiert die Antwort in NETCONF- und Junos-XML-API-Tag-Elementen und gibt das Ergebnis an die Clientanwendung zurück.
Wenn ein NETCONF-Client die Junos OS-Konfiguration ändert, enthält der RPC-Inhalt Junos XML-Konfigurationsdaten. NETCONF-Clients können auch operationelle RPCs mit den entsprechenden Anforderungs-Tags senden, um Betriebsbefehle auszuführen oder Informationen abzurufen. Der Server gibt die Antwort mithilfe von Junos XML-API-Elementen zurück, die im entsprechenden Antwort-Tag-Element eingeschlossen sind.
Um beispielsweise Informationen über den Status der Schnittstellen eines Geräts anzufordern, sendet eine Clientanwendung das Junos XML-API-Anforderungs-Tag <get-interface-information/> .
<rpc>
<get-interface-information/>
</rpc>
Der NETCONF-Server sammelt die Informationen aus dem Schnittstellenprozess und gibt sie im Antwort-Tag-Element der Junos XML-API <interface-information> zurück.
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:junos="http://xml.juniper.net/junos/25.2R1/junos"> <interface-information xmlns="http://xml.juniper.net/junos/25.2R1/junos-interface" junos:style="normal"> <physical-interface> <name> ge-0/0/0 </name> <admin-status junos:format="Enabled"> up </admin-status> ... </interface-information> </rpc-reply>
Es gibt mehrere Möglichkeiten, den Inhalt der Junos XML-API zu bestimmen. Mit dem Juniper Networks XML API Explorer können Sie Junos XML API-Elemente durchsuchen. Sie können die Konfigurationselemente und die Betriebsanforderungs- und Antwort-Tags anzeigen, die in einem bestimmten Betriebssystem und einer bestimmten Version unterstützt werden.
Darüber hinaus können Sie auf Junos-Geräten den senkrechten Strich (|) in der CLI verwenden, um den Inhalt der Junos XML API anzuzeigen. Um beispielsweise das Betriebsanforderungs-Tag für einen bestimmten Befehl abzurufen, geben Sie in der CLI nach command | display xml rpc . Das folgende Beispiel zeigt, dass das request-Tag für den show interfaces Befehl lautet <get-interface-information>.
user@host> show interfaces | display xml rpc
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/25.2R1/junos">
<rpc>
<get-interface-information>
</get-interface-information>
</rpc>
<cli>
<banner></banner>
</cli>
</rpc-reply>
Verwenden Sie zum Abrufen von Konfigurationsdaten im XML-Format den show configuration | display xml Befehl.
user@host> show configuration system services | display xml
<rpc-reply xmlns:junos="http://xml.juniper.net/junos/25.2R1/junos">
<configuration junos:commit-seconds="1747272887" junos:commit-localtime="2025-05-14 18:34:47 PDT" junos:commit-user="admin">
<system>
<services>
<netconf>
<ssh>
</ssh>
</netconf>
<ssh>
<root-login>allow</root-login>
</ssh>
<ftp>
</ftp>
</services>
</system>
</configuration>
<cli>
<banner></banner>
</cli>
</rpc-reply>
Sie können NETCONF und die Junos XML-API verwenden, um Junos-Geräte zu verwalten. Sie können Clientanwendungen schreiben, um mit dem NETCONF-Server zu interagieren. Sie können NETCONF auch verwenden, um benutzerdefinierte Endbenutzerschnittstellen für die Konfiguration und den Informationsabruf und die Anzeige zu erstellen, z. B. eine Webbrowser-basierte Schnittstelle.
Vorteile der Verwendung von NETCONF und der Junos XML-API
NETCONF und die Junos XML-API dokumentieren alle Optionen für jede unterstützte Junos OS-Betriebsanforderung und alle Elemente in jeder Junos OS-Konfigurationsanweisung. Die Tag-Namen geben eindeutig die Funktion eines Elements in einer operativen Anforderung oder Konfigurationsanweisung an.
Die Kombination aus aussagekräftigen Tag-Namen und den Strukturregeln in einer DTD macht es einfach, den Inhalt und die Struktur eines XML-getaggten Datensatzes zu verstehen. NETCONF- und Junos-XML-Tag-Elemente erleichtern Clientanwendungen das Parsen der Geräteausgabe, um bestimmte Informationen zu finden und anzuzeigen, wie in den folgenden Abschnitten beschrieben.
Geräteausgabe analysieren
Das folgende Beispiel zeigt, wie die XML-API von Junos das Parsen der Geräteausgabe und das Extrahieren der erforderlichen Informationen erleichtert. Im Beispiel werden formatierte ASCII- und XML-getaggte Ausgaben von einem Gerät mit Junos OS verglichen. Die formatierte ASCII-Ausgabe lautet:
Physical interface: fxp0, Enabled, Physical link is Up Interface index: 64, SNMP ifIndex: 1
Die entsprechende XML-getaggte Version lautet:
<physical-interface>
<name>fxp0</name>
<admin-status junos:format="Enabled">up</admin-status>
<oper-status>up</oper-status>
<local-index>64</local-index>
<snmp-index>1</snmp-index>
...
</physical-interface>
Wenn eine Clientanwendung einen bestimmten Wert aus einer formatierten ASCII-Ausgabe extrahieren muss, muss sie sich auf die Position des Werts verlassen, die entweder absolut oder in Bezug auf Beschriftungen oder Werte in angrenzenden Feldern ausgedrückt wird. Angenommen, die Clientanwendung möchte den Schnittstellenindex extrahieren. Es kann ein Dienstprogramm für den Abgleich regulärer Ausdrücke verwenden, um bestimmte Zeichenfolgen zu finden, aber die Anzahl der Ziffern im Schnittstellenindex ist nicht unbedingt vorhersagbar. Die Clientanwendung kann nicht einfach eine bestimmte Anzahl von Zeichen nach der Interface index: Bezeichnung lesen. Stattdessen muss alles zwischen dem Label und dem nachfolgenden Label extrahiert werden, und zwar:
, SNMP ifIndex
Ein Problem tritt auf, wenn sich das Format oder die Reihenfolge der Ausgabe in einer späteren Version von Junos OS ändert. Die Ausgabe kann z. B. ein Logical index Feld nach der Schnittstellenindexnummer hinzufügen.
Physical interface: fxp0, Enabled, Physical link is Up
Interface index: 64, Logical index: 12, SNMP ifIndex: 1
Eine Anwendung, die die durch die Interface index: SNMP ifIndex Bezeichnungen und getrennte Schnittstellenindexnummer extrahiert, erhält jetzt ein falsches Ergebnis. In diesem Fall müssen Sie die Anwendung aktualisieren, um stattdessen manuell nach der folgenden Bezeichnung zu suchen:
, Logical index
Im Gegensatz dazu ermöglicht die strukturierte Natur der XML-markierten Ausgabe einer Clientanwendung, den Schnittstellenindex abzurufen, indem sie alles innerhalb des öffnenden <local-index> und schließenden </local-index> Tags extrahiert. Die Anwendung muss sich nicht auf die Position eines Elements in der Ausgabezeichenfolge verlassen. Daher kann der NETCONF-Server die untergeordneten Tag-Elemente in beliebiger Reihenfolge innerhalb des <physical-interface> Elements ausgeben. Das Hinzufügen eines neuen <logical-index> Elements wirkt sich nicht auf die Fähigkeit einer Anwendung aus, das <local-index> Element zu suchen und seinen Inhalt zu extrahieren.
Geräteausgabe anzeigen
Die XML-getaggte Ausgabe lässt sich auch leichter in verschiedene Anzeigeformate transformieren. Sie können z. B. unterschiedliche Detailmengen zu einer bestimmten Gerätekomponente zu unterschiedlichen Zeiten anzeigen. Wenn ein Gerät eine formatierte ASCII-Ausgabe zurückgibt, müssen Sie spezielle Routinen und Datenstrukturen in Ihre Anwendung schreiben, um die Informationen zu extrahieren, die für eine bestimmte Detailebene erforderlich sind. Im Gegensatz dazu ist die inhärente Struktur der XML-Ausgabe eine ideale Grundlage für die eigenen Strukturen eines Anzeigeprogramms. Sie können dieselbe Extraktionsroutine für mehrere Detaillierungsebenen verwenden und dabei einfach die Tag-Elemente ignorieren, die Sie bei der Anzeige von weniger Details nicht benötigen.