---
title: DPDK无法收包和找不到some.so文件的解决方法-官方技术文章-鲲鹏社区
description: 本案例主要介绍DPDK无法收包和找不到some.so文件的解决方法。
keywords: DPDK,无法收包和找,不到,文件的解决方,官方技术文章,鲲鹏社区,问题场景描述,Tcpreplay
url: https://www.hikunpeng.com/developer/techArticles/20251022-1?envFlag=1
section: (其他)
---

# DPDK无法收包和找不到some.so文件的解决方法-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20251022-1?envFlag=1
描述: 本案例主要介绍DPDK无法收包和找不到some.so文件的解决方法。
关键词: DPDK,无法收包和找,不到,文件的解决方,官方技术文章,鲲鹏社区,问题场景描述,Tcpreplay

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

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 -ienp129s0f0命令检查链路状态发现均为UP，调用ip link | grep UP发现两个网口均为UP。

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

本页内容
