Protokół i transport IB: warstwy, QP, RDMA, menedżer podsieci
InfiniBand od początku projektowano jako fabric dla komputerów rozmawiających z pamięcią innych komputerów, a nie do przesyłania pakietów między obcymi sobie urządzeniami. Jego warstwy, adresowanie i zarządzanie wyglądają obco dla inżynierów Ethernet, ale po opanowaniu słownictwa okazują się proste — i tłumaczą, dlaczego warstwa fizyczna podlega tak rygorystycznym normom. Ta strona przedstawia widok protokołu; optyka jest opisana w optyce InfiniBand.
Warstwy
| Warstwa | Zawartość | Uwagi |
|---|---|---|
| Fizyczna | linie (1x, 4x, 8x, 12x), sygnalizacja na linię (od NRZ do PAM4 w HDR… zobacz szybkości), kodowanie (8B/10B do QDR, 64B/66B od FDR), FEC (opcjonalny od FDR, RS-FEC przy HDR/NDR) | świat transceivera |
| Łącza | lokalny nagłówek trasowania (LRH) z LID-ami, linie wirtualne (VL0–VL14 dane, VL15 zarządzanie), sterowanie przepływem na bazie kredytów dla każdej VL, CRC warstwy łącza (ICRC/VCRC) | bezstratna z założenia |
| Sieciowa | globalny nagłówek trasowania (GRH) ze 128-bitowymi GID-ami do trasowania między podsieciami | rzadko używana w obrębie jednego klastra |
| Transportowa | pary kolejek (QP) z kolejkami nadawczymi/odbiorczymi, typy usług RC/UC/UD/XRC, segmentacja do MTU, ACK/NAK dla usługi niezawodnej | tu działa RDMA |
| Górna | API verbs, MPI, NCCL (przez UCX/SHARP), storage (SRP, iSER, NVMe/IB), IPoIB | to, z czego korzystają aplikacje |
Adresowanie i identyfikacja
| Identyfikator | Rozmiar | Nadawany przez | Znaczenie |
|---|---|---|---|
| GUID | 64-bitowy | producent | stała identyfikacja portu, węzła lub systemu (jak adres MAC) |
| LID (identyfikator lokalny) | 16-bitowy | menedżer podsieci | adres w obrębie podsieci; tablice trasowania korzystają z LID-ów |
| GID | 128-bitowy | SM (prefiks) + GUID | prefiks podsieci + GUID; używany między podsieciami i przez RoCE |
| PKey (klucz partycji) | 16-bitowy | SM | przynależność do partycji (jak VLAN); członkowie pełni/ograniczeni |
| QPN | 24-bitowy | HCA | numer pary kolejek — punkt końcowy w obrębie portu |
Pary kolejek i usługi transportowe
Para kolejek to jedna kolejka nadawcza i jedna kolejka odbiorcza w HCA, należąca do aplikacji. Żądania pracy zgłoszone do niej wykonuje sprzęt; zakończenia trafiają do kolejki zakończeń. Typy usług:
| Typ | Niezawodna | Połączeniowa | Zastosowanie |
|---|---|---|---|
| RC — niezawodna połączeniowa | tak (ACK/NAK, retransmisja) | tak, jedna QP na partnera | większość ruchu RDMA; MPI, NCCL, storage |
| UC — zawodna połączeniowa | nie | tak | rzadkie |
| UD — zawodna datagramowa | nie | nie, jedna QP dla wszystkich partnerów | zarządzanie, IPoIB, multicast |
| XRC — rozszerzona niezawodna połączeniowa | tak | kolejki odbiorcze współdzielone między procesami | duże zadania MPI, by ograniczyć liczbę QP |
| RD — niezawodna datagramowa | tak | nie | praktycznie nieużywana |
Operacje RDMA (READ, WRITE, atomowe) przenoszą dane bezpośrednio między buforami aplikacji na dwóch hostach bez kopiowania ich przez którykolwiek CPU; SEND/RECEIVE przenosi komunikaty. Zanim HCA uzyska dostęp do pamięci, musi ona zostać zarejestrowana (przypięta i opatrzona kluczem). GPUDirect RDMA rozszerza to na pamięć GPU (fabric GPU).
Sterowanie przepływem i MTU
Każde łącze działa w oparciu o sterowanie przepływem na bazie kredytów, dla każdej linii wirtualnej: odbiornik ogłasza dostępne miejsce w buforze, a nadajnik nigdy nie wysyła więcej, niż odbiornik jest w stanie przyjąć. Żadna ramka nie jest odrzucana z powodu przeciążenia; zamiast tego rozchodzi się przeciwciśnienie (back-pressure) — ten sam kompromis co przy kredytach Fibre Channel i powód, dla którego jedno wolne lub błędne łącze degraduje całe zadanie. MTU łącza wynosi 256–4096 bajtów (typowo 4096); MTU ścieżki negocjowane jest od końca do końca. Poziomy usług (SL) mapowane są na VL, by rozdzielić klasy ruchu, a trasowanie adaptacyjne może kierować strumienie z dala od przeciążonych łączy.
Menedżer podsieci
Dokładnie jeden menedżer podsieci (SM) jest aktywny w każdej podsieci (pozostałe pozostają w rezerwie). Menedżer:
- Odkrywa topologię, przemierzając fabric za pomocą pakietów zarządzających o trasowaniu bezpośrednim (SMP na VL15/QP0) — każdy przełącznik i port HCA.
- Przydziela LID-y i konfiguruje porty (szybkość, szerokość, MTU, arbitraż VL, PKey).
- Wylicza trasy — min-hop, up-down, fat-tree, dragonfly+, trasowanie adaptacyjne — i programuje liniową tablicę trasowania każdego przełącznika.
- Skanuje sieć okresowo i po zdarzeniach trap (port up/down), przekierowując trasy wokół awarii.
- Uruchamia administratora podsieci (SA), który odpowiada na zapytania hostów o ścieżki.
Realizują go OpenSM (open source) oraz menedżery fabric producentów (UFM); menedżer fabric to również miejsce, gdzie w skali całej floty gromadzone są błędy portów, wyniki negocjacji szybkości/szerokości łącza oraz DDM optyki (Niezawodność łącza i monitorowanie).
Negocjacja łącza
Przy podnoszeniu łącza obie strony negocjują szerokość (1x/2x/4x) i szybkość (szybkość na linię) do najwyższej wspólnej wartości. Łącze, które podnosi się na 2x albo o jedną generację wolniej, niż oczekiwano, jest odpowiednikiem sytuacji Ethernet „łącza na 10G zamiast 25G”: światłowód lub laser jednej linii, kabel na granicy parametrów albo niedopasowana generacja transceivera (Szybkość i przepływność). Menedżer fabric raportuje wynegocjowany stan; na hoście pokazują go ibstat / ibportstate.
Narzędzia zarządzania i diagnostyki
| Narzędzie | Przeznaczenie |
|---|---|
ibstat, ibstatus | lokalny stan portu, szybkość, szerokość, LID |
ibnetdiscover | zrzut topologii |
ibdiagnet | kontrola całego fabric: błędy, niezgodności szybkości/szerokości, zduplikowane GUID-y, informacje o kablu |
perfquery, ibqueryerrors | liczniki dla każdego portu: błędy symboli, zerwania łącza, odzyskania łącza, błędy odbioru portu, nadmierne przepełnienie bufora, odrzucenia VL15, liczniki FEC |
mlxlink, mlxcables | szczegóły PHY dla każdego portu oraz EEPROM kabla/transceivera, DDM, histogram FEC |
ibportstate | wymuszenie szybkości/szerokości, reset portu |
Błędy symboli i odzyskania łącza to liczniki warstwy fizycznej — odpowiedniki CRC/FEC z Ethernet, powiązane z mocą Rx i czystością złączy (Fabric).
InfiniBand kontra RoCE w jednym akapicie
RoCE v2 przenosi ten sam transport verbs/RDMA po UDP/IP/Ethernet; zastępuje menedżera podsieci trasowaniem IP, a PKey — VLAN-ami, oraz zastępuje sterowanie przepływem na bazie kredytów mechanizmem PFC/ECN (DCQCN) — który musi być poprawnie skonfigurowany, by zapewnić bezstratność (Ethernet bezstratny, Połączenia międzysystemowe). Transceivery są fizycznie takie same; różni się tylko kodowanie tożsamości i polityki hosta.
W CodingBox
Moduły InfiniBand odczytuje się tak samo jak każdy QSFP/OSFP: dane identyfikacyjne (w tym bity szybkości InfiniBand w bajcie 164 SFF-8636 lub w aplikacjach CMIS), DDM dla każdej linii i sumy kontrolne w Check transceiver oraz DDM. Port negocjujący poniżej znamionowej szybkości warto sprawdzić na stanowisku po obu stronach.