|
|
Promile is a project developed at the Computer
Science Departement at University College London funded by the EPSRC (GR/31089/1)
under the Programmable Networks Initiative, by Kodak
, BT Exact Technologies and Compaq
Promile is a two level architecure that contains a Middleware XML
based layer for router management and a modular routing kernel. This is
illustrated in the following figure

On the lower level resides the OS kernel and on the upper level
the XML based engine, running in user space, which will manage and
configure the lower level.
The use of XML for high level management allows flexibility defining
router behaviour since XPath allows the insertion or modification of the
rules that manage the router. Using XML Schema the behaviour grammar can
be defined, checked and modified at run-time providing extra flexibility,
security and easy upgrading. The existence of several off-the-shelf XML
tools and related technologies is another advantage of following this
approach.
Our router is built to run on different platforms with different hardware
architectures. In order to accomplish this we use Java to develop the XML
based engine. Assuming that all the platforms have a Java Virtual Machine
the code will be portable without need for a new implementation. The use
of Java also allows dynamic downloading of configuration code of the low
level part of the architecture.
The XML based engine communicates with the lower level through a
set of primitives provided to the user space in a special library. The
manager inserts and deletes modules in the kernel and connects them
according to the graph defined by the administrator. After a module is
inserted in the kernel and properly connected to the graph, it can be
configured in real time by the XML engine depending on the rules defined
by the administrator.
The modules will typically be the usual components in a
router and/or more specifically in a differentiated services capable
router. Examples include classifiers, markers, droppers, shapers and
schedulers.
After a packet is received it is passed to the first module (in the
example a classifier) which then passes to the next module depending on
the conditions expressed bythe rules.
|