SFF-8472 — диагностика SFP
SFF-8472, Diagnostic Monitoring Interface for Optical Transceivers, — спецификация управления для всех модулей класса SFP: SFP, SFP+, SFP28 и, с расширенными кодами, SFP56. Она выросла из блока serial ID SFP MSA (INF-8074), сохранила его побайтно и добавила второе устройство памяти с диагностикой в реальном времени. Медные SFP, PON-стики, перестраиваемые DWDM SFP+ и концы кабелей DAC/AOC представляются именно через неё. История ревизий и байт версии: Ревизии спецификаций.
Два адреса памяти
Модуль читается по двухпроводному интерфейсу по двум адресам устройств:
| Адрес | Устройство | Содержимое |
|---|---|---|
| A0h | EEPROM serial ID (256 байт, плоская) | идентификация: тип, разъём, коды соответствия, скорость, длины, блок вендора, опции, контрольные суммы |
| A2h | диагностика (128 байт + страничная верхняя половина) | пороги, константы калибровки, живые мониторы, статус/управление, флаги, пользовательская EEPROM, вендорские страницы |
Есть ли A2h вообще — объявлено в A0h байт 92 бит 6. Скорость шины по умолчанию 100 кГц. Побайтовые таблицы: Шпаргалка по карте памяти.
A0h — идентификация в пяти блоках
| Байты | Блок | Что там лежит |
|---|---|---|
| 0–2 | Тип | идентификатор (03h = семейство SFP, SFF-8024), расширенный идентификатор (04h = MOD_DEF 4, есть serial ID), код разъёма |
| 3–10 | Коды соответствия | битовые поля 10G Ethernet, InfiniBand, ESCON, SONET, 1G Ethernet, Fibre Channel длина / технология / среда / скорость — разбор в Кодах соответствия |
| 11–19 | Сигнал и дальность | кодирование (11), номинальная скорость ×100 Мбит/с (12), идентификатор скорости для RS0/RS1 (13, см. выбор скорости), длины: SMF км (14), SMF ×100 м (15), OM2 ×10 м (16), OM1 ×10 м (17), OM4 ×10 м или метры меди (18), OM3 ×10 м (19) |
| 20–63 | Вендор и контрольная сумма | имя вендора (20–35), расширенный код соответствия из SFF-8024 (36), IEEE OUI (37–39), партномер (40–55), ревизия (56–59), длина волны в нм или соответствие/затухание кабеля для меди (60–61), Fibre Channel speed 2 (62), CC_BASE (63) — см. Поля вендора |
| 64–95 | Расширенный ID | опции (64–65), запас по скорости макс./мин. % (66–67) или, при байте 12 = FFh, байт 66 — скорость ×250 Мбит/с, серийный номер (68–83), дата (84–91), тип диагностики (92), расширенные опции (93), ревизия SFF-8472 (94), CC_EXT (95) |
| 96–127 | Вендорская область | свободна для производителя; часто хранит конфигурацию или сигнатуру |
| 128–255 | Зарезервировано | под таблицы выбора применения SFF-8079 |
Байты опций 64–65
| Байт.бит | Смысл при установке |
|---|---|
| 64.5 | объявление высокого уровня мощности — уровень 3 (до 2,0 Вт) |
| 64.4 | реализованы страницы — байт 127 A2h выбирает верхние страницы |
| 64.3 | есть ретаймер или CDR |
| 64.2 | охлаждаемый передатчик |
| 64.1 | уровень мощности 2 (до 1,5 Вт); сброшен = уровень 1 (1,0 Вт) |
| 64.0 | линейный выход приёмника (например, 10GBASE-LRM) |
| 65.7 | реализован порог решения приёмника |
| 65.6 | перестраиваемый передатчик — см. карты tunable |
| 65.5 | реализован RATE_SELECT |
| 65.4 | реализован TX_DISABLE |
| 65.3 | реализован TX_FAULT |
| 65.2 | сигнал LOS инвертирован |
| 65.1 | реализован LOS |
Байт 92 — тип диагностики
| Бит | Смысл |
|---|---|
| 6 | цифровая диагностика (A2h) реализована |
| 5 | внутренняя калибровка — мониторы A2h уже в физических единицах |
| 4 | внешняя калибровка — хост должен применить константы A2h 56–91 |
| 3 | измерение мощности приёма: 1 = средняя мощность, 0 = OMA |
| 2 | перед доступом к A2h нужна последовательность смены адреса (наследие) |
При установленном бите 6 должен быть установлен ровно один из битов 5 и 4. Что каждый режим значит для цифр на экране: Калибровка.
Байт 93 — расширенные опции
Бит 7 реализованы флаги аварий/предупреждений · 6 программное управление TX_DISABLE · 5 программный монитор TX_FAULT · 4 программный монитор RX_LOS · 3 программный RATE_SELECT · 2 выбор применения по SFF-8079 · 1 программный выбор скорости по SFF-8431.
A2h — диагностика в девяти блоках
| Байты | Блок | Примечания |
|---|---|---|
| 0–39 | Пороги аварий и предупреждений | пять мониторов × (верхняя авария, нижняя авария, верхнее предупреждение, нижнее предупреждение), по 2 байта, формат как у живого значения — пороги и аварии |
| 40–55 | Необязательные пороги | температура лазера и ток TEC (охлаждаемые/перестраиваемые модули) |
| 56–91 | Константы калибровки | Rx_PWR(4..0) как 32-битные float, наклон и смещение Tx_I / Tx_PWR / T / V; имеют смысл только при бите 4 байта 92 |
| 92–94 | Зарезервировано | — |
| 95 | CC_DMI | контрольная сумма байтов A2h 0–94 — Контрольные суммы |
| 96–105 | Мониторы реального времени | температура (96–97), Vcc (98–99), ток Tx (100–101), мощность Tx (102–103), мощность Rx (104–105) |
| 106–109 | Необязательные мониторы | температура лазера, ток TEC |
| 110–118 | Статус и управление | байт 110 (ниже), флаги аварий 112–113, флаги предупреждений 116–117, расширенный статус/управление 118 (программный RS1, состояние и выбор уровня мощности) |
| 119–126 | Вендорская область | на практике — область ввода пароля у многих модулей с контроллером (123–126), см. типы защиты от записи |
| 127 | Выбор страницы | присутствует при бите 4 байта 64 A0h |
| 128–255 | Верхние страницы | страница 00h/01h: пользовательская EEPROM (128–247) и управление вендора (248–255); страница 02h: функции управления, дом регистров tunable SFF-8690; остальные страницы вендорские |
Форматы мониторов
| Монитор | Формат | Единица |
|---|---|---|
| Температура | знаковое 16-бит | 1/256 °C |
| Vcc | беззнаковое 16-бит | 100 мкВ |
| Ток Tx | беззнаковое 16-бит | 2 мкА |
| Мощность Tx, Rx | беззнаковое 16-бит | 0,1 мкВт (в дБм: 10·log10(мкВт/1000)) |
Пересчёты и примеры: Единицы и пересчёты.
Байт 110 — статус/управление
| Бит | Смысл | Доступ |
|---|---|---|
| 7 | состояние пина TX_DISABLE | чтение |
| 6 | программный TX_DISABLE | чтение/запись (при бите 6 байта 93) |
| 5 | состояние пина RS1 | чтение |
| 4 | состояние пина RS0 (выбор скорости) | чтение |
| 3 | программный выбор RS0 | чтение/запись |
| 2 | состояние TX_FAULT | чтение |
| 1 | состояние RX_LOS | чтение |
| 0 | данные не готовы (1, пока мониторы инициализируются) | чтение |
Особенности меди и кабелей
У пассивной и активной меди (DAC) байты 60–61 хранят не длину волны: для пассивного кабеля байт 60 отмечает соответствие SFF-8431 Appendix E, для активного биты отмечают соответствие FC-PI-4 / SFF-8431 limiting или linear. Биты 2–3 байта 8 задают пассивную/активную кабельную технологию, байт 18 несёт длину в метрах. Подробнее: Медный Ethernet и DAC.
Что реально читает хост
Типичный коммутатор при вставке читает A0h байты 0–95, проверяет CC_BASE и CC_EXT, декодирует идентификатор, разъём, коды соответствия и скорость, сверяет блок вендора со своей политикой и только потом опрашивает A2h ради DDM — обычно раз в несколько секунд. Полная последовательность и её тайминги: Что делает хост. Несовпадения этих полей с реальной оптикой — корень большинства тикетов про скорость и режимы и вендор-лок.
В CodingBox
CodingBox читает и A0h, и A2h (включая страничную A2h, если объявлена), подписывает каждое поле из таблиц выше в редакторе EEPROM, пересчитывает CC_BASE, CC_EXT и CC_DMI при записи, применяет внутреннюю или внешнюю калибровку на экране DDM и показывает декодированную идентификацию на Check transceiver.
Побайтные и побитные таблицы обоих устройств: Карта регистров A0h, Карта регистров A2h.