运行F-stack DPDK程序报Unsupported Rx multi queue mode 1如何解决
问题根因
该错误由阿里云Virtio网卡的硬件卸载能力与现有F-Stack配置不匹配导致:
- 错误码
-22对应非法参数错误,抛出原因是阿里云部分实例规格的Virtio网卡默认不支持RSS(接收端缩放)多队列模式,即错误日志中提到的Rx multi queue mode 1 - 原AWS实例的Virtio网卡对DPDK RSS的兼容性更好,因此复用同一份配置在AWS侧无异常,迁移到阿里云后触发报错
修复方案
方案1:关闭RSS配置(单队列场景优先使用,操作最简便)
修改/etc/f-stack.conf配置:
- 在
[dpdk]段新增配置项disable_rss=1,强制关闭网卡RSS功能 - 在
[port0]段新增nb_rxq=1、nb_txq=1,固定网卡收发队列数为1
修改后的配置参考:
[dpdk] lcore_mask=1 channel=4 promiscuous=1 numa_on=1 tx_csum_offoad_skip=0 tso=0 vlan_strip=1 symmetric_rss=0 # 新增以下配置关闭RSS disable_rss=1 [port0] addr=<ADDR> netmask=<NETMASK> broadcast=<BROADCAST> gateway=<GATEWAY> # 新增以下配置固定队列数为1 nb_rxq=1 nb_txq=1
方案2:多队列场景适配
如果业务确实需要使用多队列能力,先确认所用阿里云实例规格支持Virtio多队列及RSS功能,在实例侧开启网卡多队列后,再修改F-Stack配置匹配对应队列数即可。
修改完成后重新启动程序即可正常运行。
内容的提问来源于stack exchange,提问作者David Callanan
相关产品推荐
相关产品推荐

