概述
DPDK(Data Plane Development Kit)是 Intel 开源的高性能数据包处理框架,通过用户态驱动绕过内核协议栈,实现网卡零拷贝和轮询模式,大幅提升网络吞吐性能。
本文记录 DPDK 的安装步骤以及网卡接管配置流程。
一、环境准备
1.1 系统要求
- Linux 内核 3.7+
- 支持的网络设备(Intel 网卡为主)
- 关闭 IOMMU 或配置 VFIO
1.2 关闭内核网络服务
1 2 3 4 5 6
| sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager
sudo modprobe -r igb
|
二、安装 DPDK
2.1 方式一:包管理器安装(推荐)
1 2 3 4 5
| sudo apt-get install dpdk dpdk-dev
sudo yum install dpdk dpdk-devel
|
2.2 方式二:源码编译
1 2 3 4 5 6 7 8 9 10 11
| wget https://fast.dpdk.org/rel/dpdk-22.11.tar.xz tar -xf dpdk-22.11.tar.xz cd dpdk-22.11
meson build -Ddrivers=enabled ninja -C build
sudo ninja -C build install
|
三、网卡接管配置
3.1 绑定网卡到 UIO/VFIO 驱动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sudo modprobe uio sudo modprobe uio_pci_generic
sudo modprobe vfio sudo modprobe vfio-pci
lspci | grep -i ethernet
sudo dpdk-devbind.py --bind=vfio-pci 0000:03:00.0
dpdk-devbind.py --status
|
3.2 配置大页内存
1 2 3 4 5 6 7 8 9 10
| echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
echo "vm.nr_hugepages=1024" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
sudo mkdir -p /mnt/huge sudo mount -t hugetlbfs nodev /mnt/huge
|
3.3 配置环境变量
1 2 3 4
| export RTE_SDK=/usr/share/dpdk export RTE_TARGET=x86_64-native-linuxapp-gcc export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
|
四、验证测试
4.1 运行 DPDK 示例程序
1 2 3 4 5
| sudo ./build/examples/helloworld -l 0-3 -n 4
sudo ./build/examples/l2fwd -l 0-3 -n 4 -- -p 0x3
|
4.2 查看网卡状态
1 2 3 4 5 6
| dpdk-devbind.py --status
sudo testpmd -l 0-3 -n 4 -- -i testpmd> show port info 0
|
五、常见问题
5.1 网卡绑定失败
1 2 3 4 5
| lsmod | grep igb
echo 0000:03:00.0 > /sys/bus/pci/drivers/igb/unbind
|
5.2 大页内存不足
1 2
| echo 2048 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
|
5.3 VFIO 权限问题
1 2 3 4 5
| sudo usermod -aG vfio $USER
sudo chmod 666 /dev/vfio/*
|
六、恢复网卡到内核驱动
1 2 3 4 5 6 7 8
| sudo dpdk-devbind.py --unbind 0000:03:00.0
sudo dpdk-devbind.py --bind=igb 0000:03:00.0
sudo systemctl start NetworkManager
|
参考资源