IoT-Software pflegen

Einfach, flexibel und sicher mit LIUF

28. März 2022, 6:00 Uhr | Von Heinrich Schönberger
© andranik123/adobe.stock.com

Für die Wartung Linux-basierter industrieller IoT-Systeme hat Mixed Mode das Linux Update Framework (LIUF) entwickelt. Es basiert auf einem breiteren Konzept als andere Paketmanagementsysteme und bietet mit umfassenderen Tools sowie Plug-ins auch eine größere Flexibilität und Erweiterbarkeit.

Diesen Artikel anhören

Verteilte IoT-Applikationen sind bei Embedded-Systemen im industriellen Umfeld längst üblich. Sie erfordern jedoch beständige Wartung wie Updates, Erweiterungen, Anpassungen etc. bezüglich Funktion, Gleichzeitigkeit der Verfügbarkeit, Konsistenz und Safety/Security. Dabei stellen sie hohe Ansprüche an die Verwaltungsinfrastruktur, was fast zwangsläufig zu einem potenziell hohen Aufwand führt. Ebenso streng ist von wirtschaftlicher Seite der Anspruch, die dabei entstehenden Kosten und Aufwände so minimal wie möglich zu halten. Als dritter Aspekt muss die sichere Kommunikation und Übertragung bei der Wartung unbedingt beachtet werden.

Für Linux-basierte verteilte IoT-Systeme wurde hierzu von Mixed Mode das »Linux Update Framework« (LIUF) entwickelt, das sich an die Client-Seite richtet: Die zu wartende Software sowie das LIUF laufen auf den Embedded-Systemen (Bild 1).

passend zum Thema

IoT-Software-Updates bedingen verschiedene, verteilte Softwarepakete. Die »Cockpit«-Sicht entspricht der oben in der Abbildung mit Publikation bezeichneten Workstation
Bild 1. IoT-Software-Updates bedingen verschiedene, verteilte Softwarepakete. Die »Cockpit«-Sicht entspricht der oben in der Abbildung mit Publikation bezeichneten Workstation. Die Domäne des LIUF reicht ab dem Server in der Mitte zu den Clients (gekennzeichnet durch Installation). Auf dem Server läuft LIUF nicht notwendigerweise, sondern nur das technische Interface. Auf den Clients, den »Triebwerken«, hingegen läuft das LIUF.
© Mixed Mode

Das Linux Update Framework setzt daran an, Laufzeitinstanzen eines Update-Systems auf dem aktuellen Stand der Technik »as a commodity« zu erzeugen, also mit möglichst geringem Beschaffungsaufwand. Es minimiert die Risiken, die durch sich ändernde Anforderungen im Bereich der Softwarebereitstellung entstehen und richtet den Fokus der Entwicklungstätigkeit weg von dem Aufwandsanteil, der zwar nicht reduziert werden kann, aber generisch im Voraus gelöst werden muss – im Entwicklerjargon: »Boilerplate« – hin zu der individuellen, fachlichen Domänenlogik.

Das Framework ist seit 2020 verfügbar und wird bereits von mehreren industriellen Nutzern erfolgreich eingesetzt. Den Anstoß dazu gab eine anlassbezogene Evaluierung bisheriger Open-Source-Software zur Update-Verwaltung, bei denen jede einen bestimmten funktionellen Vorzug hat, dafür andere Aspekte aber nicht befriedigend löst. Beispielsweise lässt sich eine gut für Image Updates einsetzen, aber die Update-Quelle ist festgelegt, oder der Download der Update-Daten ist nicht geregelt usw. Irgendetwas fehlt also immer, sodass der Versuch unternommen wurde, eine an den praktischen Notwendigkeiten orientierte, umfassende Software zur Update-Verwaltung zu bieten.

Anforderungen an eine Update-Infrastruktur

Für immer mehr IoT-Anwendungen ist Linux das Betriebssystem der Wahl. Auf adäquater Hardware lassen sich damit beliebig viele Anwendungen und Implementierungsvarianten realisieren. Als Beispiel kann hier eine autonome, in sich abgeschlossene Energieerzeugung dienen, die aus einem Cluster von z. B. Heizungswärme erzeugenden Komponenten besteht, die auf Mikrocon- trollern basieren. Der Cluster wird von einem Monitoringsystem gesteuert und überwacht. Das LIUF rollt die Software-Updates via CAN-Bus auf die Mikrocontroller aus.

