Bonjour: cosa si nasconde dietro l’implementazione Zeroconf

I dispositivi nelle reti per poter comunicare tra di loro devono prima di tutto instaurare una connessione. Per prendere contatto non hanno bisogno del nome del dispositivo ma dell’indirizzo IP o MAC che viene solitamente assegnato in automatico ai membri delle reti più grandi tramite un server DHCP principale (Dynamic Host Configuration Protocol). Così assiste il server DNS che è responsabile per la trasformazione del nome di dominio in un indirizzo IP e viceversa.

L’alternativa a questa assegnazione automatica di indirizzo consiste nel modificare i file host di tutti i membri della rete e di inserire manualmente i nomi e gli indirizzi IP, un’impresa che in una rete più grande, è semplicemente impossibile da mettere in atto.

Entrambi i metodi utilizzati per la configurazione di una rete locale sono perciò tutt’altro che ideali: da un lato anche la configurazione di server DHCP e DNS è subordinata a determinate conoscenze e a un certo impegno, dall’altro la variante manuale richiede sempre la modifica di tutti i file host, se ad esempio si aggiunge un nuovo dispositivo alla rete o se sono necessarie delle modifiche ai sistemi già integrati. La soluzione al problema prende il nome di Zero Configuration Networking, abbreviato in Zeroconf, e indica l’idea di una rete IP che collega i dispositivi senza configurazione manuale. Il concetto di rete, elaborato da un gruppo di lavoro della IETF (Internet Engineering Task Force) tra il 1999 e il 2003, è stato realizzato nelle implementazioni Bonjour e Avahi.

Le informazioni più importanti su Zeroconf in sintesi

Quando la Internet Engineering Task Force ha iniziato nel 1999 il progetto Zero Configuration Networking, si è prefissata come obiettivo le seguenti caratteristiche per la realizzazione di una “connessione di rete senza configurazione”:

  • risoluzione del nome di dominio integrata;
  • assegnazione automatica della maschera di sottorete, dell’indirizzo IP e del router;
  • funzione di ricerca per trovare dei servizi di rete disponibili;
  • assegnazione automatica di indirizzi multicast per connessioni con più dispositivi;
  • stesso livello di sicurezza presente anche sulle reti senza Zeroconf.

Il gruppo di lavoro della IETF non è riuscita a trovare un accordo e perciò alla fine del progetto non ha pubblicato neanche un documento con i requisiti del Zero Configuration Networking. Si è scelto, invece, insieme ad Apple, Microsoft e Sun Microsystems, di elaborare una specificazione per il protocollo Internet, rilasciata nel 2005 con il nome di “Dynamic Configuration of IPv4 Link-Local Adresses“ (RFC 3927).

IPv4LL assegna automaticamente indirizzi IP casuali con il prefisso 169.254/16, quindi compresi tra gli indirizzi 169.254.0.x e 169.254.255.x, anche se i primi e gli ultimi 256 indirizzi sono destinati a essere occupati da future applicazioni. Inoltre lo standard RFC prevede che il generatore casuale al momento della generazione degli indirizzi Internet tenga in considerazione informazioni specifiche del computer, come ad esempio gli indirizzi MAC dell’interfaccia di rete, cosa che riduce la possibilità che due dispositivi ricevano lo stesso IP.

Come funziona l’assegnazione automatica degli indirizzi nel protocollo IPv4

