Представление переключателя DPDK команды потока testpmd не работают

Мой вопрос связан с вопросом, который я задавал ранее. Пересылать пакеты между сетевыми картами виртуальных функций SR-IOV (VF) В основном я хочу использовать 4 функции SR-IOV Intel 82599ES и направлять трафик между VF по мере необходимости. Настройка примерно такая (не обращайте внимания на X710, сейчас я использую 82599ES)

введите описание изображения здесь

Для простоты тестирования я использую только одну виртуальную машину, на которой запущен warp17, для генерации трафика, отправки его через VF1 и получения обратно из VF3. Поскольку в новых версиях dpdk есть функция переключения, описанная в https://doc.dpdk.org/guides-18.11/prog_guide/switch_presentation.html?highlight=switch, я пытаюсь использовать testpmd для настройки переключения. Но похоже, что test pmd не работает ни с какими командами потока, которые я ввожу. Все, что я получаю, - это плохой аргумент. Например, с этой командой не работает,

flow create 1 ingress pattern / end actions port_id id 3 / end

Моя процедура такая,

  1. Свяжите мой PF (82599ES) с драйвером igb_uio

  2. Создайте 4 VF, используя следующую команду,

    эхо 4 | sudo tee /sys/bus/pci/devices/0000:65:00.0/max_vfs

  3. Привяжите 2 VF к драйверу vfio_pci, используя,

echo 8086 10ed | sudo tee / sys / bus / pci / drivers / vfio-pci / new_id sudo ./usertools/dpdk-devbind.py -b vfio-pci 0000: 65: 10.0 0000: 65: 10.2

  1. Используйте PCI passthough для привязки VF к виртуальной машине и запуска виртуальной машины.

    sudo qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -hda WARP17-disk1.qcow2 -m 6144 \
    

    -display vnc =: 0 -redir tcp: 2222 :: 22
    -net nic, model = e1000 -net user, name = mynet0
    -device pci-assign, romfile =, host = 0000: 65 : 10.0
    -устройство pci-assign, romfile =, host = 0000: 65: 10.2

  2. Запустите testpmd с PF и двумя представителями портов VF

sudo ./testpmd --lcores 1,2 -n 4 -w 65: 00.0, представитель = 0-1 --socket-mem 1024 --socket-mem 1024 - proc-type auto --file-prefix testpmd-pf - -i --port-topology = прикованный

Я что-то делаю не так или это природа testpmd? Моя версия dpdk - 18.11.9


