Heim >System-Tutorial >LINUX >Mininet des SDN-Netzwerksystems

Mininet des SDN-Netzwerksystems

WBOY
WBOYnach vorne
2024-01-13 21:36:34973Durchsuche
SDN- und Mininet-Übersicht

SDN, vollständiger Name (Software Defined Network), ist eine neue innovative Netzwerkarchitektur im modernen Internet. Seine Kerntechnologie OpenFlow trennt die Steuerungsebene und die Datenebene von Netzwerkgeräten, um eine flexible Steuerung des Netzwerkverkehrs zu ermöglichen Netzwerke und Anwendungen. Mininet ist eine leichtgewichtige softwaredefinierte Netzwerk- und Testplattform. Sie nutzt eine leichtgewichtige Virtualisierungstechnologie, um ein einzelnes System wie ein vollständiges Netzwerk aussehen zu lassen, auf dem das Kernelsystem und der Benutzercode ausgeführt werden. Dies kann auch einfach als prozessbasierte Virtualisierungsplattform verstanden werden Das SDN-Netzwerksystem unterstützt verschiedene Protokolle wie OpenFlow und OpenvSwith, kann aber auch einen kompletten Netzwerk-Host simulieren, eine Verbindung herstellen und auf demselben Computer schalten und ermöglicht interaktive Entwicklung, Tests und Demonstrationen, insbesondere solche, die OpenFlow- und SDN-Technologien verwenden Es ist auch möglich, Code von dieser Prozessvirtualisierungsplattform in eine reale Umgebung zu migrieren.

Von Mininet implementierte Funktionen
  • Unterstützt weich definierte Netzwerkkomponenten wie OpenFlow und OpenvSwitch
  • Unterstützt Wiederherstellungstests auf Systemebene, komplexe Topologie, benutzerdefinierte Topologie usw.
  • Bietet eine Python-API, um die gemeinsame Entwicklung mehrerer Personen zu erleichtern
  • Hervorragende Hardware-Portabilität und hohe Skalierbarkeit
  • Unterstützt die Netzwerkstruktur von Tausenden von Hosts
Miniet-Implementierung und Workflow

Die Installationsmethode von Mininet ist relativ einfach. Sie kann über den Git-Quellcode und das integrierte Installationsskript installiert werden. Hier verwende ich die Standardinstallation aller Mininet-bezogenen Pakete, wie zum Beispiel: OpenFlow. POX und andere Tools werden standardmäßig in der aktuellen Datei gespeichert.
<br> # git clone git://github.com/mininet/mininet<br> # cd mininet/util/<br> # ./install.sh -a<br> #ls<br> Mininet of-dissector oflops oftest openflow pox<br>

Erstellen Sie ein Netzwerk

Abbildung 1. Einfaches Netzwerk-Beispieldiagramm
SDN 网络系统之 Mininet

Da Mininet benutzerdefinierte Netzwerke unterstützt, finden Sie hier ein einfaches Netzwerkbeispiel, wie in Abbildung 1 dargestellt. Geben Sie den Befehl mn direkt in das Mininet-Netzwerksystem ein, um in diesem System ein einschichtiges Topologienetzwerk zu erstellen, aus dem zwei Hosts und einer erstellt werden Standardschalter, und der Controller und der Schalter sind aktiviert. Gleichzeitig können Sie den Verbindungsstatus auch über das Befehlsnetz überprüfen. Zunächst wird ein einfaches Beispiel aufgeführt, z. B. das Aktivieren des Webservers und des Clients im Mininet-System.
<br> #mn<br> *** Netzwerk schaffen<br> *** Controller hinzugefügt<br> *** Hosts hinzufügen:<br> h1 h2<br> *** Schalter hinzufügen:<br> s1<br> *** Links hinzufügen:<br> (h1, s1) (h2, s1)<br> ***Konfigurieren von Hosts<br> h1 h2<br> *** Controller wird gestartet<br> *** Startet 1 Schalter<br> s1<br> *** CLI:<br> wird gestartet mininet><br>

Webdienste aktivieren und deaktivieren

