Project review: Parallel KDC

Nicolas Williams Nicolas.Williams at sun.com
Wed Mar 17 14:29:43 EDT 2010


On Sun, Mar 14, 2010 at 12:31:39AM -0500, Ken Raeburn wrote:
> On Mar 13, 2010, at 22:23, Greg Hudson wrote:

> For now, with the current state of the code, I'd suggest the first --
> have the parent send SIGTERM to all the children, then wait for them
> to go away, reconfigure the network, and fork off a new set of child
> processes.

That would be my recommendation as well.  The children should handle
SIGTERM by setting a flag that gets checked at the top of their I/O
loops.

One problem would be: what if a child is stuck waiting for, say, an LDAP
reply?  Answer: all KDB backends that contact remote services should
implement timeouts.

Alternatively...

> > Also, I wasn't around when that support was added, but it feels like a
> > remarkable amount of effort for a regular network daemon to go to,
> > suggesting that our design made a wrong turn somewhere along the line.
> > (I'm not proposing to rip it out at this time, though.)
> 
> Perhaps.  We did get requests for it to continue to DTRT if network
> interfaces were brought up or shut down; we need to reply to UDP
> packets from the local address that the client sent to; and on some
> systems we don't get IP(V6)_PKTINFO to help us with that with a single
> listening socket.  With many "regular" network daemons, only TCP is
> used, or the client may not care about the source address of the
> returned packet.  Or manual restarting may be required.  For a case
> like ours, I'd look to something like named or ntpd; on NetBSD, at
> least, ntpd appears to open a routing socket.

It's probably time to reduce complexity and use IP(V6)_PKTINFO
exclusively.  Systems that do not support IP(V6)_PKTINFO can either not
be supported by MIT krb5, or can be supported subject to the caveat that
krb5kdc must be restarted when the network interfaces configuration
changes.

Nico
-- 



More information about the krbdev mailing list