Vous êtes sur la page 1sur 7

3 IRS

Année Universitaire : 2023-2024


________________________________________________________

TRAVAUX PRATIQUES N°3


________________________________________________________
Module : Virtualisation des réseaux - 3IRS
Enseignante : Mme G.e.m. ZHIOUA

Objectifs :
La mise en place d’une architecture SDN :
- Manipuler des switchs OpenFlow
- Configurer les flux avec la commande dpctl
- Manipuler / configurer le contrôleur OpenFlow POX

Partie 1 : Mise en place de Mininet


1- Lancer la VM de Mininet précédemment installée dans le TP1
2- Accéder à Mininet en utilisant mininet comme login et mot de passe
3- Se connecter par ssh à Mininet en utilisant les outils putty et xming

Partie 2 : La commande dpctl

dpctl est une commande qui envoie des messages OpenFlow à un switch permettant de
voir la configuration du switch et ses capacités, voir les entrées de la table de flux,
ajouter/supprimer/modifier les entrées de table de flux

4- Créer la topologie suivante en utilisant la commande


$ sudo mn --topo single,3 --mac --switch ovsk --controller remote

Cette commande permet de créer une topologie réseau contenant un switch


OpenvSwitch, des machines hôtes, un contrôleur qui est extérieur au
programme Mininet et en affectant des adresses MACs qui soient faciles à lire.

1/6
3 IRS

Le contrôleur OpenFlow créée et transfère au switch des commandes de flux.


Le switch OpenFlow est un software based switch qui reçoit des commandes du
contrôleur lui permettant de gérer les trames qu’il reçoit

a. Dessiner la topologie obtenue en vous aidant des commandes suivantes :


mininet>net
mininet>dump
b. Noter le numéro de port associé au contrôleur de la topologie créée.

Le numéro de port varie. On suppose dans la suite du TP que le numéro de port du


contrôleur est 6633. Le switch pourra être contrôlé alors sur TCP :127.0.0.1:6634

5- Exploiter la topologie obtenue en répondant aux questions suivantes


a. Pour afficher la table de flux, faire la commande

$ dpctl dump-flows tcp:127.0.0.1:6634


ou
mininet>dpctl dump-flows

Etant donné que nous n’avons pas manipulé le contrôleur, la table de flux
devrait être vide.
Remarque : Utiliser le numéro de port correspondant à votre topologie

b. Vérifier la connectivité entre les machines en utilisant le ping, exemple :

mininet>h1 ping –c3 h2

Que remarquez-vous? Expliquer

6- Configuration les flux en utilisant la commande dpctl.


a. La commande suivante permet d’ajouter une entrée dans la table de flux
et d’augmenter le timeout de l’entrée à 5mn

2/6
3 IRS

Dans la fenêtre de l’instance Mininet de la topologie générée

Mininet>s1 dpctl add-flow tcp:127.0.0.1:6634 in_port=1,idle_timeout=600,


actions=output:2

Ou ouvrir en parallèle une nouvelle fenêtre ssh vers Mininet et faire la commande

$dpctl add-flow tcp:127.0.0.1:6634 in_port=1,idle_timeout=600,actions=output:2

b. Ajouter l’autre entrée

$dpctl add-flow tcp:127.0.0.1:6634 in_port=2,idle_timeout=600,actions=output:1

c. Vérifier maintenant que les entrées ont bien été ajoutées à la table de flux
à travers la commande

$ dpctl dump-flows tcp:127.0.0.1:6634

d. Refaire le ping. Que remarquez-vous? Expliquer

mininet> h1 ping -c3 h2

e. Réafficher la table de flux. Interpréter

mininet>dpctl dump-flows tcp:127.0.0.1:6634

Partie 3 : Le Contrôleur POX

POX est installé de base avec la version complète de Mininet.


POX permet d'ajouter un contrôleur externe au réseau qui gère tous les switchs.

