CodingBox Документация

NVMe over Fabrics: FC-NVMe, NVMe/TCP, NVMe/RoCE и их оптика

NVMe заменил SCSI внутри сервера, потому что флеш достаточно быстр, чтобы обнажить накладные расходы протокола; NVMe over Fabrics (NVMe-oF) несёт тот же набор команд через сеть, чтобы общее хранилище не отставало. Он работает поверх трёх транспортов, ложащихся на три вида сетей — а значит, на три вида оптики и три набора правил физического уровня. Здесь они сравниваются, и сказано, чего каждый требует от линков.

Зачем NVMe-oF

АспектЭра SCSI (FCP, iSCSI)NVMe-oF
Очереди командодна очередь, ~32–256 команддо 64k очередей × 64k команд; параллелен по замыслу
Накладные расходы протокола на I/Oдесятки мкс времени ЦПединицы мкс; транспорты RDMA обходят ЦП
Задержка, добавленная фабрикойтипично 100–200 мкс10–30 мкс (RDMA/FC), 30–80 мкс (TCP)
Лучше всего дляHDD и ранних флеш-массивовall-flash, дезагрегированное хранение, конвейеры данных GPU

Транспорты

ТранспортСетьБез потерь?ЗадержкаПримечания
FC-NVMe (FC-NVMe-2)Fibre Channel 16/32/64GFCда, кредитамиочень низкаяработает рядом с SCSI FCP на той же фабрике и тех же SFP; зонирование и сервер имён без изменений (Основы протокола FC)
NVMe/RoCE v2Ethernet 25/100/200/400G с RDMA-NICтребует PFC/ECN (DCQCN)очень низкаяverbs RDMA поверх UDP/IP; нужна конфигурация без потерь из конца в конец (Lossless Ethernet)
NVMe/TCPлюбой Ethernet/IPнет — потери обрабатывает TCPнизкая — средняябез специальных NIC и функций коммутаторов; маршрутизируем; массовый выбор для предприятий
NVMe/IBInfiniBandда, кредитамиочень низкаяхранение HPC/AI (InfiniBand)

Все четыре делят архитектуру NVMe-oF: контроллер обнаружения сообщает хостам, какие подсистемы существуют; хосты подключают очереди к контроллерам ввода-вывода; ANA (асимметричный доступ к пространствам имён) обрабатывает многопутёвость.

Чего каждый требует от физического уровня

ТранспортТребование к линкуОптика
FC-NVMeчистые линки FC — CRC/ITW около нуля, кредиты не исчерпаныFC SFP 16/32/64GFC, валидированные вендором (Оптика FC)
NVMe/RoCEноль потерь: FEC включён, PFC на классе RoCE, нет ошибок CRC (каждый потерянный кадр останавливает очередь RDMA с повтором go-back-N)25G SFP28 / 100G QSFP28 / 400G; DAC в стойке, SR/AOC в ряду, LR/DR между залами; FEC по PMD
NVMe/TCPобычное; потери стоят задержки, не корректностилюбая оптика Ethernet
NVMe/IBкак у фабрик InfiniBandкабели и оптика IB (Кабелирование IB)

Чувствительный — RoCE: линк с маргинальным Rx или грязным разъёмом даёт ошибки CRC, которые TCP поглотил бы молча, но которые заметно останавливают очереди RDMA. Всплески задержки хранилища, следующие за счётчиками ошибок порта, — признак (Мощность приёма и бюджет линии, VDM и метрики FEC).

Выбор

СитуацияРазумный транспорт
Существующая FC SAN, all-flash массивыFC-NVMe — та же фабрика, та же оптика, включить на цели
Новое Ethernet-хранение, разные вендоры, маршрутизация между площадкамиNVMe/TCP
Критичная задержка, Ethernet одного вендора, экспертиза lossless в штатеNVMe/RoCE
Кластер HPC/AI с фабрикой IBNVMe/IB или параллельные файловые системы поверх IB
GPU-кластеры с Ethernet scale-outNVMe/RoCE или NVMe/TCP в отдельной сети хранения (GPU-фабрики)

Эксплуатационные заметки

  • Отдельные сети для хранения и вычислений, где возможно, — или хотя бы отдельные классы трафика; RoCE нужен свой класс без потерь.
  • MTU: 9000 на Ethernet-транспортах; одинаково из конца в конец.
  • Многопутёвость: две фабрики или два VLAN/leaf; инициаторы с поддержкой ANA.
  • Мониторинг: счётчики CRC/FEC и pause по портам плюс тренды DDM — деградирующая оптика проявляется хвостовой задержкой задолго до отказа (Мониторинг).
  • Прошивки: матрицы совместимости прошивок NIC/HBA и массивов важны не меньше совместимости оптики (Оптика в SAN).

В CodingBox

Оптика фабрики NVMe-oF — обычные модули FC, Ethernet или IB; разница в том, как мало ошибок терпит транспорт. Чтение идентификации и базового DDM на столе до установки (Check transceiver, DDM) и кодирование идентификаций, принимаемых вендорами массивов и коммутаторов (Вендор-лок), — те части работы, которые касаются программатора.