在 DPKD 中,ETH_RSS_IPV4默认情况下不会激活 XL710 Intel NIC 的数据流。因此,当您想要在 lcore 之间分发数据包时,您必须选择 XL710 支持的其他 IPv4 数据流,即ETH_RSS_FRAG_IPV4、ETH_RSS_NONFRAG_IPV4_TCP、ETH_RSS_NONFRAG_IPV4_UDP、ETH_RSS_NONFRAG_IPV4_SCTP和ETH_RSS_NONFRAG_IPV4_OTHER。然而,当您处理分段的 IP 数据包时,您将面临一个愚蠢的问题。如果您选择使用ETH_RSS_FRAG_IPV4和ETH_RSS_NONFRAG_IPV4_TCP选项,那么连接的一些碎片数据包将落入另一个队列,因为它们没有 L4 端口号。如果排除ETH_RSS_NONFRAG_IPV4_TCP函数,则ETH_RSS_FRAG_IPV4哈希函数将不会应用于非分段数据包,这些数据包将进入队列 0。哈希函数的所有其他组合将不起作用。那么,我们应该做什么呢?
XL710 的行为与 DPDK 中的约定不兼容。因此,您必须直接使用 i40e 驱动程序提供的 API 才能为 ETH_RSS_IPV4 设置 RSS。如Intel\xc2\xae 以太网控制器 710 系列规格更新中所述第 18 页(2017 年 1 月发布)
\n\n\n\n\n需要对 IPv4 数据包进行哈希 (RSS) 过滤器的函数应设置 PFQF_HENA / VFQF_HENA 中的所有 IPv4 PCTYPE(PCTYPE 31、33\xe2\x80\xa636)
\n
Intel\xc2\xae 以太网控制器 710 系列数据表中提到了支持的数据包类型 (PCTYPE)。您可以看到没有为 IPv4 定义数据包类型。
\n\n不过,有一个解决方案。线索是修改所有所需的流类型(或数据包类型)的输入集。testpmd让我们使用app文件夹中DPDK提供的工具来尝试一下。编译DPDK和应用程序后,运行testpmd应用程序:
./app/test-pmd/testpmd -c ff -n 2 -w 0a:00.0 -w 0a:00.1 -- -i --rxq=4 --txq=4\nRun Code Online (Sandbox Code Playgroud)\n\n我们的系统中有两台 XL710。使用以下命令,您可以将 XL710 配置为支持 IPv4 数据流。
\n\nport config all rss all\nset_hash_input_set 0 ipv4-tcp src-ipv4 select\nset_hash_input_set 0 ipv4-tcp dst-ipv4 add\nset_hash_input_set 0 ipv4-udp src-ipv4 select\nset_hash_input_set 0 ipv4-udp dst-ipv4 add\nset_hash_input_set 1 ipv4-tcp src-ipv4 select\nset_hash_input_set 1 ipv4-tcp dst-ipv4 add\nset_hash_input_set 1 ipv4-udp src-ipv4 select\nset_hash_input_set 1 ipv4-udp dst-ipv4 add\nset_hash_global_config 0 default ipv4-frag enable\nset_hash_global_config 0 default ipv4-tcp enable\nset_hash_global_config 0 default ipv4-udp enable\nset_hash_global_config 1 default ipv4-frag enable\nset_hash_global_config 1 default ipv4-tcp enable\nset_hash_global_config 1 default ipv4-udp enable\nRun Code Online (Sandbox Code Playgroud)\n\n它通过删除 L4 端口部分来为 TCP 和 UDP 流类型选择正确的输入集。set_hash_global_config如果需要,该命令将启用对称哈希。通过修改 TCP 输入集,它的行为就像Frag IPv4流类型一样,因此属于同一连接的所有数据包都会进入同一 lcore。
请注意,默认输入设置为Frag IPv4和NonFIPv4、Other是 IP4-S 和 IP4-D。所以不需要修改。请记住修改所有其他 IPv4 流输入集及其对称质量。
\n\n您可以通过查看 testpmd 应用程序的源代码找到这些命令的 API 函数。
\n| 归档时间: |
|
| 查看次数: |
5260 次 |
| 最近记录: |