Accueil » DEVNEA – NETCONF & RESTCONF

DEVNEA – NETCONF & RESTCONF

📌 Fiche Résumé – SNMP, NETCONF et RESTCONF

🔹 1. SNMP (Simple Network Management Protocol)

  • Protocole historique des ingénieurs réseau.
  • Fonctionne en push & pull :
    • Polling (interrogation des équipements)
    • Traps (alertes)
  • Très répandu dans les infrastructures IT.
  • ❌ Peu adapté à la configuration des équipements.

🔹 2. NETCONF

  • Créé en 2006 pour dépasser les limites de SNMP.
  • Normalisé par l’IETF (RFC 6241 – 2011).
  • Permet la gestion fiable des configurations.
  • Basé sur des modèles YANG.
  • Utilisé pour l’automatisation réseau.

🔹 3. RESTCONF

  • Protocole dérivé de NETCONF.
  • Basé sur REST et HTTP.
  • Plus flexible pour les développeurs.
  • Facile à intégrer dans les outils d’automatisation.
  • Utilise aussi les modèles YANG.

🔹 4. YANG (Modèle de données)

  • Langage de modélisation.
  • Décrit la structure des données réseau.
  • Standardise la lecture et la modification des configurations.

🔹 5. Objectifs du cours

Ce cours permet de :

✅ Comprendre NETCONF et RESTCONF
✅ Comparer leurs différences
✅ Utiliser la librairie Python ncclient
✅ Manipuler les équipements via API
✅ Réaliser des labs pratiques


📊 Comparaison rapide

ProtocoleFonctionTransportConfigurationUsage principal
SNMPSupervisionUDP❌ LimitéMonitoring
NETCONFConfigurationSSH✅ OuiAutomatisation
RESTCONFAPIHTTP✅ OuiDéveloppement

📌 Fiche Résumé – NETCONF Overview


🔹 1. Objectif de NETCONF

  • Protocole de gestion réseau nouvelle génération.
  • Créé pour corriger les limites de SNMP.
  • Orienté gestion transactionnelle.
  • Sépare :
    • 📄 Configuration data (modifiable)
    • 📊 State data (lecture seule)

🔹 2. Types de données

✅ Configuration Data

  • Données modifiables.
  • Permettent de passer de l’état par défaut à l’état actuel.
  • Ex : interfaces, routage, VLAN.

✅ State Data

  • Données non modifiables.
  • Informations d’état et statistiques.
  • Ex : status interface, trafic, erreurs.

🔹 3. Datastores NETCONF

NETCONF stocke les configurations dans des bases appelées datastores :

DatastoreRôle
runningConfig active
startupConfig au démarrage
candidateConfig en attente

📌 Candidate Configuration

  • Zone de test (staging).
  • Modifs non appliquées.
  • Application via <commit>.
  • Tout est validé d’un coup (transaction).

🔹 4. Pile de protocoles NETCONF

NETCONF repose sur 4 couches :

1️⃣ Transport

  • Principalement : SSH
  • Connexion persistante
  • Sécurisée (authentification, chiffrement)

➡️ Port par défaut : TCP 830


2️⃣ Messages

  • Basés sur XML
  • Types :
    • <rpc> (requête)
    • <rpc-reply> (réponse)
  • Identifiés par message-id

3️⃣ Operations

Commandes NETCONF principales :

OpérationRôle
<get>État + config
<get-config>Config uniquement
<edit-config>Modifier config
<copy-config>Copier datastore
<delete-config>Supprimer datastore
<lock> / <unlock>Verrouiller
<close-session>Fermeture
<kill-session>Forcer arrêt

4️⃣ Content

  • Données XML basées sur modèles.
  • Souvent dérivées de YANG.
  • Transportées dans <rpc>.

➡️ NETCONF transporte du XML conforme aux modèles.


🔹 5. Filtres NETCONF

Permettent de limiter les données reçues.

Exemple :

<filter type="subtree">

➡️ Récupère uniquement une partie ciblée (ex : interface eth0).


🔹 6. Fonctionnement d’une session NETCONF

