CMIS: конечный автомат, VDM и управление прошивкой
До CMIS модуль 400G был чёрным ящиком с прикрученным датчиком температуры. После — документированным конечным автоматом, который можно опрашивать по линиям.
Спросите трёх вендоров про «карту регистров» модуля 800G, и вы получите три документа, ни один из которых не полон. Это не противодействие вендоров; это то, что происходит, когда модуль содержит восемь линий, две прошивки, программируемый datapath и протокол согласования питания, а интерфейс управления был спроектирован для мира фиксированных регистров. CMIS — ответ отрасли, спецификация, поддерживаемая параллельно с поправками IEEE 802.3 PMD, — и её чтение меняет то, как вы эксплуатируете эти модули: конкретнее, оно превращает «модуль в порядке?» из тикета в скрипт.
Проблема, которую решал CMIS
Предыдущее поколение интерфейсов управления отображало функции модуля на фиксированные адреса памяти. Это работало, когда модуль был: один лазерный путь на вход, один на выход, одно состояние питания, может быть четыре линии. Модуль 400G или 800G ломает каждое из этих допущений:
- Линии умножились. Восемь электрических линий, которые можно сгруппировать как один порт 800G, два порта 400G или иные разбиения, выбираемые в ПО.
- Питание стало согласуемым. Хост должен знать, что модуль потребует, до его включения, на слот, потому что полностью заполненное шасси — это тепловой расчёт (см. руководство по выбору 800G, где это кусает).
- Диагностика стала богаче фиксированных регистров. Счётчики ошибок и измерения сигнала по линиям не влезают в статическую карту чисто.
- Прошивка стала обновляемой. Два образа, рабочий и закоммиченный, на pluggable-модуле, который может переезжать между шасси.
CMIS отвечает на все четыре одной моделью: модуль — маленький компьютер с документированным конечным автоматом, и хост говорит с ним соответственно.
Конечный автомат — это контракт
Часть CMIS, объясняющая большую часть полевого поведения, — модель состояний модуля и datapath. Модуль проходит через явные состояния, и от хоста ожидается оркестрация переходов — а не предположение, что модуль просто «поднят».
| Состояние | Что делает модуль | Что должен делать хост |
|---|---|---|
| ModuleLowPwr | Выключен или низкомощный простой после вставки | Прочитать идентичность, согласовать класс мощности |
| ModulePwrUp | Потребляет полную выделенную мощность | Ждать; пока не выдавать команд datapath |
| ModuleReady | Готов к конфигурации datapath | Настроить линии, затем запустить init |
| Состояния Datapath (по группе) | DPInit → Deinit → Initialized → TxTurnOn → TxTurnedOff → Ready | Поднимать только когда Ready; сбои init всплывают здесь первыми |
| ModulePwrDn | Выключение по запросу хоста | Демонтаж до извлечения, где поддерживается |
Два операционных следствия стоит усвоить.
Сбои init — это фича
Когда группа линий не доходит до Ready, CMIS говорит вам, в каком состоянии она застряла. «Застрял в DPInit» — несравнимо лучший симптом, чем «нет линка», потому что обычно означает несоответствие конфигурации — неподдерживаемое отображение линий, неподдерживаемая скорость, — а не мёртвый кремний.
Поведение брейкаута согласуется, а не магия
Разбиение модуля 800G на 2x400G — это акт конфигурации datapath. Если ПО коммутатора и модуль не согласны по назначению линий, несогласие всплывает в этих состояниях, что также объясняет, почему та же пара деталей, работающая в одном шасси, может отказать в другом со старым ПО.
Классы мощности: согласование, а не ярлык
CMIS определяет классы мощности, чтобы хост мог забюджетировать слот до включения модуля. Классы, релевантные текущим развёртываниям:
| Класс | Макс. мощность | Роль в развёртываниях 2026 |
|---|---|---|
| Класс 5 | 7 Вт | Детали класса 400G, устаревшие кейджи |
| Класс 6 | 10 Вт | Низкомощные дизайны 400G/800G |
| Класс 7 | 15 Вт | Основной 800G DR8/FR4 |
| Класс 8 | 20 Вт | Высокомощные детали; нужен подтверждённый обдув на слот |
Механизм важнее чисел: модуль объявляет свой класс, хост выделяет мощность, и состояния datapath не завершатся, если выделение так и не произошло. Модуль, включающийся на стенде, но сидящий в ModuleLowPwr в конкретном слоте шасси, обычно говорит вам, что хост отказал или не смог выделить класс — решение бюджета слота или квалификации, а не аппаратный сбой. Та же телеметрия — основа диагностики теплового отключения, где класс мощности и измеренная температура читаются вместе.
VDM: телеметрия, ловящая деградирующие лазеры
Vendor Defined Mechanisms — наименее гламурно названная и наиболее операционно ценная часть CMIS. Они дают стандартный способ раскрывать измерения сверх фиксированного обязательного набора, адресуемые по дескриптору, с определёнными единицами и масштабом.
| Пример VDM | Что измеряет | Почему вам не всё равно |
|---|---|---|
| TX-мощность по линиям | Фактическая мощность запуска на линию | Ловит деградирующий драйвер до падения линка |
| Входная мощность по линиям | Принятая мощность на линию | Отделяет «слабый свет» от «грязного разъёма» |
| Пред-FEC битовые ошибки / исправленные биты | Качество канала до коррекции ошибок | Самый ранний количественный сигнал износа линии |
| Запас сигнал-шум | Оценка качества на стороне приёмника | Предсказывает, какие линки упадут первыми при добавленных потерях |
Счётчики пред-FEC ошибок заслуживают акцента.
Исправленные ошибки молчаливы
Исправленные ошибки невидимы для линка (для этого и нужен FEC), что значит, линия может деградировать месяцами, пока порт рапортует здоровым. Ночной скрипт, сэмплирующий дельты исправленных бит по линиям, превращает эту молчаливую деградацию в линию тренда, а линии тренда — то, что позволяет заменить модуль по своему графику, а не по графику линка.
Доступность VDM — по детали
Не каждый модуль реализует каждый VDM — стандарт определяет контейнер и контракт отчётности, а не обязательный список измерений. Часть квалификации модуля — записать, какие VDM раскрывает данный SKU, чтобы ваш мониторинг не предполагал телеметрию, которой никогда не было.
Прошивка: два образа и бит коммита
Управление прошивкой CMIS следует модели run/commit, знакомой по ПО коммутаторов:
- Модуль держит два слота образов. Обновление пишет inactive один, поэтому прерванное обновление оставляет рабочий образ нетронутым.
- Активация делает новый образ running; коммит заставляет его переживать циклы питания.
- Интерфейс сообщает версии по слотам, что и делает инвентаризацию флота скриптуемой.
Дисциплина, избегающая неприятностей:
Инвентаризация до трогания чего-либо
Соберите рабочие и закоммиченные версии по флоту; смешанные версии распространены больше, чем кто-либо признаёт, и обычно — причина «одна полка ведёт себя иначе».
Канарейка, выдержка, коммит
Обновляйте в канарейной группе, активируйте и выдерживайте, коммитьте только после периода выдержки, включающего как минимум одну переустановку и один цикл питания шасси. Коммит в тот же день, что и активация, — как латентное несоответствие образа становится сюрпризом на весь флот.
Держите семейства образов едиными на рельс
Никогда не мешайте семейства образов по рельсу — то же правило, что со смешиванием вендоров модулей, по той же причине: пороги аварии и поведение телеметрии дрейфуют между версиями.
Чего CMIS не решает
Три границы стоит обозначить, чтобы никто не преувеличивал:
- Интероперабельность. CMIS определяет разговор, а не исход. Два совместимых модуля всё ещё могут незаметно разойтись с хостом; для этого и нужны квалифицированные списки модулей.
- Физическое качество. Ни один интерфейс не делает грязный разъём MPO чище. Оптические проблемы всё ещё живут в волоконной системе.
- Расширения вендоров. Всё проприетарное всё ещё живёт за вендор-специфичными страницами. CMIS стандартизирует пол, а не потолок.
Источники
- QSFP-DD MSA - CMIS documentation - the Common Management Interface Specification (revision history, state machine and VDM framework).
- OSFP MSA - management and mechanical context for OSFP-family modules using CMIS.
- OIF - CMIS-LT project - link training extensions building on CMIS for 800G and beyond.
- IEEE 802.3df Task Force - the 800G PMD amendments whose modules CMIS manages; useful for seeing where the standard ends and the management interface begins.
Детали реализации варьируются по ревизии CMIS и вендору. Сверяйте имена состояний, доступность VDM и поведение прошивки с точной ревизией спецификации, которую реализуют ваши модули.
FAQ
- Это CMIS то же самое, что MSA QSFP-DD или OSFP?
- Нет. MSA определяют механический и электрический конверт; CMIS — спецификация интерфейса управления, публикуемая через ту же отраслевую группу и используемая на QSFP-DD, OSFP и других модулях 100G на линию. У модуля есть форм-фактор, и он работает на CMIS — двое отвечают на разные вопросы.
- Какая минимальная версия CMIS нужна при покупке?
- CMIS 4.0 — практический пол для закупок 800G: она довела до ума управление состояниями datapath и диагностику линий, от которых зависят брейкауты и скриптуемая диагностика. Версия 5.x добавляет улучшения в телеметрии и работе с прошивкой. Старые детали 400G с реализациями эпохи 3.x могут вести себя несогласованно между вендорами.
- Что такое VDM в одном предложении?
- Vendor Defined Mechanism: стандартизированный контейнер для измерений модуля, которые стандарт не фиксирует заранее — такие как счётчики пред-FEC битовых ошибок по линиям, — чтобы вендоры могли раскрывать реальную диагностику, не ломая интерфейс.
- Может ли обновление прошивки CMIS завершиться крахом и превратить модуль в кирпич?
- Правильная реализация обновляет неактивный образ прошивки и переключается при коммите, поэтому прерванное обновление оставляет рабочий образ нетронутым. Операционный риск — не в «окирпичивании» одного модуля; он в выкатке незакоммиченного или несоответствующего образа на флот с обнаружением только при следующей переустановке.
- Применим ли CMIS также к модулям 100G и 400G?
- Да. CMIS безразличен к скорости и появляется на модулях 100G на линию нескольких форм-факторов. Он важнее всего на 400G и выше, потому что именно там многолинейные datapath, классы мощности и брейкауты делают старую модель фиксированных регистров неработоспособной.