Zeroconf

From Free net encyclopedia

Internet protocol suite
Layer Protocols
Application DNS, TLS/SSL, TFTP, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, TELNET, BitTorrent, RTP, rlogin, ENRP, …
Transport TCP, UDP, DCCP, SCTP, IL, RUDP, …
Network IP (IPv4, IPv6), ICMP, IGMP, ARP, RARP, …
Link Ethernet, Wi-Fi, Token ring, PPP, SLIP, FDDI, ATM, DTM, Frame Relay, SMDS, …

Zeroconf or Zero Configuration Networking is a set of techniques that automatically create a usable IP network without configuration or special servers. Also known as Automatic Private IP Addressing or APIPA, 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.

Microsoft refers to this as Automatic Private IP Addressing (APIPA).

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, and is published freely, though not by a standardization body. Microsoft's Link-local Multicast Name Resolution (LLMNR) is little used, but is in the process of standardization by the IETF.

The two protocols have minor differences. mDNS allows a network device to choose a domain name in the ".local" namespace and announce it using a special multicast IP address. This introduces special semantics for the .local namespace, which is considered a problem by some members of the IETF[1][2]. The current LLMNR draft allows a network device to choose any domain name, which is considered a security risk by some members of the IETF[3]. mDNS is compatible with DNS-SD as described in the next section, while LLMNR is not. More details on the differences are at [4]

Service discovery

Apple's protocol

DNS Service Discovery (DNS-SD) is Apple's lightweight protocol, used in Apple products, many network printers and a considerable number of third party products and applications on various operating systems. It is considered simpler and easier to implement than SSDP (below) because it uses DNS rather than HTTP. It uses DNS SRV (RFC 2782), TXT, and PTR records to advertise Service Instance Names, which are details of available services like instance, service type, domain name and optional configuration parameters. Service types are given informally on a first-come basis. A service type registry is maintained and published by DNS-SD.org.

UPnP's protocol

Simple Service Discovery Protocol (SSDP) is UPnP's protocol, used in Windows XP and several brands of network equipment. Despite its name, it is considered complex and requires more effort to implement than DNS-SD. 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.

Efforts toward an IETF standard protocol

Service Location Protocol (SLP), the only protocol for service discovery to have reached the IETF RFC status, is usually ignored by large vendors, except Novell. SLP is described in RFC 2608; it is not yet an IETF Standard or Draft Standard.

Standardization

RFC 3927, a standard for choosing addresses for networked items, was published in March 2005 by the Zeroconf IETF working group, which included individuals from 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

The most widely adopted Zeroconf solution is Bonjour from Apple Computer, which does not follow SLP, the IETF standard for service discovery, but uses a combination of other IETF standards to follow a more lightweight approach to service discovery. Bonjour uses link-local addressing, mDNS, and DNS-SD. Apple switched from SLP to mDNS and DNS-SD between Mac OS 10.1 and 10.2.

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 [5] 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)

Multicast DNS is a way of using familiar DNS programming interfaces, packet formats and operating, in a small network where no conventional DNS server has been installed. 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 BSD, Mac OS X, Linux, other POSIX based operating systems and Windows. [6] [7]

Implementation links

  • Avahi, a free-software (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
  • Multicast DNS

References

Books

Videos

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