Several solutions to make network nodes programmable have been proposed over the last few years. We distinguish between solutions that maintain a clear separation between control and data path (such as the solution proposed here) and solutions where control and data path are the same. An example of the latter is what has come to be known as Active Networks [#!Tennenhouse:96a!#]. Active Networks are packet-switched networks where each packet may carry executable code. In [#!Tennenhouse:96a!#] these packets are called capsules, i.e. little programs with embedded data that are evaluated in a transient execution environment, allowing network nodes to process the data in an application-specific way. The execution of the packets in the data path is strongly related to the speed with which these packets can travel through the network. Note that the Operation, Administration and Maintenance (OAM) cells in ATM offer a similar, albeit much more restricted functionality (the OAM cell effectively carries one of a finite number of pre-defined programs).
Intelligent Networks (IN) [#!ITU-T:92a!#] allows the introduction of new services by associating them with signalling endpoints. Basic calls are separated from IN-based calls. For example, dialling an 0-800 number will trigger a temporary suspension of call-processing and initiate a series of transactions between the local switching point (in IN terminology: the Service Switching Point or SSP) and the so-called Service Control Point (SCP), which is essentially a real-time database. A lookup in this database (e.g. for a 0-800 number) tries to find the corresponding application-specific service logic, i.e. the code which is then executed. The code sends back instructions to the SSP on how to process the call. The bulk of current IN transactions consist of translating the number dialled by the caller into another number depending on the needs of the service.
In [#!Goldszmidt:98a!#] a solution to network management using delegated agents is proposed, where the agents are dynamically loadable code that can be dispatched using a so-called delegation protocol to an executing elastic (extensible) server. This helps prevent the explosion of management traffic from all over the network to a central site, which results from using management models that were designed when management was still a relative simple task and the traffic generated by it was minimal. Delegating management also makes the control loop (from managing code to managed device) smaller, decreasing the probability of failure at times when there are problems in the network (and management is needed the most).
Connection closures [#!Rooney:98a!#] are related to first-level netlets with associated behaviour. They provide for a way to open up the specification of an application's resource allocation behaviour. It is not possible to recursively partition the resources. Also, as indicated by the name, the connection closure associates application policy with a set of resources owned by the application. It is not possible to extend the MCA with new ``public'' operations (i.e. operations that can be used by any application in the system).