Протокол и транспорт IB: уровни, QP, RDMA, менеджер подсети
InfiniBand с самого начала проектировался как фабрика для компьютеров, обращающихся к памяти друг друга, а не для пакетов между незнакомцами. Его уровни, адресация и управление непривычны инженерам Ethernet, но просты, как только словарь на месте, — и объясняют, почему к физическому уровню такие жёсткие требования. Здесь — взгляд со стороны протокола; оптика — в Оптике InfiniBand.
Уровни
| Уровень | Содержимое | Примечания |
|---|---|---|
| Физический | каналы (1x, 4x, 8x, 12x), сигнал канала (от NRZ до PAM4 в HDR… см. скорости), кодирование (8B/10B до QDR, 64B/66B с FDR), FEC (с FDR опционально, RS-FEC на HDR/NDR) | мир трансивера |
| Канальный | локальный заголовок маршрутизации (LRH) с LID, виртуальные каналы (VL0–VL14 данные, VL15 управление), кредитное управление потоком по VL, CRC канального уровня (ICRC/VCRC) | без потерь по замыслу |
| Сетевой | глобальный заголовок (GRH) со 128-битными GID для маршрутизации между подсетями | внутри одного кластера редко |
| Транспортный | пары очередей (QP) с очередями отправки/приёма, типы сервиса RC/UC/UD/XRC, сегментация до MTU, ACK/NAK для надёжного сервиса | здесь живёт RDMA |
| Верхний | API verbs, MPI, NCCL (через UCX/SHARP), хранение (SRP, iSER, NVMe/IB), IPoIB | что используют приложения |
Адресация и идентичность
| Идентификатор | Размер | Назначает | Смысл |
|---|---|---|---|
| GUID | 64 бит | производитель | постоянная идентичность порта, узла или системы (как MAC) |
| LID (локальный идентификатор) | 16 бит | менеджер подсети | адрес внутри подсети; таблицы пересылки используют LID |
| GID | 128 бит | SM (префикс) + GUID | префикс подсети + GUID; используется между подсетями и в RoCE |
| PKey (ключ раздела) | 16 бит | SM | членство в разделе (как VLAN); полные/ограниченные члены |
| QPN | 24 бит | HCA | номер пары очередей — конечная точка внутри порта |
Пары очередей и транспортные сервисы
Пара очередей — одна очередь отправки и одна очередь приёма в HCA, принадлежащие приложению. Помещённые в неё рабочие запросы исполняет железо; завершения попадают в очередь завершений. Типы сервиса:
| Тип | Надёжный | С соединением | Применение |
|---|---|---|---|
| RC — reliable connected | да (ACK/NAK, повтор) | да, одна QP на партнёра | большая часть RDMA-трафика; MPI, NCCL, хранение |
| UC — unreliable connected | нет | да | редко |
| UD — unreliable datagram | нет | нет, одна QP на всех партнёров | управление, IPoIB, многоадресность |
| XRC — extended reliable connected | да | общие очереди приёма между процессами | большие задачи MPI ради сокращения числа QP |
| RD — reliable datagram | да | нет | практически не используется |
Операции RDMA (READ, WRITE, атомарные) переносят данные напрямую между буферами приложений на двух хостах без копирования ЦП; SEND/RECEIVE несёт сообщения. Память должна быть зарегистрирована (закреплена и снабжена ключом), прежде чем HCA сможет её трогать. GPUDirect RDMA распространяет это на память GPU (GPU-фабрики).
Управление потоком и MTU
Каждая линия работает с кредитным управлением потоком по виртуальным каналам: приёмник объявляет буферное пространство, отправитель никогда не передаёт больше, чем тот может принять. Ни один кадр не отбрасывается из-за перегрузки; вместо этого распространяется обратное давление — тот же компромисс, что кредиты Fibre Channel, и причина, по которой одна медленная или ошибочная линия деградирует всю задачу. MTU линии 256–4096 байт (обычно 4096); MTU пути согласуется из конца в конец. Уровни сервиса (SL) отображаются на VL для разделения классов трафика, а адаптивная маршрутизация может уводить потоки от перегруженных линий.
Менеджер подсети
В подсети активен ровно один менеджер подсети (SM) (остальные в резерве). Он:
- Обнаруживает топологию, обходя фабрику направленно маршрутизируемыми пакетами управления (SMP на VL15/QP0) — каждый порт коммутатора и HCA.
- Назначает LID и настраивает порты (скорость, ширина, MTU, арбитраж VL, PKey).
- Вычисляет маршруты — min-hop, up-down, fat-tree, dragonfly+, адаптивная маршрутизация — и программирует линейную таблицу пересылки каждого коммутатора.
- Периодически обходит фабрику и реагирует на трапы (порт up/down), перемаршрутизируя в обход отказов.
- Запускает администратора подсети (SA), отвечающего на запросы путей от хостов.
Его реализуют OpenSM (open source) и вендорские менеджеры фабрики (UFM); менеджер фабрики — также место, где по всему парку собираются ошибки портов, результаты согласования скорости/ширины и DDM оптики (Надёжность линков и мониторинг).
Согласование линии
При поднятии линии оба конца согласуют ширину (1x/2x/4x) и скорость (на канал) до старшего общего значения. Линия, поднявшаяся на 2x или на поколение медленнее ожидаемого, — InfiniBand-эквивалент «линкуется на 10G, а не 25G» в Ethernet: волокно или лазер одного канала, маргинальный кабель или несовпадение поколений трансиверов (Скорость и режимы). Менеджер фабрики сообщает согласованное состояние; ibstat / ibportstate показывают его на хосте.
Инструменты управления и диагностики
| Инструмент | Назначение |
|---|---|
ibstat, ibstatus | состояние локального порта, скорость, ширина, LID |
ibnetdiscover | дамп топологии |
ibdiagnet | проверка всей фабрики: ошибки, несовпадения скорости/ширины, дубликаты GUID, сведения о кабелях |
perfquery, ibqueryerrors | счётчики по портам: символьные ошибки, падения линии, восстановления линии, ошибки приёма порта, переполнения буфера, отброшенные VL15, счётчики FEC |
mlxlink, mlxcables | детали PHY по портам и EEPROM кабеля/трансивера, DDM, гистограмма FEC |
ibportstate | принудительная скорость/ширина, сброс порта |
Символьные ошибки и восстановления линии — счётчики физического уровня, эквиваленты CRC/FEC Ethernet, связанные с мощностью Rx и чистотой (Фабрика).
InfiniBand против RoCE в одном абзаце
RoCE v2 несёт тот же транспорт verbs/RDMA поверх UDP/IP/Ethernet; он заменяет менеджера подсети IP-маршрутизацией, PKey — VLAN, а кредитное управление потоком — PFC/ECN (DCQCN), которые должны быть правильно настроены, чтобы быть без потерь (Lossless Ethernet, Интерконнекты). Трансиверы физически те же; отличаются только кодирование идентификации и политики хостов.
В CodingBox
Модули InfiniBand читаются как любые QSFP/OSFP: идентификация (включая биты скоростей InfiniBand в байте 164 SFF-8636 или применения CMIS), поканальный DDM и контрольные суммы на Check transceiver и DDM. Порт, согласовавшийся ниже номинальной скорости, стоит столового чтения обоих концов.