hash - 如何在 ETH_RSS_VXLAN 或 ETH_RSS_GENEVE 上为 DPDK 应用程序启用 RSS?
问题描述
我试图找出在使用隧道 RSS 哈希卸载时用于计算 RSS 哈希的参数是什么,例如ETH_RSS_VXLAN或ETH_RSS_GENEVE。目标是基于 VNI 而不是 DPDK 中的外部 IP 或 UDP 端口号分配传入的 VXLAN 流量。
- DPDK 版本:20.11.1
- 网卡:Mellanox ConnectX-5,固件版本 16.30.1004
我一直在使用内部 IP 字段来测试不同的 RSS 哈希值来计算哈希值。设置完成的设置:L3FWD 应用程序内的 RSS 设置
[基于评论对话的EDIT-1]
- 我使用的 NIC 卡不支持ETH_RSS_VXLAN或其他隧道 RSS 卸载,我无法对其进行测试。
- 我没有使用 RTE_FLOW,因为我使用的是示例 l3fwd 示例应用程序。
解决方案
根据 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(不同程度);
- 恩智浦奇德
- 漫威雷克斯
- 英特尔 FVL 和 CVL
可以在英特尔 FVL 和 CVL 上进行查找,然后将 RSS 分发到特定队列。通用设置可以通过
- 对于 FVL,从英特尔站点为您的 NIC 识别支持 VXLAN 的 NIC 固件。
- 使用带有固件的 nvmupdate 工具 flash FVL 并重新启动机器。
- 使用 DPDK 应用程序(例如:testpmd)创建 5 个 rxqueues
- 将流规则设置为
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 供应商特定问题,详细介绍示例程序、遵循的步骤和面临的问题。
推荐阅读
- cluster-computing - rsh 无法访问集群节点
- android - 在应用程序中下载后如何安装apk,或弹出请求安装?
- deep-learning - 为什么 CNN 通常有一个词干?
- python - Python,滚动百分位数的快速计算
- angular - Asp .Net & Angular 11 - SignalR 404 错误
- sql - 试图从 SQL 数据库显示上个月的数据 - where 子句
- mysql - MySql:这些记录的总和为 9 的所有记录的组合
- python - 在 python 类中使用 sqlalchemy 1.4/2.0 包装原子查询执行的最有效但最强大的方法是什么?
- python - 如何在熊猫中使用fillna函数?
- javascript - 将 ng-repeat 变量传递给 javascript 函数