OpenFlow en tant que Southbound API
Introduction: OpenFlow est un protocole clé dans les réseaux SDN (Software Defined Network). Il permet de séparer le
plan de contrôle du plan de données : le contrôleur SDN centralise toutes les décisions réseau (routage, filtrage, QoS...),
tandis que les commutateurs et routeurs se contentent d’exécuter les instructions reçues. Grâce à OpenFlow, le contrôleur
peut programmer les équipements et recevoir en retour des informations sur l’état du réseau, ce qui lui donne une vue
globale abstraite du réseau physique. Cette vue est utilisée par les applications SDN, via une API, pour mettre en œuvre
des services réseau intelligents et dynamiques : sécurité, gestion de flux, qualité de service, etc. OpenFlow rend possible
une gestion réseau centralisée, flexible et automatisée, propre au modèle SDN.
Le concept OpenFlow: OpenFlow, c’est une nouvelle manière de contrôler les réseaux informatiques. Avant, chaque
appareil (comme un routeur ou un switch) décidait quoi faire avec les données. Avec OpenFlow, c’est un programme
central (appelé contrôleur) qui donne les ordres à tous les appareils du réseau. Ce système utilise des commutateurs
Ethernet modernes (c’est-à-dire des boîtiers qui font circuler les données) qui ont déjà des tables de flux. Une table de
flux, c’est comme une liste de règles pour savoir quoi faire avec chaque donnée (par exemple : bloquer, rediriger, compter,
etc.). OpenFlow utilise ces tables sans changer le matériel (pas besoin d’acheter de nouveaux appareils), et permet de faire
des tests sur le réseau réel sans le casser.
Pourquoi OpenFlow? OpenFlow permet de séparer deux fonctions dans un réseau :
1. Le plan de contrôle : décide quoi faire avec les données (par exemple, les envoyer, les bloquer, etc.).
2. Le plan de données : fait circuler les données dans le réseau.
Avec OpenFlow, les switchs (commutateurs) ne s’occupent que de transférer les données, ce qui les rend plus rapides et
plus légers.
Toutes les décisions intelligentes sont prises par un ordinateur central appelé contrôleur.
Cette séparation permet :
• d’avoir un réseau plus rapide (haut débit),
• d’optimiser les équipements pour qu’ils soient plus efficaces,
• et de simplifier le traitement des données.
Un flux de données, ici, signifie un ensemble de paquets identifiés par des informations comme les adresses et ports (des
couches 2, 3 et 4 du réseau).
Le protocole OpenFlow : OpenFlow est un protocole ouvert : cela veut dire qu’il peut être utilisé librement par différents
appareils et fabricants.
Il permet au contrôleur d’envoyer des règles aux commutateurs (switchs).
Ces règles, appelées flow entries, disent par exemple :
• quels paquets reconnaître (selon l’adresse IP, le port, etc.),
• et quoi faire avec ces paquets (les bloquer, les envoyer à un certain port, ajouter un tag...).
Grâce à ces règles :
• le contrôleur peut programmer le comportement des switchs,
• il peut aussi collecter des infos sur ce qui se passe dans le réseau.
Cela donne au contrôleur une vue globale du réseau, comme une carte simplifiée.
Avec cette vue, il peut décider quoi faire : gérer le trafic, répartir les données, sécuriser le réseau, etc.
Et comme OpenFlow est un standard, il fonctionne avec n’importe quel appareil compatible, même si les marques sont
différentes.
Les messages du protocole OpenFlow: Il existe 3 grands types de messages échangés entre le contrôleur et le
commutateur (switch) dans le protocole OpenFlow :
1. Messages du contrôleur vers le switch
Ce sont les plus importants. Ils servent à :
a) Configurer le switch
• SET_CONFIG : régler le comportement du switch.
• FEATURES_REQUEST / REPLY : demander et recevoir les capacités du switch.
• GET_CONFIG_REQUEST / REPLY : demander la configuration actuelle.
b) Envoyer des commandes
• PACKET_OUT : dire au switch quoi faire avec un paquet précis.
• FLOW_MOD : ajouter, modifier ou supprimer une règle dans le switch.
• PORT_MOD : changer l’état d’un port (activer/désactiver par exemple).
c) Demander des statistiques
• STATS_REQUEST / REPLY : obtenir des infos sur le trafic et les règles utilisées.
d) Gérer la qualité de service (QoS)
• QUEUE_GET_CONFIG_REQUEST / REPLY : connaître la configuration des files d’attente d’un port (pour contrôler
la vitesse ou le délai d’envoi).
e) Vérifier la réception des messages
• BARRIER_REQUEST / REPLY : s’assurer que tous les messages précédents ont été reçus et traités.
2. Messages asymétriques (de base)
Échangés automatiquement par le switch ou le contrôleur :
• HELLO : pour se dire bonjour et connaître la version d’OpenFlow utilisée.
• ECHO_REQUEST / REPLY : pour tester la connexion (comme un "ping").
3. Messages asynchrones (du switch vers le contrôleur)
Envoyés sans demande préalable, pour informer le contrôleur :
• FLOW_REMOVED : une règle a été supprimée.
• PACKET_IN : un paquet inconnu arrive, le switch demande quoi faire.
• ERROR : signaler une erreur.
• PORT_STATUS : signaler un changement sur un port (par exemple s’il est coupé ou activé).
Etablissement d’une connexion contrôleur- switch OpenFlow : Quand un commutateur OpenFlow démarre, il doit se
connecter à un contrôleur. Voici les 3 cas possibles :
Cas 1 – Connexion réussie
• Le commutateur connaît l’adresse IP du contrôleur.
• Il envoie un message HELLO avec sa version d’OpenFlow.
• Le contrôleur répond avec un message HELLO, indiquant
la version qu’ils vont utiliser.
La connexion est établie correctement.
Cas 2 – Version incompatible
• Le commutateur envoie un HELLO avec sa version.
• Le contrôleur ne supporte pas cette version.
• Il répond avec un message ERROR.
La connexion échoue à cause d’une incompatibilité de
version.
Cas 3 – Aucun contrôleur ne répond
• Le commutateur envoie un HELLO, mais n’a pas de réponse.
• Il essaie de contacter d’autres contrôleurs configurés.
• Si aucun ne répond, il passe en mode d’urgence (EMERGENCY
MODE).
Il fonctionne seul avec ses propres règles, et supprime les paquets
inconnus.
Composants d’un réseau OpenFlow: OpenFlow est une architecture conçue
pour les réseaux virtuels, où le plan de contrôle est centralisé dans un contrôleur SDN, et les équipements réseau
(commutateurs) exécutent uniquement le plan de données. Le protocole OpenFlow permet la communication entre le
contrôleur et les commutateurs. le protocole OpenFlow définissant tous les messages échangés entre les contrôleurs et
les commutateurs et permettant de standardiser la communication.
1. Switch OpenFlow
• Il contient des tables de flux qui analysent les paquets selon plusieurs critères (adresses IP, MAC, ports...).
• Deux types de switch :
o OpenFlow-only : tout le trafic suit les règles Openflow du contrôleur.
o OpenFlow-enabled : peut traiter certains flux localement via le plan de contrôle traditionnel et d'autres
via SDN (mode hybride). Son fonctionnement est résumé comme suit :
Quand un paquet arrive sur le switch :
1. Il vérifie la table OpenFlow (contrôlée par le contrôleur SDN) :o S’il y a une règle correspondante, le paquet est traité via
OpenFlow
2. Sinon, il passe au plan de contrôle local du switch : Il est alors traité comme un paquet normal (MAC learning, etc.). Cela
permet au switch de gérer certains flux de manière programmée (SDN) tout en continuant à gérer le reste de manière
autonome.La figure ci-dessous illustre les principales fonctions d’un commutateur OpenFlow:
2. Canal sécurisé: Le canal sécurisé est le lien de communication entre un s witch OpenFlow et le contrôleur SDN. Il permet au
contrôleur de re cevoir des messages et de gérer le switch à distance.
Ce canal doit être s é curisé pour garantir des échanges fiables. Les communications passent par une s e ssion TCP (port 6653)
ou via une connexion chiffrée SSL/TLS.
3. Table de flux (Flow Table) :Contient :
1)Champs de correspondance (Match Fields) : Ce sont des critères utilisés par le switch pour identifier les paquets. Le
switch vérifie des éléments comme : Adresse MAC source/destination, Adresse IP source/destination,Type de protocole
(IPv4, ARP, etc.),Port d’entrée,VLAN.
Ces champs sont définis par le contrôleur SDN via des règles de flux.
2) Compteurs (Counters) : Associés à chaque règle, ils enregistrent le nombre de paquets et d’octets correspondant à
cette règle. Ces statistiques aident le contrôleur à analyser le trafic en temps réel et à ajuster les règles pour optimiser le
réseau.
3) Instructions :Ce sont des actions que le switch applique aux paquets. Les principales sont :
o Apply-Actions : appliquer immédiatement une action (ex. redirection).
o Clear-Actions : supprimer les actions en attente.
o Write-Actions : ajouter des actions à appliquer plus tard.
o Write-Metadata : ajouter des données pour indiquer un traitement spécial (ex. priorité QoS).
o Goto-Table : envoyer le paquet vers une autre table pour un traitement complémentaire.
4. Table de groupes: La table de groupes dans OpenFlow sert à regrouper plusieurs actions sous un même objet appelé
groupe. Cela permet de traiter un paquet de plusieurs façons simultanément, ce qui simplifie les règles de flux et rend le
traitement plus flexible. Elle offre plusieurs avantages :
1. Multicast/Broadcast : envoie un même paquet à plusieurs destinations.
2. Répartition de charge (Load Balancing) : répartit le trafic sur plusieurs ports pour équilibrer le réseau.
3. Actions complexes : permet d’exécuter plusieurs actions enchaînées (ex. filtrage, routage, QoS).
4. Simplification des règles : rend les tables de flux plus légères et plus faciles à gérer.
5. Table de métrage : La table de métrage dans OpenFlow contient des compteurs qui mesurent le trafic réseau sur les
ports des commutateurs. Ces données servent à : analyser le trafic,,appliquer des politiques de gestion (priorisation,
limitation, etc.) et optimiser le réseau en temps réel.
6. Contrôleur SDN: Le contrôleur SDN est le cerveau du réseau.
Il centralise la gestion, automatise les opérations et prend les décisions intelligentes pour acheminer le trafic de façon
optimale.
Il utilise le protocole O penFlow pour communiquer avec les équipements (commutateurs, routeurs) et les configurer.
Il offre une vue globale du réseau, facilite son administration et permet une i ntégration facile des applications d'entreprise. Le
tableau suivant présente une étude comparative entre les contrôleurs SDN:
8- Fonctionnement du réseau OpenFlow:Le réseau OpenFlow fonctionne selon un principe où les commutateurs
(switchs) suivent les règles définies par un contrôleur SDN. Quand un paquet arrive : Le switch l’analyse.S’il ne connaît
pas quoi faire, il envoie une demande (PACKET_IN) au contrôleur. Le contrôleur répond avec une instruction
(PACKET_OUT) indiquant comment traiter le paquet. Ce fonctionnement est réactif, car le switch demande une règle au
moment où il en a besoin. Il peut aussi être proactif si le contrôleur envoie les règles à l’avance.
Traitement des paquets dans un switch OpenFlow :Le switch compare le paquet avec les règles de sa table de flux.
1. S’il y a correspondance, il :
o Met à jour les compteurs,
o Applique les instructions (ex : redirection, routage, QoS...).
2. S’il n’y a aucune correspondance, il exécute une action spéciale (appelée table-miss) :
o soit il supprime le paquet,
o soit il le transmet au contrôleur,
o soit il le diffuse à toutes les interfaces.
Le traitement pipeline :
Chaque switch peut avoir plusieurs tables de flux. Le traitement suit un pipeline, c’est-à-dire :
1. Le paquet arrive dans le switch (depuis un port physique) et entre dans la table 0.
2. Le switch cherche une règle correspondante avec la priorité la plus élevée.
3. Si la règle contient une instruction goto_table, le paquet continue vers la table
suivante..
4. Sinon, il quitte le pipeline..
En règle générale, chaque paquet est traité par une seule entrée de table de flux, tandis que on
peut avoir plusieurs instructions ou actions dans une seule entrée.