In the service of Aunt Tillie -- Zero-configuration networking

Eric S. Raymond esr at snark.thyrsus.com
Tue Mar 2 21:07:20 UTC 2004


There has been much discussion recently on the Fedora mailing list
about how to improve Linux's ease of use in scenarios like printer
setup.  (Thank you, everyone, for picking up on the content of my rant
so constructively when you very well might have dismissed it as
carping.)

I have just become aware of a technology which could represent a long
step towards addressing the usability problem.  It is a set of small
patches to the IP infrastructure that support zero-configuration
networking -- you just plug in an IP-capable device and it
self-configures an IP address, becomes available in a local DNS
namespace, and other devices automatically discover its presence
and the services it offers.

This technology is called "zeroconf", and is described at
http://zeroconf.org. The first component of Zeroconf, self-assigned
link-local addresses, has been shipping since Mac OS 8.5 in 1998,
and the other two components, Multicast DNS and Service Discovery,
shipped starting in OS X 10.2, a year and a half ago. Since then
almost every maker of IP-over-Ethernet-capable printers printers
has adopted Zeroconf and incorporated it into their firmware, and
just about any network printer you can buy today has it. There is
a mature open-source implementation which is part of the Darwin/OS X
codebase.

The zeroconf stuff uses existing services like DHCP and DNS if they
exist -- and, just as importantly, doesn't mess them up when you plug
a zeroconf-enabled device into a normal, manually-configured network
-- but it doesn't need them.  It uses a few simple, clever
multicasting tricks and a technique for detecting IP address
collisions.  The total volume of code is not large, basically
consisting of one zeroconf responder daemon and a handful of small
patches to other services.  Less than 100K all told, and that's
*with* multihoming and IPv6 and all the bells and whistles.

The effect is a lot like the Chooser application on the Mac (this is
not accidental; zeroconf was written to replicate Chooser's behavior
in a TCP/IP world).  You plug Ethernet cables together and stuff just
works -- no more complicated ritual dances with ifconfig, DHCP, and
DNS.  Your IP-enabled devices even magically appear in your DNS
namespace, with a DNS name ending in ".local".  Home networks using
Linux would become zero-administration; Aunt Tille would love it.

The inventor of zeroconf, Stuart Cheshire, tells me the technical
problems are all solved and the solutions well tested, but he doesn't
understand the politics of getting the Linux community to generally
adopt zeroconf.  He's anxious to help.

I suggest that full integration of zeroconf should be added to Fedora's
to-do list.  For this to actually happen, somebody will need to step
forward and become zeroconf's champion.  Any volunteers?

The source code (which already runs on Linux -- just do a "make
os=linux; sudo make install") can be checked out from Apple's Darwin
repository.  Check out top-of-tree; Stuart tells me the tarball is a
little out of date doesn't contain the latest fixes:

<http://developer.apple.com/darwin/projects/rendezvous/>

The documentation in the mDNSPosix folder should be fairly clear. If not,
Stuart Cheshire requests that you email him <cheshire at apple.com> and Marc
Krochmal <marc at apple.com> with any questions, or you can ask on the
public Rendezvous list:

<http://lists.apple.com/mailman/listinfo/rendezvous>
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>

Let us hope our weapons are never needed --but do not forget what 
the common people knew when they demanded the Bill of Rights: An 
armed citizenry is the first defense, the best defense, and the 
final defense against tyranny.
   If guns are outlawed, only the government will have guns. Only 
the police, the secret police, the military, the hired servants of 
our rulers.  Only the government -- and a few outlaws.  I intend to 
be among the outlaws.
        -- Edward Abbey, "Abbey's Road", 1979





More information about the fedora-devel-list mailing list