Updates in IoT-Systemen werden in mehreren Stufen verarbeitet, aus den erforderlichen Quellen zusammengestellt und anschließend durch Quality Gates geschickt und bei Fehlerlosigkeit auf dem abgebildeten Server als zu verteilendes Paket gekennzeichnet
Bild 2. Updates in IoT-Systemen werden in mehreren Stufen verarbeitet. Das Update für die zu wartende Software wird aus den erforderlichen Quellen (nicht abgebildet) zusammengestellt, anschließend durch Quality Gates geschickt und bei Fehlerlosigkeit auf dem abgebildeten Server als zu verteilendes Paket gekennzeichnet. Anschließend wird von der Workstation, also dem »Cockpit« aus, das geprüfte Paket an die »Triebwerke«, also die einzelnen Clients, verteilt.
© Mixed Mode

Verteilte Applikationen stellen hohe Ansprüche an die Verwaltung und das Ausrollen der Software auf die verteilten Endgeräte: Es können zwar vielfältige technische Distributionsverfahren genutzt werden, jedoch müssen Authentizität und Integrität jedes einzelnen Schritts des Update-Vorgangs gewährleistet sein (Bilder 1 und 2, unverzichtbare Eigenschaften). In der Regel müssen der Update-Vorgang gegen Fehlerfälle abgesichert ablaufen und valide Verfahren für unvorhergesehene Störfälle vorgehalten werden, wenn ein Ereignis doch alle anderen Sicherungen durchdringen sollte. Im Allgemeinen muss jedes der Systeme folgende Fragen »beantworten«:

  • Wie wird ein Update zentral hinterlegt?
  • Wie werden die Clients über ausstehende Updates informiert?
  • Wie wird der aktualisierte Inhalt vom Server auf den Client übertragen?
  • Wie soll das Update auf dem Client installiert werden?

Über die Jahre haben sich einige Me-chanismen etabliert, um Softwareinstallationen in der Linux-Umgebung zu verwalten. Bekannte Implementierungen sind Paketverwaltungssysteme wie das Advanced Packaging Tool (APT) oder der RPM Package Manager, die im verbreiteten debian-Linux zu finden sind, weswegen ein gewisser Reifegrad aufgrund der debian-eigenen Reifemetrik vorausgesetzt werden kann. Das sind Beispiele für weit verbreitete und allgemein verfügbare Paketverwaltungssysteme mit einer beständigen Nutzerbasis. Teil des Erfolgs ist das Commitment verschiedener Linux-Distributionen, einzelne Paketverwaltungen jeweils als zentrale Anlaufstelle oder Rückgrat des Installationsmanagements zu verwenden.

Unverzichtbare Eigenschaften

Ein Update-Systems für verteilte Software muss folgende Eigenschaften aufweisen:
  • Information der Clients über ausstehende Updates
  • Authentizität und Integrität jedes Update-Schritts
  • Absicherung gegen Fehler
  • Valide Verfahren gegen unvorhergesehene Ereignisse
  • Sichere Kommunikation

 

LIUF versus bisherige Update-Frameworks

Für die Entwicklung eines IoT-Produkts liegt es zunächst nahe, in diesen Paketmanagementsystemen nach einem passenden Konzept und der günstigsten Implementierung zu suchen und anschließend zu hoffen, dass das ausgesuchte System alle Anforderungen erfüllt und auch zukünftige Entwicklungen des Produkts problemlos nachgezogen werden können. Eine kurzfristige Anpassung der Strategie der Softwaredistribution stellt sich aber in der Praxis oft hinterher als schwer möglich heraus, wenn die strukturierte Paketverwaltung nur eine geringe Anpassbarkeit aufweist. Das kann besonders schwer wiegen, wenn bereits das Initialsystem von Kompromissen gekennzeichnet ist. Dadurch wird die Paketverwaltung, die in der Gesamtheit einer IoT-Applikation eigentlich nur ein Hygienefaktor sein sollte, zum aktiven Projektrisiko: Die Gefahr, in einem Projekt länger und schmerzhafter als nötig an ein Paketverwaltungssystem gebunden zu sein, ist hoch.

