IPS Example Application Failure: Argument Handler?


I’m unable to get the DOCA IPS example application running on my Bluefield-2 DPU (NVIDIA SKU: 900-9D206-0063-ST2, DOCA: 2.0.2, BSP: 4.0.2, Firmware: 24.35.2000).

After building the IPS application, compiling the rule file, and setting up the two scalable functions, I receive the following error when attempting to execute the IPS application.

Of note, I am using the command specified from DOCA SDK IPS Application Documentation, but it seems the argument handler fails to parse the input correctly.

Thanks in advance for any assistance.

root@bluefield2DPU:/opt/mellanox/doca/applications/ips/bin# /opt/mellanox/doca/applications/ips/bin/doca_ips -a 0000:03:00.0,class=regex -a auxiliary:mlx5_core.sf.4,sft_en=1 -a auxiliary:mlx5_core.sf.5,sft_en=1 – --cdo ./compiler_output.cdo -p
EAL: Detected CPU lcores: 8
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode ‘PA’
EAL: Probe PCI driver: mlx5_pci (15b3:a2d6) device: 0000:03:00.0 (socket -1)
TELEMETRY: No legacy callbacks, legacy socket not created
[03:57:03:771402][DOCA][ERR][ARGP:803]: Parameter “pci-addr” is mandatory

Usage: doca_ips [DPDK Flags] – [DOCA Flags] [Program Flags]

DOCA Flags:
-h, --help Print a help synopsis
-v, --version Print program version information
-l, --log-level Set the log level for the program <CRITICAL=20, ERROR=30, WARNING=40, INFO=50, DEBUG=60>

Program Flags:
-p, --print-match Prints FID when matched in DPI engine
-n, --netflow <source_id> Collect netflow statistics and set source_id if value is set
-o, --output-csv Path to the output of the CSV file
-c, --cdo Path to CDO file compiled from a valid PDD
-f, --fragmented Enables processing fragmented packets
-a, --pci-addr DOCA DPI device PCI address

[03:57:03:771518][DOCA][ERR][IPS:86]: Failed to parse application input: Invalid input


I was able to resolve the error. I needed to pass the DPU’s PCI address twice as an argument to the DOCA IPS application: once for DPDK and again for the DOCA IPS application (see usage structure below).

I suggest the IPS application documentation mention this in their example command to run the application in case others run into similiar issues.

Usage: doca_ips [DPDK Flags] -- [DOCA Flags] [Program Flags]

Please see below for the final command I used to execute the IPS application.

/opt/mellanox/doca/applications/ips/bin/doca_ips -a 0000:03:00.0,class=regex -a auxiliary:mlx5_core.sf.4,sft_en=1 -a auxiliary:mlx5_core.sf.5,sft_en=1 -- -a 03:00.0 --cdo ./compiler_output.cdo -p