Lossless Ethernet для хранения: DCB, PFC, ECN
Ethernet отбрасывает кадры при перегрузке; протоколы хранения, построенные для Fibre Channel или RDMA, предполагают, что ничего никогда не теряется. Data Center Bridging (DCB) закрывает разрыв управлением потоком по приоритетам и распределением полосы, а RoCE добавляет сверху сигнализацию перегрузки. Результат без потерь ровно настолько, насколько хорош худший линк: маргинальная оптика, теряющая один кадр на миллион, — инцидент хранения. Здесь — механизмы и их перевод в требования к физическому уровню.
Набор инструментов DCB
| Стандарт | Имя | Что делает |
|---|---|---|
| IEEE 802.1Qbb | PFC — управление потоком по приоритетам | кадры паузы на класс трафика (0–7): перегруженный приёмник останавливает один класс, не останавливая порт |
| IEEE 802.1Qaz | ETS — расширенный выбор передачи | гарантированные доли полосы по классам (например, 50 % хранение, 50 % LAN) |
| IEEE 802.1Qaz | DCBX — обмен DCB | согласование настроек PFC/ETS между коммутатором и NIC на базе LLDP |
| IEEE 802.1Qau | CN — уведомление о перегрузке | внедряется редко |
| RFC 3168 + DCQCN | маркировка ECN + управление скоростью | коммутатор маркирует пакеты при росте очередей; NIC RoCE замедляют поток до того, как понадобится PFC |
Как RoCE остаётся без потерь
- Трафик хранения/RDMA помечается выделенным приоритетом (часто 3 или 4) через DSCP или 802.1p.
- PFC включён только для этого приоритета на каждом порту вдоль пути, с буферным запасом (headroom), рассчитанным под скорость линка и длину кабеля (байты в полёте).
- Пороги ECN маркируют пакеты рано; NIC выполняют DCQCN, снижая скорость, так что PFC срабатывает лишь в крайнем случае.
- ETS гарантирует классу хранения его полосу под нагрузкой LAN.
- 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/50G | FEC и обучение линка |
| CRC и неисправимый FEC = 0 | каждый потерянный кадр останавливает очередь | алерт на любой прирост |
| Rx внутри окна с запасом | маргинальная оптика даёт всплески ошибок при температуре | Мощность приёма и бюджет линии |
| Согласованные скорость/дуплекс/AN | DAC нужны AN + обучение линка на обоих концах | Медь и DAC |
| Длина кабеля в предположениях headroom | headroom считается из байтов в полёте | DAC в стойке, SR/AOC в ряду, DR/LR между залами |
| Идентификация принята NIC и коммутатором | отвергнутая оптика — нет линка или пониженная скорость | Вендор-лок |
Чек-лист мониторинга
- По портам: отправленные/принятые кадры паузы по приоритетам, маркировки ECN, потери по классам, CRC, исправленный/неисправимый FEC, флапы линка.
- По NIC: отправленные/принятые CNP, повторы, нарушения порядка, таймауты.
- По оптике: тренды мощности Rx/Tx и температуры (Мониторинг).
- Сопоставляйте всплески хвостовой задержки хранилища с перечисленным — физический уровень виновен чаще массива.
В CodingBox
Фабрика без потерь строится из обычной оптики, к которой просто предъявляют более высокие требования. Входной контроль на столе — идентификация, суммы, живой DDM относительно типовых значений, сохранённая база — так маргинальные модули не попадают в фабрику, где один плохой линк стоит приложению SLA по задержке (Check transceiver, DDM).