From owner-freebsd-arch Wed Mar 28 4:44:14 2001 Delivered-To: freebsd-arch@freebsd.org Received: from smtp01.primenet.com (smtp01.primenet.com [206.165.6.131]) by hub.freebsd.org (Postfix) with ESMTP id AE05137B71C for ; Wed, 28 Mar 2001 04:44:07 -0800 (PST) (envelope-from tlambert@usr05.primenet.com) Received: (from daemon@localhost) by smtp01.primenet.com (8.9.3/8.9.3) id FAA06603; Wed, 28 Mar 2001 05:42:33 -0700 (MST) Received: from usr05.primenet.com(206.165.6.205) via SMTP by smtp01.primenet.com, id smtpdAAA6xaWOm; Wed Mar 28 05:42:14 2001 Received: (from tlambert@localhost) by usr05.primenet.com (8.8.5/8.8.5) id FAA03936; Wed, 28 Mar 2001 05:43:43 -0700 (MST) From: Terry Lambert Message-Id: <200103281243.FAA03936@usr05.primenet.com> Subject: Re: configuration files To: jonathan@graehl.org (Jonathan Graehl) Date: Wed, 28 Mar 2001 12:43:43 +0000 (GMT) Cc: freebsd-arch@freebsd.org In-Reply-To: from "Jonathan Graehl" at Mar 27, 2001 05:29:50 PM X-Mailer: ELM [version 2.5 PL2] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > > The problem with this approach is that you are, in effect, making > > your server unreliable, in exchange for making the changes take > > effect more quickly. > > Excellent point - I did not consider the need to incrementally (atomically) > update huge configuration stores while the server still acts on the old > configuration. It's my biggest peeve. 8-). > > It is simply not acceptable to have to take on the maintenance burden > > of teching every open source package on the planet how to do its own > > link management, without a centralized policy enforcement mechanism. > > I agree. Similarly, we can't expect every package to spontaneously > come up with a common configuration file format ;) I think Apache would accept the change quickly. BIND would probably accept it also, if people could keep their fingers limited to the configuration data itself, and not muck with the BIND code proper. Representing better than two dimensional hierarchical relationships requires metadata. The sendmail.cf file is an excellent example of of a confiugration file containing complex relationships, formed out of rules segments, with those segments indexed and activated several ways, including implicitly, or as a result of metadata causing rules to be invoked by particular mailer definitions, which are in turn themselves invoked by routing rules. I'd really hate to have it be my job to XML-ify sendmail configs; I guess I could do it, if I were paid enough for the task, and it wasn't going to turn into an ongoing nightmare, where I was chained to the desk as maintainer for the rest of eternity. Sort of like unclogging sewers: someone has to do it, but it's not a job people line up around the block to do, unless there is serious money on the table. It would probably be easier to arrange a "takeover" mechanism as a result of getting a HUP, where the open connections complete processing, and the open listen sockets, if they are still relevent, get taken over once a forked copy of the daemon, entirely up on the new configuration, is ready to start processing requests. Part of the whole socket thing kind of breaks down at this point, since part of the cached state we need to avoid is that sockets are bound to IP addresses, instead of interfaces, so if you change the IP address, you need to rebind (whereas if you were to bind to an interface instead, the IP address could bounce all over the map, and you really wouldn't care). > > ACAP is one option. My personal preference would be LTAP, if the > > LDAP server modifications for asynchronous notification could be > > pried free from Lucent. LDAP would work, if a simple transaction > > extension were added (nesting would not be required, if data were > > properly normalized). The back end data store for the protocol > > server could be XML (or ROT-13 binary files; it doesn't matter). > > First I've heard of the two ... > > http://asg.web.cmu.edu/acap/ > ACAP RFC: ftp://ftp.isi.edu/in-notes/rfc2244.txt > (looks like a nice idea; web page seems to be neglected) > > http://www-db.research.bell-labs.com/project/ltap/ > (patent filed?) > LTAP looks like a gateway to a backend that lacks triggers, where > you access the backend through the gateway and you can request > notifications when certain accesses are made by others? Do you > like their protocol, or just the idea? The idea. The protocol lacks acknowledgement of the asynchronus update notifications, which would permit listeners to "veto" a change (this would have to be at a transaction level, not a simple datum level). For example, if you had a machine with two network cards, you really don't want to permit both cards to have the same network address. Yes, this is a contrived example, since the real answer to that problem is to use IPv6 stateless autoconfiguration (or IPv4 stateless autoconfiguration into link.local and then NAT). > > I have to say I'm violently opposed to signaling as a catch-all; > > I understand that it's the standard means of informing a daemon > > of a configuration change, but an overly simplistic, low granularity > > approach is exactly what must be avoided. > > Well, like it or not, it is the easiest way to do things. A basic > configuration file meta-format and signaling mechanism would still > be good. I agree that more fine-grained stuff for updating in-use > configuration data should be developed, and that such a beast might > as well have nothing to do with XML (except that an XML language > could describe the interfaces/data types :). Actually, we already have the "easiest" approach: do nothing. It requires no additional work. I like the idea of "right" vs. "expedient", which has traditionally been a hallmark of BSD engineering. > In cases where static configuration files make sense, I would like > those configuration files to be XML (or some other unified > meta-format which can be programmatically operated on without > case-specific coding). I definitely agree; so long as there is sufficient metadata involved to allow a UI component (text, graphical, libdialog, whatever), it vastly simplifies adding UI to any configuration in that format. I also think that XML would be near ideal, in terms of back up and restore of configuration information. Which brings up the next issue, if we can agree to the metadata requirement (which implies interfaces that act on the data based on the content of the metadata): arbitrary hierarchical grouping of data. It's a real common problem that people want to solve these days... "how do I have the minimum set of machine and/or site specific configuration information, and how do I share as much of the configuration data as possible between multiple machines?". Hierarchy is necessary to distinguish machine, cluster, site, colocation facility, enterprise, and global configurations. On top of that, there is the concept of "role". In other words, I may have a set of machines, some of whom have the role "DNS servers", some with the role "web servers", some with the role "mail servers", etc.. > > I'm (I guess) known for the statement "standard plus extensions > > is not standard". I think that deviations from standards render > > code practically useless. > > The "extension" I was referring to was that of augmenting a DTD such that it > still has enough in common with the "standard DTD" that programs will still be > able to get the standard information out of your document. I was not referring > to an extension to XML itself. A protocol for passing around bits of XML data > is outside the scope of the XML standard itself. I'm still very leery of this; historically, SNMP has been very problematic because of just this approach. You would have to build some brakes into the process, so that they could be stomped on with force, should things start to go to hell. There are plenty of SNMP standards in RFC form from the IETF, but everyone either ignores them ("We're Cisco: we ARE the standard"), or tries to follow them, only to find that they think they need "just a tweak" so that they can "add value", or, worse "achieve market differentiation" (code for "we don't run from their config data, but they can run from ours, so you should buy ours"). > I didn't realize that people passed around XML documents without publicizing > their DTDs. That sucks. I'm not sure a requirement to include the DTD to be > "standards compliant" would prevent people from being proprietary if they still > want to. It's a common practice, actually. Mostly it has to do with how easy it is to set up private interfaces, and then not document them because your not proud of them, or because they would give hooks into your internals, and you haven't really protected them from arbitrary interfacing ("Always set 3, or it will core dump the server"). As the saying goes, "never attribute to malice...". Not that there isn't malice out there, it's just not, IMO, what's driving non-interoperability and the non-publication of DTD's. It's pretty much why Diamond didn't used to tell you how to program their RAMDAC's to get X windows running: they changed the PAL code and ROM data at the same time, but they never provided a standard layout or meand of identifying the RAMDAC data in the ROM. As a result, it wasn't possible for software to find out, from an arbitrary video card, how to program modes not covered by the VGA/SVGA/XVGA specifications (which themselves assumed INT 10 calls with interrupts disable to do a lot of the work). Because it was possible to fry the hardware with bad data, they would have had to reveal all of their RAMDAC settings (which were in the ROM data: they were just opaque to everything but the ROM code that hooked the INT 10 BIOS), AND all of the information necessary to identify their cards. At which point, they could be easily reverse engineered by clone card manufacturers. In other words, an initial engineering mistake, which led to their hardware being practically unusable outside the environements they anticipated. Diamond finally relented on documentation, when people started reverse engineering to build drivers anyway, and they have since been more careful about their assumptions, and are now generally regarded as being friendly. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message