【发布时间】:2021-06-24 20:32:53
【问题描述】:
我尝试更改示例: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;
更改后,验证规则时出现此错误:table entry validate failed ipv4_proto = 17, Invalid action。
感谢您的建议!
更多信息: DPDK版本:19.11.2,使用igb_uio绑定
网卡:驱动:ixgbe
版本:4.4.0-k-rh7.3
固件版本:0x80000922,
扩展ROM版本:总线信息:0000:01:00.1,支持统计:是,支持测试:是,支持eeprom-access:是,支持注册转储:是,支持私人-标志:没有
设备配置:
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);
【问题讨论】:
-
DPDK rte_flow 受 DPDK 版本、网卡、固件的影响很大。因此,请使用所有详细信息更新问题。也请添加 dev_configure 的代码 sn-p,
-
感谢您提供的信息,有几件事可以尝试 1) 更新固件 doc.dpdk.org/guides/rel_notes/release_19_11.html,2) 如果使用 TCP,则不应应用 Fortville 等 NIC 硬件 IP proto 字段| UDP|SCTp。因此,您可以尝试设置
ipv4_spec.hdr.next_proto_id = 0;或设置ipv4_spec.hdr.next_proto_id = 0; -
你能分享你的更新吗?
-
建于 19.11.7。然后绑定新的 igb_uio.ko(但看起来与 11.9.2 相同)。还使用 19.11.7 构建代码,同样的错误:表条目验证失败 ipv4_proto = 17,无效操作。我设置:ipv4_spec.hdr.next_proto_id = 0,并用 19.11.7 编译,得到错误:EAL:错误 - 退出代码:1,原因:添加规则错误。在 add_classify_rule 函数中找到,切换 ipv4_proto,如果不是 TCP、UDP 或 STCP,则返回错误。试图通过 pattern_ipv4_5tuple[1] = ipv4_udp_item 删除 UDP,只留下 IP; pattern_ipv4_5tuple[2] = end_item;然后得到:table entry validate failed ipv4_proto = 17, Unsupported pattern
-
如果你的网卡是
Intel® 82599ES,固件应该是0x61bf0001,请使用doc.dpdk.org/guides/rel_notes/release_19_11.html来缩小正确的固件范围。感谢您尝试该建议,因为我了解原始流程 _Calssify 本身不适合您。我建议从简单的 rte_flow 示例开始,并确保您的 nic 能够处理相同的问题。如果您在测试时需要帮助(因为我没有 10Gbps ixgbe nic),请告诉我。
标签: dpdk