David L. Tennenhouse and David J. Wetherall
Notes by Walter Bell, April 1998. Previous notes by Mao
Introduction
Presents the concept of an "active" network, where computation happens inside the network in addition to at the two endpoints of the communication. Discusses some of the issues involved in how one would design and develop an active network, such as safety of the execution environment, portability of code between vastly different hardware, as well as maintaining code efficiency.
Motivation
The recent spur of interest in agent technologies (client to server code transfer), and web applets (server to client code transfer) shows that the networking community is ready for a model that bridges this dichotomy.
Lead applications are already out there that could benefit from active networks:
- Firewalls
- Web Proxies
- Multi-point Communication
- Information Fusion
- Mobile / Nomadic computing;
Advantages of an Active Network
- Exchanging code provides a basis for adaptive protocols, enabling richer interactions than the exchange of fixed data formats
- Capsules provide a means of implementing fine grained application-specific functions at strategic points within the network.
- The programming abstraction provides a powerful platform for user-driven customization of the infrastructure, allowing new services to be deployed at a faster pace than can be sustained by vendor driven standardization processes.
Overview of the Network
Programmable switches
Switches perform computation on particular packets
Capsules
Every message is a program that executes in it's own transient execution environment.
- Composed of primitive instructions that operate on the capsule's contents
- Can also invoke external methods (Foundation Components)
- Could use active storage space on the switches
- Could be allowed to define new methods and classes
Format of capsules
Capsules need to provide safe and efficient execution, as well as interoperability between many different switches
Possible program encoding techniques
Source Code - portable, safe, but size and efficiency suffer
Intermediate Code (Java style)- portable, safe, and faster than source
Binary Code- non-portable, unsafe without operating system style protection, fast, could be very small
Resource Sharing
Need to place limits on the amount of resources that a particular capsule can use (memory, transmission bandwidth, cpu, transient / active storage, logical resources)
Preserving resource safety is important, need good ways to dynamically assign resources to capsules, authentication of capsules, etc.
Discussions
"The active network approach opens a Pandora's box of safety, security, and
resource allocation issues."