Hey! Sie scheinen aus United States zu kommen, möchten Sie auf die Englisch Webseite wechseln?
Switch to Englisch site
Skip to main content

Software-Defined Networking mit Raspberry Pi, OpenFlow und Zodiac FX

Main22_fc4f99cb309e43fb0823a2c86d2e14ec81f45b29.jpg

Mit minimalem Aufwand mit richtiger SDN-Hardware und -software auf Tuchfühlung gehen.

Im Beitrag werfen wir einen Blick darauf, wie Sie dank Zodiac FX, Raspberry Pi und einem Open Source OpenFlow-Controller mit wenig Aufwand mit Software-Defined Networking (SDN) Erfahrung sammeln können, einer Technologie, die üblicherweise auf Geräten in High-End-Rechenzentren zum Einsatz kommt.

Was ist SDN?

SDN-architecture-overview_7c28619d2f44e87927d7656d055a895b40928260.jpg

Übersicht der SDN-Architektur (Quelle: Wikimedia/Open Networking Foundation)

Bei herkömmlichen Netzwerklösungen ist die Control Plane, auf der entschieden wird, wohin Datenpakete geschickt werden, eng mit der Forwarding Plane, auf welcher Daten zum Bestimmungsort weitergeleitet werden, gekoppelt. Diese Koppelung besteht auf der Ebene der Netzwerkhardware und bedeutet, dass die Komplexität auf das gesamte Netzwerk verteilt ist. Um Datenflüsse zu ändern, müssen unter Umständen zahlreiche Geräte manuell konfiguriert werden.

Geräteanbieter stellen zwar Netzwerkmanagement-Tools bereit, aber diese bieten unterschiedliche Grade an Flexibilität, neigen dazu, eine relativ statische Netzwerkkonfiguration zu übernehmen und verfügen über eine begrenzte Interoperabilität. Darüber hinaus ist die Control Plane mit ihren Informationen tief in die Ausrüstung integriert, wobei sich sowohl Funktionen als auch Fehler usw. je nach Anbieter, Produkten und Firmware-Versionen unterscheiden.

Software-Defined Networking entkoppelt die Control Plane und die Forwarding Plane, sodass die Control Plane zentralisiert und unter Verwendung einer gemeinsamen Plattform erstellt werden kann. Es gibt inzwischen proprietäre Architekturen, die dies ermöglichen, aber SDN wird normalerweise mit offenen Standards in Verbindung gebracht, was die Interoperabilität erleichtert sowie die Herstellerbindung reduziert und damit deutlich mehr Möglichkeiten schafft.

OpenFlow

OpenFlow_ad8e71d8c1c9ff5a8cb60be43b47b12789f1c227.jpg

Das OpenFlow-Protokoll wird von der Open Networking Foundation (ONF) entwickelt und ermöglicht den Fernzugriff auf die Control Plane mittels Switches und Routern, die mit einem Controller am TCP-Port 6653 – oder in früheren Versionen Port 6633 – verbunden sind. Über den Controller können dann Paketabgleichsregeln und -aktionen hinzugefügt, geändert und gelöscht werden, die dann auf den am Netzwerk angeschlossenen Geräten in „Kabelgeschwindigkeit“ ausgeführt werden.

OpenFlowSwitch_c9a8b7f7d2ca02bc5be0138c335dfb8b1ac4d92e.png

Bildquelle: ONOS-Projekt.

Es gibt auch OpenFlow-kompatible Softwareimplementierungen von Netzwerkfunktionen, z. B. Lagopus, einen softwarebasierten Switch und Router, der direkt auf Intel-Systemen und auf einer virtuellen Maschine ausgeführt werden kann. Für einen Büroswitch mag es unsinnig erscheinen, einen ganzen Server mit Netzwerkschnittstellenkarten zu füllen. Allerdings ist die Network Function Virtualization (NFV) eine leistungsfähige Lösung, wenn sie zusammen mit der Servervirtualisierung eingesetzt wird. Sie wird sich auch in vielen anderen hochdynamischen Umgebungen als nützlich erweisen.

Typische Hardware

FS_Switch_139588bf2d496999221c0b16ca8a0aa212eebc7e.jpg

Ein 48x 10GbE + 6x 40GbE SDN-Switch von FS.COM.

Es überrascht nicht, dass Facebook und Google zusammen mit anderen Schwergewichten die Fäden hinter OpenFlow ziehen. Tatsächlich haben Sie im Jahr 2011 zusammen mit der Deutschen Telekom, Microsoft, Verizon und Yahoo! die ONF gegründet.

Es überrascht ebenfalls kaum, dass die Geräte gemäß den Anforderungen solcher Internetgiganten entwickelt werden und die Hersteller dann Produkte wie beispielsweise ein Switchgehäuse mit 48 x 10-Gbit-Ethernet + 6 x 40-Gb-Ethernet-Ports anbieten. Das ist zwar beeindruckend, aber deutlich außerhalb der Reichweite der meisten experimentierfreudigen Anwender sowie jener, die erste Erfahrungen mit SDN sammeln wollen.

Zodiac FX

ZodiacFXDetail_a0ef4c3d2f4138c4cba24ac74418f29607146d10.jpg

Zodiac FX ist ein 10/100 Mbit/s-Ethernet-Switch mit 4 Ports, der aus dem Bedürfnis nach einer kostengünstigen Option für Experimente mit SDN und für den Heimgebrauch entstand und über eine Kickstarter-Kampagne ins Leben gerufen wurde. Der Zodiac FX kombiniert einen Managed-Ethernet-Switch KSZ8795CLX von Microchip mit einem SAM4E8CA-Prozessor, was zusammen mit der Open Source-Firmware eine kompakte Lösung ergibt, die sich für Experimente anbietet.

