2 Network Configuration
Network nodes and the services they provide are configured using an XML syntax.
As we want to focus on functionality of services and not specific products, the XML
schema is an abstract representation of actual implementations, representing all kinds
of features found in concrete configurations of given service implementations. To con-
figure actual devices, the Translator module is used to generate implementation specific
configurations.
A node configuration consists of a section for its hardware setup and a list of ser-
vices it runs. Services are for example a server for the domain name system (DNS) or a
chain-ruled packet-filtering firewall. We aimed at identifying the important features of
each service and at expressing them conceptually in the schemas. Using VeriNeC, one
does not configure a bind8 DNS server, but just the information needed to automatically
generate the necessary configuration files for various target platforms.
2.1 Applying the Configuration
As the aim of VeriNeC is finally to configure a real network, the abstract XML network
configuration needs to be distributed, applying it to actual machines.
Applying the configuration is divided into two parts. The first is the configuration
language/grammar which is used natively to configure the node. This can be a Unix-
style configuration file, an ini file, a batch file for an SNMP client, a batch file for Win-
dows Management Instrumentation (WMI), a bunch of registry settings or any other
kind of configuration syntax used in the actual configuration context. The second part
considers the protocol with which the configuration file is distributed to the target ma-
chine. Such protocols can be simple file transfer protocols such as (s)ftp or smb to
transfer plain-text configuration files, ssh, rsh and rexec to execute remote commands,
SNMP to transmit the configurations, or any other existing configuration protocol. Split-
ting the configuration process into translating the XML to device specific configuration
data and deploying that data to the machines makes that process modular, highly flexible
and extensible.
The configuration schema defines the data structure for deployment. It contains
commands to execute before and after the configuration data is applied, information
on the deployment method, and the device specific configuration data to deploy. Con-
figuration data can either be the content in a plain text file or arbitrary
1
XML.
The actual translation from abstract XML configuration files to configuration doc-
uments uses the XML style sheets transformation [3] language. There is one translator
document for each implementation of each service. XSLT documents for new services
or new implementations of an existing service can easily be added to extend VeriNeC.
Translation is the point where we may encounter implementation specific problems.
Some implementations of a service may not support all features that can be expressed
in the abstract XML configuration. VeriNeC tells the user whether he/she will lose
configuration details using service implementation specific restrictors. The restrictors
1
Of course, the deployment implementation must know what to do with this XML, so it better
won’t really be arbitrary
78