Bonjour: Das steckt hinter der Zeroconf-Implementierung
Damit Geräte in Netzwerken miteinander kommunizieren können, müssen sie zunächst eine Verbindung miteinander aufbauen. Zur Kontaktaufnahme benötigen sie nicht etwa den Namen des Gerätes, sondern die IP- bzw. MAC-Adresse, die den Teilnehmern in größeren Netzwerken für gewöhnlich automatisch durch einen zentralen DHCP-Server (Dynamic Host Configuration Protocol) zugewiesen wird. Damit arbeitet er dem DNS-Server zu, der für die Umwandlung des Domänennamens in eine IP-Adresse bzw. auch andersherum für die der IP-Adresse in den Domänennamen zuständig ist. Die Alternative zu dieser automatischen Adresszuordnung besteht darin, die hosts-Dateien aller Netzwerk-Teilnehmer anzupassen und die Namen sowie die IP-Adressen manuell einzutragen – ein Unterfangen, das bei einem größeren Netzwerk schier unmöglich zu bewerkstelligen ist.
Beide Wege sind bei der Einrichtung eines lokalen Netzwerks also nicht als ideal: Einerseits ist auch die Konfiguration von DHCP- und DNS-Server mit einem gewissen Aufwand und Know-how verbunden, andererseits erfordert die manuelle Variante immer wieder die Anpassung aller hosts-Dateien, wenn man dem Netzwerk beispielsweise ein neues Gerät hinzufügt oder wenn Änderungen an bereits eingebundenen Systemen notwendig sind. Die Lösung des Problems trägt den Namen Zero Configuration Networking – kurz Zeroconf – und bezeichnet die Idee eines IP-Netzes, das Geräte ohne manuelle Konfiguration miteinander verbindet. Das Netzwerk-Konzept, mit dessen Ausarbeitung sich eine Arbeitsgruppe der IETF (Internet Engineering Task Force) zwischen 1999 und 2003 beschäftigt hat, ist unter anderem in den Implementierungen Bonjour und Avahi realisiert worden.
Die wichtigsten Informationen zu Zeroconf im Überblick
Als die Internet Engineering Task Force 1999 mit dem Projekt Zero Configuration Networking begann, setzte man sich folgende Merkmale für die „konfigurationslose Vernetzung“ als Ziel:
- integrierte Namensauflösung
- automatische Zuordnung der Subnetzmaske, der eigenen IP-Adresse sowie des Routers
- Suchfunktion, um verfügbare Netzwerkdienste zu finden
- automatische Zuweisung von Multicast-Adressen für Mehrpunktverbindungen
- gleiches Sicherheitslevel wie Netzwerke ohne Zeroconf
Die Arbeitsgruppe der IETF konnte letztlich jedoch nicht zu einem Konsens kommen, weshalb sie zum Ende der Projektzeit auch kein Dokument mit den Anforderungen des Zero Configuration Networkings veröffentlichte. Stattdessen entschied man sich, gemeinsam mit Apple, Microsoft und Sun Microsystems, eine Spezifikation für das Internetprotokoll auszuarbeiten, die 2005 unter dem Namen „Dynamic Configuration of IPv4 Link-Local Adresses“ (RFC 3927) veröffentlich wurde. IPv4LL vergibt automatisch zufällige IP-Adressen mit dem Präfix 169.254/16, also aus dem Bereich 169.254.0.x bis 169.254.255.x, wobei die ersten sowie die letzten 256 Adressen für zukünftige Anwendungen reserviert sind. Der RFC-Standard setzt zudem voraus, dass der Zufallsgenerator beim Erzeugen der Internetadressen rechnerspezifische Informationen wie zum Beispiel die MAC-Adresse der Netzwerkschnittstelle miteinbezieht – was die Wahrscheinlichkeit minimiert, dass zwei Geräte die gleiche IP erhalten.
So funktioniert die automatische Adressvergabe in IPv4
Für die automatische Adressvergabe ohne das DHCP-Protokoll bedient sich IPv4 des Address Resolution Protocols (ARP), das in IPv6 durch das Neighbor Discovery Protocol (NDP) ersetzt worden ist. Dabei durchläuft der Vergabeprozess mehrere Schritte, um Konflikte zwischen den IP-Adressen der teilnehmenden Netzwerkgeräte zu vermeiden.
- Zunächst wird die IP-Adresse generiert.
- Anschließend sieht IPv4LL sogenannte ARP-Proben vor, bei denen überprüft wird, ob die generierte IP-Adresse bereits im Netzwerk genutzt wird. Zu diesem Zweck werden drei ARP-Pakete mit der Absenderadresse 0.0.0.0 und der zu überprüfenden Adresse als Empfänger versendet.
- Wird in diesem Zeitraum ein ARP-Paket empfangen, bei dem die Absenderadresse der erzeugten IP-Adresse entspricht, ist diese im Netzwerk bereits vergeben und die IP-Generierung beginnt von vorne.
- Wird eine fremde ARP-Probe empfangen, die mit der zu testenden Adresse gekennzeichnet ist, versucht mindestens ein weiteres Gerät, dem Netzwerk mit dieser IP beizutreten, weshalb die Prozedur ebenfalls von Schritt 1 an wiederholt wird.
- Bleibt ein Konflikt aus, hat das verbindende Gerät die Adresse erfolgreich für sich beansprucht und sendet zwei sogenannte ARP-Announcements („Ankündigungen“) aus, in denen Absender- und Empfängeradresse der generierten IP entsprechen.
Da die zugewiesene IP-Adresse dynamisch ist, wird sie nach jedem Neustart, Aufwachen aus dem Ruhemodus, Einstecken des Ethernet-Kabels oder Einloggen in das WLAN erneut überprüft. Damit eine hohe Zahl an Konflikten nicht zu einer Überbelastung des Netzwerks führt, zum Beispiel wenn sich viele Geräte gleichzeitig mit dem Netzwerk verbinden möchten, wird die Anzahl an Neuversuchen pro Gerät nach zehn Konflikten automatisch auf eine Prüfung pro Minute reduziert.
Zeroconf: Namensauflösung und automatische Geräteerkennung
Gemeinsam mit der Arbeitsgruppe DNS Extensions entwickelte das Team von Zeroconf außerdem auch Lösungen für die automatische Adressübersetzung und Geräteverwaltung in den konfigurationslosen IPv4-Netzwerken. Anstatt ein komplett neues Protokoll zu entwerfen, entschied man sich dazu, diese Funktionen durch einfache Anpassungen des Standard-DNS-Protokolls zu bieten. Dabei arbeiteten die Projektgruppen eng mit Apple zusammen, denn das Elektronikunternehmen hatte mit seiner firmeneigenen Protokollsammlung AppleTalk bereits entsprechende Lösungen für die eigenen Geräte, die es lediglich auf die Internetprotokollfamilie zu übertragen galt. Ergebnis waren die Spezifikationen Multicast DNS (RFC 6762) und DNS-Based Service Discovery (RFC 6763).
Multicast DNS (mDNS) beschreibt, wie Geräte DNS-Anfragen an IP-Multicast-Adressen verschicken können. Zu diesem Zweck ist die Top-Level-Domain .local im mDNS-Protokoll als link-lokal definiert. Zudem müssen alle Anfragen, die auf .local enden, an die IPv4LL-Multicast-Adresse 224.0.0.251 (in IPv6 ist es die Adresse FF02::FB) geschickt werden. Alle DNS-Anfragen, die nicht auf .local enden, gelangen ebenfalls zu der Multicast-Adresse, wenn das Netzwerk nicht über einen DNS-Server verfügt. Generell können mDNS-Nachrichten sowohl über UDP als auch über TCP übertragen werden. Dabei wird statt des üblichen Ports 53 der Multicast-Port 5353 genutzt. Will ein Netzwerkgerät nun den Hostnamen eines anderen Netzwerkteilnehmers auflösen, schickt er diesem eine mDNS-Anfrage mit der Bitte um Identifizierung. Das Zielgerät antwortet mit einem Multicast-Paket, das seine IP-Adresse preisgibt. Alle Netzwerkgeräte erhalten diese Information und nehmen sie automatisch in ihrem DNS-Cache auf.
DNS-Based Service Discovery (DNS-SD) definiert, wie Dienste in einem Zeroconf-Netzwerk für alle Teilnehmer sichtbar und verfügbar gemacht werden können. Aus Abstimmungszwecken ist es zunächst notwendig, diese Dienste bei der IANA (Internet Assigned Numbers Authority) zu registrieren, um einen eindeutig zuordenbaren Servicenamen zu erhalten. Den jeweiligen Namen teilen Anwendungen den Netzwerkteilnehmern dann per Multicast-Benachrichtigung mit, wobei es keinerlei Problem darstellt, wenn mehrere Geräte den gleichen Dienst anbieten: Der zugreifende Netzwerk-Client hat in diesem Fall einfach die Möglichkeit, einen der Hosts auszuwählen.
Die beiden RFCs hat die IETF erst im Februar 2013 offiziell veröffentlicht, Apple hat als Initiator jedoch bereits 2002 damit begonnen, die Standards in seine Geräte zu integrieren. Die zu diesem Anlass entwickelte Software, die heute unter dem Namen Bonjour (früher Rendezvous) bekannt und Open Source ist, zählt zweifelsfrei zu den verbreitetsten Zeroconf-Lösungen. So ist die konfigurationslose Netzwerk-Architektur nicht nur für macOS und iOS, sondern auch für Windows verfügbar.
Bonjour: Apples Antwort auf mühsame Netzwerkkonfigurationen
Als Apple im Jahr 2001 mit Mac OS X 10.0 auf den hybriden XNU-Kernel umstieg, entschied man sich dazu, die bis dato typische Netzwerkprotokollgruppe AppleTalk nicht auf das neue Betriebssystem zu portieren. Dass der Elektronikriese beabsichtigte, keinen adäquaten Nachfolger zu entwickeln, passte dem Mac-Nutzer Stuart Cheshire nicht im Geringsten, weshalb er eine E-Mail-Diskussionsrunde ins Leben rief, in der er gemeinsam mit anderen Usern die Schwächen der notwendig gewordenen manuellen Netzwerkkonfiguration ansprach. Das brachte Apple zum Umdenken: Kurzerhand stellte man Stuart Cheshire ein und beauftragte ihn mit der Entwicklung einer Protokollvariante für das neue Betriebssystem, woraus die bereits erwähnte Zusammenarbeit mit der Internet Engineering Task Force resultierte.
Mit Mac OS X 10.2 veröffentlichte Apple im August 2002 die erste Version der neuen Protokollspezifikationen unter dem Namen Rendezvous. Aufgrund rechtlicher Probleme war man gezwungen, einen neuen Titel für das Projekt zu finden, weshalb die Netzwerk-Software seit Version 10.4 den noch heute gültigen Namen Bonjour trägt. Die Hauptkomponente des Pakets ist der mDNSResponder, ein beim Boot-Prozess startendes und im Hintergrund ablaufendes Programm, das Multicast DNS und DNS-Based Service Discovery implementiert. Ferner gehört mittlerweile natürlich auch die Internetprotokoll-Spezifikation IPv4LL (bzw. IPv6LL) zu den Hauptbestandteilen. Damit deckt die Apple-Lösung die drei elementaren Bereiche des konfigurationslosen Netzwerks ab:
- Adressierung
- Namensauflösung
- Netzwerkdiensterkennung
Dank dieser Architektur stellen Sie mit Ihrem Gerät einfach und unkompliziert Verbindung zu anderen Komponenten in lokalen Netzwerken her, die ebenfalls auf Bonjour zurückgreifen – egal, ob es sich um einen PC, einen Drucker oder eine Anwendung handelt. So verwendet unter anderem der Apple-Musikdienst iTunes die Technologie, damit automatisch andere Nutzer gefunden werden, die ihre Musik im Netzwerk freigeben. Auf gängigen macOS- und iOS-Systemen ist die Bonjour-Software automatisch installiert. Windows-User können entweder eine spezifische Version für Druckdienste herunterladen oder alternativ eine Applikation installieren, in deren Umfang die Software enthalten ist. Hierzu zählen unter anderem das genannte iTunes, Skype und Adobe Photoshop (ab CS3).
Eine Alternative zu Apples Zeroconf-Lösung, die auch auf Linux-Systemen funktioniert, unter Debian und Ubuntu standardmäßig installiert ist und unter der freien Lizenz LGPL zur Verfügung steht, ist Avahi. Die Implementierung erfuhr zunächst Unterstützung durch die gemeinnützige freedesktop.org-Initiative, hat sich mittlerweile aber zu einem eigenständigen Projekt entwickelt.