The evolution of commodity PCs towards multi–
core processing platforms equipped with high–speed network
interfaces makes them reasonable and cost effective targets for
the implementation of generic network functions. In addition, the
availability of software accelerated I/O frameworks provides a
convenient ground for running a broad variety of applications,
from simple software switches to more complex network systems,
with near hardware–class performance and the flexibility of a
software approach.
Most network functions can be implemented by composing a
set of elementary operations into processing pipelines to be run on
top of multiple processing cores. In this framework, maintaining
the flow consistency is crucial to enable stateful operations in the
processing pipelines.
This paper presents Enif–Lang, a functional language for
programming network pipelines specifically targeted at multi–
core scenarios. In addition to a large set of functions for generic
packet manipulation, filtering, steering and state management,
the framework is built upon an abstract model that provides
state aware packet splitting to prevent inter–state sharing and
enable consistent stateful parallel processing on–top–of multi–
core architectures.