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 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.
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.sh
launch script are installed on the host. See the DPL Installation Guide for more details.
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).
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
NoteThis feature is planned for future releases.