Improve Network Performance with openDataplane and Open Fast Path on Ubuntu 16.04

Open Data Plane (ODP)

The performance of Linux-based network solutions was one of the biggest issues in the past and that's why Intel started the Data Plane Development Kit (DPDK) project. The goal of the ODP environment is to provide a cross­platform framework for data plane applications. ODP is an open source project which provides the environment for data plane applications. It is easy to use, provides high­performance and is also portable across various networking system on chip (SoCs) and instruction sets and architectures such as ARM and Intel. The OPD environment consists of configuration files, services, APIs for different architectures and utilities which are optimized for the different underlying hardware vendors. The purpose of the ODP environment is to separate the API from the underlying architectures and it is designed in a way to support both software and hardware implementations to deeply exploit acceleration features present in modern SoCs.

Open Fast Path (OFP)

As we know, high-performance devices are required for the exponentially growing data traffic which demands a fast packet processing devices or machines in the network. OpenFastPath is another open source implementation of a high-performance TCP/IP stack which is helpful for network applications with a traditional Linux stack. The main functionality of OFP is provided as a library for different applications which are using ODP for the completion, execution model and framework. OFP supports both DPDK and ODP for high performance of network solutions.

Build the Environment Setup

As per OFP project website, it has been tested on generic 32/64bit x86 Linux machines. In this tutorial, OFP will be installed on an Ubuntu 16.04 VM.


The following steps are executed as root user. Run:

sudo -s

to become root on the server.

The following packages are required to compile OFP and ODP code on Ubuntu.

These are mandatory for accessing and building ODP and OFP:

apt-get install git libtool automake build-essential pkg-config

Install ODP system requirements

However, following packages are options.

 apt-get install libssl-dev valgrind libcunit1 libcunit1-doc libcunit1-dev

Install optional but recommended packages

OFP path can be used with ODP and DPDK (intel). However, in this tutorial, ODP will be used with the OFP project. Using the git utility to download the ODP code as shown below.

 git clone

Download ODP with GIT

Go into the root directory of the ODP source code and run the following command.


Bootstrap ODP

In this tutorial, the installation directory of ODP is "/usr/local/odp".

mkdir /usr/local/odp

Create ODP directory

Run the configure script with prefix option as shown in following screenshot.

 ./configure --prefix=/usr/local/odp/

Configure ODP

The output of configure script is shown below.

ODP configure output

Run make and make install for the compilation and installation of ODP on the Ubuntu platform.


Make ODP

make install

install ODP with make install

As shown below, download the OFP code by using the git command.

git clone

Download OFP with GIT

Enter into the root directory of the OFP source code and run the ./bootstrap command.

cd ofp/

Bootstrap OFP

The installation directory of the OFP project is "/usr/local/ofp". Run the following configure script to check the dependencies of the project.

 ./configure --prefix=/usr/local/ofp/ --with-odp=/usr/local/odp/ --enable-cunit

Check OFP dependencies

The output of the configure script is shown in the following snapshot.

OFP configure script output

Run the "make" command to build the OFP project code. It will take some time to build the OFP application.


Build OFP code with make command

The following command will place the OFP project binaries and libraries inside the prefix path.

 make install

Install OFP

After installation, binaries and libraries are placed under the "/usr/local/ofp" path.  All related test applications for the OFP project are under the "bin" directory.

Locations of binaries

Execution of the OFP Application

To run the OFP application (fpm), go into the scripts directory under the root directory of the OFP source code.

Enter the scripts directory

By default, the fpm application runs on the eth0 interface. However, on ubuntu 16.04 LTS, the interface name is "enp0s3".  The following screenshot shows how the fpm application is run using the "" script.


After running the "fpm" application, a new interface "fp0" will be created as shown below.

The fp0 interface has been created

Run the following command to get access to CLI of the "fpm" application.

telnet localhost 2345

Access the FPM application with telnet

The CLI of the application supports several basic commands. The following screenshot shows the interface statistics using the "stat" command. After running the fastpath application, the ethernet interface (enp0s3) will be disconnected from Linux and "NoARP" will be set on it. The newly created virtual interface (fp0) will be used by Linux OS for communication now.

Interface statistics


Share this page:

2 Comment(s)

Add comment


From: alex at: 2016-12-17 07:11:57

Can you elaborate on the use cases for this ?

I'm not familiar with Dataplane and ODP. Why would somebody use this? What does it do for an aplication like MariaDB/MySQL ?

From: Dave at: 2016-12-21 05:27:13

When followig this example, I set the ip on the fp0 interface, but am unable to ping out from the server.

Incoming pings to the IP work, but not outgoing.