Я не мог сказать из документации, можно ли использовать vdev rx_pcap имитировать RSS с помощью файла pcap, используя несколько ядер.
После прочтения это предложение показалось интересным:
Для простоты использования DPDK EAL также был расширен, чтобы разрешить создание устройств псевдо-Ethernet, использующих один или несколько из этих драйверов, во время запуска приложения во время инициализации EAL.
Для этого в EAL необходимо передать параметр –vdev =. Для этого требуются опции take, позволяющие выделить и прозрачно использовать Ethernet на основе кольца и pcap для приложения. Это можно использовать, например, для тестирования на виртуальной машине, где нет портов Ethernet.
Устройства на основе Pcap можно создавать с помощью параметра виртуального устройства –vdev.
Вот как я читаю один файл PCAP и пишу в другой, используя их пример с приложением dpdk-testpmd:
sudo build/app/dpdk-testpmd -l 0-3 --vdev 'net_pcap0,rx_pcap=file_rx.pcap,tx_pcap=file_tx.pcap' -- --port-topology=chained --no-flush-rx
Это отлично работает, и я получаю сгенерированный файл file_tx.pcap. Но если я попытаюсь установить количество очередей RX на 4, он скажет мне, что я не могу:
$ sudo build/app/dpdk-testpmd -l 0-3 --vdev 'net_pcap0,rx_pcap=file_rx.pcap,tx_pcap=file_tx.pcap' -- --port-topology=chained --no-flush-rx --rxq=4
EAL: Detected 4 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: Invalid NUMA socket, default to 0
EAL: Invalid NUMA socket, default to 0
Fail: input rxq (4) can't be greater than max_rx_queues (1) of port 0
EAL: Error - exiting with code: 1
Cause: rxq 4 invalid - must be >= 0 && <= 1
Можно ли вообще поменять max_rx_queues
на vdev rx_pcap или есть альтернатива лучше?