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 v2 | Ethernet 25/100/200/400G с RDMA-NIC | требует PFC/ECN (DCQCN) | очень низкая | verbs RDMA поверх UDP/IP; нужна конфигурация без потерь из конца в конец (Lossless Ethernet) |
| NVMe/TCP | любой Ethernet/IP | нет — потери обрабатывает TCP | низкая — средняя | без специальных NIC и функций коммутаторов; маршрутизируем; массовый выбор для предприятий |
| NVMe/IB | InfiniBand | да, кредитами | очень низкая | хранение 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 с фабрикой IB | NVMe/IB или параллельные файловые системы поверх IB |
| GPU-кластеры с Ethernet scale-out | NVMe/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) и кодирование идентификаций, принимаемых вендорами массивов и коммутаторов (Вендор-лок), — те части работы, которые касаются программатора.