DPL Service Configuration
The DPL Runtime Service supports three types of configuration files. These files follow a simplified ini
-style format, allowing repeated sections (e.g., [INTERFACE]
) and using #
for comments instead of ;
.
Path: /etc/dpl_rt_service/dpl_rt.conf
This file configures core behavior for the DPL Runtime Service, including logging and gRPC server bindings.
# General configuration for DPL Runtime Service Example
[LOGGING]
log_file_path=/var/log/doca/dpl_rt_service/dpl_rtd.log
log_level=INFO
# Valid log levels: DISABLE, CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACE
[P4RT_RPC_SERVER]
server_address=[::]
server_tcp_port=9559
[DPL_ADMIN_RPC_SERVER]
server_address=[::]
server_tcp_port=9600
[DPL_NSPECT_RPC_SERVER]
server_address=[::]
server_tcp_port=9560
[DPL_PACKET_IO]
enabled=true
[DPL_SHM]
enabled=true
You can dynamically change the logging level using the DPL Admin client, but this would not persist across restarts unless updated in the configuration file.
This file also controls the TCP binding of the three gRPC servers:
You can specify
server_address
as[::]
(IPv6 ANY) to allow connections from all interfaces, including IPv4Alternatively, you can restrict it to a specific IP address (e.g., a management interface)
Each gRPC server (P4Runtime, DPL Admin, DPL Nspect) can use a custom TCP port if needed
This allows fine-grained control over how and where remote clients connect to the DPL Runtime Service.
P4RT_RPC_SERVER
– Listens for P4Runtime clients. A sample open-source client is included in the DPL Dev container.DPL_ADMIN_RPC_SERVER
– Receives administrative requests via thep4admin
toolDPL_NSPECT_RPC_SERVER
– Listens for thedpl_nspect
debugger client
To enable TLS authentication for the gRPC server connections add the following flags and provided the required info:
server_cert=/path/to/server.crt
ca_cert=/path/to/ca.crt
server_key=/path/to/server.key
Path: /etc/dpl_rt_service/system.conf
This file tunes how the DPL Runtime Service interacts with hardware.
Example:
# System-level performance tuning
[HAL]
queue_size=1024
queues_num=1
burst_size=32
Do not modify these settings unless instructed by NVIDIA Support. They directly impact performance characteristics such as rule update rate and latency.
Path: /etc/dpl_rt_service/devices.d/<device-id>.conf
(e.g., /etc/dpl_rt_service/devices.d/1000.conf
)
A configuration template is available at /etc/dpl_rt_service/devices.d/NAME.conf.template
.
This file defines the device, its interfaces, and how they map to DPL Port IDs used in DPL programs.
If using SFs or SR-IOV VFs, make sure to reference their representor interfaces in the configuration file, not the SF/VF interfaces themselves.
DPL Port ID Mapping
Each physical or virtual interface is assigned a logical DPL Port ID. You must ensure consistency between your DPL program and this configuration.
Supported interface types:
Uplink netdev interface (e.g.,
p0
)PF representor (e.g.,
pf0hpf
)VF representor (e.g.,
pf0vf0
)SF representor (e.g.,
en3f0pf0sf1
)
All listed interfaces must belong to the same uplink port.
DPL Port ID Rules
Condition | Requirement |
Reserved value |
|
DPL device ID | Must be a positive integer |
DPL interface ID | Integer between |
Number of uplink ports per config file | Only one |
Example DPL Device Configuration File
# Example of a possible DPL RT Service Device configuration file:
#
# This configuration file specifies the DPL device and its interfaces
# and their DPL Port IDs that will be used by a DPL program.
#
# The DPL Port IDs are assigned by the user. The user decides which
# DPL Port ID is assigned to which ConnectX/DPU interface. This mapping
# is critical for achieving the desired results when adding table entries.
# For DPL device, the ID must be an integer number greater than zero.
#
# The configuration file consists of following sections:
# - [DEVICE] section: Must appear only once.
# - [P4_RT_CONTROLLER] section: Must appear only once.
# - [INTERFACE] section: Must be repeated for each DPL Port (network interface).
[DEVICE]
# The DPL Device ID, used for connecting a controller to manage this device's tables.
dpl_device_id=1000
# Cache counter - decrease HW accesses - when expired an HW access will occur upon request.
dpl_counter_cache_timeout=0
# Sets counter polling interval for idle-timeout. [seconds]
idle_timeout_polling_interval=2
[P4_RT_CONTROLLER]
# Packets delivered to the DPL RT Service from a controller will have this source DPL Port ID.
# So, this ID can be used for matching traffic originated from the controller.
p4_controller_port_id=9876
[INTERFACE]
# Interface name on the system to attach to this DPL device.
interface=p0
# DPL Port ID, used to reference this port by the DPL program and/or when updating table entries.
dpl_logical_port_id=0
# Ethernet frame size.
mtu=1514
# Only uncomment and provide this if you wish to override the interface's MAC address.
# mac=00:00:00:00:00:00
[INTERFACE]
interface=pf0hpf
dpl_logical_port_id=65535
mtu=1514
# mac=00:00:00:00:00:00
[INTERFACE]
interface=pf0vf0
dpl_logical_port_id=1
mtu=1514
# mac=00:00:00:00:00:00
[INTERFACE]
interface=pf0vf1
dpl_logical_port_id=2
mtu=1514
# mac=00:00:00:00:00:00
mtu
and mac
fields are currently placeholders for future functionality. They are returned by queries but have no runtime effect at this time.