Comprendre le YANG sur les équipements exécutant Junos OS
YANG est un langage de modélisation de données extensible basé sur des normes utilisé pour modéliser les données de configuration et d’état opérationnel, les appels de procédure distante (RPC) et les notifications d’événements serveur des périphériques réseau. Le groupe de travail NETMOD de l’IETF a initialement conçu YANG pour modéliser les données de gestion du réseau et fournir une norme pour la couche de contenu du modèle NETCONF (Network Configuration Protocol). Toutefois, YANG est indépendant du protocole et les modèles de données YANG peuvent être utilisés indépendamment du protocole de transport ou RPC et peuvent être convertis dans n’importe quel format de codage pris en charge par le protocole de configuration réseau.
Juniper Networks publie des modules YANG qui définissent les hiérarchies de configuration, les commandes opérationnelles, les données d’état opérationnel et les extensions YANG pour les équipements Junos. Vous pouvez télécharger les modules YANG à partir du site Web de Juniper Networks ou du référentiel GitHub de Juniper Networks pour YANG, ou vous pouvez générer les modules sur un périphérique Junos.
YANG utilise une syntaxe de type C, une organisation hiérarchique des données, et fournit un ensemble de types intégrés ainsi que la capacité de définir des types dérivés. YANG met l’accent sur la lisibilité et offre modularité et flexibilité grâce à l’utilisation de modules et de sous-modules, de types et de groupes de nœuds réutilisables.
Un module YANG définit un modèle de données unique et détermine le codage de ces données. Un module YANG définit un modèle de données à travers ses données, ainsi que l’organisation hiérarchique et les contraintes de ces données. Un module peut être une entité complète et autonome, ou il peut référencer des définitions dans d’autres modules et sous-modules, et compléter d’autres modèles de données avec des nœuds supplémentaires.
Un module YANG définit non seulement la syntaxe mais aussi la sémantique des données. Elle définit explicitement les relations et les contraintes qui pèsent sur les données. Cela vous permet de créer des données de configuration syntaxiquement correctes qui répondent aux exigences de contrainte et vous permet de valider les données par rapport au modèle avant de les charger et de les valider sur un appareil.
YANG utilise des modules pour définir les données de configuration et d’état, les notifications et les RPC pour les opérations réseau de la même manière que la structure des informations de gestion (SMI) utilise les MIB pour modéliser les données des opérations SNMP. Cependant, le YANG a l’avantage de pouvoir distinguer les données opérationnelles des données de configuration. YANG maintient la compatibilité avec SMI version 2 (SMIv2) de SNMP, et vous pouvez utiliser libsmi pour traduire les modules MIB SMIv2 en modules YANG et vice versa. En outre, lorsque vous ne pouvez pas utiliser un analyseur YANG, vous pouvez traduire les modules YANG en YANG Independent Notation (YIN), qui est une syntaxe XML équivalente qui peut être lue par les analyseurs XML et les scripts XSLT.
Vous pouvez utiliser les outils YANG existants ou développer des applications de gestion de réseau personnalisées pour utiliser les modules YANG et offrir une programmabilité réseau plus rapide et plus précise. Par exemple, une application cliente peut exploiter des modules YANG pour générer des données de configuration spécifiques au fournisseur pour différents appareils et valider ces données avant de les télécharger sur l’appareil. L’application peut également gérer et dépanner les réponses et les erreurs RPC inattendues.
Pour plus d’informations sur YANG, consultez RFC 6020, YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF), et RFC associées.