Как включить RSS на ETH_RSS_VXLAN или ETH_RSS_GENEVE для приложения DPDK?

#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 на основе беседы с комментариями]

  1. карта сетевой карты, которую я использую, не поддерживает ETH_RSS_VXLAN или другие туннельные RSS-выгрузки, я не могу ее протестировать.
  2. Я не использую 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 (с различной степенью);

  1. NXP Qede
  2. марвелл тандеркс
  3. Intel FVL и CVL

на Intel можно выполнить поиск по FVL и CVL с последующим распределением RSS по определенным очередям. общую настройку можно выполнить с помощью

  1. для FVL определите встроенное ПО сетевой карты, которое поддерживает VXLAN с сайта Intel для вашей сетевой карты.
  2. с помощью инструмента nvmupdate прошейте FVL с прошивкой и перезагрузите компьютер.
  3. С помощью приложения DPDK (пример: testpmd) создайте 5 запросов rx
  4. установите правило потока как 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, с подробной информацией о примере программы, выполненных шагах и возникших проблемах.