如何解决DPDK 流过滤器获取无效动作错误
我尝试更改示例:flow_classify 以使用队列操作。
变化只是:
//add:
struct rte_flow_action_queue queue = { .index = 1 }; //enqueue to queue index: 1
//change count action to queue action.
//actions[0] = count_action;
actions[0].type = RTE_FLOW_ACTION_TYPE_QUEUE;
actions[0].conf = &queue;
更改后,当验证规则时,我收到此错误:表条目验证失败 ipv4_proto = 17,无效操作。
感谢您的建议!
更多信息: DPDK 版本:19.11.2,使用 igb_uio 绑定
网卡:驱动程序:ixgbe
版本:4.4.0-k-rh7.3
固件版本:0x80000922,
expansion-rom-version:bus-info:0000:01:00.1,supports-statistics:yes,supports-test:yes,supports-eeprom-access:yes,supports-register-dump:yes,supports-priv -标志:否
设备配置:
rx_rings: 2,tx_rings: 1,struct rte_eth_conf port_conf = port_conf_default;
struct rte_eth_dev_info dev_info;
retval = rte_eth_dev_info_get(port,&dev_info);
if (retval != 0)
return retval;
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
port_conf.txmode.offloads |= DEV_TX_OFFLOAD_MBUF_FAST_FREE;
retval = rte_eth_dev_configure(port,rx_rings,tx_rings,&port_conf);
if (retval != 0)
return retval;
retval = rte_eth_dev_adjust_nb_rx_tx_desc(port,&nb_rxd,&nb_txd);
解决方法
[EDIT based on the comment update] 具体操作失败的可能原因很可能是 NIC 的固件与 DPDK 特定要求不匹配。
根据 DPDK 19.11 release notes,预期固件为 0x61bf0001
。由于与当前版本不匹配,建议使用推荐固件
注意:根据评论操作 count
有效。
[EDIT-1] 基于实时调试,我们能够通过操作 QUEUE redirect
使 RTE_FLOW 工作。使用 ixgbe 分析 DPDK 示例 flow_classify
INTEL NIC 82599 不允许 IP_PROTO 字段作为规则的一部分。
因此 RTE_FLOW 和 Action QUEUE 可以在具有正确固件的 NIC 上运行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。