Designing High-Performance Networking Applications: Essential Insights for Developers of IXP2XXX Network Processor-based Systems

Slumber not in the tents of your fathers. The world is advancing.
Giuseppe Mazzini
Network processors represent a new and exciting trend in the evolution of both microprocessors and networking devices. With the ambitious goal of combining the performance of fixed function ASICs with the programmability of general-purpose processors, they hold the promise of a revolution in the way networking equipment is developed.
This chapter presents an overview of network processors and addresses the following questions:
What is a network processor? What are some of the defining characteristics and functions of a network processor?
Why do you need a network processor? What are the challenges unique to networking that are driving the need for such a device? What is the value proposition of a network processor over an ASIC and a general-purpose processor?
How does a network processor work? What are some of the common design techniques used to achieve performance while maintaining programmability?
Where are network processors used? What are the target market segments and what are the application requirements in these segments?
As defined in A Guide to Network Processors (Linley 2003), network processors are programmable devices specifically optimized for the task of processing packets at extremely high speeds. Most network processors typically include:
Multiple programmable packet-processing engines running in parallel. The programmable engines may include special instructions to optimize specific tasks, such as byte alignment and CRC computation.
Efficient mechanisms for communication and synchronization between the packet-processing engines.
An integrated...