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.
Introduction
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 andp4info) -
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.
Prerequisites
Before loading a DPL application, ensure the following services and components are properly set up:
-
DPL Runtime Service is running and configured on the BlueField (Arm side). See the DPL Container Deployment page for setup instructions.
-
DPL Development Container and the
p4runtime_sh.shlaunch script are installed on the host. See the DPL Installation Guide for more details.
Loading the Application
A DPL application can be loaded using:
-
A custom P4Runtime controller
In the following example, we'll be using the P4Runtime controller bundled within the DPL Development Container.
Using p4runtime_sh Script
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
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
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:
-
Our P4 Runtime Controller documentation.
-
Official p4runtime-shell project documentation.
P4Runtime Optimizations
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
Troubleshooting
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:
# 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 |
There are two methods to get the
Look for the last info and error messages at the end of the log file. |
|
Inspect the current |
Use the dpl admin utility: Bash
Verify that all required ports are present with the expected IDs. The devices and ports correspond to the |
|
Inspect the DPU non-volatile configurations (nvconfig) |
Use the dpl admin utility: Bash
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: Bash
Check if your hardware/firmware combination supports the required features. |
|
The
|
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 |
|
The
|
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). |
Last updated: