Oracle VirtualBox下Ubuntu 16.04环境构建DPDK l2fwd模块出错求助
解决DPDK l2fwd模块构建失败的常见排查步骤
在Ubuntu 16.04的VirtualBox虚拟机里折腾DPDK的l2fwd模块?我之前也踩过不少坑,给你梳理几个大概率能解决问题的排查方向:
1. 先把必备依赖补全
Ubuntu 16.04默认的包管理系统里,有几个DPDK编译必须的依赖包,先确保它们都安装到位:
sudo apt-get install build-essential libnuma-dev libpcap-dev
libnuma-dev是NUMA架构支持的核心,VirtualBox如果开了多核心,这个包没装的话,编译时大概率会报和内存绑定相关的错误。
2. 确认DPDK环境变量配置没出错
编译前一定要先设置好DPDK的环境变量,假设你解压后的DPDK目录是~/dpdk-stable-17.11.10(这个版本和Ubuntu 16.04的适配性最好,新版本可能会有gcc版本不兼容的问题),执行这两条命令:
export RTE_SDK=~/dpdk-stable-17.11.10 export RTE_TARGET=x86_64-native-linuxapp-gcc
如果你的虚拟机是32位系统,把RTE_TARGET换成i686-native-linuxapp-gcc就行。
3. 检查VirtualBox的硬件配置是否达标
DPDK对虚拟机的硬件配置有要求,这一步很容易被忽略:
- 必须开启VT-x/AMD-V和嵌套分页:打开虚拟机设置,在「系统」-「处理器」选项卡下勾选这两个选项,不然DPDK没法使用大页内存和轮询模式,编译或运行都会报错。
- 配置大页内存:DPDK依赖hugepage来提升性能,先在虚拟机里执行这些命令配置:
记得虚拟机的内存分配至少要2G以上,不然大页没法正常生效。sudo mkdir -p /mnt/huge sudo mount -t hugetlbfs nodev /mnt/huge echo 1024 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
4. 编译命令是否正确
进入l2fwd的示例目录,然后用make编译:
cd $RTE_SDK/examples/l2fwd make
如果还是报错,一定要把具体的错误信息贴出来(比如gcc编译报错、链接阶段的错误提示)——比如如果是新的DPDK版本,可能会和Ubuntu 16.04默认的gcc 5.4不兼容,这种情况下要么升级gcc,要么换用我推荐的17.11.x版本。
5. 权限问题别忽略
编译或者后续运行时如果出现权限不足的提示,记得用sudo执行相关命令,尤其是涉及到网络设备操作和大页内存访问的场景。
内容的提问来源于stack exchange,提问作者Haritha
相关产品推荐
相关产品推荐

