Maison >Tutoriel système >Linux >Mininet du système de réseau SDN

Mininet du système de réseau SDN

WBOY
WBOYavant
2024-01-13 21:36:34975parcourir
Aperçu SDN et Mininet

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 Mininet
  • Prend en charge les composants réseau définis de manière logicielle tels que OpenFlow et OpenvSwitch
  • Prend en charge les tests de restauration au niveau du système, la topologie complexe, la topologie personnalisée, etc.
  • Fournit une API Python pour faciliter le développement collaboratif par plusieurs personnes
  • Excellente portabilité matérielle et haute évolutivité
  • Prend en charge la structure réseau de milliers d'hôtes
Mise en œuvre et workflow de Miniet

La 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>

Créer un réseau

Figure 1. Exemple de schéma de réseau simple
SDN 网络系统之 Mininet

É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>

  • .bash_history
  • .wireshark/
  • install-mininet-vm.sh
  • mininet/
  • de-dissecteur/
  • offlops/
  • le plus souvent/
  • openflow/
  • vérole/

  • 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>

    Topologie personnalisée Mininet prend en charge la topologie personnalisée. Un exemple est donné dans le répertoire mininet/custom Si un mytopo est défini dans le fichier topo-2sw-2host.py, vous pouvez spécifier l'utilisation de cette topologie via l'option --topo :

    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. . SDN 网络系统之 Mininet

    #!/usr/bin/python <br>depuis mininet.topo importer Topo

    depuis mininet.net importer Mininet

    à partir de mininet.util importer dumpNodeConnections
    à partir de mininet.log importer setLogLevel

    classe SingleSwitchTopo(Topo):

    def __init__(self, n=2, **opts) :

    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() :

    topo = SingleSwitchTopo(n=4)

    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__' :

    setLogLevel('info') #Définir le niveau de sortie par défaut du Mininet, définir les informations, cela fournira des informations utiles

    simpleTest()


    Vérifier la topologie paramétrée

    # 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>

    espace de noms d'espace de noms Normalement, l'interface hôte a un espace de noms indépendant, et le nœud de contrôle et le nœud de commutation se trouvent tous deux dans l'espace de noms racine. Si vous souhaitez que tous les nœuds aient leur propre espace de noms, vous devez ajouter le paramètre --innamespace, c'est-à-dire exécuter : mn --innamespace


    # 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

    h1 h2

    *** Démarrage du contrôleur
    *** Démarrage de 1 switch
    s1
    *** Démarrage de la CLI :


    Opérations communes du Mininet Tableau 1. Commandes communes du Mininet

    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!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer