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

Stuart Cheshire cheshire at apple.com
Sat Mar 6 16:04:50 UTC 2004


Sorry for the delay replying. My first attempt to send this mail did not 
go though because I was not subscribed to the list. Now I've subscribed 
and I'll try again.

There seem to be some misunderstandings about Zeroconf, which I will try 
to correct. It would be a pity if red herrings impeded the spread of a 
good technology that has the potential to make people's lives a lot 
easier. Actually, I should clarify that. It's more than just "potential". 
Zeroconf has been making Mac users' lives easier for a couple of years 
now. Now that HP is shipping Apple software like iTunes preinstalled on 
its Windows PCs, Zeroconf is making Windows users' lives easier too. 
Products like TiVo use Zeroconf, so users of consumer electronics 
customers are also benefiting. I'd like to bring these benefits to the 
broader Linux community too, but... it seems to be an uphill struggle 
sometimes.

There seem to be two concerns, the trade mark law suit, and the patent.


1. Trade Mark Law Suit

The Darwin mDNSResponder project existed long before Apple's marketing 
people even thought of the word "Rendezvous". "Rendezvous" really doesn't 
have a rigorously defined narrow meaning. "Rendezvous" is Apple's 
marketing term for the broad idea that "computers should suck less". 
Technologies like self-assigned addressing, IPv6, mDNS, DNS-SD, etc., are 
all contributing components towards that broader goal.

The CVS project is called "mDNSResponder", not "Rendezvous". The word 
"Rendezvous" does not appear in any header file names, variable names, 
function names, or library names. In fact there are only TWO occurrences 
of the word "Rendezvous" in the mDNSPosix directory, and both are in the 
ReadMe file:

>Apple uses the brand name "Rendezvous" to describe our implementation of
>zeroconf technologies. This sample is designed to show how easy it is
>to make a device "Rendezvous compatible".

I should point out that other trade mark names like "Solaris" also appear 
in the ReadMe file, and in fact Microsoft's registered trade mark 
"Windows" appears more times in the source code than the word 
"Rendezvous" does, in the form of checkin comments like "2003/08/06 
21:33:39 Fix compiler warnings on PocketPC 2003 (Windows CE)", and so on.

Is the mention of trade mark names in the ReadMe file and checkin 
comments really a valid reason to reject a technology? I think not.


2. The Patent

Eric Raymond wrote, "This stuff was invented by Stuart Cheshire".

I'll respectfully decline that honour. The algorithm for self-assigned 
link-local addressing is as follows:

  Pick an address; if someone is already using it, pick a different one

To claim to have invented that would be some kind of hubris. MacTCP did 
that in 1990; AppleTalk did it in 1985, probably many things did it 
before that too, and every five-year old child finding a place to sit in 
the classroom uses the same algorithm.

Nonetheless, Microsoft applied for, and in August 2000 was granted, 
United States Patent 6,101,499 "Method and computer program product for 
automatically generating an internet protocol (IP) address". I'm not sure 
whether it should have been granted, and I don't know that it would stand 
up in court. Even ignoring the other prior art, at the time Microsoft 
applied for this, version 6 of IP already had self-assigned link-local 
addresses, and nowhere in the patent claims does it restrict the scope of 
the invention specifically to an older version of IP. The claims describe 
the patent as applying generically to "IP" as a whole, yet at the time of 
the application, "IP" as a whole already had self-assigned link-local 
addresses, as specified in Standards Track RFC 1971, August 1996 (and 
published in Internet Draft form long before that). Furthermore, UPnP, 
which claims to be some kind of semi-open standard, also requires IPv4LL 
(see <http://upnp.org/resources/specifications.asp>).

If we all scurry away in fear any time Microsoft files a patent 
application, no matter how valid or otherwise it may be, then we're 
handing victory to them on a plate.

Regardless, even supposing this patent is sufficient reason to scurry 
away in fear, it doesn't make much difference. If we're afraid of 
Microsoft's patent, then:

(a) don't do self-assigned addresses at all. The interesting part of this 
is, after all, mDNS and DNS-SD. If you have a DHCP server on the network 
(as most Linux users do) then you have a working IP address anyway, 
without self-assigned addresses. The part that's still missing is mDNS 
(for local naming without a DNS server) and DNS-SD (for browsing to find 
what's out there). That's what's provided by Apple's Darwin mDNSResponder 
code.

(b) or, implement a local DHCP server on Linux which listens for its own 
DHCP DISCOVERs, and then, if they're not answered by some other server 
within 5 seconds or so, sends back a DHCP OFFER containing a 169.254/16 
address. The DHCP client will do its usual ARP probe (as required by RFC 
2131, March 1997) and send back a DHCP DECLINE if it finds the address 
already in use. Can Microsoft's patent prevent us from implementing an 
RFC 2131-compliant DHCP server?

(c) or, do self-assigned addresses, but only IPv6 self-assigned addresses 
(RFC 1971), not IPv4 self-assigned addresses. Back in 1998, IPv4 was 
still very important. Today it is becoming less so, as more and more 
systems gain IPv6 capability. The fact that most ISPs don't provide IPv6 
service is not a problem here. Remember that the main focus of Zeroconf 
today is on the small home network, the local link. Regardless of how 
much or how little IPv6 support your ISP may provide, you can *always* 
use IPv6 on your local link, using self-assigned link-local addresses, 
and indeed this is exactly what OS X does today. Even with absolutely no 
other working infrastructure, you can *always* use IPv6 with Multicast 
DNS ("dot-local") names on the local link. I believe that IPv6+mDNS may 
actually be one of the catalysts that helps jump-start adoption of IPv6, 
by making IPv6 begin to be something that suddently starts to be useful 
to everyone, everywhere, instead of having to wait for everyone's ISPs to 
start offering IPv6 support.


Eric Raymond wrote, "The inventor of zeroconf, Stuart Cheshire, tells me 
... he doesn't understand the politics of ... the Linux community".

It's true. I don't. I've worked hard to make a technology that makes 
people's lives easier, and I've worked hard to get my employer to make 
that technology available to everyone on the most liberal terms I could 
possibly manage. If someone can tell me what I'm doing wrong, I'm happy 
to listen.

Stuart Cheshire <cheshire at apple.com>
 * Wizard Without Portfolio, Apple Computer, Inc.
 * www.stuartcheshire.org





More information about the devel mailing list