Capitolo 5. Tecnologia supportata da NetworkManager

Sommario

5.1. D-BUS
5.2. Hardware Abstraction Layer (HAL)
5.3. Ulteriori informazioni

NetworkManager utilizza le tecnologie D-BUS e hardware abstraction layer (HAL). Internamente, la tecnologia D-BUS viene utilizzata per le comunicazioni tra il daemon NetworkManager, i componenti di NetworkManager e HAL che consente di rilevare i componenti hardware nuovi e quelli già esistenti. Esternamente, la tecnologia D-BUS viene utilizzata per diffondere le informazioni sulle varie modifiche allo stato.

5.1. D-BUS

D-BUS è un sistema scritto in C per la comunicazione interprocesso (IPC) che consente alle applicazioni di comunicare tra di loro. È stato avviato nel 2002 da Havoc Pennington, Alex Larsson e Anders Carlsson come parte del progetto freedesktop.org relativo all'uniformazione di una piattaforma di messaggistica per computer desktop.

D-BUS è stato progettato per consentire la comunicazione in due casi specifici: tra le applicazioni desktop nella stessa sessione desktop e tra la sessione desktop e il sistema operativo.

D-BUS presenta un'architettura semplice costituita da tre livelli di base:

libdbus

libreria di basso livello per la connessione delle applicazioni e lo scambio dei messaggi. Supporta solo le comunicazioni "one-to-one".

Daemon message bus

File eseguibile al quale possono connettersi più applicazioni. Questo daemon può instradare i messaggi da un'applicazione a nessuna o più applicazioni.

Librerie wrapper

Le librerie wrapper, chiamate anche binding, eseguono il wrapping della libreria standard di basso livello di D-BUS per offrire un ambiente migliore agli sviluppatori. Le librerie wrapper includono libdbus-qt e libdbus-glib.

D-BUS è un sistema basato su bus di messaggistica, pertanto invia messaggi anziché flussi di byte. Il messaggio è caratterizzato da un'intestazione con l'identificazione del tipo e da un corpo che include i dati in formato binario. Esistono diversi tipi di messaggi incorporati, ad esempio per i messaggi di errore o la notifica di eventi. Le informazioni sul tipo, sul percorso e sull'interfaccia del messaggio sono memorizzate nella relativa intestazione.

Il daemon bus, che funge da server per i messaggi, presenta in genere più istanze. La prima istanza è di carattere globale e perlopiù simile ai classici daemon, quali httpd o sendmail. Questa istanza presenta molte limitazioni di sicurezza e viene utilizzata per le comunicazioni a livello di sistema. Le altre istanze vengono create ciascuna per ogni sessione login utente e vengono utilizzate per le comunicazioni tra le applicazioni nella sessione utente.

Per stabilire una connessione e avviare una comunicazione, è innanzitutto necessario autenticare le applicazioni. A questo scopo, viene utilizzato un semplice protocollo di testo basato su SASL. Per consegnare il messaggio corretto all'applicazione appropriata, vengono utilizzati speciali formati di indirizzi e nomi di bus di messaggi. Ciò significa che a ogni connessione è assegnato almeno un nome. Quando si chiude una connessione, tutti i nomi associati vengono eliminati.

L'API D-BUS core di basso livello è scritta in C e non è stata progettata per lo sviluppo di framework di applicazioni. Per questo scopo in D-BUS sono disponibili varie associazioni a linguaggi tra cui:

  • GLib

  • Qt

  • Python

  • .NET

  • Java

  • Perl

  • C++

  • Ruby