Es ist einfach, einen Webserver in der Mininet-Umgebung einzurichten. Aus dem Beispiel unten können Sie ersehen, dass ein Webserver von Host1 eingerichtet wird und HTTP-Anfragen von einem anderen Host an den Webserver erhält.
<br> mininet> h1 python -m SimpleHTTPServer 80 & #Webdienst auf Host h1<br> aktivieren mininet> h2 wget -O - h1 #Laden Sie den Inhalt der h1-Website auf Host h2<br> herunter --2013-11-04 00:05:40-- http://10.0.0.1/<br> Verbindung zu 10.0.0.1:80... verbunden.<br> HTTP-Anfrage gesendet, wartet auf Antwort... 200 OK<br> …………<br> Länge: 760 [text/html<br> <br> <title>Verzeichniseintrag für /</title>

  • .bash_history
  • .wireshark/
  • install-mininet-vm.sh
  • mininet/
  • von-dissektor/
  • oflops/
  • am häufigsten/
  • openflow/
  • Pocken/

  • 0K 100% 1,65M=0s
    04.11.2013 00:05:40 (1,65 MB/s) – geschrieben auf stdout [760/760]

    mininet> h1 kill %python # Töte den Webprozess
    10.0.0.2 - - [04.11.2013 00:05:40] "GET / HTTP/1.1" 200 -
    bash: Zeile 23: kill: python: mehrdeutige Jobspezifikation
    Ping-Test

    Führen Sie auf dem Mininet-System den Verbindungstest zwischen zwei Hosts durch.
    <br> mininet> h1 ping -c4 h2<br> PING 10.0.0.2 (10.0.0.2) 56(84) Bytes Daten.<br> 64 Bytes von 10.0.0.2: icmp_req=1 ttl=64 time=1.55 ms<br> 64 Bytes von 10.0.0.2: icmp_req=2 ttl=64 time=0,094 ms<br> 64 Bytes von 10.0.0.2: icmp_req=3 ttl=64 time=0,075 ms<br> 64 Bytes von 10.0.0.2: icmp_req=4 ttl=64 time=0,071 ms

    --- 10.0.0.2 Ping-Statistik ---
    4 Pakete gesendet, 4 empfangen, 0 % Paketverlust, Zeit 3006 ms
    RTT min/avg/max/mdev = 0,071/0,448/1,553/0,638 ms
    Knoten und Links anzeigen
    <br> Mininet>-Knoten<br> Verfügbare Knoten sind:<br> c0 h1 h2 s1<br> mininet> net<br> 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>

    Benutzerdefinierte Topologie

    Mininet unterstützt eine benutzerdefinierte Topologie. Wenn in der Datei topo-2sw-2host.py ein Mytopo definiert ist, können Sie die Verwendung dieser Topologie über die Option --topo angeben:
    Abbildung 2. Beispiel einer benutzerdefinierten Topologie
    SDN 网络系统之 Mininet
    Da Mininet auch parametrisierte Topologie unterstützt, kann über Python-Code eine flexible Topologie erstellt werden, die auch gemäß übergebenen benutzerdefinierten Parametern konfiguriert und in mehreren Umgebungen wiederverwendet werden kann. Die allgemeine Struktur des Codes wird unten kurz aufgeführt .
    <br> #!/usr/bin/python

    aus mininet.topo Topo importieren
    von mininet.net Mininet importieren
    aus mininet.util import dumpNodeConnections
    aus mininet.log import setLogLevel

    Klasse SingleSwitchTopo(Topo):
    def __init__(self, n=2, **opts):
    Topo.__init__(self, **opts)
    switch = self.addSwitch('s1') #Einen Schalter zur Topologie hinzufügen
    für h im Bereich(n):
    host = self.addHost('h%s' % (h + 1)) #Host zur Topologie hinzufügen
    self.addLink(host, switch) #Eine bidirektionale Verbindungstopologie hinzufügen

    def simpleTest():
    topo = SingleSwitchTopo(n=4)
    net = Mininet(topo) #Hauptklasse zum Erstellen und Verwalten von Netzwerken
    net.start() #Starten Sie Ihr Topologienetzwerk
    Drucken Sie „Hostverbindungen löschen“
    dumpNodeConnections(net.hosts) #Dump-Dateiverbindungen
    Drucken Sie „Netzwerkkonnektivität testen“
    net.pingAll() #Alle Knoten testen die Verbindung untereinander
    net.stop() #Stoppen Sie Ihr Netzwerk

    if __name__ == '__main__':
    setLogLevel('info') #Mininet-Standardausgabepegel festlegen, Info festlegen, um einige nützliche Informationen bereitzustellen
    simpleTest()

    Überprüfen Sie die parametrisierte Topologie

    <br> # python test-single.py<br> *** Netzwerk schaffen<br> *** Controller hinzugefügt<br> *** Hosts hinzufügen:<br> h1 h2 h3 h4<br> *** Schalter hinzufügen:<br> s1<br> *** Links hinzufügen:<br> (h1, s1) (h2, s1) (h3, s1) (h4, s1)<br> ***Konfigurieren von Hosts<br> h1 h2 h3 h4<br> *** Controller wird gestartet<br> *** Startet 1 Schalter<br> s1<br> Host-Verbindungen werden gelöscht<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> Netzwerkkonnektivität testen<br> *** Ping: Ping-Erreichbarkeit testen<br> h1 -> h2 h3 h4<br> h2 -> h1 h3 h4<br> h3 -> h1 h2 h4<br> h4 -> h1 h2 h3<br> *** Ergebnisse: 0 % gesunken (12/12 erhalten)

    Namespace-Namespace

    Normalerweise verfügt die Host-Schnittstelle über einen unabhängigen Namespace, und der Steuerknoten und der Switching-Knoten befinden sich beide im Root-Namespace. Wenn Sie möchten, dass alle Knoten ihren eigenen Namespace haben, müssen Sie den Parameter --innamespace hinzufügen, d. h. ausführen: mn --innamespace
    <br> # mn --innamespace --switch user<br> *** Netzwerk schaffen<br> *** Controller hinzugefügt<br> *** Hosts hinzufügen:<br> h1 h2<br> *** Schalter hinzufügen:<br> s1<br> *** Links hinzufügen:<br> (h1, s1) (h2, s1)<br> c0 s1<br> *** Kontrollnetzwerk testen<br> s1 -> c0<br> c0 -> s1<br> *** Ergebnisse: 0 % gesunken (2/2 erhalten)

    *** Hosts konfigurieren
    h1 h2
    *** Controller wird gestartet
    *** Startet 1 Schalter
    s1
    *** CLI:
    wird gestartet

    Allgemeine Mininet-Operationen

    Tabelle 1. Allgemeine Mininet-Befehle

    Das obige ist der detaillierte Inhalt vonMininet des SDN-Netzwerksystems. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen