The current network infrastructure is essentially static. Although active code may be sent from servers to clients (such as web applets) and from clients to servers (such as OO database queries), internal network nodes (such as routers) passively switch packets. This infrastructure is standardized using monolithic protocols such as IP. Adding functionality to these core network protocols is performed by adding complexity to the protocols through a lengthy process of prototyping, standardizing, developing, and deploying. The result is that although the core protocols become bloated, they are still incapable of incorporating all of the functionality within the network (such as convergecasts or data caching) that applications may desire. Prior to active networks, the only solution other than adapting protocols has been to place specialized servers within the network to perform tasks such as multicast tunneling, web caching, and network monitoring.

By allowing computation to happen within the network as data passes through nodes, active networks1 provide a different solution to these problems. Rather than standardizing on a protocol that describes how nodes should forward packets, an active network standardizes on an execution environment that is provided to the capsules that pass through network nodes. A capsule contains both data and a reference to code to execute at each node the capsule passes through. In a traditional network, routers look at packet headers and decide where to forward the packets. In an active network, routers execute the code referred to by capsules, and this code tells the router where to forward the capsule.

This active networking approach would allow network protocols to evolve much more rapidly. In an active network, protocols can be written and immediately deployed without any need for an extensive standardization process. Because new protocols can be written (or existing protocols can be modified) to provide exactly the functionality that is needed by applications, the large bloat associated with monolithic protocols can be avoided. Active networks take the end-to-end argument2 to the extreme by allowing applications and protocols to do exactly what they need to do exactly where they need to do it. Utilizing active networks may make it much easier to implement and deploy new protocols for tasks such as multicasting, convergecasting, data caching, network monitoring, and dynamic data distribution.

Two somewhat different approaches have been taken to active networking: the capsule-based (or integrated) approach, and the programmable switch (or discrete) approach. The integrated approach revolves around programming in the messenger paradigm3 --- capsules containing both code and data move around the network and are executed on the nodes they pass through. In the discrete approach, functionality can be added to nodes out-of-band from the packets being processed by the node.


Adapted from: Erik L. Nygren, Stephen J. Garland, and M. Frans Kaashoek, PAN: A High-Performance Active Network Node Supporting Multiple Mobile Code Systems, In the proceedings of IEEE OpenArch 1999, New York, New York, pp. 78-89, March 1999.

1David L. Tennenhouse and David J. Wetherall, "Towards an Active Network Architecture", Computer Communication Review, vol. 26, no. 2, pp. 5 18, April 1996.

2Jerome H. Saltzer, David P. Reed, and David D. Clark, End-to-end Arguments in System Design, ACM Transactions on Computer Systems,vol. 2, no. 2, pp. 277 286, November 1984.

3Giovanna DiMarzo, Murhimanya Muhugusa, Christian Tschudin, and Jurgen Harms, "The Messenger Paradigm and its Implications on Distributed Systems, in Proceedings of the ICC 95 Workshop on Intelligent Computer Communication, June 1995, pp. 79 94.