Benutzer-Werkzeuge

Webseiten-Werkzeuge


sdn-start-mit-mininet-vm-ryu-floodlight-opendaylight

Dies ist eine alte Version des Dokuments!


Software-Defined-Networks (SDN) Einstieg ohne Hardware mit Mininet VM und Ryu/Floodlight/OpenDaylight Controller

Dieser Artikel befindet sich noch im Aufbau! :)

Aller Anfang ist schwer oder doch nicht? Die virtuellen Maschinen von SDN Hub machen uns den Einstieg leicht(er)!

Voraussetzungen

  • SDN Hub „All-in-one SDN App Development Starter VM“ herunterladen
  • Virtualbox, dort wird die heruntergeladene VM (OVA) importiert

Einstieg

Die virtuelle Maschine bringt eine große Anzahl von SDN Controllern bereits mit. Wir fokussieren uns in diesem Artikel allerdings auf Ryu, später vielleicht noch auf Floodlight und OpenDaylight.

Ryu ist ein SDN-Controller der von der NTT (Nippon Telegraph and Telephone Corporation) entwickelt wird. In Europa kennt man vielleicht eher die Tochtergesellschaft Dimension Data. Mir gefällt dieser Controller besonders gut, da die Community (ryu-devel Mailingliste) sehr hilfsbereit ist. Es fällt auf dass die Entwickler sich selbst Zeit nehmen um auf die Anfragen zu reagieren und den Controller auch auf Anfragen hin weiterentwickeln wenn eine API o.ä. bisher nicht vorhanden ist. Ryu ist in Python entwickelt und kommt mit diverse Beispiel Applikationen mit denen man arbeiten kann. (Natürlich kann man Ryu auch selbst erweitern, dies würde aber den Rahmen dieses Artikels sprengen …)

Neben dem SDN Controller ist in der VM noch Mininet enthalten. Mininet erlaubt uns neben einem oder mehreren Switches auch noch Clients/Teilnehmer am Netz zu simulieren.

Jeder der hier angesprochenen Bausteine hätte seinen eigenen kilometerlangen Artikel verdient, aber heute möchte ich nur Starthilfe geben. :)

Mininet

Was ist nun zu tun um folgendes Netz zu simulieren?

$ sudo mn --topo single,4 --mac --controller remote --switch ovsk,protocols=OpenFlow13

Bedeutung der einzelnen Befehlselemente

  • –topo ⇒ Topologie
    • –topo single,4 ⇒ ein Switch, vier Teilnehmer/Hosts
    • Weitere Optionen: linear, tree
  • –mac ⇒ Einfache MAC-Adressen z.B. 00:00:00:00:00:01 für Host 1
  • –controller remote ⇒ Unser SDN Controller soll nicht aus Mininet kommen (wir wollen ja Ryu verwenden, kommt im nächsten Kapitel)
  • –switch ovsk,protocols=OpenFlow13 ⇒ Verwendung des OpenVSwitch mit OpenFlow Standard v1.3
  • (Optional) –link tc,bw=10,delay=10ms ⇒ Dies würde die Bandbreite auf 10Mbit begrenzen und künstlich eine Verzögerung (Delay) auf die Links legen

Nach dem Start begrüßt uns die Mininet-Shell

$ sudo mn --topo single,4 --mac --controller remote --switch ovsk,protocols=OpenFlow13
*** Creating network
*** Adding controller
Unable to contact the remote controller at 127.0.0.1:6633
*** Adding hosts:
h1 h2 h3 h4 
*** Adding switches:
s1 
*** Adding links:
(h1, s1) (h2, s1) (h3, s1) (h4, s1) 
*** Configuring hosts
h1 h2 h3 h4 
*** Starting controller
*** Starting 1 switches
s1 
*** Starting CLI:
mininet>

Kommandos in Mininet

Anzeige der Elemente / Nodes

mininet> nodes
available nodes are: 
c0 h1 h2 h3 h4 s1
mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
h3 h3-eth0:s1-eth3
h4 h4-eth0:s1-eth4
s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0 s1-eth3:h3-eth0 s1-eth4:h4-eth0
c0

Detaillierte Anzeige der Konfiguration

mininet> dump
<Host h1: h1-eth0:10.0.0.1 pid=10802> 
<Host h2: h2-eth0:10.0.0.2 pid=10803> 
<Host h3: h3-eth0:10.0.0.3 pid=10804> 
<Host h4: h4-eth0:10.0.0.4 pid=10805> 
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None,s1-eth3:None,s1-eth4:None pid=10808> 
<RemoteController c0: 127.0.0.1:6633 pid=10795> 

Befehl im Kontext eines Teilnehmers / Hosts ausführen

mininet> h1 ifconfig
h1-eth0   Link encap:Ethernet  HWaddr 00:00:00:00:00:01  
          inet addr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::200:ff:fe00:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:648 (648.0 B)  TX bytes:1068 (1.0 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:672 (672.0 B)  TX bytes:672 (672.0 B)

Ping von h1 zu h2 ausführen

mininet> h1 ping h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
^C
--- 10.0.0.2 ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4024ms
pipe 3

Wir haben noch keinen SDN-Controller der die Kommunikation ermöglicht, daher ist dieses Ergebnis zu diesem Zeitpunkt erwartet.

Öffnen eines xterm Fensters für Teilnehmer / Hosts

mininet> xterm h1

SDN-Controller: Ryu

Damit unsere Ping-Aktivitäten nicht weiter fehlschlagen, brauchen wir nun einen SDN-Controller.

Start von Ryu

$ cd /home/ubuntu/ryu && ./bin/ryu-manager --verbose ryu/app/simple_switch_13.py

Bedeutung der einzelnen Befehlselemente

  • ./bin/ryu-manager ⇒ Ryu-Manager der für uns die eigentliche Applikation startet
  • –verbose ⇒ Gibt mehr Details auf der Konsole aus
  • ryu/app/simple_switch_13.py
    • Im Verzeichnis /app befinden sich viele Beispielapplikationen
    • simple_switch_13.py ist ein normaler Switch mit OpenFlow v1.3 Unterstützung

Im Fenster oben können wir sehen dass sich unser Mininet Switch mit dem Controller verbindet. Es werden im Rahmen dieser Anmeldung auch die Fähigkeiten (Features) mitgeteilt. Wenn man dem Switch später referenzieren möchte, wird dafür die „datapath_id“ (DPID) und nicht die IP-Adresse verwendet.

Im Rahmen dieses Artikels ist es nicht wirklich relevant welche „Buffer“ oder „Table“-Fähigkeiten der virtuelle Switch hat, dies ist aber später auf physikalischen Switches sehr wichtig zu wissen.

sdn-start-mit-mininet-vm-ryu-floodlight-opendaylight.1406299775.txt.gz · Zuletzt geändert: 2024/06/09 10:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki