Grundlegendes zu YANG auf Geräten mit Junos OS
YANG ist eine standardbasierte, erweiterbare Datenmodellierungssprache, die zur Modellierung der Konfigurations- und Betriebszustandsdaten, Remote Procedure Calls (RPCs) und Serverereignisbenachrichtigungen von Netzwerkgeräten verwendet wird. Die NETMOD-Arbeitsgruppe in der IETF hat YANG ursprünglich entwickelt, um Netzwerkmanagementdaten zu modellieren und einen Standard für die Inhaltsschicht des Network Configuration Protocol (NETCONF)-Modells bereitzustellen. YANG ist jedoch protokollunabhängig, und YANG-Datenmodelle können unabhängig vom Transport- oder RPC-Protokoll verwendet und in jedes Codierungsformat konvertiert werden, das vom Netzwerkkonfigurationsprotokoll unterstützt wird.
Juniper Networks veröffentlicht YANG-Module, die die Konfigurationshierarchien, Betriebsbefehle, Betriebszustandsdaten und YANG-Erweiterungen für Junos-Geräte definieren. Sie können die YANG-Module von der Juniper Networks-Website oder dem GitHub-Repository für YANG von Juniper Networks herunterladen oder auf einem Junos-Gerät generieren.
YANG verwendet eine C-ähnliche Syntax, eine hierarchische Organisation von Daten und bietet eine Reihe integrierter Typen sowie die Möglichkeit, abgeleitete Typen zu definieren. YANG legt Wert auf Lesbarkeit und bietet Modularität und Flexibilität durch die Verwendung von Modulen und Submodulen sowie wiederverwendbaren Typen und Knotengruppen.
Ein YANG-Modul definiert ein einzelnes Datenmodell und bestimmt die Kodierung für diese Daten. Ein YANG-Modul definiert ein Datenmodell durch seine Daten und die hierarchische Organisation und die Einschränkungen dieser Daten. Ein Modul kann eine vollständige, eigenständige Entität sein oder auf Definitionen in anderen Modulen und Submodulen verweisen sowie andere Datenmodelle um zusätzliche Knoten erweitern.
Ein YANG-Modul definiert nicht nur die Syntax, sondern auch die Semantik der Daten. Es definiert explizit Beziehungen zwischen und Einschränkungen für die Daten. Auf diese Weise können Sie syntaktisch korrekte Konfigurationsdaten erstellen, die die Einschränkungsanforderungen erfüllen, und Sie können die Daten anhand des Modells validieren, bevor Sie sie hochladen und auf ein Gerät übertragen.
YANG verwendet Module, um Konfigurations- und Statusdaten, Benachrichtigungen und RPCs für den Netzwerkbetrieb zu definieren, ähnlich wie die SMI (Structure of Management Information) MIBs verwendet, um Daten für SNMP-Vorgänge zu modellieren. YANG hat jedoch den Vorteil, dass es zwischen Betriebs- und Konfigurationsdaten unterscheiden kann. YANG ist weiterhin mit der SMI-Version 2 (SMIv2) von SNMP kompatibel, und Sie können libsmi verwenden, um SMIv2-MIB-Module in YANG-Module zu übersetzen und umgekehrt. Wenn Sie keinen YANG-Parser verwenden können, können Sie YANG-Module außerdem in die YANG Independent Notation (YIN) übersetzen, eine äquivalente XML-Syntax, die von XML-Parsern und XSLT-Skripten gelesen werden kann.
Sie können vorhandene YANG-basierte Tools verwenden oder benutzerdefinierte Netzwerkmanagementanwendungen entwickeln, um YANG-Module für eine schnellere und genauere Netzwerkprogrammierbarkeit zu nutzen. Beispielsweise könnte eine Clientanwendung YANG-Module nutzen, um herstellerspezifische Konfigurationsdaten für verschiedene Geräte zu generieren und diese Daten zu validieren, bevor sie auf das Gerät hochgeladen werden. Die Anwendung konnte auch unerwartete RPC-Antworten und -Fehler verarbeiten und beheben.
Weitere Informationen zu YANG finden Sie unter RFC 6020, YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF) und verwandten RFCs.