Zeroconf / Bonjour / Avahi

Zeroconf, Bonjour und Avahi sind selbstkonfigurierende Verfahren für Adhoc-Netze auf Basis von IPv4 und IPv6. Im Prinzip handelt es sich um eine Sammlung bestehender Protokolle auf Basis von IP, DNS und NAT, um Netzwerkdienste, die in einem IP-Netz bereitgestellt werden, automatisch erkennen zu können, ohne das der Anwender irgendetwas manuell konfigurieren muss.
Somit ist Bonjour auch im Embedded- oder IoT-Bereich interessant, wenn Sensoren und Aktoren sich vernetzen und im lokalen Netzwerk bekannt machen sollen.

Bonjour, dass auch als Zeroconf (Zero Configuration Networking) bezeichnet wird, ist der Nachfolger von AppleTalk. Bonjour wurde von Apple im Jahr 2002 mit dem Namen "Rendezvous" ins Leben gerufen und später umbenannt. Bonjour gibt es nicht nur für Mac OS X, sondern auch für Linux (Avahi) und Windows (Bonjour). Bonjour wurde von Apple unter der Apache-2.0-Lizenz als Open Source freigegeben.

Bonjour löst verschiedene Probleme, die in lokalen Netzwerken auftreten.

  • IP-Adressen zuweisen
  • Namen zuweisen
  • Dienste bekannt machen

Immer dann, wenn ein Computersystem in ein Netzwerk eingebunden wird, müssen Adressen konfiguriert, Dienste, Verzeichnisse und Laufwerke freigegeben werden. Bei Bonjour teilen die Diensteanbieter ihre Dienste von sich aus mit (Annoncierung), so dass sie von anderen Stationen automatisch gefunden werden können. Dabei kommt man ohne zentralen Server aus, der die Adressen, Portnummern und Servernamen verteilt. Die Dienste melden sich dynamisch an und ab. Dabei bleibt Bonjour im Hintergrund, ohne dass für den Nutzer Konfigurationsaufwand entsteht.

Funktionsweise von Zeroconf / Bonjour / Avahi

Bonjour nutzt zum Informationsaustausch lediglich einzelne Multicast-DNS-Pakete (mDNS). Die Clients tauschen die Bonjour-Informationen über die Multicast-Adresse 224.0.0.251 (IPv4) bzw. ff02::fb (IPv6) an den Port 5353 aus. Die Bonjour-Pakete bleiben dabei im Subnetz. IP-Pakete aus dem Adressbereich zwischen 224.0.0.0 bis 224.0.0.255 dürfen IP-Router nicht über das eigene Subnetz hinaus übertragen. Hier gilt die Regel, dass Multicast-Pakete nicht zwischen den Subnetzen geroutet werden dürfen.
Ein Problem ist das dann, wenn man mehrere Subnetze im Netzwerk hat, dann kommen nicht alle Bonjour-Pakete überall an. Nur wenn alle Hosts im selben Subnetz arbeiten, dann ist die Kommunikation zwischen allen Geräten mit Bonjour möglich.
Damit Bonjour-Informationen auch über Subnetzgrenzen hinweg übertragen werden, setzt man DNS-übliche Unicasts ein. Das Verfahren nennt man Wide Area Bonjour (WAB) und setzt einen DNS-Server voraus.

Ursprünglich war Bonjour für Heimnetzwerke gedacht. Doch mit der Verbreitung von MacBooks, iPhones und iPads verbreitete sich Bonjour auch in größeren Netzwerkumgebungen. Doch je mehr Bonjour-Hosts im Netzwerk, desto mehr fluten mDNS-Pakete das Netzwerk mit An- und Abmeldungen von Diensten. Aus diesem Grund hat sich Apple mit einer Arbeitsgruppe der Internet Engineering Task Force (IETF) zusammengetan, um eine neue Spezifikation für größere Netzwerk-Umgebungen in Unternehmen und Universitäten zu schaffen.

Funktion: IP-Adressen zuweisen

