Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases des réseaux définis par logiciel

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de machine virtuelle11 min de lecture7 commandes

Une règle, cent commutateurs

Un établissement décide que le Wi-Fi invité ne doit jamais atteindre les ordinateurs de la comptabilité. Dans un réseau ordinaire, quelqu’un se connecte à chaque commutateur et le modifie à la main. Dans un réseau défini par logiciel, les commutateurs suivent seulement une table, et un seul programme écrit cette table pour tous.

À la fin de cette leçon

Remarque

Je peux dire ce que fait un flux et ce qu’apporte un contrôleur.

Mots-clés

  • Flux : une règle d’un commutateur, faite d’une condition et d’une action.
  • Table de flux : la liste des flux que le commutateur parcourt pour chaque paquet.
  • Condition (match) : la partie d’un flux qui dit à quels paquets il s’applique.
  • Action : ce que le commutateur fait d’un paquet qui correspond.
  • Contrôleur : un programme qui écrit les flux d’un commutateur.
  • OpenFlow : le langage que parlent un commutateur et son contrôleur.

Pour commencer : ce que tu sais déjà

Remarque

Réponds dans ta tête. 1. Que t’apprend ping ? 2. Qu’est-ce qu’une adresse MAC ? 3. Que fait un commutateur ordinaire d’une trame qu’il n’a jamais vue ? Tu as besoin de la troisième réponse dans un instant.

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de cette leçon. Ce lab est une machine Ubuntu entière, rien que pour toi, avec un petit réseau construit à l’intérieur : elle met un peu plus de temps à démarrer qu’un conteneur. Chaque bouton Exécuter tape sa commande dans le terminal de la machine, l’une après l’autre, dans la même session. Si l’un d’eux dit que la machine démarre encore, attends quelques secondes et appuie de nouveau. Pour les regarder, ou pour taper les tiens, appuie sur Ouvrir le terminal dans la barre.

Un commutateur est une table qu’on peut lire

Ici le commutateur est br0, fabriqué par Open vSwitch. Trois ordinateurs y sont branchés : h1, h2 et h3, chacun dans son propre espace de noms réseau, avec sa propre adresse. sdnlab status liste le commutateur, ses trois ports numérotés, les ordinateurs et les flux. La dernière partie est vide. Remarque que le commutateur est en fail-mode secure, ce qui veut dire : ne rien faire que les flux n’autorisent.

Commande
sudo sdnlab status

Affiché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.

Une table vide abandonne tout

Un commutateur ordinaire apprend tout seul. Un commutateur OpenFlow ne fait que ce que dit sa table de flux. ovs-ofctl dump-flows affiche cette table, et elle ne contient aucun flux : seule la ligne d’en-tête revient. Donc quand h1 envoie un ping à h2, le premier paquet ne trouve aucun flux qui lui correspond et il est abandonné. Le ping affiche 100% packet loss.

Commande
sudo ovs-ofctl -O OpenFlow13 dump-flows br0

Affiché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.

Commande
sudo ip netns exec h1 ping -c 1 -W 1 10.0.0.2

Affiché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.

Vérifie

Astuce

Pourquoi le ping a-t-il échoué alors que rien n’est cassé ? Réponse : la table de flux est vide, donc aucun flux n’a correspondu au paquet et le commutateur l’a abandonné.

Une erreur fréquente

Attention

Beaucoup pensent que tout commutateur apprend seul où sont les ordinateurs. Un commutateur Ethernet ordinaire le fait. Un commutateur OpenFlow ne fait que ce que disent ses flux, et sans flux il ne transmet rien. Que ce soit toi ou un contrôleur qui doive apprendre, quelqu’un doit écrire les flux.

Mininet construit un réseau entier

Mininet crée un réseau de test sur une seule machine : des hôtes, un commutateur et un contrôleur, démarrés et arrêtés pour toi. --test pingall envoie des pings entre chaque paire d’hôtes et affiche combien ont été perdus. Ici la réponse est 0% dropped (2/2 received). Son contrôleur a écrit les flux dont le commutateur avait besoin. Quand Mininet se termine, il efface tous les commutateurs Open vSwitch, br0 compris : l’étape suivante reconstruit donc le lab.

Commande
sudo mn --mac --test pingall

Affiché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.

Vérifie

Astuce

Qui a fait marcher les pings dans Mininet ? Réponse : son contrôleur, qui a dit au commutateur quoi faire des paquets qu’il ne connaissait pas.

Un contrôleur écrit les flux

sdnlab controller reconstruit le lab et relie br0 à un programme contrôleur sur cette machine. C’est celui, inachevé, de ton lab, et tel qu’il est fourni il envoie chaque paquet sur tous les autres ports, comme un hub. Maintenant le ping de h1 vers h3 marche. La table contient un seul flux : priority=0 actions=CONTROLLER. Il envoie au contrôleur tout paquet sans meilleur flux, et n_packets augmente à chaque paquet. Terminer ce contrôleur est la partie 3 du lab.

Commande
sudo sdnlab controller

Affiché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.

Commande
sudo ip netns exec h1 ping -c 2 -W 1 10.0.0.3

Affiché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.

Commande
sudo ovs-ofctl -O OpenFlow13 dump-flows br0

Affiché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.

Maintenant, fais le lab

Astuce

Tu as vu une table vide, un contrôleur et un commutateur qui l’interroge pour chaque paquet. Ton lab te demande d’écrire la table à la main, puis d’apprendre au contrôleur à apprendre, pour que la plupart des paquets ne quittent jamais le commutateur. Ouvre le fichier README.md de ton dossier personnel avec cat README.md dans le terminal.

Vérification finale

Astuce

Réponds sans regarder en arrière. 1. Quelles sont les deux parties d’un flux ? 2. Que fait un commutateur OpenFlow d’un paquet quand sa table est vide ? 3. Qu’écrit un contrôleur ? 4. Quelle commande affiche la table de flux ? Réponses : une condition et une action ; il l’abandonne ; des flux ; ovs-ofctl dump-flows.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon donnée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie de chaque élève. Elle se déroule dans un lab VM : chaque élève a sa propre machine Ubuntu avec un commutateur et trois ordinateurs à l’intérieur, et un bouton Exécuter tape dans son terminal et montre ce qui s’est affiché. Points clés : 1. Un flux est une condition et une action. 2. Un commutateur OpenFlow sans flux abandonne tout. 3. Un contrôleur écrit les flux. Erreur fréquente : croire que tout commutateur apprend seul. Matériel : le lab et un navigateur. Conseil : avant le ping, demandez à la classe ce qui va se passer et pourquoi. Le lab lui-même a une vérification qui note la table de flux et le commutateur à apprentissage. Copiez la leçon dans votre propre module pour la modifier, ou construisez-en une de zéro avec le menu Lab du générateur de leçons.

À propos de ce labo et de sa source: Lab de réseaux définis par logiciel : Open vSwitch, Mininet et un contrôleur OpenFlow dans une VM

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.