Zeroconf

Internet protocol suite
Layer Protocols
Application FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, Telnet, BitTorrent, …
Transport DCCP, SCTP, TCP, RTP, UDP, IL, RUDP, …
Network IPv4, IPv6, …
Data link Ethernet, Wi-Fi, Token ring, FDDI, PPP, …
Physical RS-232, EIA-422, RS-449, EIA-485, 10BASE2, 10BASE-T, …

Zeroconf or Zero Configuration Networking or in Microsoft language Automatic Private IP Addressing (APIPA) is a set of techniques that automatically create a usable IP network without configuration or special servers. This allows unknowledgeable users to connect computers, networked printers, and other items together and expect them to work. Without Zeroconf or something similar, a knowledgeable user must either set up special servers, like DHCP and DNS, or set up each computer by hand.

Zeroconf was pioneered by Apple Computer employee Stuart Cheshire in their move from AppleTalk to IP.

Contents

Problems solved

Zeroconf currently solves three problems :

  • Choose numeric addresses for networked items.
  • Figure out which computer has a certain name.
  • Figure out where to get services, like printing.

Choosing addresses

Both IPv4 and IPv6 have standard ways of choosing IP addresses without help. By RFC 3927, IPv4 uses the 169.254.* (link-local) set of addresses.

Name resolution

There are two very similar ways of figuring out which networked item has a certain name. Apple Computer's Multicast DNS (mDNS) is in use, but is not an IETF standard. Microsoft's Link-local Multicast Name Resolution (LLMNR) is not yet being used, but is being officially standardized by the IETF.

Both protocols allow a networked item to choose its own .local domain name and announce it using a special multicast IP address, and both handle the problem of two networked items claiming the same name. They have very minor differences, such as IP time-to-live settings.

Service discovery

Apple's protocol

DNS Service Discovery (DNS-SD) is Apple's lightweight protocol, used in Apple products and several brands of printers. It is considered simpler than SSDP (below) because it uses DNS rather than HTTP. It uses DNS SRV (RFC 2782), TXT, and PTR records to find out Service Instance Names, which are details of available services like instance, service type, and domain name. Service types are given informally on a first-come basis.

UPnP's protocol

Simple Service Discovery Protocol (SSDP) is UPnP's protocol, used in Windows XP and several brands of network equipment. SSDP uses HTTP notification announcements that give a service-type URI and a Unique Service Name (USN). Service types are regulated by the Universal Plug and Play Steering Committee.

A standardized protocol

Service Location Protocol (SLP), the only IETF standard, is usually ignored by large vendors, except Novell. SLP is described in RFC 2608.

Standardization

RFC 3927, a standard for choosing addresses for networked items, was published in March 2005 by the Zeroconf IETF working group, which included Apple, Sun, and Microsoft.

The DNSEXT IETF working group is working on standardizing LLMNR for figuring out which networked item has which name.

RFC 2608, the SLP standard for figuring out where to get services, was published by the SVRLOC IETF working group.

Implementations

Apple Bonjour

Despite the attempt at standardization, the most widely adopted Zeroconf solution is Bonjour from Apple Computer, which does not follow the IETF standards, but uses a combination of link-local address choosing, mDNS, and DNS-SD. Between Mac OS 10.1 and 10.2, Apple switched from SLP to mDNS and DNS-SD.

Link-Local IPv4 Addresses

There are some implementations available:

  • Windows and Mac OS have both supported link-local addresses since 1998. Apple released its open-source implementation in the Darwin bootp package.
  • zcip (Zero-Conf IP)
  • busybox embeds a zeroconf implementation (current versions)
  • zeroconf, a package based on Simple IPv4LL, a shorter implementation by Arthur van Hoff.

The above implementations are all stand-alone daemons that only deal with link-local IP addresses. Another approach is to modify existing DHCP clients.

Neither of these implementations addresses kernel issues like the broadcasting of ARP replies or closing of existing network connections.

Multicast DNS (mDNS) and DNS Service Discovery (DNS-SD)

mDNS and DNS-SD are often implemented together. The most popular combination among application programmers is Apple's mDNSResponder, which has interfaces for C and Java and is available on Mac OS X, Windows, and Linux. [1] [2]

Implementation links

  • Avahi, a free (LGPL) implementation of mDNS/DNS-SD for Linux
  • Bonjour, an implementation of DNS-SD by Apple Computer
  • Howl, a multiplatform mDNS/DNS-SD implementation based on Bonjour
  • JmDNS in Java
  • Liaison
  • mdnsd, embeddable Multicast DNS Daemon without DNS-SD
  • pyZeroConf, Python service discovery
  • tmdns, tiny multicast DNS, from the same project as ZCIP

References

  • {{{Author|{{{Last|}}}}|1{{{1|}}}={{{3|}}}}}}|, {{{First}}}}}}}}}|1{{{1|}}}={{{3|}}}}}}| (2001)}}}|1{{{1|}}}={{{3|}}}}}}}}}}}}|. }}}|1{{{1|}}}={{{3|}}}}}}|2=[{{{URL}}}|3=}} Autoconfiguration for IP Networking: Enabling Local Communication}|1{{{1|}}}={{{3|}}}}}}|2=]|3=}}}|1{{{1|}}}={{{3|}}}}}}|, IEEE Internet Computing}}}|1{{{1|}}}={{{3|}}}}}}|, 5}}}|1{{{1|}}}={{{3|}}}}}}|(3)}}}|1{{{1|}}}={{{3|}}}}}}|: 81-86}}
  • "Understanding Zeroconf and Multicast DNS", very slightly outdated, on the O'Reilly Network.
  • Charter of the DNSEXT working group, which coordinates LLMNR standarization
  • Explanation of .local addresses, which are used with mDNS but not yet standardized by IANA
  • UPnP consortium
  • RFC 2608, Service Location Protocol, Version 2de:Zeroconf

es:APIPA fr:Zeroconf it:Zeroconf tr:Zeroconf