在进行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的时间会有点长,但是只要有耐心并按照步骤逐一进行操作,最终还是可以安装成功并投入生产应用的。