Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
netadmin:supervision:reseau-services:s4:010_introduction_netconf_yang [2020/02/28 17:44] – créée yoann | netadmin:supervision:reseau-services:s4:010_introduction_netconf_yang [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
====== Introduction à netconf et YANG ====== | ====== Introduction à netconf et YANG ====== | ||
+ | |||
+ | netconf: protocole de configuration réseau ( né dans les années 2000 alors que les opérateurs réseaux sont confrontés à la multiplication des équipements et services à superviser). | ||
+ | |||
+ | Problématique: | ||
+ | * Diversité des solutions propriétaires et scripts/ | ||
+ | |||
+ | Nécessité croissante de normalisation. IETF via la délégation IAB (Internet Architecture Board) constate l' | ||
+ | |||
+ | * Le passage à l' échelle via snmp reste problématique avec de nombreuses MIB restées propriétaires. | ||
+ | * snmp permet de faire essentiellement du monitoring et non de la configuration (la plupart des MIBs ne prévoient pas ce cas). Les mécanismes de configuration sont plus complexes. | ||
+ | |||
+ | Quelques besoins ( confère RFC3535 et RFC3139): | ||
+ | |||
+ | * Différencier les éléments configurables et les données de monitoring. | ||
+ | * Interface et langage standards pour manipuler les mêmes éléments de configuration. (ex: décrire de la même manière une adresse IP à affecter à tout équipement). | ||
+ | * Communication bidirectionnelle pour pouvoir retourner des informations au gestionnaire. | ||
+ | * Protocole en mode texte car les protocoles de ce type ont fait leurs preuves notamment pour la facilité des échanges, la maintenance et développement collaboratif. | ||
+ | * Paralléliser les opérations. | ||
+ | * Faciliter la manipulation des configurations: | ||
+ | * Sécurité. | ||
+ | |||
+ | Pour répondre à ces besoins l'IETF propose NETCONF. | ||
+ | NETCONF: protocole de gestion ou supervision des réseaux qui permet de manipuler les différentes données de configuration sur un équipement réseau physique ou virtuel. Il est décrit dans de nombreuses RFC dont la RFC 6241. | ||
+ | |||
+ | Il s' | ||
+ | * **RPC**((**R**emote **P**rocédure **C**all)) utilisant le formalisme XML. | ||
+ | * Connexion sécurisée principalement par tunnel SSH. | ||
+ | |||
+ | La session NETCONF commence avec l' | ||
+ | Un identifiant de session est alors fournit par le serveur. | ||
+ | |||
+ | ===== Vue générale du protocole NETCONF ===== | ||
+ | |||
+ | Généralités sur l' | ||
+ | |||
+ | < | ||
+ | C'est l' | ||
+ | </ | ||
+ | |||
+ | - Le client contacte le serveur pour pousser les paramètres de configuration. Il initie donc la connexion en annonçant ses capacités (Hello client). | ||
+ | - Le serveur répond et envoie également ses capacités/ | ||
+ | - Le client transmet des requêtes RPC, de façon à exécuter des traitements sur le serveur distant. | ||
+ | |||
+ | Les messages Hello contiennent entre autre l' | ||
+ | | ||
+ | ===== Modèle de données ===== | ||
+ | |||
+ | Pour réaliser des opérations NETCONF à besoin de s' | ||
+ | |||
+ | Le modèle de données est définit par le langage YANG (RFC 6020). C'est YANG qui décrit et hiérarchise les différents éléments que NETCONF peut manipuler. | ||
+ | |||
+ | ==== Les types ==== | ||
+ | |||
+ | * Dans YANG tout est définit par des modules. | ||
+ | * On peut inclure d' | ||
+ | * Contient des types prédéfinis simples: entiers, chaînes, booléens. | ||
+ | * La déclaration typedef permet de définir de nouveaux types (types composés). | ||
+ | |||
+ | ==== La hiérarchisation ==== | ||
+ | |||
+ | YANG permet de hiérarchiser les données. | ||
+ | |||
+ | Pour hiérarchiser les données plusieurs éléments (Nodes) sont disponibles: | ||
+ | |||
+ | Les feuilles (leaf): | ||
+ | * leaf: Une feuille représente une variable unique. | ||
+ | * leaf-list: ensemble de variables du même type (tableau). | ||
+ | |||
+ | Pour assembler et hiérarchiser les feuilles YANG propose les conteneurs et les listes: | ||
+ | * container: ensemble de nœuds chacun étant présent une seule fois. | ||
+ | * list: ensemble d' | ||
+ | |||
+ | Quelques mot clés largement utilisés: | ||
+ | * config: L' | ||
+ | * mandatory: spécifie si un nœud doit être présent. | ||
+ | | ||
+ | |||
+ | ==== Quelques exemples ==== | ||
+ | |||
+ | Définition et utilisation d'une feuille. | ||
+ | |||
+ | ^ Définition dans YANG ^ Utilisation par NETCONF | ||
+ | | < | ||
+ | leaf port{ | ||
+ | type inet: | ||
+ | default 22; | ||
+ | config true; | ||
+ | description "port to listen to"; | ||
+ | } | ||
+ | </ | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Définition et utilisation d'une leaf-list: | ||
+ | |||
+ | ^ Définition dans YANG ^ Utilisation par NETCONF | ||
+ | | < | ||
+ | leaf-list allow-user{ | ||
+ | type string; | ||
+ | mandatory true; | ||
+ | } | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Utilisation d'un node de type list. On notera que les feuilles ip et port ne sont pas obligatoires et peuvent ne pas être spécifiées dans le fichier de configuration NETCONF. | ||
+ | |||
+ | ^ Définition dans YANG ^ Utilisation par NETCONF | ||
+ | | < | ||
+ | list server{ | ||
+ | key " | ||
+ | leaf name{type string;} | ||
+ | leaf ip{type inet: | ||
+ | leaf port{type inet: | ||
+ | } | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Dernier exemple, définition d'un container system. On notera ici l' | ||
+ | |||
+ | ^ Définition dans YANG ^ Utilisation par NETCONF | ||
+ | | < | ||
+ | container system{ | ||
+ | container services{ | ||
+ | container " | ||
+ | presence " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | | ||
+ | |||
+ | Pour résumer C'est le langage YANG qui modélise les différentes données d' | ||
+ | |||
+ | ===== Quizz ===== | ||
+ | |||
+ | * Par défaut la sécurité des échanges du protocole NETCONF est garantie par SSH. | ||
+ | * NETCONF définie les primitives utilisées pour configurer les appareils réseau. | ||
+ | * YANG définit le modèle des données exploitables par le protocole NETCONF. | ||
+ | * Les " | ||
+ | * La structure arborescente des données se définie avec YANG via les nodes de type container et list. | ||
+ | * Le mot clé " | ||
+ | * Il est possible de définir ces propres types de données de configuration. | ||