The main functions of the active node are broadly classified as follows, in the order of how any given packet is processed from the time it enters the node:
Queuing
One way of looking at this is that once
inside the node (router) the quantum of processing that each packet is
subjected to is no longer the same (as in the regular IP) as any other,
since each packet may require a different amount of processing. Thus fairness
needs to be addressed.
Multiple Queues (flow based) are foreseen
as a possibly useful feature, since each packet will require a different
processing time, and it may not prove feasible to hold up packets requiring
lightweight processing just because of other packets up ahead soliciting
heavyweight processing. Further, another possibility may then be explored,
and that is the availability of specific queues for specific sets of customers.
But currently for simplicity all the packets
shall be marshaled onto a single queue after its requisite processing is
identified.
Policy selection and execution
Each datagram shall have a set of constraints
that will be locally translated into services. This statement of request
shall be a high level abstraction of the requirement. The request shall
then be serviced (or ignored) as per a policy definition which corresponds
to this request under existing local conditions. The policy using which
the packet is actually processed is selected as follows:
There shall exist a list of services that
will be available at the router. From this set of services, a smaller set
will be filtered out depending upon the policy set at the router.
From this set of filtered policies, a policy
matching the requirement of the datagram shall be loaded and cached.
The primitive services (the actual code
for processing like compression, encryption etc.) shall then be loaded
into the execution environment (else retrieved from elsewhere, with the
assistance of a Directory service)