Due to their critical position in the Internet topology, routers must be robust---when presented with unanticipated workloads, they must allocate their resources across the services they support according to administrator-established policies to ensure that each service gets the resources it needs.
By their nature, hardware-based routers with physically isolated control and data planes are robust but not readily extensible without a redesign while software-based routers may be extensible but are not robust without extensive regression testing; it is difficult to be simultaneously robust and extensible. The most common approach for router vendors is to favor robustness, and support new services on a case-by-case basis. Allowing the end-user to develop and install router services dooms this case-by-case approach to extensibility.
Emerging hardware in the form of intelligent, multi-port line cards that have their own embedded processing capabilities, based on either microprocessors or network processors, suggests that one can build cost-effective PC-based routers that lie in the design space between purely hardware- and software-based. However, the increased diversity of configurations makes both extensibility and robustness challenging. We do not want to require developers to re-implement services for every possible hardware configuration. How do we map the desired services onto the hardware to preserve robustness?
In this thesis we demonstrate that one can build a router from PC-based components, including programmable line cards, that is simultaneously extensible and robust. To show this, we describe an architecture, called VERA, that supports extensibility through an explicit interface and robustness through isolation of services; we present techniques to implement this architecture on a PC-based router; and we characterize and analyze the problem of mapping the services to the various, heterogeneous processors comprising the router to preserve robustness.