Maison >Tutoriel système >Linux >Mininet du système de réseau SDN
SDN, nom complet (Software Defined Network), est une nouvelle architecture réseau innovante dans l'Internet moderne. Sa technologie de base OpenFlow sépare le plan de contrôle et le plan de données des équipements réseau pour obtenir un contrôle flexible du trafic réseau, offrant une bonne plate-forme pour. réseaux et applications. Mininet est un réseau léger défini par logiciel et une plate-forme de test ; il utilise une technologie de virtualisation légère pour faire ressembler un système unique à un réseau complet exécutant le système du noyau de pensée et le code utilisateur, qui peut également être simplement compris comme une plate-forme de virtualisation basée sur les processus dans le système réseau SDN. Il prend en charge divers protocoles tels que OpenFlow et OpenvSwith. Mininet peut également simuler un hôte réseau complet, relier et commuter sur le même ordinateur et facilite le développement interactif, les tests et les démonstrations, en particulier ceux utilisant les technologies OpenFlow et SDN. Il est également possible de migrer le code de cette plateforme de virtualisation des processus vers un environnement réel.
Fonctionnalités implémentées par MininetLa méthode d'installation de Mininet est relativement simple. Elle peut être installée sur le système Linux via le code source Git et le script d'installation intégré. Ici, j'utilise l'installation par défaut de tous les packages liés à Mininet, tels que : OpenFlow, POX et les autres outils seront enregistrés par défaut dans le fichier actuel.
<br>
# git clone git://github.com/mininet/mininet<br>
# cd mininet/util/<br>
# ./install.sh -a<br>
#ls<br>
mininet de dissecteur oflops oftest openflow pox<br>
Figure 1. Exemple de schéma de réseau simple
Étant donné que Mininet prend en charge les réseaux personnalisés, voici un exemple de réseau simple, comme le montre la figure 1. Entrez directement la commande mn dans le système réseau Mininet pour créer un réseau topologique monocouche dans ce système, à partir duquel deux hôtes et un sont créés par commutateur par défaut, et le contrôleur et le commutateur sont activés. Dans le même temps, vous pouvez également vérifier l'état du lien via le réseau de commandes. Tout d'abord, un exemple simple est répertorié, tel que l'activation du serveur Web et du client dans le système Mininet.
<br>
#mn<br>
*** Création de réseau<br>
*** Ajout d'un contrôleur<br>
*** Ajout d'hôtes :<br>
h1 h2<br>
*** Ajout de commutateurs :<br>
s1<br>
*** Ajout de liens :<br>
(h1, s1) (h2, s1)<br>
***Configuration des hôtes<br>
h1 h2<br>
*** Démarrage du contrôleur<br>
*** Démarrage de 1 switch<br>
s1<br>
*** Démarrage de la CLI :<br>
mininet><br>
Activer et désactiver les services Web
Il est facile d'établir un serveur Web dans l'environnement Mininet. Dans l'exemple ci-dessous, vous pouvez voir qu'un serveur Web est établi à partir de l'hôte 1 et obtient des requêtes HTTP d'un autre hôte vers le serveur Web.
<br>
mininet> h1 python -m SimpleHTTPServer 80 & #Activer le service Web sur l'hôte h1<br>
mininet> h2 wget -O - h1 #Télécharger le contenu du site Web h1 sur l'hôte h2<br>
--2013-11-04 00:05:40-- http://10.0.0.1/<br>
Connexion à 10.0.0.1:80... connecté.<br>
Requête HTTP envoyée, en attente de réponse... 200 OK<br>
…………<br>
Longueur : 760 [texte/html<br>
<br>
<title>Répertoire pour /</title>
0K 100% 1,65M=0s
04/11/2013 00:05:40 (1,65 Mo/s) - écrit sur la sortie standard [760/760]
mininet> h1 kill %python # Tue le processus Web
10.0.0.2 - - [04/nov/2013 00:05:40] "GET / HTTP/1.1" 200 -
bash : ligne 23 : kill : python : spécification de travail ambiguë
Test de ping
Sur le système Mininet, réalisez le test d'interconnexion entre deux hôtes.
<br>
mininet> h1 ping -c4 h2<br>
PING 10.0.0.2 (10.0.0.2) 56(84) octets de données.<br>
64 octets de 10.0.0.2 : icmp_req=1 ttl=64 time=1,55 ms<br>
64 octets de 10.0.0.2 : icmp_req=2 ttl=64 time=0,094 ms<br>
64 octets de 10.0.0.2 : icmp_req=3 ttl=64 time=0,075 ms<br>
64 octets de 10.0.0.2 : icmp_req=4 ttl=64 time=0,071 ms
--- 10.0.0.2 statistiques de ping ---
4 paquets transmis, 4 reçus, 0% de perte de paquets, temps 3006 ms
rtt min/moy/max/mdev = 0,071/0,448/1,553/0,638 ms
Afficher les nœuds et les liens
<br>
mininet>
les nœuds disponibles sont :<br>
c0 h1 h2 s1<br>
mininet>
h1 h1-eth0:s1-eth1<br>
h2 h2-eth0:s1-eth2<br>
s1 lo : s1-eth1:h1-eth0 s1-eth2:h2-eth0<br>
c0<br>
<br><br>
Figure 2. Exemple de topologie personnalisée
Étant donné que Mininet prend également en charge la topologie paramétrée, une topologie flexible peut être créée via du code Python, qui peut également être configuré en fonction des paramètres personnalisés transmis et peut être réutilisée dans plusieurs environnements. La structure générale de son code est brièvement répertoriée ci-dessous et sa signification. .
#!/usr/bin/python
<br>depuis mininet.topo importer Topo
à partir de mininet.util importer dumpNodeConnections
à partir de mininet.log importer setLogLevel
classe SingleSwitchTopo(Topo):
Topo.__init__(auto, **opts)
switch = self.addSwitch('s1') #Ajouter un commutateur dans la topologie
pour h dans la plage (n):
host = self.addHost('h%s' % (h + 1)) #Ajouter un hôte à la topologie
self.addLink(host, switch) #Ajouter une topologie de connexion bidirectionnelle
def simpleTest() :
net = Mininet(topo) #Classe principale pour créer et gérer des réseaux
net.start() #Démarrez votre réseau topologique
imprimer "Dumping des connexions hôtes"
dumpNodeConnections(net.hosts) #Vider les connexions de fichiers
imprimer "Test de la connectivité réseau"
net.pingAll() #Tous les nœuds testent l'interconnexion les uns avec les autres
net.stop() #Arrêtez votre réseau
si __name__ == '__main__' :
simpleTest()
# python test-single.py
*** Création de réseau<br>
*** Ajout d'un contrôleur<br>
*** Ajout d'hôtes :<br>
h1 h2 h3 h4<br>
*** Ajout de commutateurs :<br>
s1<br>
*** Ajout de liens :<br>
(h1, s1) (h2, s1) (h3, s1) (h4, s1)<br>
***Configuration des hôtes<br>
h1 h2 h3 h4<br>
*** Démarrage du contrôleur<br>
*** Démarrage de 1 switch<br>
s1<br>
Vidage des connexions hôtes<br>
h1 h1-eth0:s1-eth1<br>
h2 h2-eth0:s1-eth2<br>
h3 h3-eth0:s1-eth3<br>
h4 h4-eth0:s1-eth4<br>
Test de la connectivité réseau<br>
*** Ping : tester l'accessibilité du ping<br>
h1 -> h2 h3 h4<br>
h2 -> h1 h3 h4<br>
h3 -> h1 h2 h4<br>
h4 -> h1 h2 h3<br>
*** Résultats : 0% abandonné (12/12 reçu)<br><br>
# mn --innamespace --switch utilisateur
*** Création de réseau<br>
*** Ajout d'un contrôleur<br>
*** Ajout d'hôtes :<br>
h1 h2<br>
*** Ajout de commutateurs :<br>
s1<br>
*** Ajout de liens :<br>
(h1, s1) (h2, s1)<br>
c0 <br>s1<br>
*** Test du réseau de contrôle
s1 -> c0<br>
c0 -> s1<br>
*** Résultats : 0% abandonné (2/2 reçu)<br>
<br>*** Configuration des hôtes
*** Démarrage du contrôleur
*** Démarrage de 1 switch
s1
*** Démarrage de la CLI :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!