不确定如何在启用RSS的情况下设置和使用dpdk-pktgen

时间:2017-02-02 20:12:28

标签: linux networking dpdk

我正在购买25Gbe卡,并且目前正在评估该卡,我似乎无法接收25G流的64字节UDP或TCP数据包流量。 dpdk-pktgen声称它正在使用我设置的尽可能多的内核,从而导致数据包丢失。最难发现的是数据包进入MAC但是当它们到达物理层本身时被丢弃的原因。这让我相信没有正确处理数据包接收的分散。让我相信在dpdk下,设备没有发生RSS。 IRQ分散在系统中使用的核心之间,这些核心已被分析以防止内核在其上面放置作业,所有需要的调整似乎表明它已经完成,并且事情应该继续进行,但是不能超越这个障碍。

命令运行以初始化dpdk-pktgen:

NN

我阅读了DPDK RSS提供的文档,但未能看到任何更改。我已经改变了dpdk源代码“$ RTE_SDK / drivers / net / mlx5 / mlx5-rss.c”中包含的实际驱动程序,并添加了它建议的密钥,我还操纵了pktgen-port-cfg.c文件使用相同的说明更改下面的代码片段

RTE_SDK=../dpdk_Src/share/dpdk/ sudo -E ./app/build/pktgen -c 0x555555555 -n 8 w 03:00.1 -- -T -m '[2-28:29-33].0' -N -P

更改rx_adv_conf以反映我想要使用的密钥,即

const struct rte_eth_conf default_port_conf = {
    .rxmode = {
            .split_hdr_size = 0,
            .header_split   = 0,    /**< Header Split disabled. */
            .hw_ip_checksum = 0,    /**< IP checksum offload disabled. */
            .hw_vlan_filter = 0,    /**< VLAN filtering enabled. */
            .hw_vlan_strip  = 0,    /**< VLAN strip enabled. */
            .hw_vlan_extend = 0,    /**< Extended VLAN disabled. */
            .jumbo_frame    = 0,    /**< Jumbo Frame Support disabled. */
            .hw_strip_crc   = 0,    /**< CRC stripping by hardware disabled. */
    },
    .rx_adv_conf = {
            .rss_conf = {
                    .rss_key = NULL,
                    .rss_key_len = 0,
                    .rss_hf = ETH_RSS_IP,
            },
    },
    .txmode = {
            .mq_mode = ETH_MQ_TX_NONE,
    }, };

事情是文档似乎表明,只要设置了rss_hf参数,那么它将使用RSS,如果没有明确说明,则在内部定义。如果是这种情况,有没有办法验证pktgen,ethtool或任何其他工具中的每环接收率?

1 个答案:

答案 0 :(得分:0)

ETH_RSS_IP表示我们使用源IP和目标IP散列流。因此,为了利用RSS,您生成的数据包应具有不同的源/目标IP。