Per l’assegnazione automatica degli indirizzi senza il protocollo DHCP, l’IPv4 si serve dell’Address Resolution Protocol (ARP) che nell’IPv6 è stato sostituito dal Neighbor Discovery Protocol (NDP). Così il processo di assegnazione attraversa diversi passaggi per evitare conflitti tra gli indirizzi IP dei dispositivi di rete presenti.

  1. Prima di tutto viene generato l’indirizzo IP.
  2. Dopo l’IPv4LL prevede i così chiamati ARP Probe dove viene verificato se l’indirizzo IP generato venga già utilizzato nella rete. Per questo i tre pacchetti ARP con l’indirizzo del mittente 0.0.0.0 e l’indirizzo da verificare vengono inviati come destinatari.
  3. Se in questo periodo di tempo viene ricevuto un pacchetto ARP in cui l’indirizzo del mittente corrisponde all’indirizzo IP generato, ciò significa che è già stato dato nella rete e la generazione IP ricomincia daccapo.
  4. Se viene ricevuto un ARP Probeestraneo che è contrassegnato con l’indirizzo da testare significa che almeno un altro dispositivo tenta di entrare nella rete con questo IP e perciò la procedura viene ripetuta di nuovo ricominciando dal primo passaggio.
  5. Se il conflitto permane, il dispositivo che prova a connettersi ha richiesto l’indirizzo uscendone vincitore e invia due ARP Announcements (“comunicazioni”), dove l’indirizzo del mittente e del destinatario corrispondono all’IP generato.

Dato che l’indirizzo IP assegnato è dinamico, questo viene di nuovo verificato ad ogni riavvio, ad ogni sospensione dalla modalità stand-by, ad ogni inserimento del cavo ethernet o ad ogni login nella rete Wi-Fi. Per evitare che un elevato numero di conflitti porti a un sovraccarico della rete, ad esempio nel caso in cui molti dispositivi si vogliano connettere simultaneamente alla rete, il numero di nuovi tentativi per dispositivo viene automaticamente ridotto dopo dieci conflitti a una verifica al minuto.

Zeroconf: risoluzione del nome di dominio e riconoscimento automatico dei dispositivi

Insieme al gruppo di lavoro DNS Extensions il team di Zeroconf ha sviluppato anche delle soluzioni per la traduzione automatica degli indirizzi e la gestione dei dispositivi nelle reti IPv4 senza configurazione. Al posto di ideare un protocollo completamente nuovo, si è deciso di offrire queste funzioni tramite delle semplici modifiche del protocollo DNS standard. Così i gruppi del progetto hanno lavorato a stretto contatto con Apple, perché l’azienda di elettronica aveva già trovato con la propria raccolta di protocolli AppleTalk delle soluzioni adeguate per i propri dispositivi, che dovevano solo essere impiegate nella famiglia di protocolli Internet. Sono risultate così le specificazioni Multicast DNS (RFC 6762) e DNS-Based Service Discovery (RFC 6763).

Multicast DNS (mDNS) descrive come i dispositivi possono inviare richieste DNS agli indirizzi IP multicast. Per questo motivo il Top-Level-Domain .local è definito nel protocollo mDNS come link local. Inoltre tutte le richieste che terminano per .local devono essere inviate all’indirizzo IPv4LL multicast 224.0.0.251 (nell’IPv6 l’indirizzo è FF02::FB). Nel caso in cui la rete non disponga di un server DNS, tutte le richieste DNS che non terminano per .local giungono ugualmente all’indirizzo multicast.

In generale i messaggi mDNS possono sia essere trasmessi tramite UDP sia tramite TCP. Così, al posto della solita porta 53, viene utilizzata la porta multicast 5353. Se ora un dispositivo di rete volesse risolvere il nome host di un altro membro della rete, gli invia una richiesta mDNS chiedendogli di identificarsi. Il dispositivo di destinazione risponde con un pacchetto multicast che rivela il suo indirizzo IP. Tutti i dispositivi di rete ricevono questa informazione e la memorizzano automaticamente nella loro cache DNS.

DNS-Based Service Discovery (DNS-SD) definisce come i servizi in una rete Zeroconf possano essere visibili e resi disponibili per tutti i membri. Per evitare conflitti è prima di tutto necessario registrare questi servizi presso la IANA (Internet Assigned Numbers Authority) per ricevere un nome del servizio assegnabile univocamente. Poi le applicazioni comunicano il relativo nome ai membri della rete tramite una notifica multicast, dove non si presenta alcun problema quando più dispositivi offrono lo stesso servizio: il client di rete che richiede l’accesso ha in questo caso la possibilità di scegliere uno degli host.

