Comprendre YANG sur les équipements exécutant Junos OS
YANG est un langage de modélisation des données extensible basé sur des normes qui permet de modéliser les données de configuration et d’état opérationnel, les appels de procédure à distance (RPC) et les notifications d’événements serveur des équipements 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). Cependant, le YANG est indépendant du protocole et les modèles de données YANG peuvent être utilisés indépendamment du transport ou du protocole RPC et peuvent être convertis dans n’importe quel format d’encodage pris en charge par le protocole de configuration du réseau.
Juniper Networks fournit des modules YANG qui définissent la hiérarchie de configuration et les commandes opérationnelles de Junos OS, ainsi que les extensions YANG de Junos OS. 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 générer les modules sur l’équipement exécutant Junos OS.
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 possibilité 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, 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 l’encodage de ces données. Un module YANG définit un modèle de données par le biais de 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, ainsi que 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. Il définit explicitement les relations entre les données et leurs contraintes. Cela vous permet de créer des données de configuration syntactiquement correctes qui répondent aux exigences des contraintes et vous permet de valider les données par rapport au modèle avant de les télécharger et de les valider sur un équipement.
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 des MIB pour modéliser les données pour les opérations SNMP. Cependant, YANG a l’avantage de pouvoir distinguer les données opérationnelles des données de configuration. YANG conserve la compatibilité avec le 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 parser YANG, vous pouvez traduire les modules YANG en notation indépendante YANG (YIN), une syntaxe XML équivalente pouvant être lue par des parsers XML et des scripts XSLT.
Vous pouvez utiliser les outils YANG existants ou développer des applications de gestion de réseau personnalisées pour utiliser des modules YANG pour une programmabilité du réseau plus rapide et plus précise. Par exemple, une application cliente peut exploiter les modules YANG pour générer des données de configuration propres à un fournisseur pour différents équipements et les valider avant de les télécharger sur l’équipement. L’application pouvait également gérer et dépanner les réponses et les erreurs RPC inattendues.
Pour plus d’informations sur YANG, reportez-vous à RFC 6020, YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF) et aux RFC associées.