Integration von P4 in OMNeT++
Folgende Aufgabenstellung kann im Rahmen der Veranstaltungen Projekt oder KSWS umgesetzt werden. Die nachfolgenden Ausführungen dienen als Diskussionsgrundlagen dar. Die genauen Inhalte erarbeiten wir in persönlichen Gesprächen entsprechend der Gruppenstärke sowie Präferenzen.
Motivation und Grundlagen
OMNeT++ ist ein Simulations-Framework, mit dem Rechnernetze und Netzwerkprotokolle simuliert und Leistungsanalysen durchgeführt werden können. Das Framework unterstüzt verschiedene Protokolle in Form von Modulen. Diese lasssen sich im Baukastensystem mit anderen Netzwerkkomponenten, die wiederrum durch Module repräsentiert sind, verschalten, sodass die Zusammenarbeit verschiedener Komponenten simuliert werden kann oder die Performance unterschiedlicher Protokolle in unterschiedlichen Szenarien miteinander verglichen werden kann. Zur Simulation von SDN-basierten Netzwerken unterstützt OMNeT++ das Kommunikationsprotokoll OpenFlow. OpenFlow erlaubt es, auf die Komponenten eines Switches, welche die Verarbeitung eintreffender Netzwerkpakete durchführen, zuzugreifen und deren Verhalten zu programmieren. Dazu werden die Tabellen der Switches von einer zentralen Instanz (SDN-Controller) konfiguriert und verwaltet.
Ein höheres Abstraktionsniveau führt die sich noch in Entwicklung befindliche Programmiersprache P4 ein. P4 kann als eine Verbesserung von OpenFlow angesehen werden. Mit dieser imperativen Programmiersprache lassen sich die Switches in komfortablerer Weise programmieren. Allerdings wird P4 von OMNeT++ bisher nicht unterstützt. Eine Unterstützung von P4 würde das Simulieren von P4-Programmen in OMNeT++ ermöglichen und damit den Weg für ausgiebige Tests und Messungen, möglichst unter Realbedingungen, ebnen.
Ziel der Arbeit
P4 ist in OMNeT++ zu integrieren. Konkret ist ein von den P4-Entwicklern zur Verfügung gestellter Software-Switch als Modul in OMNeT++ einzubinden. Das Framework soll in der Lage sein, mehrere Instanzen des P4-Switches zu erzeugen, beliebig generierte Netzwerkpake in die erzeugten P4-Switches einzugeben und umgekehrt auch die Ausgaben der P4-Switches für eine Weiterverarbeitung in einer Simulation abzugreifen. Hierzu sind in OMNeT++ zunächst geeignete Schnittstellen für den Austausch der Ein- und Ausgaben zu identifizieren und gegebenenfalls zu erweitern. Anschließend wird ein entsprechendes Modul konzipiert und prototypisch implementiert, welches auf dem P4-Switch basiert. Abschließend wird die Funktionsweise des entwickelten Moduls in diversen Simulationsszenarien unter OMNeT++ getestet.