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 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
The 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.sh Script
Running the script with no arguments displays the usage information:
usage: p4runtime_sh.sh -i <docker image> -p <program_folder> -a <dpl_rtd_ip:port> [OPTIONS]
Example Command
p4runtime_sh.sh -i doca_p4_dev:latest -p /root/hello_packet/_out -a 192.168.1.100:9559 --device-id 1000
Arguments:
-
-i- The pulled DPL Development Container image. -
-p- Directory that holds the DPL program compilation outputs (Compiling DPL Applications). -
-a- Address of the DPL Runtime daemon and the P4Runtime port as specified in the DPL Runtime Service Configuration. -
--device-id– (Optional) ID of the target device
After successful loading, the script launches an interactive Python shell connected to the P4Runtime server. From here, you can inspect and manipulate tables (see p4runtime_sh Usage).
P4Runtime Optimizations
DPL table entries are added via a P4Runtime controller, which may run remotely or locally on BlueField.
-
The standard gRPC-based controller model supports ~50K rule insertions per second
-
For use cases requiring high-speed (1M+) rule insertions, NVIDIA is introducing a bulk insertion API extension to the P4Runtime protobuf specification
This feature is planned for future releases.
Last updated: