Ray,

On May 29, 2013, at 3:10 PM, Ray Hunter <v6...@globis.net> wrote:
>> Michael Sweet <mailto:msw...@apple.com>
>> 29 May 2013 20:13
>> Michael,
>> 
>> 
>> One important point here: we don't send IPv6 link local addresses in
>> this case, we send the .local hostname that the printer is using. This
>> avoids the whole issue of IPv6 link-local addresses in URIs, we just
>> have to deal with changing printer hostnames (due to name collisions)
>> and the normal issues of changing networks on the client - home Wi-Fi
>> vs. work network, etc.
>> 
> .local is also strongly scoped to a link. So how does a using a .local
> name help compared to using an IPv6 link local literal in a URI?

For one, it doesn't have an RFC telling implementers to not put the .local name 
in the Host: header or in URIs... :)

But in all seriousness, clients are able to lookup the .local name using mDNS 
(through the system networking libraries), which gives them the proper IPv6 
link-local address complete with the zoneid.  The same is not generally true of 
IPv6 link-local addresses - there is no standard network API for getting the 
interface name/zoneid for a given link-local address, and things like 
getaddrinfo will not accept an IPv6 link-local address without its zoneid.

> In the case of receiving a .local URI, don't you then have to run name
> resolution using mDNS on all possible interfaces to work out which
> outgoing interface to use?

Absolutely, but that resolution is provided through a stable, well-known 
interface that is also used for looking up regular DNS names.  An application 
doesn't need to know about the details of the lookup, it just does the host 
name lookup and the right things happen.

> Point being that if a client can learn the outgoing interface because of
> an incoming service advertisement from the printer, or failing that you
> run multicast name discovery on all interfaces to discover which one has
> the printer connected to it, why then in the case of an IPv6 literal
> link local can't the client first look at the local Neighbor Discovery
> cache for the literal IPv6 link local of the server to discover the
> outgoing interface, or if that is absent attempt connecting to port 80
> via all interfaces and cache which one works (attempting to use fixed
> links before wireless before 3gpp)?


This approach makes the assumption that the printer supports ND and the OS 
allows applications to query the ND cache or provides a way to "resolve" (for 
lack of a better word) which interface should be used for a link-local address. 
 From my own testing, I'm not certain that all IPv6 printers support ND - only 
one of my three IPv6 printers shows up in my system's ND cache - and no OS does 
interface lookup (or enumeration) when given an IPv6 link-local address, you 
have to specify it.

I make no claim that my approach is perfect/ideal, merely that it works with 
current IPv6 implementations and has been deployed in CUPS and IPP printers 
since 2005 (just with the IPvFuture format).

If the consensus is to *not* include the zoneid in outgoing URIs, I'd still 
like to update RFC 6874 to provide some more examples, a history of what has 
been done before, and conformance requirements to ensure that everything needed 
to transparently support link-local addresses is in place.

_________________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair

--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to