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

Anyone who considers protocol unimportant has never dealt with a cat.
Robert A. Heinlein
The protocol processing part of the application is responsible for implementing one or more of the networking protocols as defined by various standard bodies such as the IETF, IEEE, and so on. Therefore, protocol processing defines the network processor (NPU) application's external behavior. Protocol processing involves the repeated application of several basic operations. These include packet classification, packet modification, connection setup/teardown, and statistics gathering.
Protocol processing typically is not as performance sensitive as the network-interface handling or traffic-management parts of the application. However, you want to design the protocol-processing piece in an efficient manner so that you get the maximum gain in overall application performance. This chapter explains how you can apply several high-performance design and implementation techniques to get an efficient protocol-processing design. Examples illustrate the design of protocol-processing operations in the areas of packet classification, packet modification, connection setup/teardown, and statistics gathering.
Packet classification, the first protocol-processing operation performed on a packet, involves the matching of one or more of the protocol header fields against a set of configured rules. Associated with each rule is a set of actions that must be applied to the packet if it matches the rule. Packet classification results in identification of the matching rules and the actions to be applied on the packet.
Several forms of packet classification are widely used in protocol processing. These forms are distinguished by the type of the comparison operations...