Ошибка «Несовместимая версия оборудования» при запуске DPDK в VMWare с интерфейсом VMXNET3 - PullRequest
0 голосов
/ 27 сентября 2018

Мы пытаемся запустить примеры приложений DPDK на гостевой машине с Centos 7.5.Хост ESXi версии 6.5.

Я собираю dpdk на гостевой машине, на которой пытаюсь его запустить.Я пробовал обе версии DPDK 18.05 и 18.08.

Мы создали пять интерфейсов на esxi для подключения к нашему гостю.Один порт управления и четыре порта данных.Мы привязываем эти четыре порта данных к DPDK.Все порты являются интерфейсами VMXNET3.Они в основном настроены как интерфейсы VMXNET3 в [https://doc.dpdk.org/guides/nics/vmxnet3.html],, используя vswitch для подключения к физическому интерфейсу.Однако обратите внимание, что у нас нет никаких интерфейсов VF, как показано в этом документе, только интерфейсы VMXNET3.К сожалению, этот документ не показывает никаких подробностей о том, как выполнить настройку.

Этот документ от vmware также показывает очень похожую настройку.Но опять же нет подробностей о том, как настроить.

По сути, мы сталкиваемся с препятствием на пути инициализации интерфейсов VMXNET3 при запуске примера приложения DPDK.Вот что мы видим:

[root@rg-vm ~]# ./dpdk-18.08/examples/packet_ordering/build/packet_ordering -c 0x0e0 -- -p 0xf
EAL: Detected 24 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Probing VFIO support...
EAL: PCI device 0000:04:00.0 on NUMA socket -1
EAL:   Invalid NUMA socket, default to 0
EAL:   probe driver: 15ad:7b0 net_vmxnet3
eth_vmxnet3_dev_init(): Incompatible hardware version: 0
EAL: Requested device 0000:04:00.0 cannot be used

Мы видим это для всех четырех интерфейсов, которые мы пытаемся связать с DPDK.Однако, как ни странно, иногда после перезагрузки первые два интерфейса инициализируются правильно.Но после этой первой попытки все четыре интерфейса не работают одинаково.

Вот команды, которые мы используем для настройки DPDK.

modprobe uio
insmod ./dpdk-18.08/build/build/kernel/linux/igb_uio/igb_uio.ko
./dpdk-18.08/usertools/dpdk-devbind.py --bind=igb_uio 04:00.0
./dpdk-18.08/usertools/dpdk-devbind.py --bind=igb_uio 0c:00.0
./dpdk-18.08/usertools/dpdk-devbind.py --bind=igb_uio 13:00.0
./dpdk-18.08/usertools/dpdk-devbind.py --bind=igb_uio 1b:00.0

Обратите внимание, что мы также пытались использоватьuio_pci_generic с теми же результатами.Нам не удалось связать драйвер vfio-pci с интерфейсами VMXNET3.

Я не уверен, что это имеет значение, но физические интерфейсы на другой стороне vswitch, к которому мы подключаемсяявляются: 17: 00.0 Контроллер Ethernet: Intel Corporation I350 Gigabit Fiber Network Connection (версия 01)

Мы также пытались использовать карты Ethernet на основе чипсета Intel 82576 (это набор микросхем DPDK, используемый в ихдокументация) и один на базе Intel X710.Мы видим ту же ошибку при использовании любой из этих карт, как и с i350.Поэтому я считаю, что это устраняет аппаратное обеспечение Ethernet, что имеет смысл, поскольку использование vswitch между нами и контроллером Ethernet должно сделать нас независимыми от того, что это на самом деле.

Мы работаем на Dell R540.Также обратите внимание, что когда мы запускаем Centos 7.5 с DPDK на этом оборудовании без VMWare, все работает нормально.Кроме того, если мы запускаем в VMWare, но «пропускаем» интерфейсы i350 с виртуальной машиной (вместо использования vswitch и vmxnet), в этом случае все также работает нормально.

Я попытался обновить ядро ​​(3.10) досамое последнее (4.18), но все равно появляется та же ошибка.

Если я пытаюсь прочитать регистр версий (VRRS) (тот, который вызывает эту ошибку) в регистрах pci bar vmxnet3 (до того, как я подключусь к DPDK)используя ethtool, выглядит нормально (0xf).Я много гуглил, но не могу найти много помощи в этом.Вполне возможно, проблема заключается в том, как я настраиваю вещи, но я не могу найти какую-либо информацию, которая подробно описывает, как это сделать.

Любая помощь будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 01 октября 2018

Попробуйте выполнить следующие действия:

  1. cd /etc/default
  2. vi grub
  3. Редактировать GRUB-CMDLINE и добавить «нопку»

    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet nopku transparent_hugepage=never log_buf_len=8M"

  4. Перекомпилируйте grub: sudo grub2-mkconfig -o /boot/grub2/grub.cfg

  5. Перезагрузите виртуальную машину и попробуйте DPDK.
...