Table des matières

,

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:

Nécessité croissante de normalisation. IETF via la délégation IAB (Internet Architecture Board) constate l'insuffisance des technologies et protocoles de gestion qui à l'époque n'atteignaient pas un niveau jugé satisfaisant (résumé par la RFC3535).

Quelques besoins ( confère RFC3535 et RFC3139):

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'appuie sur des technologies existantes:

La session NETCONF commence avec l'échange de messages “Hello” permettant de définir les fonctionnalités disponibles à la fois côté client et serveur. Un identifiant de session est alors fournit par le serveur.

Vue générale du protocole NETCONF

Généralités sur l'initialisation d'une connexion.

C'est l'appareil configurable qui exécute le serveur NETCONF
  1. 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).
  2. Le serveur répond et envoie également ses capacités/fonctionnalités et l'identifiant de session (Hello serveur).
  3. 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'espace de nommage, c'est à dire la définition des éléments de configuration utilisables/manipulable. L'espace de nommage utilise des définitions de base et peut être complété.

Modèle de données

Pour réaliser des opérations NETCONF à besoin de s'appuyer sur un langage capable de définir différents types de données. NETCONF permet de manipuler des données mais le les définit pas.

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

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):

Pour assembler et hiérarchiser les feuilles YANG propose les conteneurs et les listes:

Quelques mot clés largement utilisés:

Quelques exemples

Définition et utilisation d'une feuille.

Définition dans YANG Utilisation par NETCONF
leaf port{
    type inet:port-number;
    default 22;
    config true;
    description "port to listen to";
}
<port>2202</port>

Définition et utilisation d'une leaf-list:

Définition dans YANG Utilisation par NETCONF
leaf-list allow-user{
    type string;
    mandatory true;
}
<allow-user>admin</allow-user>
<allow-user>root</allow-user>
<allow-user>nagios</allow-user>

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 "name";
    leaf name{type string;}
    leaf ip{type inet:ip-address;}
    leaf port{type inet:port-number;}
}
<serveur>
  <name>http</name>
  <ip>192.168.0.1</ip>
  <port>8080</port>
</serveur>
<serveur>
  <name>ftp</name>
  <port>2121</port>
</serveur>

Dernier exemple, définition d'un container system. On notera ici l'utilisation du mot clé presence dans la définition du container ssh qui apporte une sémantique au container. Sa présence dans le fichier de configuration NETCONF activera le service SSH.

Définition dans YANG Utilisation par NETCONF
container system{
  container services{
    container "ssh"{
      presence "Enables SSH"
    }
  }
}
<system>
  <services>
    </ssh>
  </services>
</system>

Pour résumer C'est le langage YANG qui modélise les différentes données d'état ou de configuration qui seront ensuite utilisées par le protocole netconf.

Quizz

1)
Remote Procédure Call