DPDK介绍
DPDK(Data Plane Development Kit)是一个用于高性能数据包处理的软件集合。
DPDK主要特点和功能如下:
- 以加速网络数据包处理为目标,旨在实现最佳性能。
- 直接从用户空间访问网络设备,无需操作系统缓冲和复制,降低CPU和内存消耗。
- 提供专门针对数据平面的编程接口,比如流式网络 I/O 和内存管理。
- 支持多种计算平台,如x86、ARM和POWER。常用作高速网络和数据中介软件。
- 内含基于环形缓冲的框架和线程模型,用于无锁的包处理。
- 常用模块包括Poll Mode Driver(PMD)和Memory Manager(MEMPOOL)等。
- 主要应用场景包括高性能交换机、路由器、防火墙、TCP私有网关等。
- 一些知名项目使用DPDK,如:Linux VRouter虚拟路由,Apache Cassandra等。
- 出于性能考虑,DPDK应用通常需要绕过OS网络堆栈,实现零拷贝。
总之,DPDK是一个用于高性能数据包I/O和处理的重量级开源软件库,广泛应用于高性能网络应用和设备上。它利用零拷贝和无锁设计大幅提升网络数据处理能力。
修改VMware虚拟机支持DPDK
修改虚拟机的vmx文件
修改文件的内容如下
ethernet0.virtualDev = "vmxnet3"
ethernet0.wakeOnPcktRcv = "TRUE"
修改完后可能会出现网卡没有IP地址的情况,到时候可以修改Ubuntu的配置文件来修改地址,具体可以网络搜索下。
编译DPDK
下载源码
git clone https://github.com/DPDK/dpdk.git
切换DPDK到稳定版分支
git checkout v24.07
安装依赖的包
apt install libnuma-dev
apt-get install meson
apt install python3-pyelftools
apt-get install pkg-config
编译DPDK
meson build
cd build
ninja
ninja install
执行完之后所有的库都安装在 /usr/local/lib/x86_64-linux-gnu/ 目录。
可执行程序和脚本都安装在 /usr/local/bin/ 目录。
编译时遇到的错误
config/meson.build:440:4: ERROR: Problem encountered:
No NUMA library (development package) found, yet DPDK configured for multiple NUMA nodes.
Please install libnuma, or set 'max_numa_nodes' option to '1' to build without NUMA support.
安装依赖的包
apt install libnuma-dev