pktgen / Pktgen-DPDK

DPDK based packet generator
Other
359 stars 110 forks source link

Unable to run dpdk pktgen using virtio pmd driver #267

Open ekatamil opened 1 week ago

ekatamil commented 1 week ago

Hi Team,

We are trying to run dpdk pktgen as packet generator for my packet reordering application. We are using vhost and virtio dpdk pmd driver on our packet_ordering application and dpdk pktgen application respectively. Although our packet_ordering application runs successfully with vhost driver, dpdk pktgen is not able to recognize virtio pmd driver and it fails with following error

================== Pktgen =========================

./usr/local/bin/pktgen -l 9-11 -n 4 --log-level 8 --no-pci --socket-mem 1024 --proc-type auto --file-prefix pktgen --vdev 'net_virtio_user0,mac=00:00:00:00:00:01,path=/tmp/vhost-user1.sock' -- -m "[10:11].0"

Copyright(c) <2010-2023>, Intel Corporation. All rights reserved. Pktgen created by: Keith Wiles -- >>> Powered by DPDK <<<

EAL: Detected CPU lcores: 12 EAL: Detected NUMA nodes: 1 EAL: Detected shared linkage of DPDK EAL: failed to parse device "net_virtio_user0" EAL: Unable to parse device 'net_virtio_user0,mac=00:00:00:00:00:01,path=/tmp/vhost-user1.sock'

=================Packet Ordering ========================== [root@lpt-C0JZ314 packet_ordering]# ./build/packet_ordering -l 6-8 -n 4 --socket-mem 1024 --proc-type auto --file-prefix po --vdev 'net_vhost0,iface=/tmp/vhost-user1.sock' -- -p 0x1 EAL: Detected CPU lcores: 12 EAL: Detected NUMA nodes: 1 EAL: Auto-detected process type: PRIMARY EAL: Detected static linkage of DPDK EAL: Multi-process socket /var/run/dpdk/po/mp_socket EAL: Selected IOVA mode 'PA' EAL: VFIO support initialized TELEMETRY: No legacy callbacks, legacy socket not created Initializing port 0... done VHOST_CONFIG: (/tmp/vhost-user1.sock) vhost-user server: socket created, fd: 23 VHOST_CONFIG: (/tmp/vhost-user1.sock) Setting max queue pairs to 1 VHOST_CONFIG: (/tmp/vhost-user1.sock) binding succeeded Port 0 MAC: 56 48 4f 53 54 00 REORDERAPP: worker_thread() started on lcore 7 REORDERAPP: rx_thread() started on lcore 6 REORDERAPP: send_thread() started on lcore 8

[root@lpt-C0JZ314 Pktgen-DPDK]# ls /tmp/vhost-user1.sock -lh srwxr-xr-x 1 root root 0 Jun 26 13:07 /tmp/vhost-user1.sock

Why is dpdk pktgen is built with shared libraries while in meson.build file we have set default_library as static ? [root@lpt-C0JZ314 Pktgen-DPDK]# ldd usr/local/bin/pktgen linux-vdso.so.1 (0x00007ffecd5eb000) librte_timer.so.24 => /root/dpdk_libs/lib64/librte_timer.so.24 (0x00007fd52194e000) librte_ethdev.so.24 => /root/dpdk_libs/lib64/librte_ethdev.so.24 (0x00007fd52162c000) librte_net.so.24 => /root/dpdk_libs/lib64/librte_net.so.24 (0x00007fd521424000) librte_mbuf.so.24 => /root/dpdk_libs/lib64/librte_mbuf.so.24 (0x00007fd521218000) librte_mempool.so.24 => /root/dpdk_libs/lib64/librte_mempool.so.24 (0x00007fd52100d000) librte_eal.so.24 => /root/dpdk_libs/lib64/librte_eal.so.24 (0x00007fd520cff000) librte_log.so.24 => /root/dpdk_libs/lib64/librte_log.so.24 (0x00007fd520afa000) libbsd.so.0 => /lib64/libbsd.so.0 (0x00007fd5208e6000) libpcap.so.1 => /lib64/libpcap.so.1 (0x00007fd52069b000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fd520497000) libm.so.6 => /lib64/libm.so.6 (0x00007fd520115000) librte_net_bond.so.24 => /root/dpdk_libs/lib64/librte_net_bond.so.24 (0x00007fd51fef5000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd51fcd5000) libc.so.6 => /lib64/libc.so.6 (0x00007fd51f8ff000) /lib64/ld-linux-x86-64.so.2 (0x00007fd521b53000) libnuma.so.1 => /lib64/libnuma.so.1 (0x00007fd51f6f3000) librte_kvargs.so.24 => /root/dpdk_libs/lib64/librte_kvargs.so.24 (0x00007fd51f4f0000) librte_telemetry.so.24 => /root/dpdk_libs/lib64/librte_telemetry.so.24 (0x00007fd51f2e6000) librte_ring.so.24 => /root/dpdk_libs/lib64/librte_ring.so.24 (0x00007fd51f0e2000) librte_meter.so.24 => /root/dpdk_libs/lib64/librte_meter.so.24 (0x00007fd51eedf000) libmd.so.0 => /lib64/libmd.so.0 (0x00007fd51ecd0000) libibverbs.so.1 => /lib64/libibverbs.so.1 (0x00007fd51eab0000) librte_bus_pci.so.24 => /root/dpdk_libs/lib64/librte_bus_pci.so.24 (0x00007fd51e8a2000) librte_pci.so.24 => /root/dpdk_libs/lib64/librte_pci.so.24 (0x00007fd51e6a0000) librte_bus_vdev.so.24 => /root/dpdk_libs/lib64/librte_bus_vdev.so.24 (0x00007fd51e49b000) librte_sched.so.24 => /root/dpdk_libs/lib64/librte_sched.so.24 (0x00007fd51e288000) librte_ip_frag.so.24 => /root/dpdk_libs/lib64/librte_ip_frag.so.24 (0x00007fd51e07e000) librte_hash.so.24 => /root/dpdk_libs/lib64/librte_hash.so.24 (0x00007fd51de62000) librte_rcu.so.24 => /root/dpdk_libs/lib64/librte_rcu.so.24 (0x00007fd51dc5d000) libnl-route-3.so.200 => /lib64/libnl-route-3.so.200 (0x00007fd51d9cb000) libnl-3.so.200 => /lib64/libnl-3.so.200 (0x00007fd51d7a8000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd51d590000)

Expectation
Pktgen application to come up using virtio dpdk pmd driver and should be able to generate traffic.

DPDK Version : v23.11 PKTGEN Version: pktgen-24.03.0

Thanks, Ekambaram A

KeithWiles commented 1 week ago

It appears DPDK is not able to parse the --vdev line EAL: Unable to parse device 'net_virtio_user0,mac=00:00:00:00:00:01,path=/tmp/vhost-user1.sock'

This is not a pktgen problem and I have not use --vdev option a lot. Maybe mac address setting is not correct??

As for pktgen linking to DPDK using dynamic libs I do not know.