Prepared for Prof. Javed I. Khan
Department of Computer Science, Kent State University
Date: January 2002
Keywords: active network, programmable network, distributed operating system, router, capsule
The techniques and protocols used by networks today were developed more than 20 years ago. Intermediate nodes (routers) between two end computers are “passive”. They just pass the information of packets to the next computer on the route and don’t have any ability to process the data transported in packets, i.e. routers only decide the route of packets and don’t change the content. Routing algorithms only work to IP level in OSI model, not application level. With the increase of network popularity, people hope more applications from network. But it is difficult and cost-inefficient to deploy new applications in the traditional network. Internet service providers (ISP) must wait service vendors to implement the whole application and produce the special hardware before the new application can be provided to normal users. Application users cannot change the service once the application is deployed and make new applications of their own. It is critical for ISPs to react to the market needs as quickly as possible. ISPs hope there is a kind of more flexible and simplified means to deploy new applications, and network users hope to make use of the distributed computing environment of network. Programmable networking model is formed to meet this requirement. In programmable network model, intermediate nodes (routers) are not “passive” any more, but “active”. They can change the data in transported packets or the processing environment of routers. As illustrated in Fig.1, routers work to application level in OSI model. ISPs deploy some components on network nodes and network users can assemble these components to achieve some application they want, i.e. program the network [5, 11].
Fig 1. Application-specific processing within the nodes of an active network. Courtesy to David L. Tennenhouse, etc.
The goal of programmable network is to simplify
deployment of new services in the network and let network users create
new applications by using existing service among nodes of network. A
diversity of projects is working on this goal. In essence, there are
two approaches to make network programmable: open signaling
(OPENSIG) and active networks (AN), depending on whether programs
and data are carried discretely or in an integrated fashion .
Programmable switches (a discrete approach):
OPENSIG community thinks that new service is provided by virtual
network. All kinds of primitives are installed on routers in the
networks. Virtual network is decided during routing the packets. Nodes
with needed primitives are visited by packets of a stream in a certain
order. Active routers process the data in packets and then re-wrap
processing result and pass it to next active node for further
computation. Final results reach the destination of the route in the
end. The structure of packets used in this approach changes very little
comparing to traditional IP packets. The identifiers or references to
primitives should be present in the header of packets.
Capsules (an integrated approach): AN community
thinks that packets transports not only data, but also code itself.
They call this kind of packets “capsule”. In active nodes, the content
of capsules is evaluated to decide whether the code should be executed
at run time. Capsules embody the “granuity of control”. It ranges from
packet level to stream level. The first capsule of a stream might
change the processing environment of this stream. This environment will
be kept until the end capsule of the stream is processed.
The two approaches are two opposite extremities. Many other approaches fall in between these two. But they share the same goal to make network programmable. OPENSIG is a static method; AN is more dynamic and decide what code executed at run time. Of course, this is not absolute. OPENSIG can also decide the to-be-executed code-load dynamically.
Active network technique can accelerate network
infrastructure innovation. Just like we talked above, it will take 10
years ordinarily from the appearance of prototype to large-scale
deployment of that model at present. In order to speed up this process,
active network model comes up naturally.
Active network enables some new applications . Efficient merging and distribution of information for multi-user at multi-site are enabled in active network. A user can compose data from multi-site on network and multi-user can use data from multi-site according to the requirement of their own. Active network also let network protection can be done on a per-user or per-use basis. User can use a formal approach to specify safety rules. And active network can play a role in network management. It makes congestion control, multicasting and caching more dynamic and improve QoS of network.
Different people have different viewpoints on
programmable networks. Some people think traditional network, we are
using nowadays, is simple and work stably and very well already. The
used technology was developed more than 30 years ago. It is very
mature. But other people think the idea about programmable network is
appealing and novel. This idea is borrowed from the model on
stand-alone computer. People can write a complicated program by only
using basic set of instructions CPU understands. So if there are a bunch
of primitives in network, people can build the applications of their
own by using these “bricks”.
But how to build programmable networks? There are
many classification methods from different point of view. I feel the
classification criteria of Konstantinos Psounis more reasonable. He
classified programmable networks architecture into 3 types: active
nodes, active packets, and hybrid.
Active nodes: In the active nodes method, packets hold transported data and identifiers or references to which primitive will be called to process their data. Functions or primitives reside in active routers. The packets are “active” just because they decide what functions will be executed when they reach routers and they provide needed parameters for the called functions. Actual executed code is not carried with packets. They are deployed in some nodes by ISPs as resources in network. ISPs provide the interfaces of these primitives to normal network users. This is the reason why this kind of architecture is called “active nodes”. Examples of active nodes architecture are talked about as following.
Cluster-based active network (CBAN) – this approach  builds active router architecture by cluster. The purpose of this architecture is to perform competitively as a conventional router, but also to scale network well with respect to required computational resources. The designation of active router architecture, as illustrated in Fig.2, is composed of a cluster of generic PCs. One PC in the cluster is configured as a normal IP router; while the rest PCs in cluster work as computing elements to provide computational resources for customization services. In this architecture, the network-specific functionality resides on the routing element, while the service-specific processing primitives reside on the computing elements. As seen in the illustration, the cluster routing element behaves as a normal IP router in traditional network. Besides this function, this PC also works as a controller in the active network. It captures unprocessed packets to decide whether they are needed to be processed by computing elements or not.
Fig.2. Functional overview. Courtesy to Girish Welling, etc.
If no any further computation is needed, the
packets will be passed out of cluster and to next node in the network.
If some computation is needed, packets are passed to the cluster
dispatcher. The dispatcher will choose a computing element for the
packets based on the information of packets and pass the packets to
that computing element. After processing, packets are gathered in the
routing element and then sent out on the appropriate interface
according to their routing requirement. Computing elements can join or
disconnect with cluster at any time. Its signature will be kept in the
routing element, cluster controller, if the computing element is in.
Also, this architecture simplifies to add new computing elements into
ANTS – ANTS is an active network
toolkit, in which new application can be deployed in network arbitrary
by using mobile code technique. Code for one application is divided
into several groups. These related groups are located among nodes in
the active network. Some functions are “well-known” because every node
in network has this code. However, some functions only reside in active
nodes. When a capsule arrives, the node first decide which protocol the
capsule belongs to and what functions are needed according to the
information about protocol identifier and capsule type contained in
capsule header. Then this node checks its cache of protocol to see if
the needed code exist. If some portion of code is missed, the node will
send code load request to its upstream neighbors and let the current
capsule “sleep”. Neighbors then check if they cache the requested code.
If so, they will forward it there. And this code is cached at new site
for the following capsule of current stream. Once the node gets the
needed code, it wakes up the sleep capsule and process the data of it.
If not, the sleep capsule will be discarded.
The code is executed in a restricted environment
because of security reason. Capsules in this architecture only have
limited access to shared resources. Active nodes play this role. They
check the integrity of capsule and recover the system from error.
Capsules have a field, called “Time To Live” (TTL). This field is
decreased with the consumption of resource. The capsule will be
discarded when the TTL field is zero.
Besides the above examples, Jit Biswas etc.  also extend ATM switches and circuit switches and deploy open signaling, control and management application on higher level multimedia network services.
Active Packets: In the active packets method, packets hold not only the data, but also code itself. Primitives don’t reside in an active node any more. When packets arrive, active node will decompose the structure of packet according to network protocol and process data or change the node environment by using attached code in packets. Therefore, this architecture is named as “active packets” just because code is carried with packets, and active node run the code to fulfill a task. Programming language for code is an important issue for this architecture because network is composed of all kinds of platform and packets size is limited. A good programming language can decrease the weight of programs and improve the performance, safety and security of active network. Examples of active packet architecture are presented next step.
Smart packets – smart packets project 
makes two decisions: first decision is about programming language. The
programs contained in the smart packets must be self-contained. Thus,
they don’t depend on the persistent state of a router. Also, programs
must be packed into one packet. So program size cannot be too large.
Normally, its size is within 1Kbyte long. Second decision is related to
system security. Because incoming packets contain executable code, much
care should be taken. The operating environment should take measures to
prevent packets with bad code from being executed.
Either sprocket or spanner is used as programming
language for smart packets. Sprocket is a higher-level language like C,
while spanner is an assemble language. Programs in sprocket are
compiled into spanner program, which in turn assemble to a
platform-independent binary code. This binary code is packed into smart
packet at last. The reason why other high-level languages, such as C,
java, which seems to be a good choice, is not chosen is that the
programs in these are normally too large to be put into one packet.
About security problem, active nodes in smart packet project keep checking the source of smart packets to see if a program comes from an authorized user, data integrity of smart packets and provide a limited running environment for incoming programs.
M0 architecture – M0 system  is composed
of M0 nodes, between which messengers are exchanged. Messenger is
similar to the capsule or the smart packet. Messenger code is
programmed in M0 language. M0 language is a high-level language that
inherits some data structures, operators and other characteristics from
PostScript. When code is small, it is put in only one messenger. But if
code cannot be hold in one messenger, the shared memory of M0 node
under a chosen name will be used. This mechanism makes M0 architecture
very flexible to deploy new protocol, however complex it is. For safety
reason, one independent thread of control executes on behalf of one
messenger. The memory used by these thread is separation and protected
from one another.
Hybrid – Just like what we can see, in active node architecture code resides in active nodes, which provide protocols efficiently. However, in active packet architecture code is carried by smart packets efficiently. Hybrid architecture uses these two characteristics according to the size of code. Heavy-weight program stays on an active node and light-weight program is carried by active packets. Hybrid approach tries to find a tradeoff between active packet architecture and active node architecture. A typical example is SwitchWare architecture developed in University of Pennsylvania.
SwitchWare Architecture – SwitchWare  is
constructed by using three layers: active packets, switchlet and active
router infrastructure. Active packets layer uses active packet
approach, while switchlet layer uses active node approach.
In SwitchWare, two level programming languages are
used. Heavy-weight primitives are written by higher-level languages,
such as C, Java etc. Light-weight code in active packets is written in
PLAN (Programming Language for Active Network). It calls primitives
named as switchlets, which are heavy-weight programs resides in active
nodes. PLAN is a light-weight language, which helps to improve safety,
security and efficiency for active network .
Active network and distributed operating system are two research areas associated with each other. Distributed operating system is a collection of software components based on a physical network computing environment. It is located between physical network components and normal network users and helps users to use network easily and efficiently. Just like operating system for stand-alone computers, distributed operating system also manages software and hardware resources. It makes users feel they were working on a stand-alone computer, although this is not the case. In future, distributed operating system can be built based on an active networking environment. Congestion control, multicasting and caching are 3 characteristics of whole network, which are related to QoS and suppose to be managed by distributed operating system. There are already a lot of active network applications on these issues . Samrat etc.  think active networking techniques are consistent with and outperform end-to-end argument.
In the traditional network, when congestion happens at a certain node,
that node will send a congestion message to the user from the
congestion point. The user will decrease its used bandwidth. But it
will take considerably long time for this message to travel across in
network sometimes. Circumstances of network will change after this
period. Either the congestion has already disappeared, or the user
doesn’t take any self-regulation before thing get worse, because the
message did not get through. Active nodes can be used to control
congestion in time. Buffers are used in this case at active nodes.
Active nodes monitor the available bandwidth. If congestion happens,
they will adjust the data flow speed. Congestion points don’t need to
send a message to notify users, but control congestion directly at
active nodes on the fly.
Multicasting: A lot of network applications are related to audio, video data stream. These applications require multicasting technique. In traditional network, there are many problems for multicasting, such as NACK implosion, useless retransmission and run-time multicasting scale-up etc. These problems limit the QoS of the teleconference. Active network can be the solution. In MIT, ARM project (active reliable multicast)  claims that the problems are solved more efficiently. Active nodes are used to cache data for a specified time in ARM. So, NACK does not send back to sender only, but the first upstream active node on the route. This will cause NACK number decrease dramatically. Also, retransmission request can be fulfilled by active node, not by sender. And one active node re-sends the lost packet to the down-stream nodes, not all receivers of this application. The traffic decreases a lot because of these reasons. QoS improved by using active network technique.
Caching: In traditional
network, cache close to clients is needed to decrease the network
traffic and the time for retrieving the information. Normally, the
caching nodes are those computers located near the edge of the network
or at strategic points in network constructed with a hierarchical
scheme. If we use active network technique, caching site is decided at
demand on the fly. The traffic and retrieving time will decrease
further and QoS will be better correspondingly.
Researches on active network are very hot. From other papers, there are two schools of thought on how to make network programmable: OPENSIG and AN. Many annual workshops and conferences are held by these two communities and IEEE every year. We can imagine how many papers will be presented in these events. Therefore, it is sort of difficult to make a thorough list of research directions.
Also, active network research area and distributed
operating system research area develop twisted. They share some common
topics to a certain degree. So it is tough to get all open problems if
we only examine papers from one field.
Anyway, I have a try to make a research list on active network as below:
- Distributed operating system problems and active network techniques develop together and have effects on each other;- A standard on active network is needed;
- Nowadays, the projects on active network are small-scale. It is still problematic to scale them up to the scale of world wide web;
- The changes to the organization of end system software are needed to provide the formal specification of network elements and behavior;
- A network programming language, which is easy to use and make programming as quickly as in end system, is still in the lab;
- To use per-packet programs to allow each packet to make decisions about how to route, congestion control;
- The adapted routing algorithms used for active network are needed .
Research Papers for More Information on This
1. Andrew T.Campbell, etc., “A Survey of
Programmable Networks” Computer Communication Review, vol.29, no.2,
2. David L. Tennenhouse, etc., “A Survey of Active
Network Research” IEEE Communications Magazine, pp.80-86, Jan.
3. Girish Welling, etc., “A Cluster-Based Active
Router Architecture” IEEE Micro pp.16-25, Jan.-Feb. 2001.
4. Jit Biswas, etc., “Application Programming
Interfaces for Networks (DRAFT WHITE PAPER)”, White Paper on
Application Programming Interfaces for Networks, Working Group for IEEE
5. Jonathan M.Smith, “Programmable Networks:
Selected Challenges in Computer”, Computer, 1999 IEEE.
6. Konstantinos Psounis, “Active Networks:
Applications, Security, Safety, and Architectures” IEEE Communications
Surveys, pp.2-16, First Quarter, 1999.
7. Randy Cieslak, etc., “The Programmable Network
Prototyping System”, Computer, pp. 67-76, May 1989.
8. Scott Thilbault, etc., “Safe and Efficient
Active Network Programming”, IRISA/INRIA Technical Report 1170, Feb
9. Samrat Bhattacharjee, etc., “Active Networking
and the End-to-End Argument” Proceedings of the 1997 International
Conference on Network Protocols (ICNP’97), pp.220-228.
10. Sumi Choi etc., “Configuring Sessions in
Programmable Networks”, Proceedings of IEEE Infocom 2001, Active
Network Technical Program.
11. Thomas M.Chen, etc., “Active and Programmable
Networks”, guest editorial for Special Issue: Active and Programmable
Networks, Network Interactive, May 1998.
12. D.J. Weltherall, etc. “ANTS: A Toolkit for
Building &.Dynamically Deploying Network Protocols, proc. IEEE
OPENARCH’98, April 1998.
13. Beverly Schwartz, etc., “Smart Packets for
Active Networks”, BBN Technologies, Jan. 1998.
14. Albert Banchs, etc., “Multicasting Multimedia
Streams with Active Networks”, ICSI technical report 97-050.
15. C.A. Guter, etc., “The SwitchWare Active
Network Architecture”, IEEE Network, special issue on Active and
Programmable Networks, May/June 1998, vol. 12, no3.
16. Li-wei H, etc., “Active Reliable Multicast”, Proc. IEEE INFOCOM’98, San Francisco, CA, 29 March-2 April 1998.
1. The research group of University of Pennsylvania works on SwitchWare project, which develops a programmable switch approach. In this project, PLAN is developed for active programming.
2. The research group of Massachusetts Institute of Technology works on a multicasting architecture, which uses active packets approach.
3. The research group of University of Kentucky and Georgia Tech. works on CANEs project to construct composite network services from components.
4. The research group of Columbia University works on NetScript project. This project provides a programming language and execution environment to script the processing of packet streams.
Other Relavant Links