Download

Prepare your build environment, download OFP source code, understand it and build it

You can go directly to OpenFastPath GitHub project where you can find the most up to date information in the README file or follow the getting started guide below:

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

DOWNLOAD AND BUILD OPENDATAPLANE

OFP relies on supported version tag of OpenDataplane (ODP), so you need to download ODP first:

git clone git://git.linaro.org/lng/odp.git
git checkout v1.19.0.2

Enter the odp directory, prepare for build and build:

./bootstrap
./configure --prefix=<INSTALL ODP TO THIS DIR>
make
make install

(Note: “make install” may require root permissions)

DOWNLOAD AND BUILD OPENFASTPATH

Access OFP source code

git clone https://github.com/OpenFastPath/ofp

Enter the ofp directory, prepare for build and build:

./bootstrap
./configure --with-odp=<ODP INSTALLATION DIR>

DOWNLOAD AND BUILD OPENFASTPATH FOR ODP-DPDK

A quick method to build OpenFastPath for ODP-DPDK repository is through OFP build script:

1. Clone OpenFastPath

git clone https://github.com/OpenFastPath/ofp

2. Change directory

cd ofp

3. Run build script

./scripts/devbuild_ofp_odp_dpdk.sh

This script will download and build DPDK (v 2.2.0) and ODP-DPDK (v 1.7) repositories; it will also build OpenFastPath.

FILE STRUCTURE DEFINITION

./docs/        – This is where you can find more detailed documentation
./example/fpm/ – Template application example that uses the project library
./include/api/ – Public interface headers used by an application.
./include/     – Internal interface headers that are used in fastpath library.
./scripts/     – Scripts that start/stop the application and configure system.
./src/         – .c files with fastpath library implementation.
./src/cli/     – Command Line Interface implementation used mainly for debug.
./test/cunit/  – CUnit testcases implementation

EXECUTE REFERENCE APPLICATION

A start_device.sh/stop_device.sh script is available in the scripts directory to start/stop the fpm example application. By default the eth0 interface is used for the fastpath processing but any other interface/interfaces names can be supplied to the script as parameter.

Example usage of generic non-accelerated build in a linux environment:

<OFPROOT>/scripts/start_device.sh eth0

This will create a fp0 interface that can be seen when issuing “ifconfig -a”

<OFPROOT>/example/fpm/fpm -i fp0

This will start the fpm example module using the fp0 interface, the CLI can be accessed if issuing “telnet 127.0.0.1 2345”

When using ethX interface for fastpath processing this will be disconnected from Linux. A fpY TUN/TAP interface is created by fastpath application and this can be used by Linux to send and receive packets. The sent packets from Linux on fpY interface are forwarded to ethX (wire). The packets received by the ethX interface are captured by ODP and then these are received by FPM fastpath application. When no fastpath operation is aplicable the packet is forwarded to slowpath.