DPDK使用net_af_xdp虚拟设备出现libbpf: can't get next link错误
问题根因
- DPDK 19.11版本的net_af_xdp驱动基于早期AF_XDP接口实现,仅适配低版本libbpf。你当前使用的bpf-next分支最新libbpf接口逻辑发生了变更,与老版本DPDK驱动不兼容。
- 5.4版本内核的AF_XDP特性处于早期迭代阶段,未适配新版libbpf的部分调用逻辑,触发参数校验失败报错。
解决方案
方案1:降级libbpf版本
使用libbpf 0.3.x及以下稳定版本,不要拉取bpf-next的master分支代码。该版本区间和DPDK 19.11.x系列、5.4内核的AF_XDP接口适配度最高,编译安装完成后重新编译DPDK即可消除报错。
方案2:升级DPDK版本
如果需要保留新版libbpf,可将DPDK升级到21.11 LTS及以上稳定版本。高版本DPDK的net_af_xdp驱动已经完成了新版libbpf的接口适配,同时兼容5.4及更高版本内核的AF_XDP特性。
方案3:临时规避(仅测试场景使用)
如果暂时不需要调整依赖版本,可以在net_af_xdp的vdev启动参数中添加zero_copy=0关闭零拷贝特性,部分场景下可以绕过该报错,但性能会有明显下降,仅适合临时验证功能使用。
内容的提问来源于stack exchange,提问作者chrhong
相关产品推荐
相关产品推荐

