Hi:
I want to install suricata with dpdk on a machine other than my compiling environment. I am using dpdk-21.11.5.tar.xz and suricata-7.0.2.tar.gz.
It runs well in my compiling environment, an then I made a tar.gz, and install it on another machine, and I get an error:
E: dpdk: Interface “0000:02:02.0”: No such device
dpdk-testpmd can run well:
[root@bogon bin]# ./dpdk-testpmd – --forward-mode=rxonly -i
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode ‘PA’
EAL: No available 1048576 kB hugepages reported
EAL: Probe PCI driver: net_e1000_em (8086:100f) device: 0000:02:02.0 (socket 0)
EAL: Error reading from file descriptor 19: Input/output error
Set rxonly packet forwarding mode
Interactive-mode selected
testpmd: create a new mbuf pool <mb_pool_0>: n=155456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
Warning! port-topology=paired and odd forward ports number, the last port will pair with itself.
Configuring Port 0 (socket 0)
EAL: Error enabling interrupts for fd 19 (Input/output error)
Port 0: 00:0C:29:CE:18:C5
Checking link statuses…
Done
testpmd> start
rxonly packet forwarding - ports=1 - cores=1 - streams=1 - NUMA support enabled, MP allocation mode: native
Logical Core 1 (socket 0) forwards packets on 1 streams:
RX P=0/Q=0 (socket 0) → TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
I believe you’ve pasted ldd output of the machine where you compiled Suricata. Try that on your target machine as well.
Maybe LD_PRELOAD / LD_LIBRARY_PATH bash environment variables could help. You need to be sure that Suricata finds those dynamic libraries.
To do it without these variables you need to configure your system to ensure that it searches the directory where you installed your DPDK.
Possibly something like this:
echo "/home/local/user/dpdk/usr/lib" | sudo tee /etc/ld.so.conf.d/custom_dpdk.conf
sudo ldconfig
Thank you for your help.
I am sure it is the ldd result of my installed machine. The librte_** libraries are in /root/suricata-install//dpdk/lib64 directory, which is my installed path.
The follow if the ldd result of my compiling machine:
I see this as a Suricata-independent problem.
Is it possible that you are running Suricata as a different user than what you are running ldd command with?
Hi @wangliang based on testpmd and suricata results, it is clear the device you are using is net_e1000_em. If suricata is not build with libraries or suricata is using dpdk as shared libraries, you will encounter device not found error
fixes:
check suricata build mechanism add net_e1000_em . (if yes then go to step 2)
check if suricata is using dpdk as shared library (if yes then go to step 3)