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

在DPDK testpmd中如何配置两张网卡间的环路转发模式?

Hyper-V环境netvsc PMD测试无收发报文解决方案

1. 前置环境校验

  • 确认已加载uio_hv_generic内核模块:执行modprobe uio_hv_generic加载,用lsmod | grep uio_hv_generic验证加载状态
  • 确认两张测试网卡已绑定到uio_hv_generic驱动,未被内核网络栈占用:执行dpdk-devbind.py --status查看绑定状态,若仍绑定到内核驱动,先执行ip link set 网卡名 down关闭内核态网卡,再用dpdk-devbind.py --bind=uio_hv_generic 网卡PCI地址完成绑定
  • 确认Hyper-V层面已为两张虚拟机网卡开启MAC地址欺骗选项:默认Hyper-V会丢弃源MAC非虚拟机自身配置MAC的报文,未开启会导致转发报文被vswitch直接丢弃
  • 确认internal virtual switch未配置额外的端口隔离、ACL规则限制两张网卡之间的报文转发

2. Testpmd启动参数调整

当前启动参数缺少必要的大页配置校验,调整后的启动命令参考:

./app/dpdk-testpmd -l 2,3 --socket-mem 1024 -- --total-num-mbufs=2048 -i --portmask=0x3 --port-topology=loop
  • 新增--socket-mem 1024参数确保分配足够大页内存,避免mbuf分配失败导致无收发
  • 启动后先执行show port info all确认两个端口均被识别为netvsc PMD驱动,端口状态为up,若端口状态为down,先执行set promisc all on开启混杂模式,再执行port start all手动拉起端口

3. 转发测试配置调整

默认io转发模式需要先收到报文才会转发,start tx_first默认只会发送一次burst报文,无后续报文触发转发自然看不到计数,按以下步骤操作验证:

  1. 进入testpmd交互模式后,先设置转发模式为io模式:set fwd io
  2. 开启报文发送校验:set txpkts 64固定发送64字节报文
  3. 执行start tx_first 32连续发送32次burst报文,触发双向转发
  4. 等待5秒后执行show port stats all查看计数,正常情况下port0的Tx计数等于port1的Rx计数,port1的Tx计数等于port0的Rx计数
    如果还是无计数,可临时配置转发模式为set fwd macswap,再重新执行启动命令验证,该模式对二层转发的兼容性更好,适配Hyper-V vswitch的转发规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:36:03