Kapitel 5. Die Technologie hinter dem NetworkManager

Inhaltsverzeichnis

5.1. D-BUS
5.2. Hardware Abstraction Layer (HAL)
5.3. Weitere Informationen

Der NetworkManager nutzt die Vorteile der D-BUS- und Hardware Abstraction Layer-(HAL-)Technologien. D-BUS wird intern zur Kommunikation zwischen dem NetworkManager-Dämon, den NetworkManager-Komponenten und HAL verwendet, wodurch die Erkennung bestehender und neuer Hardware ermöglicht wird. Extern dient der D-BUS zum Broadcasting von Informationen zu verschiedenen Statusänderungen.

5.1. D-BUS

D-BUS ist ein System für die prozessübergreifende Kommunikation (IPC), das in C geschrieben ist. Es ermöglicht Anwendungen die Kommunikation untereinander. D-BUS wurde 2002 von Havoc Pennington, Alex Larsson und Anders Carlsson als Teil des freedesktop.org-Projekts zur Standardisierung einer Nachrichtenplattform für den Desktop entwickelt.

D-BUS wurde für zwei spezielle Fälle konzipiert: für die Kommunikation zwischen Desktop-Anwendungen in derselben Sitzung sowie für die Kommunikation zwischen der Desktop-Sitzung und dem Betriebssystem.

D-BUS verfügt über eine einfache, klare Architektur. Es besteht aus drei Basisschichten:

libdbus

Eine Low-Level-Bibliothek zur Verbindung der Anwendungen untereinander sowie zum Austausch von Nachrichten. Es werden ausschließlich 1:1-Verbindungen unterstützt.

Message Bus Daemon (Nachrichtenbus-Dämon)

Eine ausführbare Datei, zu der mehrere Anwendungen eine Verbindung herstellen können. Der Dämon kann Nachrichten von einer Anwendung zu keiner oder mehreren Anwendungen routen.

Wrapper Libraries (Wrapper-Bibliotheken)

Wrapper-Bibliotheken werden auch als Bindungen bezeichnet. Sie machen aus dem standardmäßigen D-BUS der Low-Level-Bibliothek eine bessere Umgebung für Entwickler. Zu den Wrapper-Bibliotheken gehören libdbus-qt und libdbus-glib.

Da es sich bei D-BUS, ein Nachrichtenbus-System handelt, werden keine Byte-Ströme, sondern Nachrichten gesendet. Die Nachrichten verfügen über eine Kopfzeile mit einer Typenangabe und einen Körper mit Daten. Als Format wird das Binärformat verwendet. Es gibt verschiedene integrierte Nachrichtentypen, beispielsweise für Fehlermeldungen oder Ereignisbenachrichtigungen. Informationen zum Nachrichtentyp sind in der Kopfzeile der Nachricht gespeichert. Die Kopfzeile enthält zudem Informationen zum Pfad und zur Schnittstelle der Nachricht.

Der Bus-Dämon, der wie ein Server für Nachrichten agiert, verfügt in der Regel über mehrere Instanzen. Die erste Instanz ist global und gleicht meist einem klassischen Dämon, wie httpd oder sendmail. Diese Instanz weist zahlreiche Sicherheitseinschränkungen auf und wird zur systemweiten Kommunikation verwendet. Die anderen Instanzen werden für jede Benutzeranmeldesitzung einzeln erstellt. Diese Instanzen dienen der Kommunikation zwischen den Anwendungen in der Benutzersitzung.

Bevor eine Verbindung hergestellt wird und die Kommunikation beginnt, müssen die Anwendungen autorisiert werden. Zu diesem Zweck wird ein einfaches Klartextprotokoll auf SASL-Basis verwendet. Damit die Nachrichten an die richtige Anwendung gesendet werden, werden Adressen in einem speziellen Format sowie Nachrichtenbus-Namen verwendet. Dies bedeutet, dass jede Verbindung über mindestens einen Namen verfügt. Wenn eine Verbindung beendet wird, werden all ihre Namen gelöscht.

Die grundlegende Low-Level D-BUS API ist in C geschrieben und nicht für die Entwicklung von Anwendungs-Frameworks gedacht. Zu diesem Zweck bietet D-BUS verschiedene Sprachenbindungen. Zur Auswahl stehen u. a.:

  • GLib

  • Qt

  • Python

  • .NET

  • Java

  • Perl

  • C++

  • Ruby