您的位置:

DPDK安装指南

在进行DPDK安装之前需要先确认以下几个方面的准备工作:

  • 确认CPU支持VT-d以使用IOMMU内存管理技术,它不仅可以降低CPU的负载,还可以提升数据报文的处理性能。
  • 检查DPDK需要的环境依赖是否都已经安装好了。

一、DPDK基础知识

在进行DPDK的安装之前,先简单介绍一下DPDK的基础知识。

DPDK是Data Plane Development Kit的缩写,它是一个开源的、不依赖于特定CPU和操作系统的用户空间数据平面框架,旨在通过使用I/O虚拟化技术和内存映射机制来提供对流水线、周期计数器和访问NIC指令的直接访问。DPDK被广泛应用于网络设备的高速数据包处理、虚拟化、云计算等场景。

DPDK包括以下两个组件:

  • EAL(环境抽象层):是DPDK的核心模块,提供了跨平台、可移植的内存管理、调度、中断处理等功能。
  • Packet Framework:是DPDK中对数据包进行处理的框架,包括PMD(driver)、mbuf、等模块。

二、环境依赖

DPDK需要以下软件包依赖:

  • kernel-devel(与系统内核相应版本的开发头文件和静态代码)
  • numactl, numactl-devel (NUMA 预配置工具)
  • gcc (编译DPDK源码)
  • make (编译DPDK源码)

在安装环境依赖的时候需要确认kernel版本是否和安装的开发头文件和静态库文件一致。

三、DPDK安装

我们可以从官方网站中下载DPDK源码,也可以从Github源代码存储库下载,如下:

wget http://fast.dpdk.org/rel/dpdk-20.08.tar.xz
tar -xf dpdk-20.08.tar.xz
cd dpdk-20.08

然后进行配置和编译:

make config T=x86_64-native-linuxapp-gcc
make

make config命令用来进行一些额外的编译参数设置,其中T参数用来设置编译所使用的编译器和目标平台的类型,如下表:

T参数 说明
x86_64-native-linuxapp-gcc 64位Linux应用程序编译器
i686-native-linuxapp-gcc 32位Linux应用程序编译器
arm-native-linuxapp-gcc ARM应用程序编译器

完成编译之后,需要设置大页面并动态定义Hugepage的目录和数量:

echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

最后,需要加载DPDK设备驱动程序:

./app/test-pmd/linuxapp/kni/build/kni.ko
./app/test-pmd/linuxapp/igb_uio/igb_uio.ko

四、DPDK使用

启动DPDK程序需要使用testpmd命令。以双口,组播和抓包为例:

./app/test-pmd/testpmd -l 0-1 -n 4 -- --total-num-mbufs=256 --portmask=3 --enable-rx-cksum

其中-l参数用来指定使用哪些核心,-n参数用来指定使用的内存通道数,--total-num-mbufs参数用来指定存放数据包的mbuf总数,--portmask参数用来指定端口号,--enable-rx-cksum参数用来启用包接收校验和校验。

以上就是DPDK安装指南了,对于初次安装者而言,配置DPDK的时间会有点长,但是只要有耐心并按照步骤逐一进行操作,最终还是可以安装成功并投入生产应用的。