Я пытаюсь создать программу dpdk с несколькими очередями RX, используя RSS для разделения входящего трафика на очереди RX на одном порту. Для этого используются Mellanox ConnectX-5 и DPDK версии 19.11. Он отлично работает, когда я использую в качестве входных данных пакеты IP over Ethernet. Однако, когда пакет содержит IP через MPLS через Ethernet, RSS не работает. В результате все пакеты, принадлежащие разным потокам (с разными src
& dst
IP-адресами, портами) через MPLS, все отправляются в одну и ту же очередь RX.
Мои запросы
- Есть ли в DPDK какие-либо параметры / методы для распределения пакетов MPLS в несколько очередей RX?
- Есть ли способ аппаратно отключить теги MPLS (между Eth и IP), например
hw_vlan_strip
?
Конфигурация моего порта
const struct rte_eth_conf default_port_conf = {
.rxmode = {
.hw_vlan_strip = 0, /* VLAN strip enabled. */
.header_split = 0, /* Header Split disabled. */
.hw_ip_checksum = 0, /* IP checksum offload 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,
},
} };
https://stackoverflow.com/users/1364007/wai-ha-lee, and https://stackoverflow.com/users/2664350/piet-t
, помочь мне понятьreject in question, especially when the question is specifically to POP/STRIP MPLS and then distribute to multiple queues. Question is not about MPLS processing (match MPLS id and take a specific action. but instead, pop MPLS irrespective of value if present. Seems very odd behaviour
, поскольку существует реальная разница между обработкой MPLS и разделением MPLS (поскольку требование заключается не в обработке пакета MPLS, а в извлечении заголовка MPLS). - person Vipin Varghese   schedule 20.01.2021