BUT3 · R5.ROM.11 (R511) Terminé
Mininet et SDN OpenFlow : piloter un réseau par ses tables de flux
J'ai piloté un réseau émulé sous Mininet sans contrôleur, en rétablissant la connectivité protocole par protocole avec des règles de flux OpenFlow.
Contexte et objectif
Ce TP porte sur l'émulation de réseaux et sur le paradigme SDN (Software Defined Networking). L'objectif était double : monter un réseau virtuel réaliste avec Mininet, puis exploiter le protocole OpenFlow pour piloter explicitement le comportement de commutateurs virtuels, d'abord à la main, ensuite par automatisation en Python.
Ce que j'ai réalisé
- J'ai installé Mininet et Open vSwitch sur une VM Debian 13 hébergée sous Hyper-V.
- J'ai lancé une topologie en arbre de trois commutateurs OpenFlow sans contrôleur, et constaté qu'aucune trame ne circulait (0 paquet reçu sur 12).
- J'ai rétabli la connectivité protocole par protocole en ajoutant des règles de flux : d'abord ARP, puis ICMP.
- J'ai interprété une règle de filtrage de niveau 4 (accès à un serveur de base de données depuis un sous-réseau client).
- J'ai adapté et corrigé un script Python (à partir de l'exemple de l'énoncé) qui reconstruit la topologie et installe automatiquement les flux sur les trois commutateurs.
- J'ai mis en place un routeur virtuel entre deux sous-réseaux et prouvé le routage par l'observation du TTL.
Difficultés rencontrées et solutions
- Le script d'installation officiel, figé en 2023, échouait à trois reprises sur Debian 13 (
sudoabsent, paquet renommé, PEP 668 qui interdit les installations globales par pip) : j'ai abandonné le script au profit des paquets de la distribution. - Un contrôleur de test, actif par défaut, aurait faussé la démonstration : je l'ai désactivé.
- Mes scripts importaient les sources clonées au lieu de la bibliothèque installée : je les ai placés dans un répertoire distinct.
- Le pont cité par l'énoncé n'existait pas dans la topologie : j'ai appliqué la règle sur le commutateur réellement concerné.
Résultats
- Passage de 100 % de perte à 0 % (12 paquets reçus sur 12) sur une topologie identique, par simple installation de règles de flux.
- Compteurs de flux vérifiés au paquet près (42 octets par trame ARP, 98 octets par paquet ICMP).
- Routage inter-sous-réseaux validé : TTL de 64 en local, 63 après traversée du routeur.
Ce que j'en retiens
Un commutateur OpenFlow n'a aucune intelligence propre : son plan de données n'exécute que ce que le plan de contrôle a inscrit dans ses tables. Cette inertie est aussi une garantie de sécurité, puisque rien n'est transmis sans décision explicite. J'en retiens surtout une méthode de diagnostic transposable à un réseau de production : distinguer un rejet par le commutateur d'un échec de résolution local, et confronter les compteurs au trafic attendu.
Technologies
- Mininet 2.3
- Open vSwitch 3.5
- OpenFlow 1.3
- ovs-ofctl
- Python 3
- espaces de noms réseau
- Debian 13
- Hyper-V
- ARP
- ICMP
En images





