IB-Protokoll und Transport: Schichten, QPs, RDMA, Subnet-Manager
InfiniBand wurde von Anfang an als Fabric für Computer entworfen, die auf den Speicher des jeweils anderen zugreifen, nicht für Pakete zwischen Fremden. Schichten, Adressierung und Verwaltung wirken auf Ethernet-Ingenieure ungewohnt, sind aber einfach, sobald das Vokabular sitzt — und sie erklären, warum die physikalische Schicht so strengen Maßstäben unterliegt. Diese Seite behandelt die Protokollsicht; die Optik steht unter InfiniBand-Optik.
Schichten
| Schicht | Inhalt | Hinweise |
|---|---|---|
| Physikalisch | Lanes (1x, 4x, 8x, 12x), Signalisierung pro Lane (NRZ bis zu PAM4 bei HDR … siehe Geschwindigkeiten), Kodierung (8B/10B bis QDR, 64B/66B ab FDR), FEC (ab FDR optional, RS-FEC bei HDR/NDR) | die Welt des Transceivers |
| Link | lokaler Routing-Header (LRH) mit LIDs, virtuelle Lanes (VL0–VL14 Daten, VL15 Management), kreditbasierte Flusskontrolle pro VL, CRC der Link-Schicht (ICRC/VCRC) | von Haus aus verlustfrei |
| Netzwerk | globaler Routing-Header (GRH) mit 128-Bit-GIDs für Multi-Subnetz-Routing | innerhalb eines einzelnen Clusters selten genutzt |
| Transport | Queue Pairs (QPs) mit Sende-/Empfangswarteschlangen, Diensttypen RC/UC/UD/XRC, Segmentierung auf die MTU, ACK/NAK für zuverlässigen Dienst | hier lebt RDMA |
| Oberste | Verbs-API, MPI, NCCL (über UCX/SHARP), Storage (SRP, iSER, NVMe/IB), IPoIB | was Anwendungen nutzen |
Adressierung und Identität
| Bezeichner | Größe | Vergeben von | Bedeutung |
|---|---|---|---|
| GUID | 64-Bit | Hersteller | dauerhafte Identität eines Ports, Knotens oder Systems (wie eine MAC-Adresse) |
| LID (Local Identifier) | 16-Bit | Subnetzmanager | Adresse innerhalb eines Subnetzes; Forwarding-Tabellen verwenden LIDs |
| GID | 128-Bit | SM (Präfix) + GUID | Subnetz-Präfix + GUID; subnetzübergreifend und von RoCE verwendet |
| PKey (Partitionsschlüssel) | 16-Bit | SM | Mitgliedschaft in einer Partition (wie ein VLAN); volle oder eingeschränkte Mitglieder |
| QPN | 24-Bit | HCA | Queue-Pair-Nummer — der Endpunkt innerhalb eines Ports |
Queue Pairs und Transportdienste
Ein Queue Pair besteht aus einer Sendewarteschlange und einer Empfangswarteschlange in der HCA und gehört einer Anwendung. Work Requests, die dort eingereicht werden, führt die Hardware aus; Abschlüsse landen in einer Completion Queue. Diensttypen:
| Typ | Zuverlässig | Verbunden | Verwendung |
|---|---|---|---|
| RC — zuverlässig, verbindungsorientiert | ja (ACK/NAK, Neuübertragung) | ja, ein QP pro Peer | der meiste RDMA-Verkehr; MPI, NCCL, Storage |
| UC — unzuverlässig, verbindungsorientiert | nein | ja | selten |
| UD — unzuverlässig, datagrammbasiert | nein | nein, ein QP für alle Peers | Management, IPoIB, Multicast |
| XRC — erweitert, zuverlässig, verbindungsorientiert | ja | gemeinsame Empfangswarteschlangen über mehrere Prozesse hinweg | große MPI-Jobs, um die Zahl der QPs zu senken |
| RD — zuverlässig, datagrammbasiert | ja | nein | praktisch ungenutzt |
RDMA-Operationen (READ, WRITE, atomar) bewegen Daten direkt zwischen den Anwendungspuffern zweier Hosts, ohne dass eine CPU sie kopiert; SEND/RECEIVE transportiert Nachrichten. Speicher muss registriert sein (gepinnt und mit einem Schlüssel versehen), bevor die HCA darauf zugreifen darf. GPUDirect RDMA erweitert dies auf GPU-Speicher (GPU-Fabrics).
Flusskontrolle und MTU
Jeder Link betreibt kreditbasierte Flusskontrolle pro virtueller Lane: Der Empfänger gibt seinen Pufferplatz bekannt, der Sender überträgt nie mehr, als dieser aufnehmen kann. Wegen Überlast wird kein Frame verworfen; stattdessen breitet sich Backpressure aus — derselbe Kompromiss wie bei den Credits von Fibre Channel, und der Grund, warum ein einzelner langsamer oder fehlerhafter Link einen ganzen Job ausbremst. Die Link-MTU liegt bei 256–4096 Bytes (typisch 4096); die Pfad-MTU wird Ende-zu-Ende ausgehandelt. Service Levels (SL) werden auf VLs abgebildet, um Verkehrsklassen zu trennen, und adaptives Routing kann Datenflüsse um überlastete Links herumlenken.
Der Subnetzmanager
Pro Subnetz ist genau ein Subnetzmanager (SM) aktiv (weitere stehen bereit). Er:
- Erkennt die Topologie, indem er die Fabric mit Management-Paketen mit gerichteter Route (SMPs auf VL15/QP0) durchläuft — jeden Switch- und HCA-Port.
- Vergibt LIDs und konfiguriert Ports (Geschwindigkeit, Breite, MTU, VL-Arbitrierung, PKeys).
- Berechnet Routen — Min-Hop, Up-Down, Fat-Tree, Dragonfly+, adaptives Routing — und programmiert die lineare Forwarding-Tabelle jedes Switches.
- Scannt das Netz periodisch und bei Traps (Port up/down) und leitet bei Ausfällen um.
- Betreibt den Subnetzadministrator (SA), der Pfadanfragen von Hosts beantwortet.
OpenSM (Open Source) und herstellereigene Fabric-Manager (UFM) implementieren ihn; im Fabric-Manager laufen außerdem Portfehler, die Ergebnisse der Geschwindigkeits-/Breiten-Aushandlung und die Optik-DDM flottenweit zusammen (Link-Zuverlässigkeit und Monitoring).
Link-Aushandlung
Beim Link-up handeln beide Enden Breite (1x/2x/4x) und Geschwindigkeit (Rate pro Lane) auf den höchsten gemeinsamen Wert aus. Ein Link, der mit 2x oder eine Generation langsamer als erwartet hochkommt, ist das InfiniBand-Äquivalent zu Ethernets „läuft mit 10G statt mit 25G“: die Faser oder der Laser einer Lane, ein grenzwertiges Kabel oder eine nicht passende Transceiver-Generation (Geschwindigkeit und Rate). Der Fabric-Manager meldet den ausgehandelten Zustand; ibstat / ibportstate zeigen ihn auf einem Host.
Verwaltungs- und Diagnosewerkzeuge
| Werkzeug | Zweck |
|---|---|
ibstat, ibstatus | lokaler Portzustand, Rate, Breite, LID |
ibnetdiscover | Topologie-Dump |
ibdiagnet | fabricweite Prüfung: Fehler, Geschwindigkeits-/Breiten-Fehlanpassungen, doppelte GUIDs, Kabelinformationen |
perfquery, ibqueryerrors | Zähler pro Port: Symbol Errors, Link Downed, Link Recovery, Port Rcv Errors, Excessive Buffer Overrun, VL15 Dropped, FEC-Zähler |
mlxlink, mlxcables | PHY-Details pro Port sowie Kabel-/Transceiver-EEPROM, DDM, FEC-Histogramm |
ibportstate | Geschwindigkeit/Breite erzwingen, einen Port zurücksetzen |
Symbol Errors und Link Recoveries sind die Zähler der physikalischen Schicht — das Äquivalent zu Ethernet-CRC/FEC, gekoppelt an Rx-Leistung und Sauberkeit (Fabric).
InfiniBand vs. RoCE in einem Absatz
RoCE v2 transportiert denselben Verbs-/RDMA-Verkehr über UDP/IP/Ethernet; es ersetzt den Subnetzmanager durch IP-Routing und PKeys durch VLANs und ersetzt die Kredit-Flusskontrolle durch PFC/ECN (DCQCN) — was korrekt konfiguriert sein muss, damit das Netz verlustfrei bleibt (Verlustfreies Ethernet, Interconnects). Die Transceiver sind physikalisch identisch; es unterscheiden sich nur die Identitätscodierung und die Richtlinien des Hosts.
In CodingBox
InfiniBand-Module werden wie jedes QSFP/OSFP ausgelesen: Identität (einschließlich der InfiniBand-Ratenbits in SFF-8636 Byte 164 oder den CMIS Applications), DDM pro Lane und Prüfsummen auf Check transceiver und DDM. Ein Port, der unterhalb seiner Nennrate aushandelt, ist auf der Werkbank an beiden Enden einen Blick wert.