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.


Last modified on 26/10/2001 by Miguel Rio