person Anuradha    schedule 21.08.2020    source источник
comment
привет @Anuradha, насколько я понимаю, вы создали 4 VF и передали 2 VF в VM. Внутри виртуальной машины вы запускаете testpmd только с одним VF -w 65:00.0. этот входящий и исходящий трафик. Но, пожалуйста, скажите мне, ожидаете ли вы, что драйвер PF будет переключать пакет FWD или ASIC 82599ES?   -  person Vipin Varghese    schedule 21.08.2020
comment
Мне удобно быть доступным в скайпе, на встрече в Google, чтобы понять и помочь вам.   -  person Vipin Varghese    schedule 21.08.2020
comment
привет @VipinVarghese Я на самом деле запускаю testpmd на своем хосте и использую, надеюсь, представители портов для управления портами VF. Я ожидаю, что мои VF будут входить и исходить трафик. Я ожидаю сделать драйвер PF с dpdk для пересылки трафика между VF. Я думал об использовании openVswitch с dpdk, но я думал, что смогу обойтись с testpmd без особых усилий. Я очень ценю вашу помощь, оказанную в прошлый раз, а также предложение мне помочь со скайпом.   -  person Anuradha    schedule 21.08.2020
comment
В настоящее время меня нет на рабочем месте, поэтому я не могу пользоваться Skype. Я буду использовать скайп в качестве последнего варианта, если не смогу найти решение. Еще раз большое спасибо за вашу помощь! Я очень ценю это!   -  person Anuradha    schedule 21.08.2020
comment
для виртуальной машины на виртуальную машину существуют условия того, как ASIC будет пересылать трафик (82599-datasheet-v3-4.pdf). для общего обзора doc.dpdk.org/guides-1.8/rel_notes/supported_features. html и doc.dpdk.org/ guides / prog_guide /. Итак, простое правило большого пальца: если вы хотите, чтобы vm1 TX переходил к vm2 RX, можете ли вы попробовать установить с MAC-адресом vm2?   -  person Vipin Varghese    schedule 21.08.2020
comment
Кроме того, репрезентатор портов ixge и i40e должен быть выполнен на PF. doc.dpdk.org/guides/nics/i40e.html и doc.dpdk.org/guides/nics/ixgbe.html   -  person Vipin Varghese    schedule 21.08.2020
comment
Спасибо за ответ! На самом деле мне нужно добавить приложение dpdk между TX и RX позже. Если я использую MAC-адрес для пересылки трафика, мне может потребоваться отредактировать мое приложение. Редактирование приложения - не лучший вариант для меня, так как мне нужно протестировать его почти в физической среде. Думаю, мне нужна виртуальная сеть с коммутатором. Итак, если testpmd недостаточно хорош, мне, возможно, придется использовать openvswitch, я думаю?   -  person Anuradha    schedule 21.08.2020
comment
можно сгенерировать пакет с желаемым MAC-адресом?   -  person Vipin Varghese    schedule 21.08.2020
comment
Хорошая мысль, я попробую. Я использую warp17 для генерации трафика.   -  person Anuradha    schedule 21.08.2020
comment
Есть ли какая-то конкретная причина, по которой я не могу создавать потоки в моем PF testpmd?   -  person Anuradha    schedule 21.08.2020
comment
согласно билету, вы запускаете qemu с VF в качестве прохода. Насколько я понимаю, вы не используете PF в dpdk   -  person Vipin Varghese    schedule 21.08.2020
comment
Я запускаю PF с DPDK на моем хост-компьютере, и на нем работает testpmd. VF назначаются виртуальным машинам. Думаю, конфигурация правильная?   -  person Anuradha    schedule 21.08.2020
comment
от DPDK ixgbe (ссылка опубликована ранее) The IXGBE PF PMD supports the creation of VF port representors for the control and monitoring of IXGBE virtual function devices. Each port representor corresponds to a single virtual function of that device. Using the devargs option representor the user can specify which virtual functions to create port representors for on initialization of the PF PMD by passing the VF IDs of the VFs which are required.:. Это точная причина, по которой я запросил встречу по скайпу или Google.   -  person Vipin Varghese    schedule 21.08.2020
comment
@VipinVarghese Большое спасибо за объяснение! Думаю, я серьезно неправильно понял некоторые возможности DPDK и VF. Давайте обязательно проведем видео-сессию.   -  person Anuradha    schedule 21.08.2020
comment
Давайте продолжим это обсуждение в чате.   -  person Anuradha    schedule 21.08.2020


Ответы (1)


обратите внимание, что 82599ES использует ixgbe, а X710 использует i40e PMD. Оба они разные и обладают разными свойствами. Согласно документации, сравнивающей ixgbe PMD (http://doc.dpdk.org/guides/nics/ixgbe.html) и i40e PMD (http://doc.dpdk.org/guides/nics/i40e.html) функциональность директора потока, предназначенная для входящих пакетов (пакетов, полученных из внешнего порта в ASIC). Функция Floating VEB - это функция, которую вам нужно использовать. Но это присутствует только в X710, а не в 82599ES.

Для включения VEB необходимо использовать -w 84:00.0,enable_floating_veb=1 в X710. Но это ограничивает вашу функциональность, которую вы не сможете получать и отправлять через физический порт.

лучший вариант - использовать 2 * 10Gbps, где dpdk-0 используется wrap7/pktgen/trex, а dpdk-1 используется vm-1/vm-2/vm-3. Самый простой параметр - контролировать соответствие MAC-адреса DST и VF.

настраивать:

  1. создать необходимый vf для порта 0 и порта 1
  2. поделитесь VF с соответствующей виртуальной машиной.
  3. привязать порты dpdk vf к igb_uio.
  4. от порта 0 генератора трафика в соответствующем MAC-адресе VF.

[P.S.] это информация, которую мы обсуждали по скайпу.

person Vipin Varghese    schedule 25.08.2020
comment
Большое спасибо! Это действительно отличное объяснение. Я иду по пути, который вы мне указали. Скоро опубликую свои выводы. - person Anuradha; 25.08.2020