Étapes classiques :

1️⃣ Connexion SSH sur port 830
2️⃣ Échange de <hello> (capacités)
3️⃣ Négociation client/serveur
4️⃣ Envoi <rpc>
5️⃣ Réponse <rpc-reply>


📌 Terminaison des messages

Tous les messages finissent par :

]]>]]>

➡️ Marque fin de transmission.


🔹 7. Capacités (Capabilities)

  • Envoyées dans <hello>.
  • Indiquent les fonctions supportées :
    • Version NETCONF
    • Validation
    • Rollback
    • Notifications
    • YANG library…

➡️ Client et serveur négocient leurs possibilités.


🔹 8. Exemple de connexion

Connexion SSH :

ssh -p 830 user@device -s netconf

🔹 9. Avantages clés de NETCONF

✅ Transactions atomiques
✅ Séparation config / état
✅ Rollback possible
✅ Automatisation fiable
✅ Standardisé (IETF)


🔹 10. Question Examen Importante

❓ Port NETCONF par défaut ?

TCP 830


🧠 Mémo Ultra-Rapide (Examen)

NETCONF = – SSH (830) – XML – RPC – YANG – Candidate → Commit – Running / Startup / Candidate – Transactionnel

📌 Fiche Résumé – Python ncclient & NETCONF


🔹 1. Qu’est-ce que ncclient ?

  • Bibliothèque Python open-source pour NETCONF.
  • Permet de communiquer avec des équipements réseau via NETCONF.
  • Traduit le XML NETCONF en objets Python.
  • Conforme à RFC 4741.
  • Simplifie l’automatisation réseau.

👉 Objectif : éviter de manipuler trop de XML à la main.


🔹 2. Rôle principal de ncclient

Ncclient gère automatiquement :

✅ Connexion client/serveur
✅ Authentification
✅ Échange des capacités
✅ Gestion de session
✅ Envoi/Réception RPC

➡️ Le développeur se concentre sur la logique métier.


🔹 3. Installation

pip install ncclient

Dépôt officiel :
👉 https://github.com/ncclient/ncclient


🔹 4. Connexion à un équipement

Import des modules

from ncclient import manager
import lxml.etree as ET

Connexion

device = manager.connect(
  host="csr1kv1",
  port=830,
  username="cisco",
  password="cisco",
  timeout=90,
  hostkey_verify=False
)

Paramètres importants

ParamètreRôle
hostAdresse équipement
portPort SSH (830)
username/passwordIdentifiants
timeoutDélai
device_paramsType d’équipement

🔹 5. Utilisation des filtres

Les filtres limitent les données retournées.

Exemple :

<filter>
  <interfaces>...</interfaces>
</filter>

➡️ Équivalent à un filtre RESTCONF.


🔹 6. Lire la configuration (GET)

Récupérer état + config

reply = device.get(('subtree', get_filter))

Affichage

print(ET.tostring(reply.data_ele, pretty_print=True))

➡️ Équivalent CLI : show interface


🔹 7. Lire la config uniquement (GET-CONFIG)

Depuis le datastore running

response = device.get_config('running', filter)

➡️ Équivalent CLI : show run


🔹 8. Modifier la configuration (EDIT-CONFIG)

Création du XML config

<config>...</config>

Envoi

device.edit_config(
  target='running',
  config=edit_gig1_conf
)

➡️ Équivalent CLI :

configure terminal
interface ...
description ...

🔹 9. Exemple d’usage typique

Lire interfaces

✔️ get()

Lire config interface

✔️ get_config()

Modifier interface

✔️ edit_config()

Vérifier

✔️ show run / get_config()


🔹 10. Avantages de ncclient

✅ Simple à utiliser
✅ Compatible multi-vendeurs
✅ Moins de XML manuel
✅ Basé sur standards
✅ Idéal pour scripts réseau


🧠 Mémo Ultra-Rapide (Examen)

ncclient =
- Python + NETCONF
- Port 830
- manager.connect()
- get()
- get_config()
- edit_config()
- XML + YANG

🎯 Workflow Classique

