【问题标题】:How to set up RSS hash fuction in XL710 to receive IPv4 flow type?XL710如何设置RSS哈希函数接收IPv4流类型?
【发布时间】:2017-02-20 10:58:03
【问题描述】:

在 DPKD 中,对于 XL710 Intel NIC,ETH_RSS_IPV4 数据流默认不激活。因此,当您想在 lcore 之间分发数据包时,您必须选择 XL710 支持的其他 IPv4 数据流,即ETH_RSS_FRAG_IPV4ETH_RSS_NONFRAG_IPV4_TCPETH_RSS_NONFRAG_IPV4_UDPETH_RSS_NONFRAG_IPV4_SCTPETH_RSS_NONFRAG_IPV4_OTHER。但是,当您处理分段的 IP 数据包时,您将面临一个愚蠢的问题。如果您选择使用ETH_RSS_FRAG_IPV4ETH_RSS_NONFRAG_IPV4_TCP 选项,则连接的一些碎片数据包将落入另一个队列,因为它们没有L4 端口号。如果您排除ETH_RSS_NONFRAG_IPV4_TCP 函数,则ETH_RSS_FRAG_IPV4 散列函数将不会应用于非分段数据包,这些数据包将进入队列0。所有其他散列函数组合将不起作用。那么,我们应该怎么做呢?

【问题讨论】:

标签: nic dpdk


【解决方案1】:

XL710 的行为与 DPDK 中的约定不兼容。因此,您必须直接使用 i40e 驱动程序提供的 API 才能为 ETH_RSS_IPV4 设置 RSS。如英特尔® 以太网控制器 710 系列规范更新,第 18 页(2017 年 1 月发布)中所述:

需要对 IPv4 数据包进行散列 (RSS) 过滤器的功能应该 在 PFQF_HENA / VFQF_HENA 中设置所有 IPv4 PCTYPEs (PCTYPEs 31, 33…36)

英特尔® 以太网控制器 710 系列数据表第 597 和 598 页(2017 年 1 月发布)中提到了支持的数据包类型 (PCTYPE)。您可以看到没有为 IPv4 定义数据包类型。

但是有一个解决方案。线索是为所有需要的流类型(或数据包类型)修改输入集。让我们用DPDK在app文件夹中提供的testpmd工具试试吧。编译 DPDK 和应用程序后,运行 testpmd 应用程序:

./app/test-pmd/testpmd -c ff -n 2 -w 0a:00.0 -w 0a:00.1 -- -i --rxq=4 --txq=4

我们的系统中有两个 XL710。使用以下命令,您可以将 XL710 配置为您希望支持 IPv4 数据流的行为。

port config all rss all
set_hash_input_set 0 ipv4-tcp src-ipv4 select
set_hash_input_set 0 ipv4-tcp dst-ipv4 add
set_hash_input_set 0 ipv4-udp src-ipv4 select
set_hash_input_set 0 ipv4-udp dst-ipv4 add
set_hash_input_set 1 ipv4-tcp src-ipv4 select
set_hash_input_set 1 ipv4-tcp dst-ipv4 add
set_hash_input_set 1 ipv4-udp src-ipv4 select
set_hash_input_set 1 ipv4-udp dst-ipv4 add
set_hash_global_config 0 default ipv4-frag enable
set_hash_global_config 0 default ipv4-tcp enable
set_hash_global_config 0 default ipv4-udp enable
set_hash_global_config 1 default ipv4-frag enable
set_hash_global_config 1 default ipv4-tcp enable
set_hash_global_config 1 default ipv4-udp enable

它通过删除 L4 端口部分为 TCP 和 UDP 流类型选择正确的输入集。 set_hash_global_config 命令在需要时启用对称哈希。通过修改 TCP 输入集,它的行为就像 Frag IPv4 流类型,因此属于同一连接的所有数据包都进入同一个 lcore。

请注意,Frag IPv4NonFIPv4, Other 的默认输入集是 IP4-S 和 IP4-D。所以不需要修改。请记住修改所有其他 IPv4 流输入集和它们的对称质量。

您可以通过查看 testpmd 应用程序的源代码找到这些命令的 API 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2011-09-19
    • 2021-02-05
    • 1970-01-01
    • 2016-11-27
    • 2016-04-06
    相关资源
    最近更新 更多