SINGLESOCK - How much to strip away?

Eric S. Raymond esr at thyrsus.com
Sat Jun 2 14:22:27 UTC 2018


Mark Atwood via devel <devel at ntpsec.org>:
> I still want to strip it all and delegate it to iptables, case OMEGA.
> 
> But I do understand the pushback against that from GEM, and have been
> thinking about it for the past few days.
> 
> As I type and think: one of the fundamental problems with having longrunner
> daemons try to keep track of addresses, address masks, and interface names
> is that interfaces can go down, come up, get renamed, and have address
> masks added and removed from each, and trying to keep track of that in
> userspace is a nightmare.   Sysadmins are used to having to bounce a
> database server when listener interface has an address event, but bouncing
> ntpd is much less okay.

That - "bouncing ntpd is much less okay" - is a telling point that
hadn't occurred to me.  I'm not much of an admin and am not used to
having to handle these large-site problems.  Please everyone bear that
ignorance in mind; it may mean you need to beat me over the head with
facts you think are obvious.

> As I type and think more, I ask, "What does Chrony do?", and I look at [
> https://chrony.tuxfamily.org/doc/3.3/chrony.conf.html].  It has a
> "bindaddress" directive, which uses IP address, not interface name.  And
> only one bind address can be specified.  It freely admits that that means
> Chrony is not the correct solution for serving down multiple controlled
> interfaces at once.   Very simplifying, but not what we want.
> 
> This reinforces my decision.  Rip it.  Maybe in the future we can carefully
> build back up to case Gamma.

I thank you *very much*, Mark. This kind of firm leadership on the
product-strategy level makes it easier for me to do my job, and I
appreciate that a lot.

I'm hearing assent to this direction from Hal and me, and a slightly
qualified assent from Gary.  I hope we hear from Matt, too.

I'm going to take this as direction to start by ripping out the
interface directive in ntp.conf; that's orthogonal to the rest of this
mess because it's restrictive and default behavior without it won't
change.

We can deal with -I and -L and multi-binding behavior in a later step.
I'm inclined to think we ought to scrap -I and -L and support a
bindaddr directive (to make the chrony fans happy) allowing multiple
IP addresses (to make Gary happy :-)).  But we don't need to commit to
that decision yet, and I need to understand virtual IPs (that is, why
-L differs from -I) better before we do.

There's an implementation issue with SINGLESOCK.  We can't
actually go to single socket unless we can get the source address of a
packet, so we know where the other end of the association
is. IP_PKTINFO turns out not to be fully portable.  (It is disturbing
that some BSD man pages falsely claim to support it.)

I've turned up the following, at

https://k5wiki.kerberos.org/wiki/Portability_research

This table combines their table with the footnotes.

Platform	IPV6_PKTINFO 	IPV6_RECVPKTINFO	IP_PKTINFO
Linux 2.6.32	yes		yes			yes
Solaris 10	yes		yes			no
Solaris 11	yes		yes			yes
FreeBSD 8.1-1	yes		yes			no*
Hurd-0.3	yes		no			no
OSX 10.9	yes		yes			yes
AIX 6.1		yes		yes			no
HP-UX B.11.11	yes		yes			no
NetBSD		?		?			yes (2013)

* FreeBSD still does not implement IP_PKTINFO, but implements an
  alternative using IP_RECVDSTADDR.

It looks like we're OK (wrapper code that uses the FreeBSD alternative
should be trivial) but I think testing on our target platforms is
indicated before we commit to this.

Hal, can you check the assertion about FreeBSD?  Do we have a NetBSD
system to test on?
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>

My work is funded by the Internet Civil Engineering Institute: https://icei.org
Please visit their site and donate: the civilization you save might be your own.




More information about the devel mailing list