Для этого нет прямого обходного пути. Однако существует несколько вариантов запуска приложения DPDK без использования физических сетевых карт:
Запуск DPDK внутри виртуальной машины
- Запустите виртуальную машину с таким количеством сетевых карт, сколько вам нужно.
- Внутри виртуальной машины свяжите сетевые карты с UIO.
- Внутри виртуальной машины запустите DPDK, и он должен нормально работать с сетевыми картами внутри виртуальной машины.
Для получения дополнительной информации, пожалуйста, ознакомьтесь с драйвером режима опроса DPDK для эмулируемой сетевой карты Virtio.
Обратите внимание, что эта опция может быть недоступна на ВМ, т. Е. Вы не сможете запустить ВМ внутри ВМ.
Использование виртуального устройства DPDK
- Скомпилируйте DPDK с поддержкой
libpcap
.
- Сконфигурируйте хост для запуска приложения DPDK как обычно (т.е. включите огромные страницы и т.д.).
- Не связывайте никакие сетевые карты с UIO.
- Создайте несколько интерфейсов TUN/TAP, соедините их с помощью физического сетевого адаптера.
Запустите приложение DPDK как обычно, но передайте несколько аргументов --vdev
чтобы создать несколько виртуальных устройств, например:
testpmd -l 0-3 -n 4 \--vdev 'net_pcap0, iface = tun0' --vdev 'net_pcap1, iface = tun1' ...
Для получения дополнительной информации, пожалуйста, взгляните на DPDK libpcap Poll Mode Driver.
Обратите внимание, что эти параметры значительно снизят производительность DPDK из-за использования функциональности ядра Linux и библиотеки pcap.
Использование виртуальных функций NIC:
- Настройте поддержку SR-IOV на хосте.
- Настройте несколько виртуальных функций на сетевом адаптере хоста.
- На хосте привязайте несколько виртуальных функций NIV к
vfio-pci
- На хосте запустите DPDK, и он должен нормально работать с виртуальными функциями сетевого адаптера.
Для общего описания SR-IOV вы можете найти полезный драйвер виртуальной функции DPDK Intel.
Обратите внимание, что эта опция может быть недоступна на виртуальной машине.