Edits to draft-ietf-zeroconf-ipv4-linklocal-17.txt

Stuart Cheshire <[email protected]> Tue, 8 Feb 2005 22:59:39 -0800
Newsgroups gmane.ietf.zeroconf
Message-ID <[email protected]>
During the "authors 48 hours" final review period we found various minor 
changes that needed to be made to the document. They are, in my opinion, 
typographical, grammatical, and editorial in nature, and none of them 
changes the technical content or intent of the document. Admittedly, 
there were a couple of glaring errors, like the description of passive 
mode ftp being completely backwards, but correcting those mistakes does 
not change the spirit nor the details of the protocol being specified.

In the interest of full transparency, we're informing the (ex) Working 
Group members on [email protected], so that everyone has the opportunity 
to see the (proposed) final document before the RFC editor publishes it, 
and comment if they find any errors. After so many years of work, we 
don't want to publish RFC 3927 with silly mistakes in it.

Below is a summary of the changes:

1. Various minor typographical nits (spurious extra spaces, spelling 
mistakes, "ad-hoc" and "adhoc" should be "ad hoc", error in ascii-art 
diagram, grammatically incomplete sentences, punctuation errors, etc.)

2. For most of the life of draft-ietf-zeroconf-ipv4-linklocal, the term 
"address conflict" was used exclusively, rather than "collision". However 
towards the end of the process some text was added that was inconsistent 
with this. Those have been changed back to "address conflict" for 
consistency with the rest of the document.

3. The terminology section introduces a very specific term "ARP Probe", 
but the term was not always written with a capital 'P' in all places.

4. Incorrect (or at least strange) text.

4a. Source and/or destination address

      IPv4 Link-Local addresses SHOULD
      only be sent when a Link-Local address is used as the source
      address.

should say:

      IPv4 Link-Local addresses SHOULD
      only be sent when a Link-Local address is used as the source
      and/or destination
      address.

4b. The host SHOULD use a routable...

   The host SHOULD use a routable address in preference to an IPv4
   Link-Local address except for communication to peers for which the
   host has an existing TCP connection at the time in which the host
   obtained a routable address configuration.

This says that if a host has *any* existing TCP connection to a peer,
then it can use it's LL address in preference to its routable address in
*all* future UDP or TCP communication with that peer. Is that what it 
meant to say? No. The new text says:

   Where both an IPv4 Link-Local and a routable address are available
   on the same interface, the routable address should be preferred as
   the source address for new communications, but packets sent from or
   to the IPv4 Link-Local address are still delivered as expected. The
   IPv4 Link-Local address may continue to be used as a source address
   in communications where switching to a preferred address would cause
   hardship to a specific upper-layer activity (e.g., an existing TCP
   connection). For more details, see Section 1.7.

4c. Set the IPv4 TTL to 1?

   A sensible default for applications which are sending from an IPv4
   Link-Local address is to explicitly set the IPv4 TTL to 1.

This would be *REALLY* bad advice to put in the document.

Inexperienced application writers would take this to mean that if they
want their application to work with IPv4LL, then they should (to quote
the *exact* words of the document) "explicitly set the IPv4 TTL to 1".

I foresee developers making a home networking product, and because they 
want it to work with IPv4LL, they will follow the advice of the RFC and 
use a setsockopt() call to explicitly set the IPv4 TTL to 1. When they 
test their software or device in the target environment, it will work 
fine, and they will ship it that way. Unfortunately, when you or I buy 
this device, any attempt to communicate more than one hop away will fail, 
even if the device has a perfectly correct routable address -- because 
the developer explicitly set the IPv4 TTL to 1, as mandated by this 
document. D'oh!

There's an ironic own-goal here. The same people who were opposed to 
IPv4LL because it would encourage the creation of devices that work only 
on the local link, shot themselves in the foot by allowing text in the 
document that will cause the very failure they wanted to prevent.

This text has been removed. The advice to set the TTL to 1 may be 
applicable to OS vendors making TCP/IP stacks, but not to application 
writers.

4d. Passive mode ftp

   For example, FTP [RFC959] passive mode
   transmits the IPv4 address of the client.  Assume a client starts up
   and obtains its *passive* IPv4 configuration at a time when the host
   has only a Link-Local address.  Later, the host gets a global IP
   address configuration (for one of its interfaces).  The client uses
   this global IPv4 address to contact an FTP server off of the local
   link for which it had (or still has) an IPv4 Link-Local address
   configured.  If the FTP client transmits its stale out-date passive
   IPv4 configuration to the FTP server, the FTP server will be unable
   to reach the FTP client.  The passive FTP operation will fail.

This was completely backwards. Passive mode ftp DOES NOT suffer the 
failure described; it is active mode ftp that has a potential failure. 
New text:

   For example, FTP [RFC959] (when not using
   passive mode) transmits the IP address of the client. Suppose a
   client starts up and obtains its IPv4 configuration at a time when
   it has only a Link-Local address. Later, the host gets a global IP
   address, and the client contacts an FTP server outside the local
   link. If the FTP client transmits its old Link-Local address instead
   of its new global IP address in the FTP "port" command, then the FTP
   server will be unable to open a data connection back to the client,
   and the FTP operation will fail.

---

The first version of RFC 3927, as it originally came from the RFC editor 
for review, can be fetched from:

<http://files.zeroconf.org/rfc3927old.txt>

The revised version can be fetched from:

<http://files.zeroconf.org/rfc3927new.txt>

The changes, in "diff -u" format, can be fetched from
<http://files.zeroconf.org/rfc3927diffs.txt>,
or you can get the old and new for yourself and compare them using the 
"diff" tool of your choice.

The lines in rfc3927new.txt are intentionally NOT re-wrapped to 72 
characters, because that has the potential to turn a one-word change into 
a one-paragraph diff. The RFC editor will re-wrap the lines and 
repaginate as necessary before publication.

Stuart Cheshire <[email protected]>
 * Wizard Without Portfolio, Apple Computer, Inc.
 * www.stuartcheshire.org