>>>>> "Ed" == Edmund Smith <[EMAIL PROTECTED]> writes:

  Ed> The problem with doing better, ie protecting systems from going
  Ed> into "bad states" is defining what those states are. In order to
  Ed> do more powerful specification, where you say what you want at
  Ed> some high level (or verify what you're getting in some general
  Ed> way) you typically require at least first order logic, which is
  Ed> error-prone and unfamiliar for non-specialists. I wrote a proof
  Ed> of concept of a tool in this area (it could verify properties of
  Ed> a group of node configurations statically - things like "for
  Ed> every client C that's asking for a service Q from server S,
  Ed> server S exists, and provides service Q". Typically the
  Ed> predicates are pretty short, very hard to write, though
  Ed> re-usable (your predicates typically stay the same, and are
  Ed> usually just "general good things"). They're also crazily
  Ed> expensive to verify automatically without a clever solver (which
  Ed> mine wasn't). The brilliance of Sanjai/Telcordia's stuff is
  Ed> making this practical at scale, but so far (I think) their work
  Ed> is still confined to network property configuration only.

There is another aspect that makes Sanjai's stuff so useful. They have
a model of network protocol behavior. This allows them to do a much
more sophisticated analysis. We don't have any similar model for the
behavior of unix programs in general; the best that we have are models
of the sort you've described above. (for service dependence) This will
really limit the utility of the safety checks we can perform with
rules like this.

I also think these sorts of discussions, while quite interesting, put
the cart before the horse a little bit. Luke was talking about
fatfingering configs causing a massive failure. There are two ways to
do this: either causing a failure of core infrastructure in a small
number of places, or causing a per-node failure with a configuration
change or software upgrade. In both cases, a configuration file syntax
error can cause services, persistent or not, to fail. Since this is a
common occurrence, any safety mechanism that we want to be
practical needs to handle this. 

In order to detect this sort of condition prior to deployment, you
need a detailed model of program behavior, and other system
configuration. Consider the isc dhcpd configuration as an example, not
only do you need a model that understands which configuration options
are valid for a given version, you also need to know how these options
change across versions of the software, and how the configuration
interacts with underlying system configuration settings, like say the
interface IPs available on a system. 

Another thing that you need to start modelling is bug
interactions. Sanjai, does your software deal with bugs in BGP or OSPF
implementations and the like?

Don't get me wrong, once we had a model of this sort, we could analyze
all sorts of useful properties of the dhcpd service, starting with the
basics like functionality and moving up to much more sophisticated
things like which clients could boot properly from it. At the same
time, these sound a little too expensive to develop and maintain. The
reason this approach works for network management is that there are a
relatively small number of models that are needed, whereas on a unix
system there may be hundreds of models that would need to interact
with one another. (to handle everything from minicom, to the kernel,
to dns and dhcp, sendmail, postfix, etc)

For this reason, it is not clear to me that this is a practical
near-term solution on Unix systems. As an alternative, we have been
working with behavioral tests, and they provide a much more
immediately useful set of functions. Behavioral tests aren't as
powerful as the analytical ones that Sanjai does, but they sure are a
lot more incremental. 

One conclusion I have come to over the last few years is that system
administrators (in general) don't have time in large enough chunks to
readily pursue non-incremental solutions for problems. There are, of
course, exceptions to this, but in general, this seems to hold. I
think that this has pretty big impact on how people adopt tools and
techniques. I would worry that any sort of FOL type system would be
hard enough to deploy and use that it would never make it too far out
of the lab (unless it was completely turn-key, which I gather Sanjai's
tools are) 
 -nld
_______________________________________________
lssconf-discuss mailing list
lssconf-discuss@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/lssconf-discuss

Reply via email to