Immer wenn man mehrere Geräte über einen Switch, mit einem Patchkabel, über einen WLAN-Access-Point oder Powerline-Adapter miteinander verbindet, dann stellt sich die Frage, wie die Geräte an ihre IP-Adressen kommen. Bei IPv6 ist es einfach. Hier gibt es die Autokonfiguration per SLAAC. Damit generiert sich jeder Host eine eigene IPv6-Adresse, die nur link-lokal gültig ist. Bei IPv4 kümmert sich Bonjour darum. Auch hier weisen sich die Geräte selber Adressen zu und Bonjour greift ein, wenn es zu Adresskonflikten kommt.
Während IPv6 hierfür den Adressbereich "fe80" hat, liegt der Adressbereich für link-lokale IPv4-Adressen bei "169.254.0.0/16".

Hat ein Host eine IPv4-Adresse für sich bestimmt, dann macht er diese im lokalen Netzwerk zusammen mit seiner Hardware-Adresse per Broadcast bekannt. Die anderen Netzwerk-Teilnehmer aktualisieren dann ihren ARP-Caches (Liste mit benachbarten Netzwerk-Teilnehmern).
Wird die IPv4-Adresse von einem anderen Teilnehmer bereits verwendet, dann muss dieses Gerät seine Adresse verteidigen. Dazu antwortet der Teilnehmer auf den Broadcast. Um zu verhindern, dass manuelles Eingreifen des Nutzers nötig wird, überlassen die Teilnehmer anderen Teilnehmern eine vergebene IP-Adresse, wenn die diese trotzdem haben wollen.

Funktion: Namen zuweisen

Bei Bonjour nennt sich diese Funktion Multicast DNS, kurz mDNS. Das ermöglicht die eigenständige Zuweisung von Namen in einem Netzwerk ohne Nutzereingriff und Unicast DNS innerhalb eines lokalen Netzwerks. Dazu weisen sich die Geräte selber Namen zu. Häufig Typenbezeichnungen, benutzerdefinierte Computernamen oder auch Teile aus Benutzernamen. Der dabei ablaufende Prüfprozess ähnelt der Zuweisung von link-lokalen IP-Adressen. Immer dann wenn ein Konflikt auftritt, wird der Name automatisch abgeändert und erneut geprüft.
Damit man bei den Namen zwischen mDNS und DNS unterscheiden kann, bekommen die Namen ein ".local" als Pseudo-Top-Level-Domain (TLD) angehängt. Das heißt, ".local" ist die TLD in einem lokalen Netzwerk.
Bei der Namensauflösung bedient sich mDNS dem gleichen Protokoll, wie beim Unicast DNS. Dabei stellt der Client einfach eine DNS-Anfrage an die Multicast-Adresse "224.0.0.251" und bekommt vom betreffenden Rechner eine Antwort zurück. Dabei muss man berücksichtigen, dass diese Adresse nur im jeweiligen Subnetz erreichbar ist.

Funktion: Dienste bekannt machen

Nicht alle Netzwerk-Teilnehmer sind Clients, die nur auf das Internet zugreifen. Es gibt auch Hosts, die Dienste anbieten. Beispielsweise ein Netzwerk-Drucker oder ein Media-Center. Solche Geräte machen ihre Dienste über UDP bekannt. Weil es keinen speziellen Empfänger für die Bekanntmachungen/Annoncen gibt, gibt es die Multicast-Adressen für IPv4 "224.0.0.251" und IPv6 "ff02::fb" und den Port 5353. Auf diese Adressen lauschen alle kompatiblen Geräte auf Bekanntmachungen durch Dienste-Anbieter. Dabei muss man berücksichtigen, dass diese Adresse nur im jeweiligen Subnetz erreichbar ist.

Aufgaben und Übungen mit dem Raspberrry Pi

Zeroconf/Bonjour/Avahi ist ein Announcierungsservice. Das bedeutet, der Service macht die Dienste, die ein Computer anbietet im lokalen Netzwerk bekannt. Typischerweise macht ein Drucker auf diese Weise in einem lokalen Netzwerk auf sich aufmerksam. Genauso kann jeder Computer in einem Netzwerk seinen Hostnamen bekannt machen. Das funktioniert besonders gut in DHCP-Umgebungen und wenn man die Konfiguration und Zuteilung statischer IP-Adressen vermeiden möchte.

Weitere verwandte Themen:

Teilen:

Produktempfehlungen

Netzwerktechnik-Fibel

Netzwerktechnik-Fibel

Das will ich haben!