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 crossplatform 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 highperformance 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.
Prerequisites
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
However, following packages are options.
apt-get install libssl-dev valgrind libcunit1 libcunit1-doc libcunit1-dev
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 https://git.linaro.org/lng/odp.git
Go into the root directory of the ODP source code and run the following command.
./bootstrap
In this tutorial, the installation directory of ODP is "/usr/local/odp".
mkdir /usr/local/odp
Run the configure script with prefix option as shown in following screenshot.
./configure --prefix=/usr/local/odp/
The output of configure script is shown below.
Run make and make install for the compilation and installation of ODP on the Ubuntu platform.
make
make install
As shown below, download the OFP code by using the git command.
git clone https://github.com/OpenFastPath/ofp
Enter into the root directory of the OFP source code and run the ./bootstrap command.
cd ofp/
./bootstrap
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
The output of the configure script is shown in the following snapshot.
Run the "make" command to build the OFP project code. It will take some time to build the OFP application.
make
The following command will place the OFP project binaries and libraries inside the prefix path.
make install
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.
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.
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 "start_device.sh" script.
After running the "fpm" application, a new interface "fp0" will be created as shown below.
Run the following command to get access to CLI of the "fpm" application.
telnet localhost 2345
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.