Re: autofs reverts to IPv4 for multi-homed IPv6 server ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello.

On Thu, Apr 28, 2016 at 10:56:30AM +0800, Ian Kent wrote:
> On Wed, 2016-04-27 at 18:52 +0200, Christof Koehler wrote:
> > Hello,
> > 
> > I have the system running and did first tests. This was 
> > interesting although I observed basically the behaviour you were 
> > expecting.
> > 
> 
> I might not get this quite right but I'll try.
> 
> What release of Ubuntu are we talking about here?
This is the vm with 16.04.

> 
> The other thing to be aware of is that autofs can't know if a host that
> resolves to multiple addresses corresponds to a single host that has
> multiple address or if there are multiple distinct hosts that have the
> same file system available and the addresses are being used for load
> balancing in some way.
OK, I was not fully aware of that.

> 
> I'm more inclined to make the package require libtirpc and remove the
> option to not use it altogether given that libtirpc has been generally
> available in distros for quite a while now.
I might point out that libtirpc is already a hard package dependency of
nfs-common on debian testing and ubuntu 16.04.

> 
> > From what I see without libtirpc (standard package), autofs is as
> > expected oblivious to IPv6. It passes the servers hostname to mount,
> > which 
> > in the case of IPv4 and a single IPv6 address in the end uses the IPv6
> > one. 
> > In the case of two IPv6 addresses it falls back to IPv4 for some
> > reason. So 
> > that is unrelated to autofs then (and I should ask somewhere else) ? I
> > attached two syslog ouputs (debug level) covering the single IPv6 
> > (single_log_wo_tirpc.txt.gz) and double IPv6
> > (multi_log_wo_tirpc.txt.gz) cases.
> 
> Umm ... we are talking without libtirpc, right?
Yes. This is the behaviour with the packages as provided by the
distribution. Same behaviour on 16.04 as observded on 14.04.

> I think I answered that above, without having looked at the log I
> believe it is an autofs problem.

Yes, you are right. I misread the logs and was looking at the line
mount_mount: mount(nfs): root=/local name=core330 what=core330:/locals,
fstype=nfs4, options=rw,intr,nosuid,soft,nodev
instead of
mount(nfs): calling mount -t nfs4 -s -o rw,intr,nosuid,soft,nodev
192.168.220.118:/locals /local/core330

> 
> I had problems with the build in both so I just went for the latest
> version of libtirpc.
No problems at all, just adding --with-libtirpc as the next to last argument to
configure and un-patching rpc_subs.c did the trick. Built went smooth,
my indirect maps worked without a hitch. Should I sent you a diff output
on the sources ?

> > 
> > It is unclear to me how it decides if an IP address or an
> > hostname should be passed to mount, might this be multi-homed or
> > failover behaviour ? But then even with IPv4 and a single IPv6 address
> > the host
> > sould be considered multi-homed for that purpose and not only if it
> > has
> > multiple IPv6 addresses ?
> 
> Yes, that is a problem I mentioned in an earlier post.
But please keep in mind that I misread logs, see above. So I was
confused.

> > 
> > RFC 6724's Abstract says: 
> > "In dual-stack implementations, the destination address
> > selection algorithm can consider both IPv4 and IPv6 addresses --
> > depending on the available source addresses, the algorithm might
> > prefer IPv6 addresses over IPv4 addresses, or vice versa."
> > 
> > and in Section 10.3.
> > "The default policy table gives IPv6 addresses higher precedence than
> > IPv4 addresses.  This means that applications will use IPv6 in
> > preference to IPv4 when the two are equally suitable."
> 
> And these certainly imply I should prefer IPv6 over IPv4.
> But they also assume IPv6 usage is prevalent and that's been a long time
> coming and I'm not sure it's quite here yet either.
Yes.

> 
> Perhaps it is time to add this preference now anyway.

Perhaps I should point out that there is one more indirect factor for
consideration: mount. 

In principle RFC 6724 also contains recommendations what IPv6 address to
pick (GUA or ULA for example, or among multiple GUAs), in fact that is
its main subject. As far as I understand it, and observed what ssh does,
if there is a GUA and ULA the ULA (fd5f:... in this case) should be
prefered (selected). Obviously mount (mount.nfs4) does not care about
this recommendation either, in my test it choose randomly (?) one or the
other IPv6 address. May be due to the order of addresses in the DNS
reply. I will try to understand this better. 

So even mount does not fully care about RFC 6724 or my basic assumption
about the whole process is wrong in some way. I have to work that out. In
worst case my expectation has been wrong from the beginning when I
brought this question up.

> 
> I think the only the only question I need to answer is what influence
> (if any) response time should play between IPv4 and IPv6. I think it
> best to not use it at all to start with (which I think should be the way
> it is now, once a v6 over v4 ordering preference is added).
In principle I would agree, ignoring RFC6724 IPv6 address selection
recommendations which, as you pointed out, are not covering this case
when response times are important.

My current understanding of RFC6724 leads to two remarks then:

As far as I understand the log output you are deciding on a hard
comparison basis, so even a one microsecond difference decides.
However, ping times (response times) on ethernet effectively show
random variations, sometimes in the millisecond range.
In numerics (when comparing results) you would define an intervall where 
numbers are considered to be effectively equal to catch rounding errors.
One could use RFC6724 to decide within such an interval. I have no idea
about the complexity involved, though. How does ssh handle that ?
Probably it relies to some service mechanism to get this handled for it.

With the above in mind  people also might like to pass hard IPv4 and IPv6
addresses from the map to autofs to not rely on its decisions (because they (think)
know their network better). I vaguely remember I could not put an []
quoted IPv6 address in my executable map while IPv4 was fine or
something like that ? Was there an earlier mail ?

> 
> > I am unsure how to reproduce what you did.
> 
> I'm using launchpad to provide a ppa apt source.
> 
> So the installed debs will replace existing packages, notably libtirpc,
> rpcbind, nfs-common and autofs.
> 
Yes, I did not think you had libtirpc 1.0.1 as debian package. That
explains it then. I will have to check how to do this then.

> 
> Don't be confused by the change in autofs configuration location in
> autofs 5.1.1 (/etc/autofs.conf).
> 
> If you only change the autofs configuration in /etc/default/autofs
> (IIRC) that will override the new configuration allowing you to switch
> between older and newer versions of autofs without configuration
> inconsistencies.
OK.

> 
> I hope that the autofs ppa version will perform the mount fine, as long
> as the server is responding but that's one thing we're here to sort out,
> ;)
> 
If you could provide a link I can try that. Making a snapshot before and there
are no problems going back.

Best Regards

Christof

-- 
Dr. rer. nat. Christof Köhler       email: c.koehler@xxxxxxxxxxxxxxxxxxx
Universitaet Bremen/ BCCMS          phone:  +49-(0)421-218-62334
Am Fallturm 1/ TAB/ Raum 3.12       fax: +49-(0)421-218-62770
28359 Bremen  

PGP: http://www.bccms.uni-bremen.de/cms/people/c_koehler/
--
To unsubscribe from this list: send the line "unsubscribe autofs" in



[Index of Archives]     [Linux Filesystem Development]     [Linux Ext4]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux