doca-rdma

Guides DOCA RDMA programming on BlueField DPUs and ConnectX NICs through configure, build, test, and debug workflows.

3.2k|370|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/NVIDIA/skills --skill doca-rdma
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: doca-rdma
Source: https://github.com/NVIDIA/skills/tree/main/skills/doca-rdma
Command: npx skills add https://github.com/NVIDIA/skills --skill doca-rdma

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Developers writing RDMA data-movement applications with the NVIDIA DOCA RDMA library face a steep learning curve: eleven task types, three connection methods, an asymmetric mmap/RDMA permission matrix, capability queries that vary by device and DOCA version, and cryptic DOCA_ERROR_* failures. This Skill gives an AI agent the verified workflows and safety rules to configure, build, modify, run, test, and debug DOCA RDMA programs correctly instead of hallucinating APIs or falling back to raw libibverbs.

Core Features & Use Cases

  • Lifecycle and connection guidance: Walks through bringing up an RDMA context on a doca_dev and choosing between RDMA CM, bridge/OOB, or gRPC export-based connection methods.
  • Task and permission matrix: Covers all eleven task types (Send/Receive, Read/Write, Atomics, Sync Events) with the exact mmap + RDMA permission pairs and export requirements for each.
  • Capability and version discovery: Enforces doca_rdma_cap_* queries and pkg-config version checks so recommendations match the actual device and installed DOCA release.
  • Layered debugging: Maps DOCA_ERROR_* families (BAD_STATE, NOT_PERMITTED, NOT_SUPPORTED, FULL, DRIVER) to specific layers with an iterative test loop.
  • Use Case: A developer hits "one-sided read returns permission denied" on a BlueField DPU. The agent loads this Skill, checks the permission matrix, confirms the peer mmap was exported with RDMA-read permission, and walks the user through a Send/Receive smoke test to isolate the failure.

Quick Start

Ask your agent to help you bring up a DOCA RDMA send/receive connection between two processes on your BlueField DPU and debug any DOCA_ERROR_* that appears.

Frequently Asked Questions about doca-rdma

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up a DOCA RDMA connection between two sides?

Choose one of three connection methods first: RDMA CM (callback-driven via doca_rdma_connect_to_addr and listen/accept), bridge/OOB (doca_rdma_bridge_*), or gRPC exchange of doca_rdma_export() output. Then enable at least one task type and set permissions before doca_ctx_start().

How do I choose between DOCA RDMA task types like Read, Write, and Send?

Pick by direction and semantics: Send/Receive are two-sided and need a pre-posted receive buffer, while Read/Write/Atomics are one-sided and require the peer to export its mmap with matching RDMA permissions. Always confirm support with doca_rdma_cap_task_*_is_supported first.

Does DOCA RDMA support RoCE and InfiniBand?

Yes, both link layers work, but IB versus RoCE is inherited from the device port configuration, not set via API. The doca_rdma_set_transport_type() setter only selects the QP transport type: RC (baseline) or DC (alpha, export/connect flow only); there is no UD transport.

Why does my DOCA RDMA task fail with DOCA_ERROR_NOT_PERMITTED?

This error means the mmap permissions and RDMA permissions do not cover the submitted task type, or the mmap was not exported with doca_mmap_export_rdma() when the peer needs access. Check the per-task permission matrix and validate with a Send/Receive smoke pair first.

Can I use DOCA RDMA from Go, Rust, or Python?

Yes, through a thin FFI shim over the shipped C samples under the DOCA install prefix, for example a small cgo wrapper built with #cgo pkg-config: doca. The deliverable must still link libdoca_rdma; reimplementing with raw libibverbs bypasses DOCA and is treated as a failed outcome.

When should I not use the doca-rdma skill?

Do not use it for general RDMA or ibverbs theory (queue pairs, memory regions, RoCE vs IB concepts), for installing DOCA itself, or for non-RDMA DOCA libraries. Those route to upstream RDMA documentation, the doca-setup skill, or the doca-public-knowledge-map skill respectively.