Login
Newsletter
Werbung

Do, 24. August 2017, 10:02

Software::Systemverwaltung

dbus-broker erfindet DBus neu

David Herrmann und andere haben dbus-broker vorgestellt, einen Ersatz für den in die Jahre gekommenen DBus-Daemon. dbus-broker läuft im Gegensatz zum gescheiterten Kdbus-Projekt und dem noch in Entwicklung befindlichen Bus1 vollständig außerhalb des Kernels.

Mirko Lindner

Als Standard für die Interprozesskommunikation hat sich unter Linux weitgehend DBus durchgesetzt, das nun bald 15 Jahre alt wird. DBus ist portabel, fand jedoch nicht seinen Weg in Android, wo die Google-Entwicklung Binder zum Einsatz kommt. Binder ist hinsichtlich einer Kernel-Implementation bereits weit voraus und ist dadurch wesentlich schneller und weniger limitiert. Der Versuch von Greg Kroah-Hartman und anderen, mit Kdbus eine entsprechende Beschleunigung auch für DBus im Kernel zu implementieren, scheiterte jedoch vor bald zwei Jahren an technischen Gründen, da verschiedene Entwickler es weder für allgemein noch für schnell genug hielten, und wurde danach auf unbestimmte Zeit verschoben.

Da der Bedarf für ein Interprozesskommunikations-System ähnlich DBus, nur schneller, aber weiterhin bestand, stellten David Herrmann und Tom Gundersen vor zwei Jahren ein neues System vor, das sie Bus1 nannten. Zwei Monate darauf gab es eine erste Implementation, doch danach wurde es auffallend still um Bus1. Bus1 zog Inspirationen aus DBus, Binder, Mach IPC und anderen und könnte mit Hilfe einer Anpassungsschicht auch zur Beschleunigung bestehender DBus-Anwendungen genutzt werden.

Vielleicht ist der Grund, warum bei Bus1 wenig passierte, dass seine Hauptautoren in der Zwischenzeit an einer neuen Lösung arbeiteten, die DBus zu verbessern versucht, aber wie dieses als normale Prozesse außerhalb des Kernels laufen. So stellte David Herrmann jetzt etwas überraschend dbus-broker vor. Grund für dbus-broker< sind einige fundamentale Probleme in DBus, die seit Jahren ungelöst sind. So kann der Speicherbedarf des DBus-Daemons unbegrenzt ansteigen, wenn Nachrichten nicht abgeholt werden, was sogar zu einem Denial of Service-Angriff genutzt werden kann, Nachrichten können (in seltenen Fällen) verlorengehen, rekursive Aufrufe von DBus können zu Deadlocks führen, und die Geschwindigkeit und Kapazität des DBus-Daemons sind bekanntermaßen limitiert.

dbus-broker will all diese Mängel beheben. Die erste Leitlinie bei dbus-broker war, kompatibel zur DBus-Spezifikation zu bleiben. Allerdings wurde von einigen obsoleten Teilen der Spezifikation Abschied genommen; Clients, die die veraltete Funktionalität immer noch benötigen, müssen beim alten Dbus-Daemon bleiben. dbus-broker sieht sich nicht mehr als »Bus«, sondern ermöglicht nur noch die Kommunikation zwischen jeweils zwei Partnern. Dabei kann er die eingesetzten Ressourcen genau kontrollieren und auch aufräumen. Rekursionen werden vermieden: Statt DBus-Funktionen oder NSS aufzurufen, implementiert dbus-broker die benötigten Funktionen selbst. Die benötigten Ressourcen für die Kommunikation werden nicht mehr den Prozessen, sondern den Benutzern, denen die Prozesse gehören, zugeschlagen. Mit dbus-broker sollen außerdem keine Nachrichten mehr verlorengehen. Sollte es zu einem fatalen Fehler kommen, der die Zustellung der Nachrichten verhindert, soll dies entsprechend an die Kommunikationspartner gemeldet werden.

Der aktuelle Stand von dbus-broker ist, dass er bereits zum Booten von Fedora ausreicht. Der Quellcode ist auf Github zu finden. Binärpakete gibt es für Fedora und Arch Linux. Die Kompatibilität zum dbus-daemon wird mit dem Programm dbus-broker-launch erreicht. Die Kommunikation ist wie bei dbus-daemon auf den lokalen Rechner beschränkt, eine Netzwerkkommunikation kann jedoch über SSH-Tunnel erreicht werden, was jetzt bereits Standard ist. dbus-broker ist ausschließlich unter Linux lauffähig, da es Linux-spezifische Funktionalität nutzt, die auf anderen Systemen möglicherweise gar nicht vorhanden ist. Benutzer anderer Systeme haben allerdings immer noch den alten DBus-Daemon zur Verfügung. Programme, die DBus nutzen, sollten auch mit dbus-broker laufen, es sei denn, sie benötigen, wie bereits erwähnt, veraltete Funktionalität. Aussagen zur Geschwindigkeit von dbus-broker gibt es noch nicht, doch lassen die modernen Ansätze sowie Änderungen zugunsten von mehr Parallelität auf kräftige Steigerungen hoffen.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung