Remote Direct Memory Access

Abkürzung: RDMA

RDMA erlaubt Speicherzugriff zwischen Rechnern ohne Beteiligung der CPU und ist die Grundlage von InfiniBand, RoCEv2, iWARP und Ultra Ethernet.

Prinzip

Bei klassischer Netzkommunikation kopiert das Betriebssystem Daten mehrfach: aus dem Anwendungspuffer in den Kernel, von dort in den Sendepuffer der Netzwerkkarte und auf der Gegenseite in umgekehrter Reihenfolge. Jeder Schritt kostet CPU-Zeit und Latenz. RDMA umgeht diesen Pfad auf drei Ebenen:

  • Kernel-Bypass: Die Anwendung spricht die Netzwerkkarte direkt an, ohne Systemaufruf pro Paket.
  • Zero-Copy: Daten werden aus dem Anwendungsspeicher direkt auf die Leitung gelegt bzw. von der Leitung direkt in den Zielspeicher geschrieben.
  • CPU-Offload: Transport, Segmentierung und Zuverlässigkeit übernimmt die Netzwerkkarte (HCA bei InfiniBand, RNIC bei Ethernet).

Voraussetzung ist, dass die Anwendung Speicherbereiche vorab registriert (Memory Registration). Die Netzwerkkarte erhält dafür einen lokalen Schlüssel (lkey) und einen entfernten Schlüssel (rkey). Nur mit gültigem rkey darf eine Gegenstelle auf den reservierten Bereich zugreifen.

Verbs und Queue Pairs

Die Programmierschnittstelle heißt Verbs und ist in der InfiniBand Architecture Specification Volume 1 der IBTA definiert. Zentrales Element ist das Queue Pair (QP) aus Send Queue und Receive Queue. Die Anwendung legt Arbeitsaufträge (Work Requests) in die Queues, die Netzwerkkarte arbeitet sie asynchron ab und meldet den Abschluss über eine Completion Queue.

Ein Queue Pair gehört zu einer Protection Domain, die Speicherregionen und QPs gegeneinander abschirmt. Unter Linux stellt rdma-core mit libibverbs die Verbs-API bereit; sie ist für alle Transportvarianten identisch.

Operationen

OperationTypBeteiligung der Gegenseite
Send / Receivetwo-sidedEmpfänger muss vorher einen Receive-Auftrag gestellt haben
RDMA Writeone-sidedkeine; Daten landen direkt im Zielspeicher
RDMA Readone-sidedkeine; Daten werden aus dem entfernten Speicher geholt
Atomic (Compare-and-Swap, Fetch-and-Add)one-sidedkeine; 64-Bit-Operation im entfernten Speicher

One-sided-Operationen sind der eigentliche Vorteil von RDMA: Die CPU des Zielsystems bemerkt den Zugriff nicht. Für Kollektivoperationen im KI-Training (All-Reduce) und für Storage-Protokolle ist das entscheidend.

Transportdienste

Die Spezifikation definiert mehrere Dienstklassen für Queue Pairs:

  • RC (Reliable Connected): verbindungsorientiert, zuverlässig, alle Operationen möglich. Standard für MPI, NCCL und Storage.
  • UC (Unreliable Connected): verbindungsorientiert ohne Bestätigungen.
  • UD (Unreliable Datagram): verbindungslos, nur Send/Receive, Nachrichten bis zur MTU. Basis für IPoIB und Multicast.
  • XRC (Extended Reliable Connected): reduziert die Zahl der QPs bei vielen Prozessen pro Knoten.

Transportvarianten

RDMA ist ein Verfahren, kein Netz. Es läuft über vier standardisierte Transporte:

