The Teja Software Platform for Network Processors
Network processors provide the advantages of flexibility and performance in packet processing but present serious challenges for software development. The current approach of fitting sequential code into a multi-threaded environment without optimized scheduling leads to both performance and design bottlenecks. Network processor software needs to be developed around a programming model that exploits the multithreaded nature of network processors and unifies the different needs such as forwarding vs. control processing, sequential vs. parallel code, symmetric vs. asymmetric processing, special vs. general languages, and static vs. dynamic resource assignment.
These complex issues are resolved by a solution based on three major considerations: state machine-based behavior descriptions, object-oriented data structure descriptions and event-driven multiprocessor scheduling. Based on these solution principles, the Teja software platform simplifies and standardizes network processor-based system development. Its core underlying technology is a high-performance, parallel and distributed software execution platform for network processors and multiprocessor systems. The accompanying graphical development environment supports a sound system design methodology of using the platform. The platform incorporates an extensible framework of network application building blocks for data forwarding, with integrated control and management interfaces.
In this talk, we describe the Teja software platform for network processors and illustrated its use and performance with a typical network application case study. Based on measurements of system performance and development productivity, we believe that the use of the Teja platform significantly accelerates program development without compromising – indeed, often enhancing – system performance. Future work on the platform is expected to expand its support for multiple network processors, increase the tools capabilities with respect to usability, debugging and verification, and extend the library of network application building blocks to meet the needs of a wider range of edge and core applications.
|©2002-2018 U.C. Regents|