OpenFastPath project
Clone or download
JannePeltonen and JereLeppanen ipsec: Extend the public IPsec API with query capabilities.
Add OFP API functions for getting the existing IPsec SPs and SAs and their
properties. Make SA and SP handles reference counted at the API level to
remove races between queries and destruction. Add identity parameter to
SAs and SPs to make things more convenient for CLI.

Signed-off-by: Janne Peltonen <>
Reviewed-by: Valentin Radulescu <>
Latest commit 63b052f Sep 12, 2018

OpenFastPath general info Build Status

Intent and purpose:

The intent of this project is to enable accelerated routing/forwarding for IPv4 and IPv6, tunneling and termination for a variety of protocols. Unsupported functionality is provided by the host OS networking stack (slowpath).

OpenFastPath functionality is provided as a library to Fast Path applications that use ODP run to completion execution model and framework. DPDK is supported through the ODP-DPDK layer.

Termination of protocols with POSIX interface for legacy applications is also supported.

See project technical overview for more details about OpenFastPath architecture and main features.

Directory structure

./docs/ - This is where you can find more detailed documentation
./example/ - Example applications that use the project library
./include/api/ - Public interface headers used by an application.
./include/ - Internal interface headers that are used in OFP library.
./scripts/ - Auxiliary scripts.
./src/ - .c files with OFP library implementation.
./src/cli/ - Command Line Interface implementation.
./test/cunit/ - CUnit testcases implementation

Coding Style:

Project code uses Linux kernel style that is verified through


Project uses BSD 3-CLause License as default license. One should not use code that is licensed under any GPL type.

Mailing list

We have a mailing list, reached via the address:

Open IP Fast Path getting started

Build environment preparation:

This project is currently verified on a generic 32/64bit x86 Linux machine.

The following packages are mandatory for accessing and building ODP and OFP:

git aclocal libtool automake build-essential pkg-config

The following packages are optional:

libssl-dev doxygen asciidoc valgrind libcunit1 libcunit1-doc libcunit1-dev libconfig-dev

The usage of libconfig-dev package is enabled by default and can be disabled by --disable-libconfig configure option.

Download and build OpenDataPlane (ODP) library:

git clone
cd odp
git checkout v1.17.0.0
./configure --prefix=<INSTALL ODP TO THIS DIR>
make install

(make install may require root permissions)

Instructions for building OFP on top of ODP-DPDK and ODP-ThunderX can be found from OFP User Guide (docs/ofp-user-guide.adoc).

Compiling and building OFP:

git clone
cd ofp
./configure --prefix=<INSTALL OFP TO THIS DIR> --with-odp=<ODP INSTALLATION DIR>
make install 

OFP example applications:

OpenFastPath project contains a number of example applications described in example/README file. See OFP User Guide (docs/ofp-user-guide.adoc) for more details about designing and executing OFP applications.


Code coverage:

Generate code coverage report from unit tests by passing --coverage during building, and use lcov to view the results:

./configure <typical-ofp-flags> CFLAGS='-g -O0 --coverage' \
make check

cd test/cunit

lcov --directory . --directory ../../src --capture --output-file \

genhtml --output-directory out

view out/index.html