Contributions
This paper describes an extensible forwarding architecture for the internet and presents design experiences and experimental results for security and performance concerns. It is a concrete implementation of the active network model, which envisioned distributing computing resources to many nodes on the network, to leverage their computing power in order to solve complex compute-intensive tasks. Since the architecture is extensible in respect to tasks, the computing code (or for this paper, the forwarding code) has to be distributed to all participating nodes.
To achieve backwards compatibility and adhere to slow adaption of the new architecture in the internet, the proposed packet format is an extension to IP’s packet format, which allows the so-called “capsules” to be forwarded as normal IP packets by existing routers, and be forwarded according to their associated forwarding code by the so-called “active nodes” which have adapted to the capsule standard and the new architecture. Therefore, it creates an overlay network.
The services supported by this network are identified by the MD5-hashes of their forwarding code, which each of the nodes on the route to the target receives from its upstream node. These MD5-hashes are stored in the capsule and due to security measures, they cannot change on any node in the network. The code itself is executed in a sandbox environment and has limited access to its environment, although services belonging to the same family can share state information.
Furthermore, the paper presents resource allocation problems in this overlay network, for the solution of which the authors fall back to certification mechanisms by a trusted authority (e.g. the IETF).
The authors also provide performance measurements, they report a slow-down ratio of around 4, due to the software forwarding in Java (1.2).
Overall, the authors imagine this network to support different multicast schemes and congestion notifications.
Most glaring problem
In retrospect, the advances in MD5-collision finding suggest that it may be possible to inject service code in the network for an existing service, therefore possibly breaking it. Due to the fixed nature of the packet format changing the hash function is non-trivial, so future versions should be extensible in respect to the type field.
Future work
It would be very interesting to see if these software-based forwarding mechanisms can also be implemented in hardware, being extensible by using FPGAs, to achieve higher performance goals while preserving the architecture goals.