1. Connect 2. Filter 3. get / get_config 4. edit_config 5. Verify

🧩 RESTCONF — Fiche Résumé


🔹 1. Définition

RESTCONF est un protocole HTTP permettant de configurer et interroger les équipements réseau via des API REST, basées sur des modèles YANG.

👉 Il est comparable à NETCONF, mais fonctionne avec les méthodes REST classiques.


🔹 2. Caractéristiques principales

✅ Basé sur HTTP / HTTPS
✅ Utilise les modèles YANG
✅ Format JSON ou XML
✅ API via URL
✅ Stateless (sans session persistante)
✅ Écrit directement dans la running-config
❌ Pas de candidate configuration

👉 RESTCONF = version REST simplifiée de NETCONF


🔹 3. RESTCONF vs NETCONF

CritèreRESTCONFNETCONF
ConnexionStatelessSession persistante
TransportHTTP(S)SSH
FormatJSON / XMLXML
Candidate config
Simplicité⚠️ Plus complexe

🔹 4. Méthodes HTTP (Opérations)

MéthodeRôle
GETLire une config
POSTCréer
PUTRemplacer
PATCHModifier partiellement
DELETESupprimer

⚠️ Très important :

  • PATCH → ajoute/modifie sans supprimer
  • PUT → remplace TOUT ce qui n’est pas déclaré

👉 PUT = configuration déclarative


🔹 5. Correspondance RESTCONF / NETCONF

RESTCONFNETCONF
GET<get>, <get-config>
POST<edit-config create>
PUT<edit-config replace>
PATCH<edit-config merge>
DELETE<edit-config delete>

🔹 6. Formats de données

RESTCONF supporte :

✅ JSON (le plus utilisé)
✅ XML

Exemple Header :

HEADERS = {"Accept": "application/yang-data+json"}

ou

HEADERS = {"Accept": "application/yang-data+xml"}

🔹 7. Utilisation avec Python

RESTCONF fonctionne comme une API web classique.

Exemple simple :

import requests

AUTH = ("cisco","cisco")
HEADERS = {"Accept": "application/yang-data+json"}

response = requests.get(
 "https://csr1kv1/restconf/data/...",
 auth=AUTH,
 headers=HEADERS,
 verify=False
)

print(response.text)

👉 On utilise requests comme pour toute API REST.


🔹 8. Structure hiérarchique (JSON/YANG)

Les réponses sont arborescentes :

interface
 └── GigabitEthernet
     └── ip
         └── address
             └── primary

➡️ On peut cibler directement une info dans l’URL.


🔹 9. Accès ciblé via URL

Exemple : description de Gi4

/interface=GigabitEthernet/4/description

Adresse IP primaire :

/interface=GigabitEthernet/4/ip/address/primary

👉 L’URL suit exactement la hiérarchie YANG.


🔹 10. PATCH vs PUT (Point clé examen ⚠️)

✅ PATCH = Modification partielle

  • Ajoute
  • Met à jour
  • Ne supprime rien

Exemple :

  • Ajouter un réseau OSPF
  • Ajouter une IP secondaire

➡️ Safe 👍


❌ PUT = Remplacement total

PUT écrase tout ce qui n’est pas déclaré.

Exemple :

Si tu envoies :

{
 "primary": {
   "address": "10.1.22.1",
   "mask": "255.255.255.0"
 }
}

👉 Toutes les IP secondaires sont supprimées 😱

➡️ À utiliser avec prudence.


🔹 11. Concept clé : Configuration déclarative

Avec PUT :

« Voici l’état final que je veux. »

Le routeur :

❌ Supprime le reste
✅ Applique exactement ce que tu déclares

Avantage : cohérence
Risque : suppression involontaire


✅ Récap Express (à mémoriser)

📌 RESTCONF = API REST + YANG
📌 HTTP + JSON/XML
📌 Stateless → running-config direct
📌 GET = lire
📌 PATCH = modifier
📌 PUT = remplacer
📌 URLs = hiérarchie YANG
📌 Très utilisé en automation réseau

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Retour en haut