3/6
3 IRS

Partie 3-1 : Tests avec / sans contrôleur


7- Se connecter par ssh à Mininet. Ce terminal sera utilisé dans l’étape 8.
Lancer maintenant POX dans la Mininet-VM en utilisant la commande

$ pox/pox.py forwarding.l2_learning

Remarque : Avec la configuration développée dans le fichier « l2_learning.py », le


contrôleur gère les switchs de la topologie pour qu’ils réalisent leurs fonctions de
commutation niveau couche 2. Il est possible de voir ainsi de contenu du fichier en
tapant :

$ nano pox/pox/forwarding/l2_learning.py

8- Lancer Mininet sur le terminal ssh en tapant la commande

$ sudo mn --controller=remote

Cette commande permet de générer la topologie par défaut avec comme


contrôleur, un contrôleur extérieur au programme Mininet (Remote)

a. Dessiner la topologie réseau créée


b. Remarquer qu’une ligne s’ajoute ‘connected’ au niveau de POX

c. Tester la connectivité entre les nœuds avec la commande suivante :

Mininet>pingall

Les pings doivent aboutir

4/6
3 IRS

9- Arrêter POX avec Ctrl-C


Remarquer le nouvel affichage

a. Tester de nouveau la connectivité entre les nœuds.


b. Interpréter.

Partie 3-2 : Transformer les switchs en Hub avec POX

10-Quitter Mininet avec la commande

mininet>exit –c

11-Le code python suivant crée un simple réseau en rectangle. Copier et


sauvegarder le code dans un fichier rectangle.py, dans le dossier
/home/mininet/mytopos. Utiliser l’accès à Mininet par connexion ssh

5/6
3 IRS

from mininet.topo import Topo


from mininet.net import Mininet
from mininet.node import OVSSwitch, Controller,
RemoteController

class RectTopo( Topo ):


"Rectangular topology example."

def __init__( self ):


"Create custom topo."

# Initialize topology
Topo.__init__( self )

# Add hosts and switchesovs-ofctl


h1 = self.addHost( 'h1' )
h2 = self.addHost( 'h2' )
h3 = self.addHost( 'h3' )
h4 = self.addHost( 'h4' )
s1 = self.addSwitch( 's1' )
s2 = self.addSwitch( 's2' )
s3 = self.addSwitch( 's3' )
s4 = self.addSwitch( 's4' )

# Add links
self.addLink( h1, s1 )
self.addLink( h2, s2 )
self.addLink( h3, s3 )
self.addLink( h4, s4 )

self.addLink( s1, s2 )
self.addLink( s2, s3 )
self.addLink( s3, s4 )
# self.addLink( s4, s1 )

topos = { 'recttopo': ( lambda: RectTopo() ) }

12-POX fournit aussi d’autres exemples de code pour mieux se familiariser avec
cet outil. Le code pox/pox/forwarding/hub.py. transforme les switchs de la
topologie en hubs. Pour lancer ce contrôleur, entrer la commande suivante dans
la Mininet-VM

$ pox/pox.py --verbose forwarding.hub

6/6
3 IRS

13-Dans le terminal de l’accès ssh, lancer la topologie Mininet en rectangle


précédemment créée dans le fichier rectangle.py.

$ sudo mn --custom /home/mininet/mytopos/rectangle.py --topo


recttopo --controller remote --switch ovsk –-mac

a. Dessiner la topologie obtenue


b. Sur le terminal Mininet, vérifier que le réseau fonctionne :

mininet> h1 ping h4

14-Dans cette partie, la liaison entre les switchs 1 et 4 sera activée. Pour cela,
quitter Mininet et décommenter la ligne dans le fichier rectangle.py.
Relancer Mininet (POX est toujours actif).
Renouveler le ping entre h1 et h4.
Que remarquez vous ? Interpréter.

Bon Travail

7/6

Vous aimerez peut-être aussi