DPDK l2fwd报‘无以太网端口’错误求助:已绑定NIC并配置大页
问题:DPDK l2fwd提示"No Ethernet ports - bye",但已绑定网卡并配置大页
尝试运行DPDK的l2fwd应用时,始终报错"No Ethernet ports - bye",已完成大页配置和网卡绑定操作,无法定位原因。
报错信息
./dpdk-l2fwd -l 0-3 -n 1 --no-telemetry -- -q 8 -p ffff EAL: Detected CPU lcores: 6 EAL: Detected NUMA nodes: 1 EAL: Detected static linkage of DPDK EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: VFIO support initialized TELEMETRY: No legacy callbacks, legacy socket not created MAC updating enabled EAL: Error - exiting with code: 1 Cause: No Ethernet ports - bye root@dpdku:~/dpdk/build/examples#
大页配置
dpdk-hugepages.py -s Node Pages Size Total 0 600 2Mb 1Gb Hugepages mounted on /dev/hugepages
NIC绑定状态
dpdk-devbind.py -s Network devices using DPDK-compatible driver ============================================ 0000:00:08.0 'RTL-8100/8101L/8139 PCI Fast Ethernet Adapter 8139' drv=uio_pci_generic unused=8139too,vfio-pci 0000:00:09.0 'RTL-8100/8101L/8139 PCI Fast Ethernet Adapter 8139' drv=uio_pci_generic unused=8139too,vfio-pci Network devices using kernel driver =================================== 0000:00:03.0 'RTL-8100/8101L/8139 PCI Fast Ethernet Adapter 8139' if=ens3 drv=8139cp unused=8139too,vfio-pci,uio_pci_generic *Active*
回答
核心原因是你绑定的RTL-8139系列网卡不在DPDK官方支持列表中,即使绑定了uio_pci_generic这类DPDK兼容驱动,DPDK的PMD(Poll Mode Driver)也无法识别和初始化该网卡,导致l2fwd找不到可用的以太网端口。
具体说明
- DPDK仅针对高性能服务器级网卡开发PMD,比如Intel(ixgbe、i40e、e1000e等)、Mellanox、Broadcom等系列,老旧的百兆民用网卡(如RTL-8139)不在支持范围内。
- 验证方式:
- 运行
dpdk-devbind.py --status-dev net,查看输出中DPDK支持的网卡是否包含你的型号; - 查看DPDK源码目录下的
doc/guides/nics/index.rst文件,里面列出了所有官方支持的网卡型号。
- 运行
解决办法
- 更换兼容网卡:换成DPDK支持的网卡型号,比如Intel的e1000e(千兆)或ixgbe(万兆)系列;
- 使用虚拟网卡测试:如果只是想验证DPDK功能,可以创建虚拟端口:
- 运行l2fwd时添加虚拟设备参数:
./dpdk-l2fwd -l 0-3 -n 1 --no-telemetry --vdev=net_tap0 --vdev=net_tap1 -- -q 8 -p 0x3 - 或者在KVM虚拟机中配置PCI passthrough的虚拟网卡,绑定到vfio-pci驱动后再运行l2fwd。
- 运行l2fwd时添加虚拟设备参数:
内容的提问来源于stack exchange,提问作者h_f
相关产品推荐
相关产品推荐

