Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
netadmin:supervision:reseau-services:s4:010_introduction_netconf_yang [2020/02/28 18:55] – yoann | netadmin:supervision:reseau-services:s4:010_introduction_netconf_yang [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
Problématique: | Problématique: | ||
- | * Diversité des solutions propriétaires et scripts/ | + | * Diversité des solutions propriétaires et scripts/ |
Nécessité croissante de normalisation. IETF via la délégation IAB (Internet Architecture Board) constate l' | Nécessité croissante de normalisation. IETF via la délégation IAB (Internet Architecture Board) constate l' | ||
- | * Le passage à l'echelle | + | * Le passage à l' |
* 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. | * 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. | ||
- | les besoins (RFC3535 et RFC3139): | + | Quelques |
- | * Différencier les éléments configurables et les données de monitoring | + | * 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 a affecter | + | * 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 |
- | * Communication bidirectionnelle pour pouvoir retourner des informations au le gestionnaire. | + | * Communication bidirectionnelle pour pouvoir retourner des informations au gestionnaire. |
- | * Protocole en mode texte: car les protocoles de ce type ont fait leurs preuves: facilité des échanges, | + | * Protocole en mode texte car les protocoles de ce type ont fait leurs preuves |
* Paralléliser les opérations. | * Paralléliser les opérations. | ||
- | * Faciliter la manipulation des configurations: | + | * Faciliter la manipulation des configurations: |
- | * Sécurité | + | * Sécurité. |
- | Pour répondre | + | Pour répondre |
- | NETCONF: protocole de gestion ou supervision des réseaux qui pernet | + | NETCONF: protocole de gestion ou supervision des réseaux qui permet |
- | s' | + | Il s' |
- | * **RPC**((**R**emote **P**rocédure **C**all)) utilisant le formalisme XML | + | * **RPC**((**R**emote **P**rocédure **C**all)) utilisant le formalisme XML. |
- | * Connexion sécurisée principalement par tunnel SSH | + | * Connexion sécurisée principalement par tunnel SSH. |
- | La session NETCONF commence avec l' | + | La session NETCONF commence avec l' |
Un identifiant de session est alors fournit par le serveur. | Un identifiant de session est alors fournit par le serveur. | ||
- | Protocole | + | ===== Vue générale du protocole |
+ | |||
+ | Généralités sur l' | ||
< | < | ||
- | C'est 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 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 serveur répond et envoie également ses capacités/ | ||
- | - Le client | + | - Le client |
- | Les messages Hello contiennent entre autre l' | + | Les messages Hello contiennent entre autre l' |
| | ||
===== Modèle de données ===== | ===== Modèle de données ===== | ||
- | Pour réaliser des opérations NETCONF à besoin de s' | + | Pour réaliser des opérations NETCONF à besoin de s' |
- | Le modèle de données est définit par YANG (RFC 6020). C'est YANG qui décrit les différents éléments que NETCONF peut manipuler. | + | Le modèle de données est définit par le langage |
+ | |||
+ | ==== Les types ==== | ||
* Dans YANG tout est définit par des modules. | * Dans YANG tout est définit par des modules. | ||
- | * On peut inclure | + | * On peut inclure |
- | * types prédéfinis simples: entiers, | + | * Contient des types prédéfinis simples: entiers, |
- | * typedef | + | * La déclaration |
+ | |||
+ | ==== 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. | ||