Qui décide, et qui fait passer les paquets ?
Le plan de contrôle d’un réseau décide où doivent aller les paquets, et le plan de données les fait passer. Les séparer permet de changer une règle pour tout un campus depuis un seul programme.
Une université compte 40 commutateurs répartis dans 12 bâtiments. Elle veut que le Wi-Fi des invités n’atteigne jamais le réseau de la scolarité. Dans un réseau défini par logiciel, ou SDN, on écrit cette règle une fois et un programme la distribue.
À la fin de cette leçon
Remarque
Je peux dire ce qu’un contrôleur décide et ce que fait un commutateur.
Mots-clés
| Mot | Ce que ça veut dire |
|---|---|
| Plan de contrôle | la partie qui décide où vont les paquets |
| Plan de données | la partie qui fait passer chaque paquet |
| Commutateur | un appareil qui relie des machines et transmet leurs paquets |
| Contrôleur | un programme qui écrit les règles des commutateurs |
| Règle de flux | une règle du commutateur : si le paquet ressemble à ceci, faire cela |
| OpenFlow | le langage que parlent un commutateur et son contrôleur |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un commutateur ordinaire décide tout seul
Dans un réseau classique, chaque commutateur contient à la fois la décision et l’exécution. Il apprend les adresses, choisit les chemins et fait passer les paquets.
Pour changer une règle, un technicien se connecte à chaque appareil. Avec 40 commutateurs, c’est long, et il est facile d’en oublier un.
Dans un SDN, un contrôleur décide
Un commutateur SDN ne garde que le plan de données : il compare chaque paquet à une table et applique l’action trouvée. Il ne décide plus rien lui-même.
Le plan de contrôle devient un programme, le contrôleur. Il écrit les règles dans les commutateurs par OpenFlow. Le contrôleur est lent mais voit tout le réseau, le commutateur est rapide mais ne voit que ses paquets.
Exemple travaillé : à quel plan appartient chaque travail ?
| Travail | Plan | Pourquoi |
|---|---|---|
| Calculer le chemin entre deux bâtiments | Contrôle | On le décide une fois, pour tous les paquets |
| Recevoir un paquet sur un port | Données | Il se fait pour chaque paquet |
| Écrire une règle dans le commutateur | Contrôle | On donne la règle, on ne la suit pas |
| Copier le paquet sur le port choisi | Données | C’est l’action de la règle |
| Jeter un paquet interdit | Données | C’est encore une action de la règle |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Le commutateur du labo n’a pas de contrôleur
Dans votre labo, le commutateur s’appelle br0. Il est fait par Open vSwitch, un commutateur logiciel. Si sudo sdnlab status dit que le labo n’est pas démarré, lancez sudo sdnlab flows.
Trois commandes montrent la séparation. La première demande son contrôleur : dans un labo neuf, rien ne s’affiche, car il n’en a pas. La deuxième montre qui fait passer les paquets, la troisième ce que fait le commutateur quand il est seul.
Quel est son contrôleur ?
sudo ovs-vsctl get-controller br0Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Qui fait passer les paquets ?
sudo ovs-vsctl get bridge br0 datapath_typeAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Que fait-il sans contrôleur ?
sudo ovs-vsctl get-fail-mode br0Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Exemple travaillé : lire les trois réponses
| Commande | Réponse | Ce que cela veut dire |
|---|---|---|
| get-controller | Rien | Aucun contrôleur n’est connecté à br0 |
| get bridge br0 datapath_type | system | Le noyau Linux fait passer les paquets |
| get-fail-mode | secure | Sans contrôleur, il ne suit que ses propres règles |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Erreur fréquente
Attention
Beaucoup de gens pensent que le contrôleur voit passer chaque paquet. Ce serait trop lent. Le commutateur ne lui envoie que les paquets sans règle correspondante, et le contrôleur répond souvent par une règle. Les paquets suivants passent alors sans lui.