Hash DPDK-RSS卸载(散列计算):ETH_RSS_IPV6_EX-解释

Hash DPDK-RSS卸载(散列计算):ETH_RSS_IPV6_EX-解释,hash,rss,dpdk,offloading,Hash,Rss,Dpdk,Offloading,因此,我目前正在了解如何在DPDK(数据平面开发工具包)中接收侧缩放(RSS)卸载工作。基本上,根据我的理解,根据您选择的卸载,它会计算一个散列值,并使用该散列值将您要处理的数据包放在一个特定的队列上,该队列绑定到一个特定的CPU核心 因此,我有两个问题: 当我使用**ETH\u RSS\u IPV6\u EX**的RSS卸载时,我无法获得 非零的散列值,表示考虑数据包 根据所选RSS卸载无效,即使我的 Mellanox卡支持此卸载。我已经发送了下面的Scapy数据包,但哈希值仍然是0:sen

因此,我目前正在了解如何在DPDK(数据平面开发工具包)中接收侧缩放(RSS)卸载工作。基本上,根据我的理解,根据您选择的卸载,它会计算一个散列值,并使用该散列值将您要处理的数据包放在一个特定的队列上,该队列绑定到一个特定的CPU核心

因此,我有两个问题:

  • 当我使用
    **ETH\u RSS\u IPV6\u EX**
    的RSS卸载时,我无法获得 非零的散列值,表示考虑数据包 根据所选RSS卸载无效,即使我的 Mellanox卡支持此卸载。我已经发送了下面的Scapy数据包,但哈希值仍然是0:
    sendp(以太(dst=“AA:AA:BB:BB:CC:DD”)/IPv6(dst=“a:a:a:a:a:a:b”,src=“a:a:a:a:a:c”,nh=60)/IPv6ExtHdrDestOpt(nh=43,options=HAO(hoa:a:a:a:a:a:a:a:d”)/ipv6exthdrouting(nh=59,type=2,地址=“a:a:a:a:a:a:f0e=”ENS01>。
    (我从哪个数据包上获得了这个资源,但我相信这些RSS卸载和DPDK卸载之间可能有区别。)这个术语在RSS卸载中的含义是什么

  • 除此之外,有人能给我指一个资源来解释这个问题吗 RSS卸载,一次一个,位于DPDK内部,其中一些是 以下内容(如果您了解这些内容,提供一个笑话也会很有帮助):


    #定义ETH_RSS_IPV4(1所有如评论中所述,
    ETH_RSS_IPV6_EX
    是一个通用的占位符。并非所有驱动程序都支持相同的占位符。因此,根据PMD,将支持驱动程序和固件
    扩展功能,如基于SRC-IP/DST-IP或部分字段的RSS。如果IPV6中有TCP,将使用示例
    ETH_RSS_IPV6_TCP
    如果TCP是扩展头,则将使用ETH\u RSS\u IPV6\u TCP\u EX


    注意:igb和ixgbe支持
    \u EX
    ,而i40e不支持,请检查.DPDK。因此,不要期望每个NIC都为RSS设置相同的功能。好的,所以我联系了Mellanox支持人员,他们回答说,他们已经与DPDK专家进行了检查,并报告说他们不支持的RSS中的IPv6扩展头支持floads,因此,当使用
    IPV6\u EX
    RSS卸载时,计算零散列的原因

    我问Mellanox的问题是关于ConnectX-5和ConnectX-6的


    感谢@Vipin的支持。

    分享您用于启用RSS的1.代码片段。2.DPDK版本,3.NIC正在使用中4.固件正在使用中。注意:我不再标记此问题
    需要改进-缺少详细信息
    。请尽早编辑。谢谢@VipinVarghese,我已经添加了详细信息。感谢详细信息。由于我没有相同的NIC,您能告诉我
    rss_hf=ETH_rss_IP
    的结果吗?注意:
    ETH_rss_IP
    ETH_rss_IPV6_EX
    的超集,我用
    ETH_rss_IP
    尝试了它,上面的数据包(原始帖子中的scapy数据包)为它计算一个哈希(哈希=0xc0f46555c)。因为它也包括IPv6,我相信它只是根据它来计算哈希。如果可能的话,你可以使用
    ETH_RSS_IPv6_EX
    ,看看scapy packet实际为它计算的哈希是什么。嗯@ameersman,如果你说
    ETH_RSS_IPv6
    ETH_RSS_IPv6_EX
    ,它可能意味着两件事。1)mxl5可能存在真正的问题(可能性不大)2)
    ETH_RSS_IPV6_EX
    预计将与
    ETH_RSS_IPV6
    一起使用,因为您发送的数据包不是tcp、udp或sctp。用于RSS计算。我希望您理解第二种情况,RSS数据包中需要显示的位置和内容。如果没有给出解释,我将等待您的答案。@Ameersman,您是否跨越了第二种情况答案中的e链接与测试中的NIC卡。如果您认为这是正确答案,请接受并投票。实际上,我仍然怀疑不支持
    IPV6\u EX
    卸载,因为它存在于mlx5\u flow.h中,并且在使用其合法RSS卸载类型执行和操作时也会生成正确的输出。不确定@AmeerUsman是什么意思?在您的评论中提到的
    Intel i350
    与Link shared中提到的相同。对于MXL5,您需要与供应商或供应商数据表核实该功能是否受支持。然后交叉检查给定版本的DPDK PMD是否受支持。根据qu的要求estion,关于RSS IPV6_EX的信息是共享的。问题不在于MXL5支持或我认为这是可以接受的。我还想问一下,您是否曾经遇到过任何描述原始帖子第二点中提到的卸载功能的文档。感谢您确认我对
    ETH_RSS_I的理解PV6_EX
    只是一个通用的占位符。它取决于PMD和硬件功能是否支持相同的占位符。
    #define ETH_RSS_IPV4               (1ULL << 2)
    #define ETH_RSS_FRAG_IPV4          (1ULL << 3)
    #define ETH_RSS_NONFRAG_IPV4_TCP   (1ULL << 4)
    #define ETH_RSS_NONFRAG_IPV4_UDP   (1ULL << 5)
    #define ETH_RSS_NONFRAG_IPV4_SCTP  (1ULL << 6)
    #define ETH_RSS_NONFRAG_IPV4_OTHER (1ULL << 7)
    #define ETH_RSS_IPV6               (1ULL << 8)
    #define ETH_RSS_FRAG_IPV6          (1ULL << 9)
    #define ETH_RSS_NONFRAG_IPV6_TCP   (1ULL << 10)
    #define ETH_RSS_NONFRAG_IPV6_UDP   (1ULL << 11)
    #define ETH_RSS_NONFRAG_IPV6_SCTP  (1ULL << 12)
    #define ETH_RSS_NONFRAG_IPV6_OTHER (1ULL << 13)
    #define ETH_RSS_L2_PAYLOAD         (1ULL << 14)
    #define ETH_RSS_IPV6_EX            (1ULL << 15)
    #define ETH_RSS_IPV6_TCP_EX        (1ULL << 16)
    #define ETH_RSS_IPV6_UDP_EX        (1ULL << 17)