Le SDN (Software-Defined Networking) est une approche révolutionnaire dans le domaine du réseau qui transforme la façon dont les réseaux sont conçus, gérés et opérés. Sa caractéristique la plus notable est sa capacité à centraliser la gestion du Control Plane, ou plan de contrôle, des réseaux. Voici une présentation plus détaillée de cette capacité et de ses implications :
En résumé, le SDN transforme la gestion des réseaux en centralisant le Control Plane, offrant ainsi une gestion simplifiée, une plus grande agilité, une automatisation accrue, et une optimisation du trafic. Cette approche moderne ouvre la voie à des réseaux plus intelligents, plus efficaces et mieux adaptés aux défis technologiques actuels et futurs.
Le contrôleur SDN doit communiquer avec nos dispositifs réseau pour programmer le plan de données. Ceci est réalisé via l’interface sud (southbound interface). Il ne s’agit pas d’une interface physique, mais plutôt d’une interface logicielle, souvent une API (Application Programming Interface).
Une API est une interface logicielle qui permet à une application de donner accès à d’autres applications en utilisant des fonctions et des structures de données prédéfinies. Je vais expliquer cela plus en détail dans un instant.
Quelques interfaces sud populaires sont :
L’interface nord (northbound interface) est utilisée pour accéder au contrôleur SDN lui-même. Cela permet à un administrateur réseau d’accéder au SDN pour le configurer ou pour récupérer des informations. Cela pourrait être fait via une GUI, mais elle offre également une API qui permet à d’autres applications d’accéder au contrôleur SDN. Vous pouvez l’utiliser pour écrire des scripts et automatiser votre administration réseau. Voici quelques exemples :
Voici une illustration pour vous aider à visualiser cela :
Via l’API, plusieurs applications sont capables d’accéder au contrôleur SDN :
J’ai mentionné à plusieurs reprises que les interfaces nord (northbound) et sud (southbound) utilisent des APIs. Examinons de plus près ce qu’est une API. Les contrôleurs SDN utilisent généralement une API REST (Representational State Transfer).
L’API REST utilise des messages HTTP pour envoyer et recevoir des informations entre le contrôleur SDN et une autre application. Elle utilise les mêmes messages HTTP que ceux utilisés lorsque vous naviguez sur une page web sur Internet ou lorsque vous remplissez un formulaire de contact en ligne :
Cela ressemble à la navigation sur une page web, mais cette fois, vous ne demandez pas une page web ou une image mais un objet particulier du contrôleur SDN, par exemple, une liste de tous les VLANs dans le réseau.
Lorsque le contrôleur SDN reçoit la requête HTTP GET, il répondra avec une réponse HTTP GET contenant les informations demandées. Ces informations sont livrées dans un format de données commun. Les deux formats de données les plus utilisés sont :
Voici un exemple pour vous aider à visualiser cela :
sdn controller northbound http get
Ci-dessus, nous avons un script python qui utilise HTTP GET pour récupérer l’URL suivante via l’API :
https://192.168.1.1:8443/sdn/v2.0/net/nodes
Cette URL va récupérer certaines des variables disponibles, par exemple, des informations sur tous les nœuds (hôtes) du réseau.
Une fois que l’API reçoit cela, elle répondra avec un message de réponse HTTP GET :
Les variables demandées seront fournies au format JSON. Voici à quoi cela ressemble :
{
"nodes": [
{
"ip": "172.16.1.1",
"mac": "fa16.3e5d.f1f4",
"vid": 0,
"dpid": "00:00:00:00:00:00:00:03",
"port": 1
}, {
"ip": "172.16.1.2",
"mac": "fa16.3e5d.f1f5",
"vid": 0,
"dpid": "00:00:00:00:00:00:00:03",
"port": 2
}
]
}
Même si vous n’avez jamais vu du JSON auparavant, la sortie ci-dessus est facile à lire. Elle nous indique que nous avons deux nœuds sur le réseau, leurs adresses IP et MAC.
La leçon que nous avons abordée devrait vous donner une compréhension générale du concept de SDN (Software-Defined Networking) et pourquoi il est de plus en plus recherché dans le secteur. Dans des leçons futures, j’aborderai des exemples concrets de configurations pour des solutions SDN telles qu’Open SDN, Openflow, OpenDayLight, Cisco ACI et Cisco APIC-EM.
Quant à l’avenir des réseaux, il est probable qu’à l’avenir, l’utilisation des API devienne plus courante que celle de la ligne de commande (CLI). Est-ce un changement problématique ? À mon avis, non. Un programmeur spécialisé en C/C++, Java ou Python doit aussi comprendre les réseaux. Savoir exécuter des scripts simples avec un langage de programmation est un atout ; il n’est pas nécessaire de développer une application complète, cela relève de la compétence d’un programmeur.
Il est cependant conseillé d’apprendre un langage de programmation comme Python et de se familiariser avec les API. Bien que l’avenir exact du SDN soit encore incertain, nous pourrions assister à un changement similaire à celui qu’a connu la téléphonie analogique. De nombreux experts en téléphonie traditionnelle qui ont choisi de ne pas se mettre à jour avec la VoIP se sont retrouvés dépassés dans un monde désormais dominé par cette technologie.