Besonders teuer wird es, wenn spezielle Projektanforderungen Entwicklungskapazität binden, weil das Paketverwaltungssystem an einer Stelle umständlich und aufwendig ist oder Spezialkenntnisse erfordert: Die Entwicklungskapazität trägt am meisten zum Projekterfolg bei, wenn sie fokussiert auf dem fachlichen Schwerpunkt eines Produkts eingesetzt wird. Standardaufgaben, die anderswo bereits gelöst worden sind, nochmal zu lösen, stärkt die Unique Selling Proposition des Produkts demgegenüber nur sehr bedingt.

Daher wurde in den letzten Jahren eine Anzahl von frei verfügbaren abstrahierenden Frameworks (AFs) geschaffen, um Linux-Systeme verteilt zu aktualisieren. Sie setzen dabei nicht so sehr auf eine feingranular definierte Implementierung, sondern sollen eine modulare, konfigurierbare Plattform zur Umsetzung individueller Wünsche bereitstellen.

Dadurch soll die Softwareverwaltung möglichst flexibel und anpassbar, aber auch möglichst sicher und skalierbar gestaltet werden. Spezifische Implementierungen sollen sich bestmöglich in ein robustes, werthaltiges Basissystem einfügen lassen. Im besten Fall geht das einher mit einer realistischen Lernkurve und geringen Einstiegshürden. Dennoch zeigt der Praxistest: Alle untersuchten AFs lösen die gegebenen Anforderungen zu etwa 70 %, wogegen 30 % unberücksichtigt bleiben und bestimmte Aufgaben nur schwer lösbar machen.

Das Linux Update Framework im Architekturschaubild: Jede orangefarbene Box symbolisiert ein austauschbares Plug-in, die untereinander kompatibel sind. Über den themenbasierten Event-Bus mit den anderen Komponenten kommunizieren.
Bild 3. Das Linux Update Framework im Architekturschaubild: Jede orangefarbene Box symbolisiert ein austauschbares Plug-in. Diese Plug-ins sind untereinander kompatibel und können über den themenbasierten Event-Bus mit den anderen Komponenten kommunizieren. Dies ist ein weiterer Vorteil gegenüber AFs, die dies nicht immer gewährleisten, wenn überhaupt. Dieser Grad an Erweiterbarkeit ist der zentrale Vorteil des LIUF. Die hier dargestellten Plug-ins sind out-of-the-box im LIUF erhältlich, nach Bedarf können noch weitere Plug-ins hinzugefügt werden.
© Mixed Mode

Diesen Mangel versucht das LIUF auszugleichen (siehe Kasten Vorteile des LIUF). Viele der AFs – beileibe nicht alle – implementieren zwar einzelne Aspekte eines Framework-Konzepts, aber sind dann doch stets wieder sehr rigide an verschiedene Bibliotheken und Toolkits, z. B. APT (Advanced Package Tool), gekoppelt. Derartigen Abhängigkeiten stellt LIUF ein Plug-in-Konzept entgegen (Bild 3), wobei die in der aktuell out-of-the-box verfügbaren Version des LIUF vorhandenen Plug-ins durch weitere problemlos ergänzt werden können.

So lässt sich auf diesem Wege der Funktionsumfang von LIUF auf das gewünschte Maß »aufbohren«, auch mit Blick auf eine stets sichere Datenübertragung: Die Sicherheit bei der Kommunikation und Übertragung ist bei anderen AFs nicht immer unbedingt gewährleistet bzw. nicht immer zweifelsfrei dokumentiert. LIUF hingegen garantiert eine sichere, verschlüsselte Kommunikation. Schließlich ist das LIUF nicht auf eine einzige Linux-Distribution beschränkt, selbst wenn aktuell nur die debian-Variante eingesetzt wird: Eine Übertragung auf andere Linux-Distributionen ist möglich.


  1. Einfach, flexibel und sicher mit LIUF
  2. LIUF auf einer IoT-Systemarchitektur

Lesen Sie mehr zum Thema


Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Mixed Mode GmbH

Weitere Artikel zu Software (M2M)

Weitere Artikel zu Betriebssysteme