首页 > 解决方案 > 如何在 ETH_RSS_VXLAN 或 ETH_RSS_GENEVE 上为 DPDK 应用程序启用 RSS?

问题描述

我试图找出在使用隧道 RSS 哈希卸载时用于计算 RSS 哈希的参数是什么,例如ETH_RSS_VXLANETH_RSS_GENEVE。目标是基于 VNI 而不是 DPDK 中的外部 IP 或 UDP 端口号分配传入的 VXLAN 流量。

我一直在使用内部 IP 字段来测试不同的 RSS 哈希值来计算哈希值。设置完成的设置:L3FWD 应用程序内的 RSS 设置

[基于评论对话的EDIT-1]

  1. 我使用的 NIC 卡不支持ETH_RSS_VXLAN或其他隧道 RSS 卸载,我无法对其进行测试。
  2. 我没有使用 RTE_FLOW,因为我使用的是示例 l3fwd 示例应用程序。

标签: hashdpdk

解决方案


根据 DPDK 20.11.1 和 MLX5 PMD,不存在通过 DPDK rte_dev_configure 启用基于 VXLAN 的 RSS。因为当前 PMD 支持 MLX5_EXPANSION_OUTER_IPV4_UDP、MLX5_EXPANSION_OUTER_IPV6_UDP、MLX5_EXPANSION_VXLAN 和 MLX5_EXPANSION_VXLAN_GPERTE_FLOW用于交换机的封装和解封装 VxLAN。而 DPDKrte_eth_dev_configure是所有 NIC 的通用API。

因此,如果真正的意图是基于 INNER IP 分发数据包,我强烈建议使用RTE_FLOW,将流匹配作为 OUTER-IP 和 UDP 端口号,并将操作作为内部 IP 和端口号的 RSS。但是 L3FWD 应用程序必须进行相同的修改。

其他支持 DPDK 的网卡也支持 VNI(不同程度);

  1. 恩智浦奇德
  2. 漫威雷克斯
  3. 英特尔 FVL 和 CVL

可以在英特尔 FVL 和 CVL 上进行查找,然后将 RSS 分发到特定队列。通用设置可以通过

  1. 对于 FVL,从英特尔站点为您的 NIC 识别支持 ​​VXLAN 的 NIC 固件。
  2. 使用带有固件的 nvmupdate 工具 flash FVL 并重新启动机器。
  3. 使用 DPDK 应用程序(例如:testpmd)创建 5 个 rxqueues
  4. 将流规则设置为IF traffic is tunneled with VXLAN, then use action 1) RSS for inner IP on Q1 to Q4 action 2) Decap the Tunnel header

请参阅样本测试了解更多详情。

注意:我强烈建议打开 DPDK 供应商特定问题,详细介绍示例程序、遵循的步骤和面临的问题。


推荐阅读