#hash #dpdk
Вопрос:
Я пытаюсь выяснить, какие параметры используются для вычисления RSS-хэша при использовании туннельных выгрузок RSS-хэша, таких как ETH_RSS_VXLAN или ETH_RSS_GENEVE. Цель состоит в том, чтобы распределять входящий трафик VXLAN на основе VNI, а не внешнего IP-адреса или номера порта UDP в DPDK.
- Версия DPDK: 20.11.1
- Сетевой адаптер: Mellanox ConnectX-5, версия прошивки 16.30.1004
Я тестировал различные RSS-хэши, используя внутренние поля IP для вычисления хэша. Настройки настройки выполнены: Настройка RSS внутри приложения L3FWD
[ПРАВКА-1 на основе беседы с комментариями]
- карта сетевой карты, которую я использую, не поддерживает ETH_RSS_VXLAN или другие туннельные RSS-выгрузки, я не могу ее протестировать.
- Я не использую RTE_FLOW, так как использую пример приложения l3fwd.
Комментарии:
1. пожалуйста, обновите свой билет с помощью сетевой карты, встроенного ПО, фрагмента кода для RSS, и RTE_FLOW используется или нет?
2. Добавлена запрошенная информация.
3. в соответствии с вашим новым обновлением
As the NIC card I am using does not support the ETH_RSS_VXLAN or other tunnel RSS offloads,
. Следовательно, с какой проблемой вы сталкиваетесь?4. поскольку в соответствии с PMD поддержка MLX5_EXPANSION_OUTER_IPV4_UDP, MLX5_EXPANSION_OUTER_IPV6_UDP, MLX5_EXPANSION_VXLAN и MLX5_EXPANSION_VXLAN_GPE поддерживается в RTE_FLOW для encap и decap VxLAN. RSS включен только для ETH_RSS_NONFRAG_IPV6_UDP или ETH_RSS_NONFRAG_IPV6_UDP для внешнего заголовка. doc.dpdk.org/guides/nics/mlx5.html говорит о разгрузках RSS и VxLan с помощью switch, поэтому, если вы используете switch decap VXLAN, вы будете получать пакеты с RSS в очереди rx. Но если намерение состоит в том, чтобы получать пакеты VXLAN с включенным RSS на VNI, я не думаю, что в настоящее время в DPDK 20.11 есть опция
5. Я пытаюсь выяснить, что если бы ETH_RSS_VXLAN использовался на сетевой карте, каково было бы его поведение? Будет ли он использовать VNI? Будет ли он использовать поля внутреннего IP-заголовка или поля внешнего IP-заголовка (в сочетании с ETH_RSS_IP).
Ответ №1:
В соответствии с DPDK 20.11.1 и MLX5 PMD, включение RSS на основе VXLAN через DPDK rte_dev_configure отсутствует. поскольку текущая поддержка PMD MLX5_EXPANSION_OUTER_IPV4_UDP, MLX5_EXPANSION_OUTER_IPV6_UDP, MLX5_EXPANSION_VXLAN и MLX5_EXPANSION_VXLAN_GPE предназначена RTE_FLOW
для encap и decap VxLAN для коммутатора. в то время как DPDK rte_eth_dev_configure
является универсальным API для всех сетевых карт.
Поэтому, если реальное намерение состоит в том, чтобы распространять пакеты на основе ВНУТРЕННЕГО IP-адреса, я настоятельно рекомендую использовать RTE_FLOW, с совпадением потока с номерами портов ВНЕШНЕГО IP и UDP и действием в виде RSS на ВНУТРЕННЕМ IP-адресе и номере порта. Но приложение L3FWD должно быть изменено для того же самого.
Другие сетевые карты, поддерживаемые DPDK, также поддерживают VNI (с различной степенью);
- NXP Qede
- марвелл тандеркс
- Intel FVL и CVL
на Intel можно выполнить поиск по FVL и CVL с последующим распределением RSS по определенным очередям. общую настройку можно выполнить с помощью
- для FVL определите встроенное ПО сетевой карты, которое поддерживает VXLAN с сайта Intel для вашей сетевой карты.
- с помощью инструмента nvmupdate прошейте FVL с прошивкой и перезагрузите компьютер.
- С помощью приложения DPDK (пример: testpmd) создайте 5 запросов rx
- установите правило потока как
IF traffic is tunneled with VXLAN, then use action 1) RSS for inner IP on Q1 to Q4 action 2) Decap the Tunnel header
.
для получения более подробной информации обратитесь к образцу теста.
примечание: Я настоятельно рекомендую открыть вопрос, касающийся конкретного поставщика DPDK, с подробной информацией о примере программы, выполненных шагах и возникших проблемах.