libPPI : The Packet Processing Infrastructure

The PPI provides an infrastructure to create packet oriented network processing applications. A PPI application is built by combining processing modules in a very flexible manner.

scenario.png
Target Scenario

The PPI concept is built around some key concepts

  • The PPI is based on processing Packets. It does not handle stream oriented channels.
  • The PPI is built around reusable Modules. Each module is completely independent.
  • Each module has an arbitrary number of Connectors, inputs and outputs.
  • The modules are connected to each other using flexible Connections.
  • Data flow throughout the network is governed via flexible automatic or manual Throttling (throttle notifications).
  • Modules may register additional external Events (file descriptor events or timers).

The PPI thereby builds on the facilities provided by the other components of the SENF framework. The target scenario above depicts a diffserv capable UDLR/ULE router including performance optimizations for TCP traffic (PEP). This router is built by combining several modules.

See also
PPI Overview and Concepts
PPI Example Application: RateStuffer
Modules
Connectors and Jacks
Events