Zusätzlich zu den 4 Ethernet-Ports verfügt Zodiac FX über einen Micro-USB-Anschluss für die Stromversorgung und eine serielle Schnittstelle für den Zugang zur Befehlszeilenschnittstelle, eine JTAG-Stiftleiste für die Wiederherstellung nach einem fehlerhaften Firmware-Upload und eine SPI-Stiftleiste für Erweiterungen.

Hardware einrichten

ZFX_Ports_34917f4dfa340cc62394ad385cfc5694d8b67fb1.jpg

Zodiac FX benötigt einen systemeigenen Port, der für die OpenFlow-Kommunikation konfiguriert ist. Standardmäßig ist das Port 4 ist. Die Switch-IP-Adresse, die Netzmaske und das Gateway wurden entsprechend konfiguriert.

Die Schnittstelle eth0 des Pi 3 Modell B+ (137-3331) wurde mit einer statischen IP-Adresse konfiguriert, womit Zodiac FX so konfiguriert werden konnte, dass eine Verbindung mit dieser Schnittstelle hergestellt wird. SSH wurde ebenfalls eingerichtet, um das Remote-Login über das Netzwerk zu ermöglichen.

Sowohl Port 4 des Zodiac FX als auch das Ethernet des Pi wurden mit einem anderen Switch verbunden, sodass Sie über einen mit dem vorhandenen Netzwerk verbundenen Laptop verwaltet werden konnten.

Die Ports 1 bis 3 des Switch wurden als Typ OpenFlow konfiguriert, und es wird unter ihnen keinen Datenverkehr geben, bis Flows konfiguriert sind. Nun haben wir die Hardware eingerichtet, als Nächstes benötigen wir einen OpenFlow-Controller.

Ryu

ryu_simple_switch_13-source_80de29e380530cc094b46208c6848034261c7406.jpg

Es gibt viele Open Source OpenFlow-Controller, wie etwa OpenDayLight, der diese und viele weitere Funktionen bietet. In diesem Fall handelt es sich um ein Gemeinschaftsprojekt, das unter der Linux Foundation entwickelt wurde, wobei HP, IBM, Intel und andere mitgewirkt haben.

Für die ersten Gehversuche ist jedoch Ryu, eine in Python geschriebene SDN-Plattform, eine gute Wahl, da sie schneller und einfacher installiert und funktionstüchtig ist.

Angenommen, die Netzwerkschnittstellen des Pi wurden konfiguriert und das übliche apt-get update gefolgt von apt-get dist-upgrade wurde ausgeführt, können anschließend die O/S-Abhängigkeiten wie folgt installieren:

$ sudo apt-get install gcc python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev python-pip

Wenn der Package Manager von Python installiert ist, kann nun Ryu installiert werden:

$ sudo pip install ryu

Jetzt haben wir eine Softwareentwicklungsplattform und eine Reihe von Beispielen. Zum Aufwärmen beginnen wir mit der Konfiguration eines einfachen Layer-2-Switch (Learning Switch), der OpenFlow v1.3 verwendet. Dazu gibt man einfach Folgendes ein:

$ ryu-manager --verbose /usr/local/lib/python2.7/dist-packages/ryu/app/simple_switch_13.py

ryu_simple_switch_13-start_bb68936857674a128d320b7ac1bd102e892436db.jpg

Danach wird der OpenFlow-Controller starten und der Zodiac FX kann eingeschaltet werden.

ZFX_WebInterface-Flows_ed2ae34a49ebed15fffb40323d3200a8682c40cf.jpg

Wenn man den Abschnitt Flows auf der Internetschnittstelle aufruft, sieht man, dass ein Flow installiert wurde.

ryu_simple_switch_13-deviceConnected_e737102fa583577b1ea3795cdbf1530acd71c39f.jpg

Und wenn man ein Gerät an einen der Ports 1 bis 3 anschließt, sieht man, wie der Controller die Pakete als Ereignisse meldet.

Wie geht es weiter?

Alles, was wir bisher unternommen haben, ist die Installation eines Layer-2-Switch (Learning Switch), wie man ihn in jedem Fachgeschäft kaufen kann. Seine Intelligenz erhält er jedoch von einer Python-Anwendung auf dem Raspberry Pi, und sein Verhalten kann sehr einfach geändert werden. Eine detaillierte Beschreibung der einfachen Funktionsweise der Switch-Anwendung finden Sie auf der Website von Inside OpenFlow.

Da Zodiac FX derzeit OpenFlow bis zu v1.3 unterstützt, können Flows konfiguriert werden, in denen Aktionen auf Ebenen festgelegt sind, z. B.:

    • Switch-Port
    • Ethernet-Quelle/Ziel-MAC und VLAN-Priorität
    • MPLS-Label und andere Parameter
    • IPv4- und IPv6-Quell-/Zieladresse
    • UDP/TCP/SCTP-Quell-/Zielport

Im Grunde genommen ist es offensichtlich, wie Anwendungen für die Firewall, zur Priorisierung des Datenverkehrs und vieles mehr entwickelt werden können. Das ist aber nicht alles: es könnten auch Anwendungen entwickelt werden, die viel einfacher mit anderen Tools und Managementsystemen integrierbar wären und dabei als wichtiges Merkmal die gesamte Komplexität zentralisieren.

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.