CMIS — общий интерфейс управления · Спецификации и стандарты · Оптические трансиверы и кабели · Документация · CodingBox
CodingBox Документация

CMIS — общий интерфейс управления

CMIS, Common Management Interface Specification, — модель управления для всех новых высокоскоростных форм-факторов: QSFP-DD, OSFP, OSFP-XD, QSFP112, SFP-DD и SFP112 (как SFP+ с CMIS), DSFP, COBO и CMIS-совместимых QSFP. Она началась в QSFP-DD MSA (CMIS 3.0, 2018), была принята группами OSFP и COBO, а с версии 5.0 (2021) сопровождается в OIF. По сравнению с SFF-8636 это не карта памяти побольше, а другая модель: банки страниц до 32 каналов, явные конечные автоматы модуля и каждого тракта данных, применения вместо битовых полей соответствия, универсальная диагностика (VDM) и командный канал (CDB) для прошивки и расширенных функций. Байт версии и история: Ревизии спецификаций.

Модель памяти

ОбластьАдресацияСодержимое
Нижняя страница (байты 0–127)видна всегдаидентификатор, ревизия, состояние модуля, флаги, мониторы модуля, глобальное управление, тип среды, дескрипторы применений 1–8, пароль, выбор банка 126, выбор страницы 127
Верхняя страница 00h (128–255)страница 127 = 00hблок вендора, класс мощности, разъём, длины кабеля, технология среды, контрольная сумма
01hобъявление возможностейревизии прошивки/железа, длины линий, длина волны, поддерживаемые страницы и банки, длительности, управление целостностью сигнала, дескрипторы 9–15
02hпорогипороги аварий/предупреждений модуля и каналов
04hвозможности лазерасетки и диапазоны перестраиваемого лазера (наследие SFF-TA-1004)
10h (банки)управление каналамидеинициализация тракта, Tx disable, полярность, squelch, эквализация, staged control sets
11h (банки)состояние каналовсостояния трактов, поканальные флаги, мониторы каналов, статус конфигурации, active control set
12h (банки)управление перестраиваемым лазеромканал/длина волны по каналам
13h–14h (банки)диагностикапетли, генераторы и проверщики PRBS
20h–2Fh (банки)VDMдескрипторы, выборки, пороги, флаги
9FhCDBкомандный блок: ID команды, длины, контрольная сумма, локальная нагрузка
A0h–AFhCDB EPLрасширенная нагрузка для больших передач (образы прошивки)
80h–FFh (прочие)вендорпользовательские страницы

Банк адресует 8 каналов: банк 0 — каналы 1–8, банк 1 — 9–16 и т. д.; сколько реализовано — объявлено на странице 01h. Модули только со страницей 00h выставляют бит плоской памяти (байт 2 бит 7). Шина: один адрес A0h, до 400 кГц, ModSelL на слот — двухпроводной интерфейс.

Нижняя страница — байты, которыми живёт хост

БайтыПолеПримечания
0Идентификатор18h QSFP-DD, 19h OSFP, 1Eh QSFP с CMIS… (SFF-8024)
1Ревизия CMISнибблы major.minor: 50h = 5.0, 40h = 4.0, 30h = 3.0
2Характеристики памятибит 7 плоская память, плюс stepped-config-only и другие биты возможностей
3Состояние модулябиты 3–1: 1 LowPwr, 2 PwrUp, 3 Ready, 4 PwrDn, 5 Fault; бит 0 прерывание снято
8–11Флаги модулясмена состояния, аварии температуры/Vcc, aux-аварии, пользовательские; защёлкиваются, сбрасываются чтением
14–25Мониторы модулятемпература, Vcc, Aux1–Aux3 (ток TEC, температура лазера, дополнительное питание), пользовательский
26Глобальное управление5.x: бит 6 LowPwrAllowRequestHW, бит 5 метод squelch, бит 4 LowPwrRequestSW, бит 3 программный сброс (4.x: бит 6 LowPwr, бит 4 ForceLowPwr)
37–38Статус CDBзанято / успех / отказ для командных блоков 1 и 2
39–40Активная прошивкаmajor.minor работающего образа
85Тип среды01h MMF, 02h SMF, 03h пассивная медь, 04h активный кабель, 05h BASE-T
86–117Дескрипторы применений 1–8по 4 байта: ID интерфейса хоста, ID медиа-интерфейса, число каналов хоста/среды, варианты назначения каналов хоста
118–121Смена пароляопределяется вендором
122–125Ввод пароляопределяется вендором — куда вводятся пароли защиты от записи
126Выбор банка—
127Выбор страницы—

Конечный автомат модуля

Reset ──► MgmtInit ──► ModuleLowPwr ──► ModulePwrUp ──► ModuleReady
                            ▲                              │
                            └──────── ModulePwrDn ◄────────┘
                  (ModuleFault из любого состояния при фатальной ошибке)
  • MgmtInit — модуль загружает контроллер; идентификация ещё не читается (до 2 с по аппаратным спецификациям).
  • ModuleLowPwr — идентификация, объявления и пороги читаются; мощность ограничена классом 1; здесь хост валидирует модуль.
  • ModulePwrUp → ModuleReady — хост снимает пин LPMode (или сбрасывает LowPwrRequestSW), модуль запитывает оптику; теперь можно инициализировать тракты.
  • ModulePwrDn — обратный путь при выставлении LPMode.

