IB-protocol en transport: lagen, QP’s, RDMA, subnetmanager
InfiniBand is vanaf het begin ontworpen als een fabric waarin computers met elkaars geheugen communiceren, niet voor pakketten tussen onbekenden. De lagen, adressering en het beheer zijn voor Ethernet-engineers misschien ongewoon, maar worden eenvoudig zodra de terminologie bekend is. Ze verklaren ook waarom de fysieke laag aan zulke strenge normen moet voldoen. Deze pagina beschrijft het protocol; de optiek staat in InfiniBand-optiek.
Lagen
| Laag | Inhoud | Opmerkingen |
|---|---|---|
| Fysiek | lanes (1x, 4x, 8x, 12x), signaaloverdracht per lane (NRZ tot PAM4 van HDR… zie snelheden), codering (8B/10B tot QDR, 64B/66B vanaf FDR), FEC (vanaf FDR optioneel, RS-FEC bij HDR/NDR) | de wereld van de transceiver |
| Link | local routing header (LRH) met LID's, virtuele lanes (VL0–VL14-data, VL15-beheer), flow control op basis van credits per VL, CRC op linklaag (ICRC/VCRC) | verliesloos ontworpen |
| Netwerk | global routing header (GRH) met 128-bit GID's voor routering tussen meerdere subnets | zelden gebruikt binnen één cluster |
| Transport | queue pairs (QP's) met verzend-/ontvangstwachtrijen, servicetypen RC/UC/UD/XRC, segmentatie tot MTU, ACK/NAK voor betrouwbare service | hier werkt RDMA |
| Bovenlaag | verbs API, MPI, NCCL (via UCX/SHARP), opslag (SRP, iSER, NVMe/IB), IPoIB | wat applicaties gebruiken |
Adressering en identiteit
| Identificatie | Grootte | Toegekend door | Betekenis |
|---|---|---|---|
| GUID | 64-bit | fabrikant | permanente identiteit van een poort, node of systeem (zoals een MAC) |
| LID (local identifier) | 16-bit | subnet manager | adres binnen een subnet; forwardingtabellen gebruiken LID's |
| GID | 128-bit | SM (prefix) + GUID | subnetprefix + GUID; gebruikt tussen subnets en door RoCE |
| PKey (partition key) | 16-bit | SM | lidmaatschap van een partitie (zoals een VLAN); volledige/beperkte leden |
| QPN | 24-bit | HCA | queue pair-nummer, het eindpunt binnen een poort |
Queue pairs en transportdiensten
Een queue pair bestaat uit één verzendwachtrij en één ontvangstwachtrij in de HCA, in bezit van een applicatie. Werkverzoeken die erop worden geplaatst, voert de hardware uit; voltooiingen komen in een completion queue terecht. Servicetypen:
| Type | Betrouwbaar | Verbonden | Gebruik |
|---|---|---|---|
| RC: reliable connected | ja (ACK/NAK, hertransmissie) | ja, één QP per peer | meeste RDMA-verkeer; MPI, NCCL, opslag |
| UC: unreliable connected | nee | ja | zelden |
| UD: unreliable datagram | nee | nee, één QP voor alle peers | beheer, IPoIB, multicast |
| XRC: extended reliable connected | ja | gedeelde ontvangstwachtrijen tussen processen | grote MPI-taken om het aantal QP's te beperken |
| RD: reliable datagram | ja | nee | in wezen ongebruikt |
RDMA-bewerkingen (READ, WRITE, atomair) verplaatsen gegevens rechtstreeks tussen applicatiebuffers op twee hosts zonder dat een CPU ze kopieert; SEND/RECEIVE verstuurt berichten. Geheugen moet eerst worden geregistreerd (vastgezet en van een sleutel voorzien) voordat de HCA het mag aanraken. GPUDirect RDMA breidt dit uit naar GPU-geheugen (GPU-fabrics).
Flow control en MTU
Elke link gebruikt flow control op basis van credits per virtuele lane: de ontvanger adverteert bufferruimte, de zender verstuurt nooit meer dan de ontvanger kan opnemen. Bij congestie valt geen frame weg; in plaats daarvan plant back-pressure zich voort. Dat is dezelfde afweging als bij de credits van Fibre Channel en verklaart waarom één trage of foutieve link een hele taak vertraagt. Link-MTU is 256–4096 bytes (meestal 4096); path- MTU wordt end-to-end onderhandeld. Service levels (SL) worden op VL's afgebeeld om verkeersklassen te scheiden en adaptive routing kan flows rond overbelaste links sturen.
De subnet manager
Precies één subnet manager (SM) is actief per subnet (andere staan stand-by). Die:
- Ontdekt de topologie door de fabric te doorlopen met managementpakketten met een directed route (SMP's op VL15/QP0), langs elke switch- en HCA-poort.
- Wijst LID's toe en configureert poorten (snelheid, breedte, MTU, VL-arbitrage, PKeys).
- Berekent routes (min-hop, up-down, fat-tree, dragonfly+, adaptive routing) en programmeert de linear forwarding table van elke switch.
- Scant periodiek en bij traps (poort omhoog/omlaag), en routeert rond storingen.
- Beheert de subnet administrator (SA) die padvragen van hosts beantwoordt.
OpenSM (open source) en fabric managers van fabrikanten (UFM) voeren dit uit; de fabric manager verzamelt ook poortfouten, onderhandelingsresultaten voor linksnelheid/-breedte en DDM van optiek voor het hele cluster (Linkbetrouwbaarheid en monitoring).
Linkonderhandeling
Wanneer een link actief wordt, onderhandelen beide uiteinden over breedte (1x/2x/4x) en snelheid (snelheid per lane) tot de hoogste gemeenschappelijke waarde. Een link die op 2x of één generatie langzamer dan verwacht actief wordt, is het InfiniBand-equivalent van Ethernet “linkt op 10G, niet op 25G”: de glasvezel of laser van één lane, een kabel op de grens van de specificatie of een niet-passende transceivermodulegeneratie kan de oorzaak zijn (Snelheid en rate). De fabric manager meldt de onderhandelde toestand; ibstat / ibportstate tonen die op een host.
Tools voor beheer en diagnostiek
| Tool | Doel |
|---|---|
ibstat, ibstatus | lokale poorttoestand, snelheid, breedte, LID |
ibnetdiscover | topologiedump |
ibdiagnet | fabricbrede controle: fouten, snelheids-/breedtemismatches, dubbele GUID's, kabelinformatie |
perfquery, ibqueryerrors | tellers per poort: symboolfouten, link downed, link recovery, port rcv errors, excessive buffer overrun, VL15 dropped, FEC-tellers |
mlxlink, mlxcables | PHY-details per poort en EEPROM, DDM, FEC-histogram van kabel/transceiver |
ibportstate | snelheid/breedte forceren, een poort resetten |
Symboolfouten en linkherstel zijn de tellers van de fysieke laag: de tegenhangers van Ethernet CRC/FEC, gekoppeld aan Rx-vermogen en reinheid (Fabric).
InfiniBand versus RoCE in één alinea
RoCE v2 draagt hetzelfde verbs/RDMA-transport over UDP/IP/Ethernet; het vervangt de subnet manager door IP-routering en PKeys door VLAN's, en vervangt flow control op basis van credits door PFC/ECN (DCQCN), dat correct moet zijn geconfigureerd om verliesloos te zijn (Verliesloos Ethernet, Interconnects). De transceivers zijn fysiek hetzelfde; alleen de identiteitscodering en het beleid op de host verschillen.
In CodingBox
InfiniBand-modules worden gelezen zoals elke QSFP/OSFP-module: identiteit (inclusief de InfiniBand-ratebits in SFF-8636 byte 164 of CMIS-applicaties), DDM per lane en checksums in Check transceiver en DDM. Als een poort onder de nominale snelheid onderhandelt, is het de moeite waard beide uiteinden op de werkbank uit te lezen.