Introduction
L’évolution des réseaux informatiques a connu une transformation fondamentale ces dernières années, passant d’une approche principalement manuelle à une vision automatisée et programmable. Cette évolution n’est pas simplement une tendance technologique, mais une réponse nécessaire à la complexité des infrastructures réseau modernes. La version 1.1 du Cisco CCNA reconnaît cette réalité en introduisant l’automatisation et de la programmabilité des réseaux.
Les Fondements de l’Automatisation Réseau
L’automatisation réseau représente la capacité à configurer, déployer, gérer et tester des dispositifs et services réseau de manière automatisée plutôt que manuelle.
Fini les commandes passées à la mano sur une console Cisco.
Modèles de Contrôleur et Architecture Centralisée
Du Contrôle Distribué au Contrôle Centralisé
Traditionnellement, les réseaux fonctionnaient selon un modèle distribué où chaque équipement (routeur, commutateur) prenait ses propres décisions basées sur sa vision locale du réseau. Cette approche présentait des limitations significatives en termes de cohérence et d’adaptabilité.
L’architecture basée sur les contrôleurs représente une énorme évolution chez Cisco. Dans ce modèle, un contrôleur central possède une vision globale du réseau et prend les décisions que les équipements exécutent. Pour comprendre cette différence, imaginez la distinction entre un orchestre sans chef (chaque musicien joue selon sa propre interprétation) et un orchestre dirigé (où le chef d’orchestre assure cohérence et harmonie).
Architecture Contrôleur-Agent
Dans l’architecture contrôleur-agent, deux composants principaux interagissent :
- Le contrôleur : Cerveau du réseau, il maintient une vue complète de la topologie et de l’état du réseau. Il calcule les politiques et les chemins optimaux, puis communique ces décisions aux agents.
- Les agents : Présents sur chaque équipement réseau, ils exécutent les instructions reçues du contrôleur et lui remontent des informations sur leur état et celui de leurs connexions.
Cette séparation entre « penser » (contrôleur) et « agir » (agents) permet une gestion plus intelligente et réactive du réseau. Par exemple, en cas de congestion détectée sur un lien, le contrôleur peut rapidement recalculer des chemins alternatifs et instruire tous les équipements concernés d’adapter leur comportement de routage.
Avantages de la Centralisation
La centralisation du contrôle réseau offre plusieurs bénéfices substantiels :
- Vision globale : Contrairement aux équipements traditionnels qui ne voient que leurs voisins directs, le contrôleur possède une vue complète de la topologie, permettant des décisions plus éclairées.
- Cohérence des politiques : Les règles et politiques sont définies une seule fois au niveau du contrôleur et appliquées uniformément à travers tout le réseau.
- Simplicité d’opération : Les administrateurs interagissent principalement avec le contrôleur via des interfaces unifiées, réduisant la nécessité de configurer individuellement chaque équipement.
- Agilité accrue : Les changements de politique peuvent être déployés instantanément à l’échelle du réseau entier.
Un exemple concret de cette approche est Cisco DNA Center, qui fonctionne comme un contrôleur centralisé pour l’ensemble du réseau d’entreprise.
Protocoles de Programmabilité Réseau
Pour permettre la communication entre contrôleurs et équipements réseau, plusieurs protocoles standardisés ont été développés. Ces protocoles constituent la colonne vertébrale de l’automatisation réseau.
NETCONF (Network Configuration Protocol)
NETCONF est un protocole qui permet d’installer, manipuler et supprimer la configuration des équipements réseau. Développé par l’IETF, il utilise un modèle client-serveur où le contrôleur agit comme client et l’équipement réseau comme serveur.
Contrairement aux méthodes traditionnelles comme Telnet ou SSH qui traitent les configurations comme du texte brut, NETCONF structure les données de configuration, offrant plusieurs avantages :
- Transactions atomiques : Les modifications de configuration sont appliquées dans leur intégralité ou pas du tout, évitant les états inconsistants.
- Validation intégrée : NETCONF vérifie la validité des configurations avant leur application.
- Rollback automatique : En cas d’erreur, le système peut revenir automatiquement à l’état précédent.
Un exemple simplifié d’opération NETCONF serait :
Cette commande configurerait l’interface GigabitEthernet1 avec une description spécifique et l’activerait.
RESTCONF
RESTCONF est une extension de NETCONF qui utilise les principes REST (Representational State Transfer) et le format JSON, plus léger et plus facile à manipuler pour les développeurs. Il expose les données et opérations NETCONF via une API HTTP/HTTPS.
La même configuration que ci-dessus pourrait s’exprimer en RESTCONF via une requête HTTP PUT :
RESTCONF simplifie l’intégration avec les outils de développement modernes et facilite l’automatisation via des scripts ou des plateformes d’orchestration.
gRPC
gRPC (Google Remote Procedure Call) est un framework RPC open source développé par Google qui permet des communications client-serveur hautement efficaces. Il utilise HTTP/2 pour le transport et Protocol Buffers pour le sérialisation des données, offrant des performances supérieures aux approches REST traditionnelles.
Dans le contexte des réseaux Cisco, gRPC est utilisé notamment dans le modèle gNMI (gRPC Network Management Interface) qui permet :
- Des communications bidirectionnelles en temps réel
- La télémétrie en streaming pour surveiller l’état du réseau
- Des opérations de configuration à haute performance
L’efficacité de gRPC en fait un choix privilégié pour les environnements nécessitant des mises à jour fréquentes ou un monitoring en temps réel.
Formats de Données pour l’Automatisation
L’un des piliers de l’automatisation réseau est l’utilisation de formats de données structurées qui peuvent être facilement traités par des machines tout en restant lisibles par les humains.
YANG (Yet Another Next Generation)
YANG est un modèle de données essentiel qui sous-tend NETCONF et RESTCONF. Il définit la structure, la syntaxe et la sémantique des données de configuration et d’état des équipements réseau. Les modèles YANG standardisent la représentation des fonctionnalités réseau, facilitant l’interopérabilité entre équipements et systèmes d’automatisation.
XML (eXtensible Markup Language)
XML est un format de balisage flexible utilisé depuis longtemps dans les systèmes informatiques. Dans le contexte réseau, il est le format natif de NETCONF. Ses caractéristiques principales sont :
- Structure hiérarchique : Permet de représenter des relations complexes entre éléments
- Schémas de validation : Via DTD ou XSD, assurant l’intégrité des données
- Parseurs largement disponibles : Facilitant le traitement dans presque tous les langages
XML est verbeux mais complet, ce qui le rend particulièrement adapté aux systèmes nécessitant une documentation exhaustive des structures de données.
JSON (JavaScript Object Notation)
JSON est devenu le format d’échange de données dominant pour les applications web et les API modernes, y compris RESTCONF. Plus compact que XML, il présente plusieurs avantages :
- Syntaxe légère : Moins de caractères pour représenter les mêmes informations
- Parsing plus rapide : Traitement plus efficace par les applications
- Correspondance directe avec les structures de données dans de nombreux langages de programmation
- Lisibilité naturelle pour les humains
Un exemple de configuration réseau en JSON :
YAML (YAML Ain’t Markup Language)
YAML est souvent privilégié pour les fichiers de configuration humainement lisibles et éditables. Sa syntaxe minimaliste facilite la création et la modification manuelles :
- Indentation significative au lieu de délimiteurs explicites
- Références et ancres permettant de réutiliser des éléments
- Support natif des types scalaires (nombres, booléens, etc.)
La même configuration en YAML s’écrirait :
YAML est particulièrement apprécié dans les outils d’automatisation comme Ansible, où les playbooks sont écrits dans ce format.
Conversion entre Formats
L’interopérabilité entre ces formats est cruciale dans les environnements hétérogènes. Des bibliothèques comme PyYAML, json, et xmltodict en Python permettent de convertir facilement les données entre ces formats :
Cette flexibilité permet d’adapter les formats aux besoins spécifiques de chaque composant de l’écosystème d’automatisation.
Impact sur l’Architecture et l’Exploitation des Réseaux
L’adoption de ces technologies d’automatisation et de programmabilité transforme fondamentalement la conception et l’exploitation des réseaux. Cisco l’a bien compris et a développé des outils et ses technologies depuis de nombreuses années pour aller dans cette direction.
Passage d’un Paradigme Impératif à Déclaratif
Traditionnellement, les réseaux étaient configurés de manière impérative : les administrateurs spécifiaient exactement comment effectuer chaque tâche (les fameuses séquences précises de commandes CLI). L’automatisation favorise une approche déclarative où l’on spécifie ce qui doit être accompli, laissant au système le soin de déterminer comment y parvenir.
Cette transition est comparable au passage de l’assembleur à des langages de haut niveau en programmation : on gagne en abstraction, en lisibilité et en maintenabilité. Mais j’avoue ce fut un beau changement pour les techniciens et ingénieurs reseau car il y a une forte composante de développement informatique.
Infrastructure as Code (IaC)
L’automatisation permet de gérer l’infrastructure réseau comme du code source, apportant plusieurs avantages issus des pratiques de développement logiciel :
- Versionnement : Les configurations peuvent être stockées dans des systèmes comme Git, permettant de suivre leur évolution et de revenir à des versions antérieures si nécessaire.
- Tests automatisés : Les changements peuvent être validés dans des environnements de test avant déploiement en production.
- Déploiement continu : Les modifications peuvent être déployées automatiquement après validation, réduisant les délais d’implémentation.
- Documentation vivante : Le code d’infrastructure sert lui-même de documentation toujours à jour.
Nouvelles Compétences pour les Professionnels Réseau
Cette évolution requiert une transformation des compétences des ingénieurs réseau, qui doivent désormais maîtriser :
- Des langages de programmation (particulièrement Python)
- Les principes d’API et d’intégration
- La pensée algorithmique et l’automatisation
- La gestion de données structurées
- Les méthodologies DevOps
Ces nouvelles compétences ne remplacent pas l’expertise réseau traditionnelle mais la complètent, créant un profil d’ingénieur réseau plus polyvalent et plus aligné avec les besoins des entreprises numériques modernes.
Conclusion
L’automatisation et la programmabilité réseau représentent bien plus qu’une simple évolution technologique ; elles constituent un changement fondamental dans la façon dont les réseaux sont conçus, déployés et gérés.
La maîtrise des modèles de contrôleur, des protocoles comme NETCONF, RESTCONF et gRPC, ainsi que des formats de données structurées (XML, JSON, YAML) est essentielle pour le CCNA