You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DPDK testpmd通过vhost-user向QEMU virtio虚拟机发报文全丢问题求助

排查步骤

1. 确认虚拟机侧RX队列有可用缓冲区

你当前仅在虚拟机内开启了网卡混杂模式,没有运行任何收包程序占用virtio RX队列的描述符,会导致virtio vring中没有可用的接收缓冲区,host侧vhost PMD发送时找不到可写入的内存空间,所有报文直接被统计为TX丢弃。
修复操作:在虚拟机内执行如下命令启动收包程序,占用RX队列缓冲区:

# 任选其一即可
tcpdump -i eth0
# 若虚拟机内也安装了DPDK,也可运行testpmd收包

2. 配置testpmd txonly模式的目标MAC地址

DPDK 19.08版本testpmd的txonly模式默认生成的报文目的MAC并非虚拟机virtio网卡的MAC,即使虚拟机开了混杂模式,也建议明确指定对端MAC避免底层过滤逻辑丢包:
在testpmd交互终端执行:

testpmd> set eth-peer 0 52:54:00:00:00:14
testpmd> port stop 0
testpmd> port start 0

3. 关闭发送侧校验和卸载验证

部分版本vhost PMD默认开启TX校验和卸载,若txonly生成的报文未正确填充校验和字段会被直接丢弃,可临时关闭校验和卸载验证:

testpmd> port config 0 tx_offload csum off
testpmd> port stop 0
testpmd> port start 0

4. 验证测试

重新执行txonly发送测试:

testpmd> set fwd txonly
testpmd> start

运行30秒后停止查看统计,正常情况下TX-packets会有计数,TX-dropped计数为0或仅个位数。


内容的提问来源于stack exchange,提问作者weiping

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:01