Bookshelf

Verteilte Software-Applikationen sind schon lange im Praxiseinsatz und in unserem alltäglichen Leben weit verbreitet. Auch in sicherheitskritischen Bereichen in unserer Infrastruktur, wie dem Bahnwesen, gibt es viele verteilte Systeme. Diese haben ganz besondere Anforderungen in Bezug auf ihre Verlässlichkeit. Doch die Praxis zeigt: Es kommt immer wieder zu Ausfällen. Züge bleiben stehen oder smarte Heizungen schaffen saunaartige Temperaturen. Häufig liegt es daran, dass Knoten oder Verbindungen zwischen diesen ausfallen. Der bisherige Testumfang der Applikationen scheint also nicht auszureichen, insbesondere da häufig nur korrektes Verhalten getestet wird.

Eine Technik, die speziell die Verlässlichkeit von Systemen überprüfen kann, ist die gezielte Fehlerinjektion, denn diese testet das Verhalten einer Applikation mit fehlerhaften Eingaben oder Zuständen. Auch Testbeds, eine isolierte Testumgebung zur Ausführung von Applikationen, können helfen, verteilte Applikationen zu testen, bevor diese im Produktiveinsatz sind. Verwandte Arbeiten zeigen bei dieser Kombination aus Fehlerinjektion und Testbed eine Lücke.

Im Rahmen dieser Arbeit wird das Testbed Hatebefi entwickelt, um diese Lücke zu schließen. Hatebefi ermöglicht es, verteilte Applikationen auf virtuellen Knoten oder Hardwareknoten auszuführen – Hatebefi wird dadurch zu einem hybriden Testbed – und diese über simulierte Netzwerke zu verbinden. Es startet und stoppt die Knoten, konfiguriert die verbundene Netzwerk- und Verkehrssimulation und injiziert gezielt Fehler in alle Komponenten. Zur Netzwerksimulation kommt in Hatebefi der Netzwerksimulator ns-3 zum Einsatz, der insbesondere auch für den Bereich der vernetzen Mobilität relevante Netzwerktechnologien simulieren kann. Zusätzlich stellt jeder Knoten, auf dem die zu testende Applikation ausgeführt wird, ein Element in der integrierten Verkehrssimulation SUMO dar und “fährt” somit durch ein virtuelles Straßennetz. Anhand der Geopositionen in SUMO berechnet ns-3 dann die Netzwerkverbindungen. Eine ebenfalls im Rahmen dieser Arbeit entwickelte umfangreiche Bibliothek zur Fehlerinjektion bietet darüber hinaus die Möglichkeit, zu präzise definierbaren Zeitpunkten vor, während und nach der Testausführung Fehler zu injizieren. Da diese, genauso wie die Konfiguration der anderen Komponenten, vom Tester in Python implementiert werden, können bei der Fehlerinjektion und der Konfiguration alle Funktionen der Programmiersprache genutzt werden.

Die abschließende Evaluation zeigt, dass die Ergebnisse der Simulation repräsentativ für die Realität sind. Überprüft wird dabei, wie sehr die Simulation, insbesondere die Reichweite, Latenz und Datenrate der IEEE 802.11p-Verbindung, repräsentativ für die echte Welt ist. Dafür werden Vergleichswerte in der Realität gemessen, die Modelle der Simulationen mit einem Teil der Werte kalibriert und anhand der Abweichungen zu den übrigen Werten bewertet. Außerdem wird die zusätzliche Rechenlast des Testbeds analysiert. Das Ergebnis der Evaluation zeigt: Hatebefi ist ein repräsentatives Testbed, welches insbesondere die Verlässlichkeit von Softwaresystemen im Bereich der vernetzten Mobilität testet.

Distributed software systems are widely established in all kinds of daily life. Even in security-relevant areas of our infrastructure, distributed systems exist. For these, there are special requirements for dependability. But the usage of these systems shows they fail again and again. Trains stop or “smart heating” results in an unwanted sauna. Often these failures occur because nodes or connections are failing. It looks like the current effort to test these applications is not enough.

A technique that especially tests the dependability of distributed systems is software fault injection. Also, isolated environments known as testbeds are useful for running and testing applications before putting them into production. A review of the current research on software fault injection and testbeds reveals there is a gap with combining these two approaches.

This thesis introduces the testbed Hatebefi, which should close this gap. Hatebefi allows testers to run distributed applications on virtual and real hardware nodes, which makes Hatebefi a hybrid testbed. It starts and stops these nodes and connects them with simulated networks, managed by the network simulator ns-3 that can simulate relevant technologies for connected mobility applications. Additionally, Hatebefi connects the common traffic simulator SUMO to the testbed, enabling nodes to “drive” through a simulated traffic network. The testbed is completed by an extensive library for fault injection that was also developed as part of this thesis. This library allows the tester to precisely define moments when a fault should be injected. This fault, together with the rest of the configuration of a test case, is developed in Python to allow the tester to use all possibilities of the programming language.

The final evaluation of the Hatebefi testbed shows that results gained with Hatebefi are representative for the real world. Therefore, it compares the communication range, latency, and data rate of the simulated IEEE 802.11p connection against the real world. To verify these values, real-world reference values were measured, and the models of the simulation were adjusted to part of these values. Afterward, the models were rated by the aberration to the other values. Besides that, the evaluation analyzed the resource consumption of the testbed. The results show that Hatebefi is a representative testbed that especially verifies the dependability of distributed software systems in the area of connected mobility.

Titel Hatebefi: Ein hybrides Testbed zur Fehlerinjektion in verteilte Softwaresysteme
Verfasst von Arne Boockmeyer
Serien-Detail Masterarbeit
Verlag Hasso-Plattner-Institut an der Universität Potsdam
Datum 20. März 2020
Seitenzahl 101
Hinzugefügt am 20. März 2020
Hinzugefügt von arne.boockmeyer
Buch-Verleih verfügbar
PDF-Download Fachgebiets-Angehörige+ arne.boockmeyer, philipp.schmidt