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

Что делает хост: обнаружение, проверка, запуск

Спецификации описывают сторону модуля — пины, память, состояния. Эта страница описывает сторону хоста: последовательность, которую коммутатор, маршрутизатор или сетевая карта выполняет с момента вставки модуля до прохождения трафика, с пинами, байтами и таймингами каждого шага. Зная её, вы превращаете «порт говорит unsupported» в «хост остановился на шаге 4» и понимаете, почему модуль, идеальный на столе, может всё равно отказать в порту.

Низкоскоростные сигналы по форм-факторам

Форм-факторПрисутствиеСброс / питаниеПрерывание / отказПрочее
SFP / SFP+ / SFP28MOD_ABS (низкий = присутствует)— (TX_DISABLE управляет лазером)TX_FAULT, RX_LOSRS0, RS1 выбор скорости
XFPMod_ABSP_Down/RSTInterrupt, Mod_NR (не готов), RX_LOSTX_DIS, Mod_DeSel
QSFP+ / QSFP28ModPrsLResetL, LPModeIntLModSelL
QSFP-DDModPrsLResetL, LPModeIntLModSelL
OSFPPRSnRSTn, LPWnINT— (нет пина выбора, шина на порт)
SFP-DDотсутствие модуля как у SFPзапрос низкого энергопотребленияпрерываниевыбор скорости как у SFP

Функции и распиновка по семействам: Аппаратные спецификации SFP, QSFP, XFP.

Последовательность

#ШагSFP (SFF-8472)QSFP (SFF-8636)CMISКак выглядит отказ
1ОбнаружитьMOD_ABS уходит в низкий; антидребезгModPrsL низкийModPrsL / PRSn низкийпорт пуст; модуль «не определяется»
2Питание и ожидание3,3 В всегда подано; ждать t_init 300 мсвключить с высоким LPMode (только класс 1); ждать t_init 2 с или опрашивать Data_Not_Readyто же; ждать выхода состояния модуля из MgmtInit (≤ 2 с)чтение даёт FFh / 00h; идентификация пуста
3Идентифицироватьпрочитать A0h 0–95; байт 0 = 03h выбирает разбор SFF-8472прочитать 0–127 и верхнюю 00h; байт 0 = 0Dh/11h, байт 1 ревизияпрочитать нижнюю страницу и верхнюю 00h; байт 0 = 18h/19h…, байт 1 версия CMISunknown module type
4ПроверитьCC_BASE, CC_EXT; согласованность идентификатора/разъёма/кодированияCC_BASE, CC_EXTсумма страницы 00hinvalid EEPROM, checksum errorКонтрольные суммы
5Декодировать типбайты соответствия 3–10, 36; скорость 12/66; длины; длина волныбайты 131–138, 192; 140/222тип среды 85, дескрипторы примененийspeed and type not supportedКоды соответствия
6Политикаимя вендора/PN (и, возможно, сигнатура) по таблице совместимостито жето жеunsupported transceiver, errdisable — Вендор-лок
7Класс мощностибиты уровня байта 64 против бюджета портакласс байта 129; записать байт 93 — снять низкую мощность / разрешить классы 5–8класс байта 200 против порта; снять LPMode или сбросить LowPwrRequestSW → модуль PwrUp → Readyудержан в низкой мощности, power exceedsПитание и тепло
8НастроитьRS0/RS1 или программный выбор скорости; скорость, FEC, SGMII/1000BASE-X на стороне хостаCDR вкл./выкл. (98), выбор скорости (87–88), каналы breakout на хостевыбрать AppSel/DataPathID в staged control set → ApplyDPInit → тракт Init → InitializedLOL, несовпадение FEC, отказ breakout — Скорость и режимы
9Включить Txпин TX_DISABLE низкий или программный бит сброшен (A2h 110.6)байт 86 = 00hстраница 10h байт 130 = 00h → DPTxTurnOn → DPActivatedдальний конец видит −40 дБм — Чек-лист «нет линка»
10ЛинкPHY/MAC видит сигнал; AN/обучение линка на DACто же по каналамто же по трактамлинк down при хороших уровнях
11Мониторитьопрос мониторов и флагов A2h каждые несколько секунд; пины TX_FAULT / RX_LOSIntL → чтение флагов 3–21; опрос мониторовIntL → флаги модуля + канальные флаги страницы 11h; VDMаварии, флапы — Уровни DDM, Флап линка
12ИзвлечьMOD_ABS высокий → разобрать состояниеModPrsL высокийModPrsL высокийзалипшее состояние, если антидребезг пропустил

Шаги 3–6 у QSFP и CMIS идут в низком энергопотреблении: хост проверяет, прежде чем тратить мощность на оптику. Поэтому залоченный или неверно закодированный модуль никогда не зажигает лазер, а дальний конец читает −40 дБм у электрически исправного модуля.

Тайминги, которых ждёт хост

ОжиданиеSFPQSFPCMIS
Готовность управления после вставки300 мс2 с≤ 2 с (MgmtInit), затем состояние LowPwr
После снятия низкой мощностидо сброса Data_Not_Readyдо состояния модуля Ready (макс. длительность объявлена на странице 01h)
Инициализация трактаобъявлена по шагам (ниббл-код: < 1 мс … < 50 мин)
От включения Tx до светаt_on ≤ 1 мсton_txdis 100 мс / toff 400 мсдлительность DPTxTurnOn объявлена
От флага до прерыванияton_IntL 200 мспо аппаратной спецификации

Тайминги уровня шины (t_WR, растяжение такта): Двухпроводной интерфейс.

Где политики хостов расходятся

  • Строгость белого списка — от «только имя вендора» до подписанных вендорских блоков.
  • Что происходит при отказе — порт выключен, лазер погашен или линк разрешён с записью в лог (Сторонние модули).
  • Глубина CMIS — полное управление применениями/трактами или «снять LPMode и надеяться» (Проблемы CMIS).
  • Умолчания FEC и скорости — выводятся из кодов соответствия или задаются статически.
  • Опрос DDM — интервал, отключают ли пороги порт, применяется ли внешняя калибровка (Калибровка).

CLI по вендорам, чтобы увидеть, где хост остановился: Проверка оптики на коммутаторах.

Чем программатор отличается от хоста

Программатор, такой как CodingBox, выполняет шаги 1–5 и 11, но без политики: читает всё, что модуль показывает, включая вендорские области и байты пароля, держит CMIS-модули в низком энергопотреблении, если не просят иного, и никогда не включает лазер сам. Вот почему модуль может выглядеть здоровым на столе и всё равно отказать в порту — у стола нет шага 6.

В CodingBox

Check transceiver показывает результат шагов 3–5 так, как увидел бы их хост — тип, скорость, контрольные суммы, класс мощности — и отмечает противоречия до того, как модуль попадёт в порт; DDM закрывает шаг 11 живыми мониторами и флагами.