RDMA Transport Support
The Longhorn V2 data engine supports RDMA (Remote Direct Memory Access) transport for NVMe-oF replica connections, complementing the default TCP transport. RDMA enables direct memory-to-memory data transfer between the SPDK NVMe-oF target (replica) and initiator (engine frontend) without CPU involvement, reducing latency and CPU overhead for high-throughput workloads.
--with-rdma=mlx5_dv)RDMA transport is automatically enabled on nodes that have RDMA-capable hardware and drivers. The longhorn-manager detects RDMA hardware and applies the node.longhorn.io/nvmf-transport=rdma node label automatically. No manual configuration is required.
To verify that a node has been labeled:
kubectl get nodes -o custom-columns=NAME:.metadata.name,TRANSPORT:.metadata.labels.node\.longhorn\.io/nvmf-transport
Nodes with RDMA hardware will show rdma; nodes without will show tcp or no label.
To manually override the automatic detection (e.g., to force TCP on a node with RDMA hardware):
kubectl label node <node-name> node.longhorn.io/nvmf-transport=tcp --overwrite
When a node is labeled rdma, the instance manager on that node:
Longhorn supports mixed clusters where some nodes use RDMA and others use TCP:
Engine and Replica CRD statusCheck the transport type for a volume’s replicas:
kubectl get engines.longhorn.io -n longhorn-system <engine-name> -o jsonpath='{.status.replicaStatusMap}' | jq .
Each replica entry includes a transport field indicating whether it is connected via tcp or rdma.
The longhorn-manager automatically detects RDMA hardware on nodes and applies the nvmf-transport label. If RDMA hardware is later removed or drivers are unloaded, the label should be manually updated to tcp to prevent connection attempts on a non-functional RDMA path.
© 2019-2026 Longhorn a Series of LF Projects, LLC. Documentation Distributed under CC-BY-4.0.
For website terms of use, trademark policy and other project policies please see lfprojects.org/policies.