bones - a configuration database

What is bones?

The bones database is a simple, portable database used to hold configuration information. The idea is to keep a centralized consistent database and to create configuration information for all hosts running under bones control from this central source.

The current status of bones?

I am sorry to tell you that the bones systems is not currently available. The prototype described in the SANS II bones paper was based on C++ classes that implemented the database and some ISODE/SMP code to forward database changes to local configuration files. The C++ code cause much overhead and the ISODE code is not very portable and requires a lot of memory (big binaries - thus fitting to the C++ code :-) We found the whole thing to be too slow, inflexible and not up to the newest standards (SNMPv2). So we kicked it away and started to write a system completely based on the Tool Command Language (tcl).

We began writing a Tcl/SNMPv2 interface as those interfaces available at that time did not seem to be well designed/implemented (we did not want to fight against slow or fat code again). The result of these efforts is the Scotty Tcl extension which provides besides other goodies a Tcl/SNMP interface which is fast, portable and small. This extensions can also be run as a SNMPv2 agent, so it is easy to write the code to receive configuration data via SNMP and put it in local configuration files.

We also wrote a version of the database server (we call it bones light) that reads a configuration file and allows to manipulate instances of defined classes in Tcl. But we are still not very happy with the bones database.

In the meantime, David J. Hughes ( wrote a simple mini SQL database (msql) which has a nice interface to Tcl. This seems to be a far superior database server for these kind of applications and it allows to switch to commercial systems like oracle or sybase if needed.

To come to an end: We are now switching to msql as our database backend by using the msqltcl interface. The bones classes are already converted into a set of relations. All what is still needed to get it running is to write a MIB extension and implement it as a Tcl script using the Scotty SNMP agent extension.