VarianteSchichtNormVerlustfreies Netz nötig
InfiniBandeigene Schichten 1–4IBTA Vol. 1 und Vol. 2ja (kreditbasierte Flusskontrolle eingebaut)
RoCEv1Ethernet, EtherType 0x8915IBTA Annex A16 (2010)ja (PFC)
RoCEv2UDP/IP, Port 4791IBTA Annex A17 (2014)ja (PFC, ECN, DCQCN)
iWARPTCP/IPRFC 5040, 5041, 5044nein (TCP übernimmt Verluste)
Ultra Ethernet (UET)UDP/IPUEC Specification 1.0 (2025)nein (Packet Spraying, selektive Neuübertragung)

InfiniBand und RoCE teilen sich das Transportprotokoll der IBTA; RoCE ersetzt nur die unteren Schichten durch Ethernet. iWARP ist eine eigenständige IETF-Entwicklung mit anderem Protokollstack, aber derselben Verbs-API. Ultra Ethernet definiert mit UET einen neuen Transport, der die Schwächen von RoCEv2 in sehr großen Fabrics (PFC-Abhängigkeit, Go-Back-N-Neuübertragung, ein Pfad pro QP) beseitigt.

Anforderungen an das Netz

Das InfiniBand-Transportprotokoll setzt voraus, dass Pakete nicht verworfen werden. Bei Verlust wird ab dem verlorenen Paket alles erneut gesendet (Go-Back-N). In InfiniBand-Fabrics ist Verlustfreiheit durch kreditbasierte Flusskontrolle Teil des Standards. RoCEv2 muss sie auf Ethernet nachbilden: Priority-based Flow Control (IEEE 802.1Q Clause 36) stoppt den Sender bei vollem Puffer, ECN (RFC 3168) und DCQCN regeln die Senderate vorbeugend herunter.

Daraus folgt, dass RoCEv2 ohne korrekt konfigurierte Switches nicht stabil läuft. iWARP und Ultra Ethernet kommen mit verlustbehafteten Netzen zurecht, iWARP um den Preis der TCP-Latenz, UET durch ein eigenes Neuübertragungsverfahren.

Einsatz

  • HPC: MPI-Implementierungen nutzen RDMA seit Anfang der 2000er Jahre; InfiniBand ist auf der TOP500-Liste der dominierende Interconnect.
  • KI-Training: NCCL und vergleichbare Bibliotheken setzen Kollektivoperationen über RDMA um. GPUDirect RDMA erlaubt den direkten Zugriff der Netzwerkkarte auf GPU-Speicher ohne Umweg über das Host-RAM.
  • Storage: NVMe over Fabrics (RDMA-Transport), iSER, SMB Direct und NFS over RDMA nutzen RDMA für niedrige Latenz und CPU-Entlastung.
  • Datenbanken und Key-Value-Stores: one-sided Reads für verteilte Speicherzugriffe.

Software

Unter Linux bildet rdma-core (libibverbs, librdmacm) die Userspace-Schicht, der Kernel enthält die Treiber für HCAs und RNICs. Die Distributionen der Hersteller (etwa NVIDIA DOCA-OFED) setzen darauf auf. Für Windows existiert Network Direct als eigene API.

Normen und Quellen

  • IBTA: InfiniBand Architecture Specification Volume 1, Release 1.8 (September 2024); Annex A16 (RoCE) und A17 (RoCEv2)
  • IBTA: InfiniBand Architecture Specification Volume 2, Release 1.5
  • RFC 5040 (RDMAP), RFC 5041 (DDP), RFC 5044 (MPA), RFC 7306 (RDMA Protocol Extensions)
  • Ultra Ethernet Consortium: Ultra Ethernet Specification 1.0 (Juni 2025), aktuell 1.0.2 (Januar 2026)
  • IEEE 802.1Q-2022, Clause 36 (Priority-based Flow Control)
  • RFC 3168 (ECN)
  • Zhu et al.: Congestion Control for Large-Scale RDMA Deployments, SIGCOMM 2015
  • rdma-core: github.com/linux-rdma/rdma-core

Weblinks

Erstellt: · Überarbeitet: