VDM и метрики FEC: PAM4-линки
На 50G на канал и выше оптическая мощность перестаёт быть достаточным индикатором здоровья: PAM4-линк с идеальным Rx может быть в одном грязном разъёме от неисправимых ошибок, и первый признак — не дБм, а коэффициент битовых ошибок. Это число дают два источника. Внутри модуля VDM (Versatile Diagnostics Monitoring) CMIS отдаёт BER до FEC, SNR и здоровье лазера по каналам; на хосте декодер FEC считает исправленные и неисправленные кодовые слова. Вместе они показывают, как далеко линк от отказа, пока он ещё несёт трафик без потерь.
Почему FEC изменил диагностику
Каждый PMD Ethernet 25G+ на PAM4 (и большинство на 25G NRZ) предполагает FEC Рида — Соломона. Оптике разрешено выдавать сырой коэффициент ошибок 10⁻⁵–10⁻⁴, потому что FEC чинит его до 10⁻¹² и лучше. Следствие: деградирующий линк показывает MAC вообще ноль ошибок, пока не перейдён предел FEC, а затем отказывает резко. BER до FEC — единственный плавный индикатор запаса.
| FEC | Код | Исправляет на кодовое слово | Предел BER до FEC для 10⁻¹² на выходе (прибл.) | Где |
|---|---|---|---|---|
| BASE-R («FC-FEC», Clause 74) | Fire code (2112, 2080) | всплески по 11 бит | ≈ 10⁻⁷ … 10⁻⁸, выигрыш ~2 дБ | 10G/25G NRZ, CA-25G-S |
| RS-FEC KR4 (Clause 91/108) | RS(528, 514) над GF(2¹⁰) | 7 символов | ≈ 5 × 10⁻⁵ | 25GBASE-CR/SR/LR, 100GBASE-SR4/CWDM4/CR4 |
| RS-FEC KP4 (Clause 119/134) | RS(544, 514) | 15 символов | ≈ 2,4 × 10⁻⁴ | все каналы 50G PAM4: 50G/100G/200G/400G/800G |
| Каскадный / oFEC (когерент) | внутренний + внешний коды | — | ≈ 10⁻² … 2 × 10⁻² | 400ZR (CFEC), OpenZR+ (oFEC) |
Несовпадения конфигурации: FEC, автосогласование и обучение линка.
VDM — что отдаёт модуль
VDM живёт на страницах CMIS 20h–2Fh (банками по 8 каналов) и объявляется на странице 01h. У каждой наблюдаемой есть дескриптор (тип, канал), живая выборка, четыре порога и флаги — ровно как у классических мониторов.
| Страницы | Содержимое |
|---|---|
| 20h–23h | дескрипторы: какая наблюдаемая, какой канал, какой набор порогов |
| 24h–27h | выборки (по 2 байта) |
| 28h–2Bh | пороги: верхняя/нижняя авария, верхнее/нижнее предупреждение |
| 2Ch–2Fh | флаги и маски |
Типы наблюдаемых (CMIS 4.0/5.x)
| ID | Наблюдаемая | Единица / формат | Что говорит |
|---|---|---|---|
| 1 | Возраст лазера | % (U16) | оценка вендора израсходованной жизни |
| 2 | Ток TEC | % от макс. (S16) | нагрузка охладителя — Температура и напряжение |
| 3 | Ошибка частоты лазера | МГц (S16) | DWDM/ZR: отклонение от сетки |
| 4 | Температура лазера | °C (S16, 1/256) | охлаждаемые лазеры |
| 5 / 6 | eSNR, вход со стороны среды / хоста | дБ (U16, 1/256) | электрический SNR после эквализации — «высота глаза» PAM4; > 18–20 дБ комфортно, < 15 дБ маргинально (зависит от вендора) |
| 7 / 8 | Параметр переходов уровней PAM4, среда / хост | дБ | линейность четырёх уровней |
| 9 / 10 | BER до FEC минимум, среда / хост | F16 | лучшее за интервал |
| 11 / 12 | BER до FEC максимум | F16 | худшее за интервал — число, по которому алертить |
| 13 / 14 | BER до FEC среднее | F16 | — |
| 15 / 16 | BER до FEC текущее | F16 | последняя выборка |
| 17–24 | FERC (счёт ошибочных кадров) мин / макс / среднее / текущее, среда / хост | F16 | неисправимые кадры после FEC — должно быть 0 |
| 128+ | когерентный набор (CMIS 5.x): смещение модулятора, CD, DGD, SOPMD, OSNR, eSNR, Q-фактор, полная/сигнальная мощность Rx, смещение частоты несущей… | разные | модули 400ZR/ZR+ |
F16 — 16-битный формат отношений CMIS: 5-битная экспонента и 11-битная мантисса, значение = мантисса × 10^(экспонента − 24). BER до FEC 1,5 × 10⁻⁶ хранится как мантисса 1500 при экспоненте 15. Сторона среды = оптическая линия; сторона хоста = электрический интерфейс к ASIC коммутатора — плохой BER на стороне хоста указывает на разъём или плату, а не на волокно.
Счётчики FEC на хосте
Коммутатор или сетевая карта считает на порт и часто на канал:
| Счётчик | Здорово | Внимание | Отказ |
|---|---|---|---|
| Исправленные кодовые слова | растут медленно (BER до FEC 10⁻⁸ … 10⁻⁶) | быстрый рост (10⁻⁵ при KP4) | у предела |
| Неисправимые кодовые слова | 0 | любой прирост | постоянный прирост = потеря кадров |
| Ошибки символов по каналам | сбалансированы | один канал доминирует | волокно/разъём/лазер этого канала |
| BER до FEC (производный) | < 10⁻⁷ | 10⁻⁶ … 10⁻⁵ | > 10⁻⁴ (KP4) |
Где читать: show interfaces … fec / phy detail на большинстве NOS (Проверка оптики), ethtool -S (fec_corrected_blocks, fec_uncorrectable_blocks) и ethtool --show-fec в Linux, show interfaces counters fec в SONiC. Счётчики накопительные — сбрасывайте и смотрите скорость.
Как читать оба вместе
| Мощность Rx | BER до FEC / eSNR | Неисправимые | Диагноз |
|---|---|---|---|
| в окне | < 10⁻⁷, eSNR высокий | 0 | здорово, с запасом |
| в окне | 10⁻⁵, eSNR падает на одном канале | 0 | канал деградирует: грязное волокно MPO, стареющий VCSEL, маргинальный разъём — чинить до отказа (Поканальная диагностика) |
| низкая | высокий | есть | проблема бюджета — Мощность приёма и бюджет линии |
| в окне на обоих концах | высокий на стороне хоста | есть | электрика: контакт клетки/разъёма, плата, качество DAC, неверные настройки эквализации |
| в окне | высокий на стороне среды, все каналы | есть | дисперсия, неверный класс дальности, длина волны мимо мультиплексора, частично неверная полярность |
| в норме | 0 ошибок, линк флапает | 0 | не сигнал — несовпадение FEC/AN, тепло, софт |
Пороги и алерты
Пороги VDM ставит вендор; типичное верхнее предупреждение по BER до FEC — около десятой предела FEC (2 × 10⁻⁵ при KP4). Для алертов используйте скорости и тренды: BER до FEC, растущий на декаду за неделю, — наряд на работу независимо от порогов (Мониторинг). Неисправимые ошибки после FEC — всегда инцидент.
Где VDM нет
У модулей SFF-8472 и SFF-8636 VDM нет: линки 10G/25G/100G NRZ опираются на счётчики FEC хоста и на мощность Rx. Некоторые модули SFF-8636 отдают вендорские SNR или BER на страницах 20h–21h или в вендорских байтах — читается только утилитой вендора. Для NRZ без FEC (10G LR, 1G) счётчики CRC/input errors интерфейса — единственный битовый взгляд.
В CodingBox
Для CMIS-модулей CodingBox читает дескрипторы и выборки VDM и показывает их по каналам рядом с классическими мониторами на DDM, декодируя отношения F16 в обычные числа. Счётчики FEC хоста лежат вне модуля и вне программатора — их даёт коммутатор.