Не знаете, как настроить и использовать dpdk-pktgen с включенным RSS

Я нахожусь в процессе покупки карты 25Gbe и оцениваю эту карту в настоящий момент, и мне кажется, что я не могу заставить ее получать поток 25G с 64-байтовым трафиком UDP или TCP-пакетами. Получение тяжелых отбрасываний пакетов, когда dpdk-pktgen заявляет, что он использует столько ядер, сколько я настроил. Сложнее всего выяснить, почему пакеты поступают в MAC, но отбрасываются, когда достигают самого физического уровня. Это заставляет меня думать, что рассредоточение приема пакетов обрабатывается некорректно. Это заставляет меня поверить, что RSS не работает с устройством под dpdk. IRQ рассредоточены между ядрами, используемыми в системе, которые были изолированы, чтобы ядро ​​не распределяло задачи поверх них, и вся необходимая настройка, похоже, утверждает, что это было сделано, и все должно продвигаться, но не могу преодолеть это препятствие.

Выполните команду для инициализации dpdk-pktgen:

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

Я прочитал документацию, предоставленную DPDK RSS, но не смогли увидеть никаких изменений. Я изменил фактический драйвер, содержащийся в исходном коде dpdk "$ RTE_SDK / drivers / net / mlx5 / mlx5-rss.c" и добавил в предложенный ключ, я также изменил файл pktgen-port-cfg.c с теми же инструкциями, изменяя приведенный ниже фрагмент кода

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,
    }, };

Изменение rx_adv_conf для отражения ключа, который я хочу использовать, т.е.

.rx_adv_conf = {
            .rss_conf = {
                    .rss_key = "65da65da65da65da65da65da65da65da65da65da",
                    .rss_key_len = 40,
                    .rss_hf = ETH_RSS_IP,
            },
    },

Дело в том, что в документации, кажется, утверждается, что пока установлен параметр rss_hf, он будет использовать RSS, внутренне определенный, если не указано явно. И должно ли это быть, есть ли способ проверить скорость приема на каждый звонок в pktgen, ethtool или любом другом инструменте?


person L.P.    schedule 02.02.2017    source источник


Ответы (1)


ETH_RSS_IP означает, что мы хэшируем потоки, используя исходный и целевой IP. Таким образом, чтобы использовать RSS, генерируемые вами пакеты должны иметь разные IP-адреса источника / назначения.

person Andriy Berestovskyy    schedule 05.05.2017