Active Networks
Summary
Routing on the Internet
Active routing means finding “next-hop” by executing code, rather than by looking it up in a table.
How can we write the code and distribute it over all hardware the Internet runs on? Who can write this code?
How to Implement?
ANTS Toolkit
Active Node Transfer System
Application level package, adds ANTS Header to payload (to make capsule)
Some routers have ANTS Hardware. If they do, they can process ANTS Header and do more advanced routing. If not, the regular IP header is processed normally.
Active networks are only at edges of network
ANTS Capsule + API
ANTS API
int getAddress();
ChannelObject getChannel();
Extension findExtension(String ext);
long time();
// Store code associated with "type"
Object put(Object key, Object val, int age);
Object get(Object key);
Object remove(Object key);
// Routing
void routeForNode(Capsule c, int n);
void deliverToApp(Capsule c, int a);
void log(String msg);
Capsule Implementation
Action on Capsule Arrival:
- type field
- fingerprint
- demand load capsule from prev node by sending request
- save in soft store for future use
- drop capsule if code is not in soft store or prev node
Potential Apps
- Protocol independent multicast
- Reliable multicast
- Congestion notification
- Private IP
- Anycasting
Pros and Cons
- Pros
- Flexibility from app perspective
- Cons
- Protection threats
- ANTS runtime safety
- Java sandboxing
- Code spoofing
- Robust fingerprint
- Soft state integrity
- Restricted API
- ANTS runtime safety
- Resource Management threats
- at each node
- restricted API
- Flooding the network
- Internet already susceptile
- at each node
- Protection threats
Feasible
- Router makesrs loath to opening up the network
- only feasible at the edge
- Software routing cannot match hardware routing
- only feasible at the edge
- Social + Psychological reasons
- Hard for user community to accept arbitrary code executing in the public routing fabric