在 Ubuntu 16.04 上使用 openDataplane 和 Open Fast Path 提高网络性能
在此页
- 构建环境设置
- 先决条件
开放数据平面 (ODP)
基于 Linux 的网络解决方案的性能是过去最大的问题之一,这就是英特尔启动数据平面开发套件 (DPDK) 项目的原因。 ODP 环境的目标是为数据平面应用程序提供跨平台框架。 ODP 是一个开源项目,它为数据平面应用程序提供环境。它易于使用、提供高性能并且还可以跨各种网络片上系统 (SoC) 以及指令集和架构(例如 ARM 和 Intel)移植。 OPD 环境由针对不同架构的配置文件、服务、API 和针对不同底层硬件供应商优化的实用程序组成。 ODP 环境的目的是将 API 与底层架构分开,它的设计方式同时支持软件和硬件实现,以深入利用现代 SoC 中存在的加速功能。
开放快速路径 (OFP)
众所周知,指数级增长的数据流量需要高性能设备,这需要网络中的快速数据包处理设备或机器。 OpenFastPath 是另一个高性能 TCP/IP 堆栈的开源实现,它有助于使用传统 Linux 堆栈的网络应用程序。 OFP 的主要功能是作为一个库提供给不同的应用程序,这些应用程序使用 ODP 来完成、执行模型和框架。 OFP 同时支持 DPDK 和 ODP,以实现高性能的网络解决方案。
构建环境设置
根据 OFP 项目网站,它已经在通用 32/64 位 x86 Linux 机器上进行了测试。在本教程中,OFP 将安装在 Ubuntu 16.04 VM 上。
先决条件
以下步骤以 root 用户身份执行。跑步:
sudo -s
成为服务器上的根。
在 Ubuntu 上编译 OFP 和 ODP 代码需要以下包。
这些对于访问和构建 ODP 和 OFP 是强制性的:
apt-get install git libtool automake build-essential pkg-config
但是,以下包是选项。
apt-get install libssl-dev valgrind libcunit1 libcunit1-doc libcunit1-dev
OFP 路径可以与 ODP 和 DPDK (intel) 一起使用。但是,在本教程中,ODP 将与 OFP 项目一起使用。使用 git 实用程序下载 ODP 代码,如下所示。
git clone https://git.linaro.org/lng/odp.git
进入 ODP 源代码的根目录并运行以下命令。
./bootstrap
本教程中ODP的安装目录为\/usr/local/odp\。
mkdir /usr/local/odp
运行带有前缀选项的配置脚本,如以下屏幕截图所示。
./configure --prefix=/usr/local/odp/
配置脚本的输出如下所示。
在Ubuntu平台上运行make和make install编译安装ODP。
make
make install
如下图,使用git命令下载OFP代码。
git clone https://github.com/OpenFastPath/ofp
进入OFP源码根目录,运行./bootstrap命令。
cd ofp/
./bootstrapOFP工程的安装目录为\/usr/local/ofp\。运行以下配置脚本来检查项目的依赖关系。
./configure --prefix=/usr/local/ofp/ --with-odp=/usr/local/odp/ --enable-cunit
配置脚本的输出显示在以下快照中。
运行“make”命令来构建 OFP 项目代码。构建 OFP 应用程序需要一些时间。
make
以下命令会将 OFP 项目二进制文件和库放在前缀路径中。
make install
安装后,二进制文件和库放在“/usr/local/ofp”路径下。 OFP 项目的所有相关测试应用程序都在“bin”目录下。
执行 OFP 申请
要运行 OFP 应用程序 (fpm)
,
进入 OFP 源代码根目录下的脚本目录。默认情况下,fpm 应用程序运行在 eth0 接口上。但是,在 ubuntu 16.04 LTS 上,接口名称是 \enp0s3\。以下屏幕截图显示了如何使用 \start_device.sh\ 脚本运行 fpm 应用程序。
运行“fpm”应用程序后,将创建一个新界面“fp0”,如下所示。
运行以下命令以访问 \fpm\ 应用程序的 CLI。
telnet localhost 2345
应用程序的 CLI 支持几个基本命令。以下屏幕截图显示了使用“stat”命令的接口统计信息。运行快速路径应用程序后,以太网接口 (enp0s3) 将与 Linux 断开连接,并在其上设置“NoARP”。新创建的虚拟接口 (fp0) 现在将被 Linux 操作系统用于通信。
参考
- http://www.opendataplane.org/wp-content/uploads/2014/01/ODPIntroductionandOverview-2014Jan29.pdf
- http://www.openfastpath.org/index.php/service/technicaloverview/