Active or programmable networks are packet-switched networks in which packets sent from a source node to a destination node can contain code that is executed by one or more intermediate nodes. Active networks have been developed not so much to provide a distributed processing environment as to provide a customisable network to meet the needs of its users. For example, active networks can provide quality of service (QoS) and other network management functions, virtual networking, and enhanced data services to their users. In contrast, non-active networks are not generally controllable by their users.
The use of active network nodes in a telecommunications carrier grade network allows executable code to be injected into the network to enable the provision of new services. Practical deployment of active network components generally requires the data path to be disturbed to a minimum. Packets in an active network can be considered to include active packets that require processing within the network, and non-active packets that are simply forwarded to their destination on a fast pathway. Active packets can contain code for execution in the network, references to executable code, and/or data to be processed by an active application within the network. Scalability is an issue for active networks, and active applications with a majority of active packets are not generally scalable. However, applications with a relatively small fraction of active packets and a majority of non-active packets are more likely to scale. There is a need for an active node that allows scalable extraction of a subset of active packets from a stream of active and non-active packets at line rate to allow the implementation of new services and a process for processing packets of an active application that alleviate one or more difficulties of the prior art, or at least provide a useful alternative to existing active nodes and packet processes.