Designing Embedded Networking Applications: Essential Insights for Developers of Intel IXP4XX Network Processor Systems

There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. The other way is to make it so complicated that there are no obvious deficiencies.
Sir Tony Hoare
The Intel IXP400 software serves as the software toolkit for the Intel IXP4XX Network Processor. This toolkit is partitioned into a set of components or software libraries that closely corresponds to the hardware interfaces on the IXP4XX network processor. The design of each of these components follows some common principles. In this chapter, we outline these principles and describe the components at a high level. We also show you how the Intel IXP400 software can fit within the architecture of your own application.
First, a short digression on software architecture what it is and why it is important. Software architecture is the overall map of the software system, sometimes called the high-level design. An architecture can provide the designer with significant help during the construction of a system.
" the quality of the architecture determines the conceptual integrity of the system. That in turn determines the ultimate quality of the system. Good architecture makes construction easy."
Steve McConnell (McConnell 1993)
Every system has an architecture whether you identify it or not. This book has an architecture, an outline, that helped us stay on course during the writing of it. Some systems have evolved without any documented architecture, but they...