Tutorial: Von Null zum ersten Flow

SDN-Umgebung in der Cloud

| Autor / Redakteur: Dirk Srocke / Andreas Donner

Administratoren konfigurieren ihr Netz per Browser und Mausklick. Die im SDN-Controller definierten Flows lassen sich auch als JSON-File exportieren.
Administratoren konfigurieren ihr Netz per Browser und Mausklick. Die im SDN-Controller definierten Flows lassen sich auch als JSON-File exportieren. (Bild: Screenshot/ Brocade)

Nie zuvor war es einfacher und preisgünstiger, testweise ein Software-Defined Network (SDN) aufzusetzen – selbst ohne eigene, potente Hardware. Unser Tutorial zeigt Schritt für Schritt, wie Sie einen Controller in der Cloud einrichten und erste Flows per Mausklick definieren.

Mit etwas Handarbeit läuft eine SDN-Testumgebung zwar auch auf einem halbwegs aktuellen Notebook mit nur acht GByte Arbeitsspeicher – bequem verfügbare und kostengünstige Cloudressourcen machen aber vieles einfacher und erlauben umfangreichere Experimente. Unseren Testrechner haben wir diesmal also links liegen lassen und uns direkt beim Anbieter DigitalOcean um passende Instanzen bemüht.

Ressourcen buchen...

Bemüht trifft es dabei übrigens in der Tat recht gut: Bevor wir ein unserem Vorhaben entsprechend dimensioniertes „Droplet“ in Betrieb nehmen konnten, mussten wir den Support des Anbieters erst von unseren ehrbaren Absichten überzeugen – ad hoc dürfen frisch registrierte Kunden per Webinterface nur vergleichsweise schwach ausgestattete Systeme freischalten. Ein solches nutzten wir übrigens auch als Zwischenspeicher zum Transfer unserer Daten in die Cloud und für eine Mininet-Testumgebung. Den eigentlichen SDN Controller samt App verfrachteten wir derweil in ein Droplet mit Ubuntu 14.04 x64, 16 GByte RAM, acht CPUs, 160 GByte SSD-Speicher und sechs TByte inkludiertem Transfervolumen. Für unsere in der Region Frankfurt erstellten Instanzen haben wir zudem Privates Networking aktiviert; beide Droplets konnten somit also direkt miteinander – ohne Umweg über das Internet – kommunizieren.

Per eBook zum ersten eigenen SDN

Software-Defined Networking in der Praxis

Per eBook zum ersten eigenen SDN

02.11.15 - Software-Defined Networking wird künftig Netzwerke von KMU vereinfachen und automatisieren. Das kostenlose eBook „SDN in der Praxis“ zeigt, wohin sich der Markt entwickelt und wie Administratoren schon heute per Laptop ein eigenes Test-SDN aufsetzen. lesen

...und Software suchen

Als Software griffen wir auf den bereits bei früheren Versuchen genutzten Brocade SDN Controller zurück, den der Hersteller für Testzwecke kostenlos auf seiner Homepage bereitstellt. Auf unser Bitten hat uns der Anbieter zudem den aufsetzenden Flow Manager zur Verfügung gestellt – eine entsprechende Evaluierungsversion ist nur auf Anfrage zu haben. Zu beachten ist dabei: Der Flow Manager ist nicht mit jeder Version des SDN Controllers kompatibel und war zum Testzeitpunkt auch nicht für Release 3.0 verfügbar. Für unsere Versuche kombinierten wir daher den SDN Controller 2.3.3 mit dem Flow Manager 2.0.0.

Die Installation per Terminal

Einmal eingerichtet sind DigitalOceans Droplets per SSH erreichbar. Wir haben uns also per PuTTY auf Port 22 eingeloggt und das frische System vor der eigentlichen Installation des SDN Controllers – wie von Brocade empfohlen – zunächst um einige Komponenten ergänzt. Nachfragen des Systems haben wir dabei mit „y“ bejaht.

sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo apt-get install python-psycopg2
sudo apt-get install curl
sudo apt-get install zip
sudo apt-get install unzip
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install nodejs

Der von Brocade empfohlene OpenSSH-Server lief bereits im Droplet. Die zur Installation nötigen Daten für SDN Controller und Flow Manager haben wir von einem lokalen Linux-System per Secure Copy in die Cloud kopiert. xxx.xxx.xxx.xxx steht dabei für die IP des Quellrechners, von dessen Home-Verzeichnis wir die entsprechenden Dateien bezogen.

scp 'root@xxx.xxx.xxx.xxx:/home/*' .

Weil sich Version 2.3.3 des SDN Controllers nicht vom root installieren lässt, haben wir auf dem Zielsystem zudem einen neuen Nutzer angelegt.

adduser ipi

Diesen neuen Nutzer mussten wiederum mit Superuser-Rechten ausstatten, weil das Installationsskript des SDN Controllers diese an einigen Stellen voraussetzt. Hierfür haben wir die Datei '/etc/sudoers' entsprechend per 'visudo' angepasst.

# User privilege specification
ipi ALL=(ALL:ALL) ALL

