TP 10 : Cisco IOS-XE – Télémétrie et NETCONF
Module : 3 – Standards industriels (YANG) et approche Cloud/SDN
Durée indicative : 2h
Prérequis : TP 9 terminé (même routeur), Python 3, pip install ncclient
Objectifs
- Interagir avec un routeur Cisco IOS-XE via NETCONF (SSH/XML).
- Utiliser les datastores
runningetcandidate. - Découvrir le principe de la télémétrie streaming (push).
Contexte
Vous comparez, sur le même équipement que le TP 9, l’approche transactionnelle NETCONF à l’approche REST légère de RESTCONF.
Étape 1 – Activation de NETCONF
configure terminal
netconf-yang
endVérifiez le port d’écoute (830/TCP par défaut) :
ssh [email protected] -p 830 -s netconfÉtape 2 – Premher appel avec ncclient
from ncclient import manager
with manager.connect(
host="192.168.1.1", port=830,
username="api-user", password="VotreMotDePasse",
hostkey_verify=False
) as m:
config = m.get_config(source="running")
print(config)Étape 3 – Lecture ciblée avec un filtre XML
filter_xml = """
<filter>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"/>
</filter>
"""
with manager.connect(host="192.168.1.1", port=830, username="api-user",
password="VotreMotDePasse", hostkey_verify=False) as m:
result = m.get_config(source="running", filter=filter_xml)
print(result)Étape 4 – Modification via candidate + commit
“candidate” passe par un état intermédiaire avant que “commit” ne l’applique dans “running”.
edit_data = """
<config>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>Loopback200</name>
<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:softwareLoopback</type>
<enabled>true</enabled>
</interface>
</interfaces>
</config>
"""
with manager.connect(host="192.168.1.1", port=830, username="api-user",
password="VotreMotDePasse", hostkey_verify=False) as m:
m.lock(target="candidate")
m.edit_config(target="candidate", config=edit_data)
m.commit()
m.unlock(target="candidate")Vérifiez sur le routeur : show ip interface brief.
Étape 5 – Comparaison NETCONF vs RESTCONF (pratique)
Reprenez la création de Loopback100 du TP 9 (RESTCONF) et Loopback200 de cette étape (NETCONF). Rédigez un tableau comparatif (temps d’écriture du script, lisibilité du payload XML vs JSON, gestion du verrouillage) basé sur votre expérience.
Étape 6 – Introduction à la télémétrie streaming (découverte)
Sur le routeur, configurez un abonnement de télémétrie simple (modèle YANG-Push, si supporté par l’image) :
telemetry ietf subscription 100
encoding encode-kvgpb
filter xpath /interfaces-ios-xe-oper:interfaces/interface
source-address 192.168.1.1
update-policy periodic 5000
receiver ip address 192.168.1.10 port 57500 protocol grpc-tcpNote : sans collecteur gRPC en face, cette étape reste démonstrative — l’objectif est de comprendre la configuration d’un abonnement push, pas de traiter le flux (hors périmètre de ce TP).
Rendu attendu
- Scripts Python (
ncclient) versionnés. - Le tableau comparatif NETCONF vs RESTCONF.
- Une capture de la configuration de l’abonnement de télémétrie.
Points de vérification
-
Loopback200est créée via le cyclelock→edit-config→commit→unlock. - Le tableau comparatif s’appuie sur des observations concrètes des deux TP.
- L’abonnement de télémétrie est visible dans
show telemetry ietf subscription all.