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

Lossless Ethernet для хранения: DCB, PFC, ECN

Ethernet отбрасывает кадры при перегрузке; протоколы хранения, построенные для Fibre Channel или RDMA, предполагают, что ничего никогда не теряется. Data Center Bridging (DCB) закрывает разрыв управлением потоком по приоритетам и распределением полосы, а RoCE добавляет сверху сигнализацию перегрузки. Результат без потерь ровно настолько, насколько хорош худший линк: маргинальная оптика, теряющая один кадр на миллион, — инцидент хранения. Здесь — механизмы и их перевод в требования к физическому уровню.

Набор инструментов DCB

СтандартИмяЧто делает
IEEE 802.1QbbPFC — управление потоком по приоритетамкадры паузы на класс трафика (0–7): перегруженный приёмник останавливает один класс, не останавливая порт
IEEE 802.1QazETS — расширенный выбор передачигарантированные доли полосы по классам (например, 50 % хранение, 50 % LAN)
IEEE 802.1QazDCBX — обмен DCBсогласование настроек PFC/ETS между коммутатором и NIC на базе LLDP
IEEE 802.1QauCN — уведомление о перегрузкевнедряется редко
RFC 3168 + DCQCNмаркировка ECN + управление скоростьюкоммутатор маркирует пакеты при росте очередей; NIC RoCE замедляют поток до того, как понадобится PFC

Как RoCE остаётся без потерь

  1. Трафик хранения/RDMA помечается выделенным приоритетом (часто 3 или 4) через DSCP или 802.1p.
  2. PFC включён только для этого приоритета на каждом порту вдоль пути, с буферным запасом (headroom), рассчитанным под скорость линка и длину кабеля (байты в полёте).
  3. Пороги ECN маркируют пакеты рано; NIC выполняют DCQCN, снижая скорость, так что PFC срабатывает лишь в крайнем случае.
  4. ETS гарантирует классу хранения его полосу под нагрузкой LAN.
  5. DCBX держит настройки NIC и коммутатора согласованными; несовпадения молча ломают отсутствие потерь.

FC и InfiniBand достигают того же кредитами на каждой линии по умолчанию; Ethernet требует настройки, проверки и мониторинга (Основы протокола FC, Транспорт InfiniBand).

Что может пойти не так

ПроблемаЭффектОбнаружение
PFC не включён на одном хопе / неверный приоритетпотери под нагрузкой; повторы RDMA; всплески задержкисчётчики паузы нулевые там, где не должны; потери на классе
Шторм PFCзалипший приёмник бесконечно паузит вышестоящих; перегрузка расходится по фабрикепоток кадров паузы; счётчики watchdog
Дедлок PFCциклическая зависимость буферов в фабриках Clos; весь трафик класса останавливаетсянужно обнаружение дедлока / watchdog для разрыва
Слишком малый headroom для длинных кабелей/оптикипотери несмотря на PFCпотери при активных счётчиках паузы
Неверные пороги ECNслишком рано: потеря пропускной способности; слишком поздно: потоки PFCсчётчики маркировок ECN, счётчики CNP на NIC
Физические ошибки на линке (CRC, неисправимый FEC)потерянные кадры, которые никакое управление потоком не вернётсчётчики ошибок портов, счётчики FEC — VDM и метрики FEC

iSCSI без DCB

iSCSI работает поверх TCP и переживает потери, но платит задержкой и повторами. Лучшие практики независимо от DCB:

  • выделенные VLAN/подсети на фабрику, две фабрики, MPIO на хостах;
  • jumbo-кадры (MTU 9000) из конца в конец;
  • без переподписки между инициаторами и целями; аплинки 25G/100G под массив;
  • FEC включён на каждом линке 25G+; счётчики CRC на нуле;
  • опционально PFC на классе iSCSI для сглаживания микровсплесков (многие массивы рекомендуют).

Требования к физическому уровню

ТребованиеПочемуПрактика
FEC включён и согласован на каждом линке 25G+RoCE не терпит сырой BER незащищённых каналов 25G/50GFEC и обучение линка
CRC и неисправимый FEC = 0каждый потерянный кадр останавливает очередьалерт на любой прирост
Rx внутри окна с запасоммаргинальная оптика даёт всплески ошибок при температуреМощность приёма и бюджет линии
Согласованные скорость/дуплекс/ANDAC нужны AN + обучение линка на обоих концахМедь и DAC
Длина кабеля в предположениях headroomheadroom считается из байтов в полётеDAC в стойке, SR/AOC в ряду, DR/LR между залами
Идентификация принята NIC и коммутаторомотвергнутая оптика — нет линка или пониженная скоростьВендор-лок

Чек-лист мониторинга

  • По портам: отправленные/принятые кадры паузы по приоритетам, маркировки ECN, потери по классам, CRC, исправленный/неисправимый FEC, флапы линка.
  • По NIC: отправленные/принятые CNP, повторы, нарушения порядка, таймауты.
  • По оптике: тренды мощности Rx/Tx и температуры (Мониторинг).
  • Сопоставляйте всплески хвостовой задержки хранилища с перечисленным — физический уровень виновен чаще массива.

В CodingBox

Фабрика без потерь строится из обычной оптики, к которой просто предъявляют более высокие требования. Входной контроль на столе — идентификация, суммы, живой DDM относительно типовых значений, сохранённая база — так маргинальные модули не попадают в фабрику, где один плохой линк стоит приложению SLA по задержке (Check transceiver, DDM).