So vorbereitet konnten wir schließlich die Installationsdateien für den SDN Controller entpacken und ausführen.

tar -xvf SDN Controller-2.3.0-Software.tar.gz
cd SDN*
./installbsc

Folgende Befehle installierten anschließend den Flow Manager:

unzip -o Flow* -d /opt
cd /opt/bvc
./install

Starten und Stoppen lässt sich der SDN Controller über die beiden Kommandos:

/opt/bvc/bin/start
/opt/bvc/bin/stop

Mininet nicht vergessen

Um die Testinfrastruktur komplett zu machen, braucht es schließlich noch ein Testnetzwerk. Hierfür greifen wir wieder auf das Tool Mininet zurück, das wir auf einem separaten Droplet installiert und mit unserem Controller verbunden haben. XXX.XXX.XXX.XXX steht wieder für die IP-Adresse des Droplets, auf dem der SDN Controller läuft – wir nutzten dabei das Private Networking für den lokalen Datenaustausch von Instanzen innerhalb des Frankfurter Rechenzentrums von DigitalOcean.

sudo apt-get install mininet
sudo mn --controller=remote,ip=XXX.XXX.XXX.XXX,port=663 --topo tree,2

Ein 'pingall' in der Mininet-Umgebung sorgt schließlich dafür, dass alle Hosts vom SDN Controller erkannt werden.

Den Controller per Web-Interface steuern

Damit verlassen wir nun auch die Konsole und loggen uns mit den Zugangsdaten admin/amdin über Googles Chrome-Browser auf die Oberfläche von Brocades SDN Controller ein. Insbesondere interessiert uns diesmal der zusätzlich installiert Flow Manager – Leser, die sich für den standardmäßig verfügbaren Topology Manager interessieren, seien an dieser Stelle nochmals auf den Workshop im eBook „SDN in der Praxis“ verwiesen.

Mit einer graphischen Darstellung liefert der Flow Manager eine übersichtliche Topologie des Testnetzwerkes. Netzwerkverantwortliche können die Darstellung per Maus neu anordnen und einzelne Systeme auf der Darstellung festpinnen.

Noch interessanter sind freilich die eigentlichen Konfigurationsoptionen für die abgebildeten Systeme. So genügt beispielsweise ein Klick mit der rechten Maustaste, um am „lebenden Switch“ zu operieren. Und genau das haben wir getan.

Zur Ausgangslage: In unserem Testnetz gibt es vier Hosts, die über drei Switches ungehindert miteinander kommunizieren. Wir wollen nun im Switch openflow:1 die Kommunikation zwischen Host 10.0.0.1 und Host 10.0.0.3 stören und übertragene Pakete verwerfen (Drop).

Per Rechtsklick auf den openflow:1 öffnet sich ein Kontextmenü, über das sich neben Netzwerkpfaden auch einzelne Flows konfigurieren lassen. Nach der Auswahl von „Create a Flow in openflow:1“ erscheint ein entsprechendes Fenster, in das „Flow Name“ sowie eine eindeutige „Flow Id“ einzutragen sind. Administratoren können schließlich festlegen, auf welcher Netzebene sie Hosts identifizieren wollen. Wir haben uns für Layer 2 entschieden und die Rechner 10.0.0.1 (Source) und 10.0.0.3 (Destination) über ihre MAC-Adressen bestimmt. Als Aktion für den Flow haben wir schließlich „Drop“ festlegt.

Mit Erfolg: Sobald der Flow definiert ist, scheitert ein Ping zwischen 10.0.0.1 und 10.0.0.3. Die Kommunikation lässt sich übrigens genauso schnell wieder ermöglichen. Hierfür genügt es die Aktion „Drop“ durch ein „Normal“ zu ersetzen.

Der einzeln von uns definierte Flow lässt sich übrigens auch exportieren. Hierfür generiert Brocades Lösung ein JSON-File, wie dieses:

{
   "flow": {
    "id": "Block1",
    "flow-name": "Blockade",
    "table_id": 0,
    "priority": 500,
    "hard-timeout": 0,
    "idle-timeout": 0,
    "cookie": 0,
    "strict": true,
    "barrier": false,
    "match": {
      "ethernet-match": {
        "ethernet-source": {
          "address": "42:C6:8C:C8:53:3B"
        },
        "ethernet-destination": {
          "address": "46:BD:0C:19:B2:90"
        }
      }
    },
    "instructions": {
      "instruction": [
        {
          "order": "0",
          "apply-actions": {
            "action": [
              {
                "output-action": {
                  "output-node-connector": "NORMAL",
                  "max-length": 65535
                },
                "order": 0
              }
            ]
          }
        }
      ]
    }
  }
}

Mit dieser Übung zum Einstieg kratzen wir natürlich nur an den Fähigkeiten des SDN Controllers und der aufsetzenden App. So können Nutzer der Lösung nicht nur einzelne Flows konfigurieren, sondern auch Pfade, Meters oder Gruppen definieren.

Wir wünschen viel Spaß bei eigenen Gehversuchen und freuen uns über Ihre Rückmeldungen in den Kommentaren.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44126155 / Produkte & Lösungen)