MLNX_OFED has transitioned into DOCA-Host, and now is available as DOCA-OFED profile…

Dear community,
as it seems the new driver supported will / has already move from MLNX_OFED to DOCA-OFED for the newer OSs and Connect-X 6 and “smart” (BF2,3,etc.)*

Note: MLNX_OFED has transitioned into DOCA-Host, and now is available as DOCA-OFED profile (learn about DOCA-Host profiles here).
MLNX_OFED last standalone release is October 2024 Long Term Support (3 years). Starting January 2025 all new features will only be included in DOCA-OFED. Download DOCA-Host here.”

I am on Ubuntu 24.04 LTS and have the latest DOCA-OFED installed
If we now use the new driver we get missing dependencies like:

dpdk-testpmd
dpdk-testpmd: /lib/x86_64-linux-gnu/libmlx5.so.1: version `MLX5_OFED’ not found (required by dpdk-testpmd)
ll /lib/x86_64-linux-gnu/libmlx5.so.1
lrwxrwxrwx 1 root root 20 Jun 17 10:08 /lib/x86_64-linux-gnu/libmlx5.so.1 → libmlx5.so.1.25.58.0
ll /lib/x86_64-linux-gnu/libmlx5.so.1.25.58.0
-rw-r–r-- 1 root root 553576 Jun 17 10:08 /lib/x86_64-linux-gnu/libmlx5.so.1.25.58.0

an older file contains the mlx5_ofed:
strings /var/lib/docker/overlay2/a6fb527d44be4008ce4c02d34484890a98f71b012c4d3f6f8a72d9423a6bcd21/diff/usr/lib/aarch64-linux-gnu/libmlx5.so.1 | grep -i ofed
MLX5_OFED
vs
new
strings /lib/x86_64-linux-gnu/libmlx5.so.1.25.58.0 | grep -i ofed

When trying to start Suricata with the docal-all profile I get:

EAL: trace_entry_compare():48 found duplicate entry lib.eal.generic.void
EAL: eal_trace_init():84 failed to initialize trace [File exists]
EAL: FATAL: Cannot init trace
EAL: Cannot init trace
Error: dpdk: DPDK EAL initialization error: Operation not permitted [InitEal:runmode-dpdk.c:331]

pkg-config --modversion libdpdk
22.11.2507.1.0
pkg-config  --exists --print-errors libdpdk

or with the doca-ofed profile and DPDK from ubuntu repo(not included in the doca-ofed)´
suricata: error while loading shared libraries: librte_ethdev.so.23: cannot open shared object file: No such file or directory
pkg-config --modversion libdpdk
23.11.4
pkg-config --exists --print-errors libdpdk
Package libmana was not found in the pkg-config search path.
Perhaps you should add the directory containing `libmana.pc’
to the PKG_CONFIG_PATH environment variable
Package ‘libmana’, required by ‘libdpdk’, not found

I’ve also tried with the older MLNX_OFED after completely removing the DOCA-OFED
MLNX_OFED_LINUX-24.10-3.2.5.0-ubuntu24.04-x86_64.tgz
The driver is successfully installed but with the new libs

ldconfig -p | grep librte_ethdev.so
librte_ethdev.so.24 (libc6,x86-64) => /lib/x86_64-linux-gnu/librte_ethdev.so.24
librte_ethdev.so.21 (libc6,x86-64) => /usr/local/lib/x86_64-linux-gnu/librte_ethdev.so.21
librte_ethdev.so (libc6,x86-64) => /usr/local/lib/x86_64-linux-gnu/librte_ethdev.so
librte_ethdev.so (libc6,x86-64) => /lib/x86_64-linux-gnu/librte_ethdev.so

And as it seems we need the older 23 version of libs

ldd /usr/local/bin/suricata --dpdk -vvvv -S /dev/null -c /etc/suricata/suricata.yaml | grep not
librte_ethdev.so.23 => not found
librte_mbuf.so.23 => not found
librte_mempool.so.23 => not found
librte_eal.so.23 => not found

I’ve tried manually sym-linking the 4 above libs to the new versions but then I get:

suricata: /lib/x86_64-linux-gnu/librte_mbuf.so.23: version `DPDK_23' not found (required by suricata)
suricata: /lib/x86_64-linux-gnu/librte_mempool.so.23: version `DPDK_23' not found (required by suricata)
suricata: /lib/x86_64-linux-gnu/librte_eal.so.23: version `DPDK_23' not found (required by suricata)
suricata: /lib/x86_64-linux-gnu/librte_ethdev.so.23: version `DPDK_23' not found (required by suricata)

even if pkg-config --modversion libdpdkshow 23.11.4

Has anyone tested this scenario? or hit this issue?
@lukashino perhaps?

Hey, thanks for posting feedback!

Question:
What is the output of `suricata –build-info` and what is the command line you start Suricata with ?

Thanks

/usr/local/bin/suricata --build-info | grep -i "ndpi\|dpdk"
DPDK support: yes
DPDK Bond PMD: yes
nDPI: yes
CFLAGS -g -O2 -fPIC -DOS_LINUX -std=c11 -march=native -I/opt/mellanox/dpdk/include/dpdk -I/opt/mellanox/dpdk/include/dpdk/../x86_64-linux-gnu/dpdk -include rte_config.h -march=corei7 -I/usr/include/x86_64-linux-gnu -I/usr/include/libnl3 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include

The /opt/mellanox/dpdk/ does not exist (anymore?)

To start, I use:
suricata --dpdk -vvvv -S /dev/null -c /etc/suricata/suricata.yaml
inside the config I have defined my interface PCIe address of the NIC port

Hi Florin,

currently we are still running on MLNX-OFED packages so I haven’t run into this problem yet.

It looks like your installation is corrupted.

How do you install Suricata and DPDK? Do you compile them both from sources, use some pre-built package or do you use containers (I saw some reference in your logs)?

I can try it but in the environment I work in there are RHEL-based distros only.

If you can compile DPDK, that would be my first step.

Edit: I installed it locally (3.1.0) on OL8 but I did not face any issues.