鲲鹏社区首页
中文
注册
开发者
DPDK无法收包和找不到some.so文件的解决方法

DPDK无法收包和找不到some.so文件的解决方法

DPDK

发表于 2025/10/22

0

作者 | 方原

问题场景描述

以DPDK纳管网口为enp129s0f0,未纳管网口为enp130s0f0为例,enp129s0f0和enp130s0f0通过光纤直连。

DPDK纳管测试:通过Tcpreplay向enp130s0f0网口写入pcap包,使用dpdk-testpmd监测enp129s0f0网口是否收到数据。

具体测试步骤如下:

1.安装Tcpreplay。

yum install tcpreplay

2.发包。

tcpreplay -i enp130s0f0 -l 0 -t *.pcap

3.启动dpdk-testpmd。

LD PRELOAD=***/librte_net_sp600.so.21 dpdk-testpmd -c 0x3 -n 4 -- -i --portmask=0x1

如果适配SP680网卡,且所用的DPDK版本未包含SP600驱动的源码,可通过动态链接或者静态编译的方式集成驱动。

  • 动态链接:通过LD_PRELOAD实现,如下为示例。
LD PRELOAD=***/librte_net_sp600.so.21 dpdk-testpmd -c 0x3 -n 4 -- -i --portmask=0x1
  • 静态连接:查看make文件,找到静态库的查询路径,将静态库放进指定的目录中。

4. DPDK启动端口。

port start

5.DPDK观察端口是否收到信息。

show port stats all

marsio用户场景测试:

依次启动用户程序,同样使用Tcpreplay向enp130s0f0网口写包,通过用户的监测命令检查是否收到包。

问题1:使用Tcpreplay向DPDK未纳管接口发包,启动DPDK后在纳管接口未收到包

问题现象描述

使用Tcpreplay向DPDK未纳管接口发包,启动DPDK后在纳管接口未收到包。

关键过程、根本原因分析

首先测试enp129s0f0发包,enp130s0f0是否能够正常收包。

testpmd> port stop all	// 停止所有端口 
testpmd> set fwd txonly	// 仅发送 
testpmd> set verbose 1 
testpmd> port start all 
testpmd> start	// 开始发送

强制连接后调用上面的检查链路的命令,发现其链路还是no link,可能是物理链路(光模块, 光纤)有问题,或者网口没有插好。去机房检查检查中发现两个网口的指示灯均未亮起,说明物理链路有问题。

结果为无法收包。enp129s0f0和enp130s0f0都无法接收,查看两个端口的状态。

ip link | grep UP

上面命令查看到两者都为DOWN,用下面命令使其UP:

ip link set enp129s0f0f up & ip link set enp130s0f0 up

或者

ifconfig enp129s0f0 up & ifconfig enp130s0f0 up

重新用ip link | grep UP查看,发现二者还是DOWN。在DPDK中使用tstpmd> set link-up port 0尝试使0端口(enp129s0f0)的状态为UP,但是使用testpmd> show port info all发现0端口的link状态还是no link。

ethtool -i enp129s0f0(ethtool -i enp129s0f0)或者hinicadm3 hilink_port -i hinic1 -p 0(hinicadm3 hilink_port -i hinic1 -p 0)查看两个网口的链路状态,发现都是no link。尝试使用ethtool --show-priv-flags <网口名>查看网口的Force-Link_up状态并且使用ethtool --set-priv-flags <网口名>来使其强制连接。

结论、解决方案及效果

经过尝试,最终定位为光模块故障,更换光模块后,指示灯正常亮起。调用ethtool -i enp129s0f0命令检查链路状态发现均为UP,调用ip link | grep UP发现两个网口均为UP。

问题2:程序启动后提示找不到some.so文件

当提示找不到SO库,需要考虑此SO库是否损坏或者是否与此平台匹配。使用readelf -h some.so读取some.so的头部信息,发现其架构为x86,不能被Arm平台的程序读取。需重新编译出some.so库,并放至指定目录即可。


本页内容