15.01.2013 Views

U. Glaeser

U. Glaeser

U. Glaeser

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

transporting digital bits, whereas link-layer network processors deal with framing, bit error detection/correction<br />

and arbitration of concurrent accesses to shared media. Network-layer processors operate on<br />

individual packets and determine how to route packets from their senders to receivers in a particular<br />

order, and modify their headers or even payloads along the way if necessary. Because the Internet is<br />

largely based on the IP protocol, almost all state-of-the-art network-layer processors are designed to<br />

process IP packets only. The conspicuous exception is network-layer processors designed for ATM networks.<br />

The focus of this paper, however, is exclusively on network-layer processors, which can operate<br />

at from Layer 3 to Layer 7 in the ISO/OSI protocol stack model.<br />

In general, three approaches are used for network processor design, which correspond to different<br />

design points in the programmability/performance spectrum. The ASIC approach takes a full customization<br />

route by dedicating specially-made hardware logic to specific network packet processing functionalities.<br />

Although this approach gives the highest performance, it is typically not programmable and therefore<br />

not sufficiently flexible to support a wide variety of network devices. Consequently, such processors are<br />

more expensive and tend to be outdated sooner because they cannot exploit economies of scale to keep<br />

up with technology advances. The general-purpose CPU approach either takes an existing processor for<br />

PCs or embedded systems as it is, or augments it with a small set of instructions specifically included to<br />

improve network packet processing. While this approach admits the most programming flexibility, the<br />

throughput of these processors is substantially lower than what modern network devices require. The<br />

main reason for this lackluster performance is that network device workloads are data movementintensive,<br />

whereas traditional processors are designed to support computation-intensive tasks. The last<br />

approach to network processor design, programmable network processor, attempts to strike a balance<br />

between programmability and performance and achieves the best of both worlds. Instead of using generalpurpose<br />

instruction set, a programmable network processor defines the set of instruction set primitives<br />

for network packet processing from scratch, and exposes these primitives to system designers so that they<br />

can tailor the processor to the requirement of different network devices. In the rest of this paper, we will<br />

concentrate only on programmable network processors, as they represent the most promising and commercially<br />

popular approach to network processor design.<br />

In addition to the basic network processing function such as packet routing and forwarding, modern<br />

network processors are tasked with additional capabilities that support advanced network functionalities,<br />

such as differentiated quality of service (QoS), encryption/decryption, etc. For network processors that<br />

are to be used in edge network devices, they may need to perform even higher-level tasks such as<br />

firewalling, virtual private network (VPN) support, load balancing, etc. Given an increasing variety of<br />

features that network devices have to support, it is crucial for a network processor architecture to be<br />

sufficiently general that system designers can build newer functionalities on these processors without<br />

causing serious performance degradation. The challenge for network processor design is thus to identify<br />

the set of packet processing primitives that is elastic enough to support as many different types of network<br />

devices as possible, and at the same time is sufficiently customized so that the performance overhead<br />

due to “impedance mismatch” is minimized.<br />

In the rest of this chapter section, we first discuss fundamental design issues related to network<br />

processor architecture in the “Design Issues” section, and then describe specific network processor architectural<br />

features that have been proposed in the “Architectural Support for Network Packet Processing”<br />

section. In the section on “Example Network Processors,” we review the design of several commercially<br />

available network processors to contrast their underlying approaches. Finally, we outline future network<br />

processor research directions in the “Conclusion” section.<br />

Design Issues<br />

To understand the network processor architecture, let us first look at what a programmable network<br />

processor is supposed to do. After receiving an IP packet from an input interface, the network processor<br />

first determines the output interface via which the packet should be forwarded toward its destination.<br />

In the case that multiple input packets are destined to the same output interface, the network processor<br />

© 2002 by CRC Press LLC

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!