DOCA Documentation v3.3.0

Loading DPL Applications

NVIDIA DPL programs are deployed to the NVIDIA® BlueField® networking platform (DPU or SuperNIC) using the P4Runtime API. This allows platform-independent, standards-based integration with SDN controllers.

The DPL compiler generates a pipeline binary optimized for execution on BlueField. Pipeline loading and control—such as installing the program and populating P4 tables—are handled via the P4Runtime API, an open and well-defined interface.

The P4Runtime server, running on the BlueField device, enables a P4 Controller to:

  • Connect over gRPC

  • Set the ForwardingPipelineConfig (i.e., install the compiled DPL binary and p4info)

  • Query the device for its current pipeline config and table state

  • Maintain runtime P4 tables as defined in the DPL source

This model enables integration with open-source, proprietary, or custom-built controllers in a standardized way.

Before loading a DPL application, ensure the following services and components are properly set up:

A DPL application can be loaded using:

In the following example, we'll be using the P4Runtime controller bundled within the DPL Development Container.

Using p4runtime_sh Script

./p4runtime_sh.sh help

Copy
Copied!
            

usage: dpl p4runtime_sh [--help] [--grpc-addr <dpl_rtd_ip:port>] [--device-id <device ID>] [--config program.p4info.txt,program.dplconfig]

Arguments:

  • --help - Show all the command line arguments.

  • --config - A list of the DPL program compilation output for P4info and dplconfig (Compiling DPL Applications).

  • --grpc-addr - Address of the DPL Runtime daemon and the P4Runtime port as specified in the DPL Runtime DPL Service Configuration.

  • --device-id – ID of the target device

Info

To configure the dpl command see DPL Installation Guide (Configuring Launch Scripts). The docker image used can be changed by setting the environment variable $DPL_DEV_IMAGE.

The examples below assumes that everything was pre-configured using the dpl-dev install procedure.

Example Command

Copy
Copied!
            

dpl p4runtime_sh --grpc-addr 192.168.100.2:9559 --device-id 1000 --config hello_packet.p4info.txt,hello_packet.dplconfig

p4runtime_sh python application

After successfully loading a program, the script launches an interactive Python shell (p4runtime_sh python application) connected to the P4Runtime server on the dpl-rt-service running on the DPU.

From here, you can inspect and manage tables entries using this tool. For more details about using the p4runtime_sh application see:

DPL table entries are added via a P4Runtime controller, which may run remotely or locally on the device.

  • The standard gRPC-based controller model supports ~50K rule insertions per second

Loading a program might fail when the dpl-rt-service processes the compiled program due to various reasons (mostly configuration issues), in such cases, you might see error message like:

Program load failure example

Copy
Copied!
            

# dpl p4runtime_sh --device-id 1000 --config p.p4info.txt,p.dplconfig CRITICAL:root:Error when setting config CRITICAL:root:P4Runtime RPC error (INVALID_ARGUMENT): Error setting program: Failed creating P4 tables

Refer to the following for common troubleshooting issues:

Checkpoint

Guidance/Command

Inspect the dpl-rt-service log for more error details

There are two methods to get the dpl-rt-service log:

  1. Using the dpl admin utility:

    Copy
    Copied!
                

    # dpl admin -a 192.168.100.2:9600 get-log-recent --number_of_lines 50

  2. Manually logging into the DPU and finding the log file at: /var/log/doca/dpl_rt_service/dpl_rtd.log.

Look for the last info and error messages at the end of the log file.

Inspect the current dpl-rt-service configurations

Use the dpl admin utility:

Copy
Copied!
            

# dpl admin -a 192.168.100.2:9600 config

Verify that all required ports are present with the expected IDs. The devices and ports correspond to the /etc/dpl_rt_service/devices.d/*.conf configuration file(s) on the DPU.

Inspect the DPU non-volatile configurations (nvconfig)

Use the dpl admin utility:

Copy
Copied!
            

# dpl admin -a 192.168.100.2:9600 nv-config --device_id 1000

Check if there are missing required firmware settings per DPL Runtime Service (Firmware Settings).

Inspect the hardware/firmware capabilities configurations

Use the dpl admin utility:

Copy
Copied!
            

# dpl admin -a 192.168.100.2:9600 hca-capabilities --device_id 1000

Check if your hardware/firmware combination supports the required features.

The dpl-rt-service log contains error message like:

[dpl_port_id_to_ib_port_num] Cannot find port ID (16)

This indicates that the DPL program refers to a port ID that does not exist in the device configuration files.

Fix the program to use the correct port ID(s), and/or update the /etc/dpl_rt_service/devices.d/*.conf configuration file(s) on the DPU.

The dpl-rt-service log contains error message like:

NV_HWS[table_process_attr:434]: Unified FDB not supported by current FW

This indicates that the DPU does not have a Firmware version that meets the minimum required version.

Upgrade the DOCA and/or the Firmware version on the DPU to the minimum required version as documented at DPL Runtime Service (Software Prerequisites).

© Copyright 2026, NVIDIA. Last updated on Mar 2, 2026