Skip to Main Content
The history of the Internet is one of rapid change and adaptability. The simple IP service model and the informal standardization process have fostered rapid evolution of systems and services. However, as the Internet has transformed from an academic playground to an essential commercial infrastructure the service model and the standardization process have become more complex. While outsourcing and optimizations are driving services into the network, the IETF is increasingly the battleground of vendors. Consequently, introducing new services to the Internet has become increasingly complicated. Active and programmable networking is an effort to reclaim the flexibility of the early Internet and reduce the need for standardization. In this paper we introduce a new abstraction, packet processors, to evolve the lower layer router facilities and to extend the programmable interface in a type safe manner. We show how this abstraction is sufficient to capture all facilities commonly found in data-paths of commodity routers and how it gives the ability to introduce new types of packet processors. Packet processors can add type specific methods thereby extending the programmable interface while maintaining the semantic integrity of the Node OS and the execution environment. We discuss how paths can be constructed from a sequence of packet processors, and how these paths can cross the services/Node OS boundary, and cross hardware processor boundaries. Our measurements show that the added flexibility adds negligible overhead.