zur Startseite

Entwicklungsprojekt - zeroSDN (SS15)

zeroSDN -- Entwicklung eines verteilten SDN-Controllers
Dozent Dr. rer. nat. Frank Dürr
M. Sc. Thomas Kohler
Umfang8
Sprache Deutsch
Studiengänge Softwaretechnik
Zielgruppe Master
Terminet.b.d.
Kurzbeschreibung

Hintergrund

Software-defined Networking (SDN) [MAB+08, ONF12] ist eine moderne Netztechnologie, die aktuell eine große Unterstützung durch die Industrie (z.B. Google, IBM, NEC, Cisco, VMware) und die Forschung erfährt und die eine signifikante Steigerung der Flexibilität und Effizienz von Kommunikationsnetzen verspricht. Das Grundprinzip von SDN ist die Trennung der Weiterleitungsfunktionalität (Data Plane) des Netzes und der Konfiguration und Steuerung des Netzes (Control Plane), beispielsweise Routing und Netz-Monitoring. Switches implementieren dabei die Data Plane und leiten Pakete aufgrund der durch die Control Plane konfigurierten Weiterleitungstabelle weiter. Die Control Plane wird von einer als SDN-Controller bezeichneten Software-Komponente implementiert, die auf einer Serverinfrastruktur ausgeführt wird. Die Kommunikation zwischen SDN-Controller und Switches (Southbound-Interface) erfolgt über das Standardprotokoll OpenFlow [ONF14]. Für die Kommunikation zwischen SDN-Controller und Kontrollanwendung (Northbound-Interface), die z.B. Routing-Algorithmen oder Monitoring-Funktionalität implementiert, kommen typischerweise aus Web-Services bekannte Schnittstellen wie REST oder plattformspezifische Schnittstellen wie OSGi zum Einsatz.

Durch diese Architektur wird eine wesentliche Steigerung der Flexibilität erzielt, da komplexe Kontrollfunktionalität nun in Software (anstelle von Firmware) implementiert wird und somit leicht erweiterbar und anpassbar wird. Des Weiteren erleichtert die Verwendung weit verbreiteter Sprachen wie Java, Python oder C++  und Werkzeuge (z.B. Eclipse) die Erstellung von Kontrollanwendungen stark. Ferner konnte gezeigt werden, dass durch den von SDN verfolgten so genannten logisch zentralisierten Ansatz, in dem der SDN-Controller Kontrollanwendungen wie Routing-Algorithmen eine globale Sicht auf das Netz bereitstellt, eine signifikante Steigerung der Effizienz erzielt werden kann. So konnte z.B. Google durch den Einsatz von SDN in ihrem Backbone-Netz die Ausnutzung der Netzkapazität von 30-40 % auf nahezu 100 % steigern [Lev12].

Ziele und Aufgaben des Entwicklungsprojekts

Offensichtlich sind eine hohe Verfügbarkeit und Leistung des SDN-Controllers kritische Anforderungen für den praktischen Einsatz von SDN. Um zu vermeiden, dass der SDN-Controller einen potentiellen Performance-Flaschenhals oder Single Point of Failure bildet, muss seine Funktionalität – wie die jedes hochverfügbaren und skalierbaren Dienstes – verteilt implementiert werden. In diesem Entwicklungsprojekt soll durch die Entwicklung grundlegender Komponenten der Grundstein für einen verteilten SDN-Controller gelegt werden. Im Detail sollen entwickelt werden:

  • Eine Bibliothek zur Verarbeitung von OpenFlow-Nachrichten entsprechend des OpenFlow-Standards 1.4. Bei dieser Bibliothek wird insbesondere Wert auf eine leichte Erweiterbarkeit auf zukünftige Protokollversionen gelegt. Diese Bibliothek sollte in der Lage sein, essentielle OpenFlow-Nachrichten zu verarbeiten (nicht notwendigerweise den kompletten Standard; eine Abstimmung erfolgt mit den Betreuern).
  • Eine auf ZeroMQ [ZMQ] basierende flexible, leichtgewichtige, effiziente und sprachübergreifende Kommunikationsschnittstelle für den verteilten SDN-Controller.
  • Ein Grundgerüst für einen verteilten SDN-Controller, welches die entworfene Kommunikationsschnittstelle und Bibliothek integriert und zukünftige Erweiterungen (z.B. durch nachfolgende Masterarbeiten) ermöglicht.

Besonderer Wert wird dabei von Anfang an auf eine möglichst leichtgewichtige und effiziente Lösung gelegt. Der entworfene SDN-Controller soll auf Zielplattformen verschiedener Leistungsklassen effizient ausführbar sein (Raspberry Pi 2 bis hin zu Cloud-Servern).

ZeroMQ unterstützt grundsätzlich verschiedenen Sprachen wie Python, Java oder C++. Abhängig von den Anforderungen kann somit eine geeignete Sprache gewählt werden.

Für die Entwicklung und Tests werden Virtuelle Maschinen auf einem Compute-Server für die Ausführung von virtuellen Switches und Netzemulatoren (Open vSwitch [OVS], Mininet [MNET]) sowie ein reales verteiltes Testbed mit Hardware-SDN-Switch und Hosts bereitgestellt. Dem Projekt steht außerdem ein Labor mit Arbeitsplätzen und Projektor (0.353) zur Verfügung.

Anmeldung

Die Anmeldung Erfolgt zentral (Informationen werden in KW16 bekanntgegeben).

Voraussetzungen

Grundkenntnisse in Rechnernetzen und verteilten Systemen. Programmierkenntnisse in Java, C++ oder Python.

Literatur

[MAB+08] N. McKeown, T. Anderson, H. Balakrishnan, G. Parulkar, L. Peterson, J. Rexford, S. Shenker, and J. Turner. OpenFlow: Enabling innovation in campus networks. ACM SIGCOMM Computer Communication Review, 38(2):69–74, Apr. 2008.

[ONF12] Open Networking Foundation: Software-defined Networking: The New Norm for Networks, Apr. 2012.

[ONF14] Open Networking Foundation: OpenFlow Switch Specification (Version 1.4). ONF-TS-012, Oct. 2014

[Lev12] S. Levy: Going With the Flow: Google’s Secret Switch to the Next Wave of Networking. Wired, Apr. 2012, http://www.wired.com/2012/04/going-with-the-flow-google/all/1

[OVS] Open vSwitch Project, http://openvswitch.org/

[MNET] Mininet Project, http://mininet.org/

[ZMQ] ZeroMQ Project, http://zeromq.org/