Zeroconf
From Wikipedia, the free encyclopedia
| Internet protocol suite |
| 5. Application layer |
|
DNS, TLS/SSL, TFTP, FTP, HTTP, IMAP4, IRC, MIME, POP3, SIP, SMTP, SNMP, SSH, TELNET, RTP, SDP, … |
| 4. Transport layer |
| 3. Network layer |
| 2. Data link layer |
|
Ethernet, Wi-Fi, PPP, FDDI, ATM, Frame Relay, GPRS, Bluetooth, … |
| 1. Physical layer |
|
Modems, ISDN, SONET/SDH, RS232, USB, Ethernet physical layer, Wi-Fi, GSM, Bluetooth, … |
fr:Modèle:Pile de protocoles pt:Predefinição:ProtocolosIP vi:Tiêu bản:IPstack
Zeroconf or Zero Configuration Networking 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 automatically. Without Zeroconf or something similar, a knowledgeable user must either set up special servers, like DHCP and DNS, or set up each computer's network settings by hand, which is a tedious task, and is challenging for non-technical people.
Zeroconf was pioneered by Apple Computer employee Stuart Cheshire in the company's move from AppleTalk to IP.
Contents |
[edit] Problems solved
Zeroconf currently solves three problems :
- Choose numeric network addresses for networked items
- Figure out which computer has a certain name
- Figure out where to get services, like printing (service discovery)
[edit] 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.
The technique for IPv4 is called IPv4 Link-Local (IPV4LL) in the RFC, however Microsoft refers to this as Automatic Private IP Addressing (APIPA) or Internet Protocol Automatic Configuration (IPAC).
[edit] 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.[1]
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.[2][3] 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.[4] mDNS is compatible with DNS-SD as described in the next section, while LLMNR is not. More details on the differences are at [5]
[edit] Service discovery
[edit] Apple's protocol: mDNS/DNS-SD
Multicast DNS is a protocol that uses similar APIs to the unicast DNS system but implemented differently. Somehow each computer on the LAN stores it's own list of DNS records (e.g. A, MX, PTR, SRV, etc) and when a mDNS client wants to know the IP address of a PC given its name, the PC with the corresponding A record replies and it gets its ip address. The mDNS multicast address is 224.0.0.251.
DNS Service Discovery (DNS-SD) is the other half of Apple's lightweight solution, built on top of the tested and robust Domain Name System. It is 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 Microsoft's competing technology, SSDP, because it uses DNS rather than HTTP. It uses DNS SRV (RFC 2782), TXT, and PTR records to advertise Service Instance Names. The hosts offering the different services publish 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.
Almost all Mac OS software such as the Safari browser and the iChat instant messaging software use DNS-SD. On Windows, many instant messaging and VoIP clients such as Gizmo support DNS-SD. On Linux, many Linux distributions already include DNS-SD functionality.
[edit] Microsoft's protocol: uPNP SSDP
Simple Service Discovery Protocol (SSDP) is a UPnP 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.
SSDP is supported in many SOHO firewall appliances, where host computers behind it may pierce holes for applications. It is also used in media center systems, where media exchange between host computers and the media center are facilitated using SSDP.
[edit] 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 Hewlett-Packard's network printers, Novell, Sun Microsystems, and Apple Computer. SLP is described in RFC 2608; it is not yet an IETF Standard or Draft Standard, although implementations are available for both Solaris and Linux.
[edit] 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. Apple's mDNS won't probably be standardized, because it has largely been developed outside of the DNS extension working group.
RFC 2608, the SLP standard for figuring out where to get services, was published by the SVRLOC IETF working group.
[edit] Implementations
[edit] Apple Bonjour
The most widely adopted Zeroconf solution is Bonjour (formerly Rendezvous) from Apple Computer, which uses multicast DNS and DNS Service Discovery. Apple changed its preferred Zeroconf technology from SLP to mDNS and DNS-SD between Mac OS 10.1 and 10.2, though SLP continues to be supported by Mac OS.
Apple's mDNSResponder has interfaces for C and Java and is available on BSD, Mac OS X, Linux, other POSIX based operating systems and Windows.[6][7]. The Windows downloads are available from Apple's website Bonjour for Windows.
[edit] Howl
Howl was a comparatively popular zeroconf implementation from Porchdog software. Many programs implemented support for it. For instance, a Howl-based zeroconf plugin is available for Internet Explorer. Howl is now dead, according to Porchdog software's website. They recommend using Bonjour.
[edit] Avahi
Avahi is a Zeroconf implementation for Linux and BSDs. It implements IPv4LL, mDNS and DNS-SD. It is part of every major and many minor Linux distributions, and is installed by default on e.g. Ubuntu version 6.10. If run in conjunction with nss-mdns it also offers host name resolution.
Avahi also implements binary compatibility libraries that emulate Bonjour and Howl, so software made to use those implementations can also utilize Avahi through the emulation interfaces.
[edit] Windows CE 5.0
Windows CE 5.0 includes Microsoft's own implementation of LLMNR.
[edit] 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.
- Avahi contains a high-quality implementation of IPv4LL in the avahi-autoipd tool.
- 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.
- Elvis Pfützenreuter has written a patch for the uDHCP client/server
Neither of these implementations addresses kernel issues like the broadcasting of ARP replies or closing of existing network connections.
[edit] See also
[edit] Implementation links
- Avahi, a free-software (LGPL) implementation of mDNS/DNS-SD and IPv4LL for Linux, NetBSD, FreeBSD and Darwin/MacOSX
- Bonjour, an implementation of DNS-SD by Apple Computer
- 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
[edit] References
- Erik Guttman (2001). "Autoconfiguration for IP Networking: Enabling Local Communication". IEEE Internet Computing 5 (3): 81-86.
- Zeroconf.org - Stuart Cheshire's page, including expired internet drafts.
- "Understanding Zeroconf and Multicast DNS", December 2002 article, very slightly outdated, on the O'Reilly Network.
- AIR Wiki : ZeroconfTechnologies
- 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
- DNS-SD.org DNS Service Discovery
- UPnP consortium
- RFC 2608, Service Location Protocol, Version 2
[edit] Books
- Zero Configuration Networking: The Definitive Guide, by Daniel Steinberg and Stuart Cheshire, O'Reilly
[edit] Videos
- Zeroconf tech talk by Stuart Cheshire to Google engineers.de:Zeroconf
es:Automatic Private Internet Protocol Addressing fr:Zeroconf it:Zeroconf ja:APIPA pl:APIPA ru:Zeroconf fi:Zeroconf tr:Zeroconf