Модуль, который никогда не выходит из LowPwr, — классический тикет CMIS: Проблемы CMIS, Питание и тепло.

Применения и тракт данных

Вместо битов соответствия CMIS-модуль объявляет применения — пары «электрический интерфейс хоста + медиа-интерфейс» с числом каналов:

ДескрипторИнтерфейс хостаМедиа-интерфейсКаналы хоста / средыПример
App 112h 400GAUI-8 C2M1Ch 400GBASE-DR48 / 4один линк 400G
App 20Eh 100GAUI-2 C2M14h 100GBASE-DR2 / 1breakout 4 × 100G

Хост выбирает применение для каждого канала, записывая AppSel (биты 7–4), DataPathID (биты 3–1) и бит явного управления в Staged Control Set 0 (страница 10h байты 145–152), затем выставляет ApplyDPInit (страница 10h байт 143). Модуль отвечает в ConfigStatus (страница 11h байты 202–205: принято, отвергнуто, неверный AppSel, недопустимая комбинация каналов…) и копирует принятые значения в Active Control Set (страница 11h 206–221). Далее каждый тракт идёт по своему автомату:

DPDeactivated ──► DPInit ──► DPInitialized ──► DPTxTurnOn ──► DPActivated
       ▲                                                          │
       └────────── DPDeinit ◄───────── DPTxTurnOff ◄──────────────┘

Состояния отдаются по каналам в байтах 128–131 страницы 11h (по нибблу на канал), а максимальные длительности каждого шага объявлены на странице 01h, чтобы хост знал, сколько ждать. Tx disable по каналам — байт 130 страницы 10h. Breakout, которого модуль не перечислил как применение, просто недоступен — Скорость и режимы.

Мониторинг: флаги, мониторы, VDM

  • Мониторы модуля (нижняя страница 14–25) и мониторы каналов (страница 11h: мощность Tx 154–169, ток Tx 170–185, мощность Rx 186–201, по 2 байта на канал) используют те же 16-битные форматы, что SFP/QSFP (единицы).
  • Пороги — на странице 02h; флаги защёлкиваются и сбрасываются чтением, с масками на каждый; IntL сигнализирует о любом незамаскированном флаге.
  • VDM (страницы 20h–2Fh) добавляет наблюдаемые, которых у старых спецификаций не было: BER до FEC, неисправимые кадры FEC, SNR по каналам, температура и возраст лазера, eSNR, параметры переходов уровней PAM4 — каждая со своим дескриптором, порогами и флагами. Так модуль 400G сообщает о качестве линка до того, как ошибки дойдут до хоста (Мониторинг).

CDB — Command Data Block

Страница 9Fh — почтовый ящик: хост пишет ID команды (байты 128–129), длины нагрузки (130–132), контрольную сумму (133) и до 120 байт локальной нагрузки (136–255), при необходимости больше — в страницах EPL A0h–AFh; модуль исполняет и отчитывается в байтах статуса 37–38 и ответной нагрузке. Стандартные команды:

КомандаНазначение
0000hзапрос статуса
0040h / 0041hвозможности модуля / возможности управления прошивкой
0100hсведения о прошивке (работающий и неактивный образы)
0101hначать загрузку прошивки
0103h / 0104hзаписать блок прошивки через LPL / EPL
0107hзавершить загрузку
0109h / 010Ahзапустить образ / зафиксировать образ
0102hпрервать

Через CDB вендорские утилиты обновляют прошивку модулей в поле, а некоторые вендоры реализуют конфигурацию и разблокировку. Поддержка и возможности объявлены на странице 01h.

Контрольные суммы и пароли

Байт 222 страницы 00h — сумма байтов 128–221; страницы 01h, 02h и 04h несут контрольную сумму страницы в байте 255 (Контрольные суммы). Пароли (122–125) и вендорские схемы разблокировки лежат вне спецификации — Перекодировка EEPROM.

Поддержка хостами

Сетевые ОС реализуют CMIS 4.0 и 5.x с разной глубиной: одни ведут полный цикл применение/тракт, другие снимают LPMode и ждут, что модуль поднимется сам. За этой разницей стоит большинство тикетов «опознан, но не готов» — Проблемы CMIS, Что делает хост.

В CodingBox

CodingBox определяет CMIS по идентификатору и байту ревизии, читает нижнюю память, страницы 00h, 01h, 02h и банковые страницы каналов, декодирует дескрипторы применений по SFF-8024, показывает состояния модуля и трактов и поканальные мониторы на DDM, правит идентификацию с пересчётом контрольных сумм страниц в редакторе EEPROM. Операции с прошивкой через CDB вендорские и лежат вне области редактора.

Таблицы уровня регистров: Карта нижней страницы, Карта верхних страниц 00h/01h/02h, Карта канальных страниц 10h/11h, VDM, CDB.


Если вы обнаружили неточность или ошибку в материале, выделите соответствующий фрагмент и нажмите сочетание клавиш Ctrl+Enter, чтобы .