La IETF ha pubblicato ufficialmente entrambe le specificazioni RFC solo a febbraio 2013, ma Apple aveva già iniziato come promotore nel 2012 a integrare gli standard nei suoi dispositivi. Il software open source sviluppato in questa occasione, conosciuto oggi con il nome di Bonjour (prima Rendezvous), rientra senza ombra di dubbio tra le soluzioni Zeroconf più diffuse oggigiorno. Così l’architettura di rete senza configurazione non solo è disponibile per macOS e iOS ma anche per i sistemi Windows.

Bonjour: la risposta di Apple a complicate configurazioni di rete

Quando Apple nel 2001 è passato con il Mac OS X 10.0 al kernel ibrido XNU, si è deciso di non utilizzare sul nuovo sistema operativo il gruppo di protocolli di rete di AppleTalk, fino ad allora tipici. Ma a Stuart Cheshire, utente Mac, non era neanche passato per la mente che il gigante dell’elettronica non avesse più intenzione di sviluppare un successore adeguato e perciò animò con un’e-mail una discussione in cui affrontava con altri utenti le vulnerabilità della configurazione di rete manuale, diventata ormai necessaria.

Ciò ha dato da pensare ad Apple: seduta stante Stuart Cheshire è stato assunto e gli è stato assegnato l’incarico di sviluppare una variante di protocollo per il nuovo sistema operativo, risultato dalla già citata collaborazione con la Internet Engineering Task Force.

Con il Mac OS X 10.2 Apple ha rilasciato nell’agosto 2002 la prima versione della nuova specificazione di protocollo con il nome Rendezvous. Per via di complicazioni legali si è dovuto trovare un nuovo nome al progetto, motivo per cui il software di rete porta a partire dalla versione 10.4 il nome valido ancora oggi di Bonjour. Il componente principale del pacchetto è mDNSResponder, un programma che si avvia durante il boot e funziona in background, implementando multicast DNS e DNS-Based Service Discovery. Inoltre ad oggi tra i componenti principali rientra anche la specificazione del protocollo Internet IPv4LL e IPv6LL. Così la soluzione di Apple comprende le tre sezioni elementari della rete senza configurazione:

  • Indirizzamento
  • Risoluzione del nome di dominio
  • Riconoscimento del servizio di rete

Grazie a questa architettura instaurate facilmente una connessione con il vostro dispositivo agli altri componenti nelle reti locali che ricorrono a loro volta a Bonjour, indipendentemente che si tratti di un PC, una stampante o di un’applicazione. Così, tra gli altri, anche il servizio di musica di Apple, iTunes, utilizza questa tecnologia di modo che vengano trovati automaticamente altri utenti che mettono a disposizione la loro musica in rete.

Bonjour è installato automaticamente sui sistemi attuali di macOS e iOS. Gli utenti Windows possono scaricare una versione specifica per i servizi di stampa o in alternativa installare un’applicazione in cui è contenuto il software. Tra questi rientrano anche il già citato iTunes, Skype e Adobe Photoshop (a partire dalla versione CS3).

Un’alternativa alla soluzione Zeroconf di Apple che funziona anche sui sistemi Linux, installata di norma su Debian e Ubuntu e disponibile con licenza libera LGPL, è Avahi. L’implementazione è stata inizialmente supportata grazie all’iniziativa a scopi sociali freedesktop.org, ma si è trasformata ora in un progetto indipendente.


Un momento! Prima di lasciarci scopri
la nostra offerta per il rientro dalle ferie:
dominio .it a 1 € per il primo anno!

Primo anno a 1 € IVA escl.,
poi 10 €/anno IVA escl.

Inserisci il dominio desiderato nella barra di ricerca per verificarne la disponibilità.