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

SGMII, 1000BASE-X, QSGMII, USXGMII: последовательные интерфейсы к PHY и SFP

Каждая клетка SFP 1G несёт последовательный канал 1,25 ГБод, и этот канал может говорить на двух диалектах, неотличимых на осциллографе: 1000BASE-X — интерфейс IEEE, которого ждёт оптический модуль, и SGMII — вариант Cisco, добавляющий 10/100 Мбит/с и другое автосогласование. Медные SFP живут на границе между ними, и большинство тикетов «медный SFP линкуется на 1G, а моя камера на 100 Мбит/с — нет» — несовпадение диалектов. Здесь — оба гигабитных диалекта, их автосогласование, 2500BASE-X, многопортовый QSGMII, USXGMII для мультигигабита и 10GBASE-T SFP+, а также как Linux и коммутаторы выбирают режим.

1000BASE-X: родной интерфейс SFP (Clause 36/37)

ПозицияЗначение
Скорость1,25 ГБод, 8b/10b → 1000 Мбит/с полезных
Каналы1 дифференциальная пара в каждую сторону (CML, с развязкой по переменному току)
Кодирование8b/10b с запятыми /K28.5/, упорядоченные наборы /C1/ /C2/ (конфигурация), /I1/ /I2/ (простой)
АвтосогласованиеClause 37: 16-битное слово конфигурации в наборах /C/ — полный/полудуплекс, pause (симметричный/асимметричный), удалённый отказ, подтверждение. Поля скорости нет: 1000BASE-X только 1G
ГдеSerDes коммутатора/NIC → клетка SFP; оптический SFP (SX/LX/ZX/BiDi/CWDM) передаёт его прямо лазеру; PCS живёт в хосте

Оптический SFP прозрачен: что хост закодировал, то и уходит светом. Поэтому у оптического модуля 1G нет «режима» — но он есть у порта, и это должен быть 1000BASE-X (часто показан как режим «SerDes» или «fiber», speed nonegotiate у Cisco, когда у дальнего конца нет AN).

SGMII: гигабит плюс 10/100 (спецификация Cisco SGMII v1.8)

ПозицияЗначение
Скоростьте же 1,25 ГБод, 8b/10b
Поддержка 10/100каждый байт данных повторяется 100× (10 Мбит/с) или 10× (100 Мбит/с), чтобы линия оставалась на 1,25 ГБод
Каналы2 пары; опциональные пары тактов 625 МГц DDR (TX_CLK/RX_CLK) — большинство реализаций SerDes работают без тактов
Автосогласованиеуправляющее слово SGMII (тоже в наборах /C/, 16 бит): бит 15 линк, биты 11–10 скорость (10/100/1000), бит 12 дуплекс, бит 14 подтверждение — отправляется PHY → MAC, чтобы сообщить MAC, что согласовала медная сторона. Несовместимо с содержимым Clause 37
ГдеMAC ↔ медный PHY (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ клетка SFP на платах с поддержкой медных SFP, внутренности медного SFP 1000BASE-T

SGMII — интерфейс MAC–PHY; «автосогласование» происходит дважды — Clause 28 по витой паре между PHY и партнёром, затем управляющее слово SGMII сообщает результат MAC. Когда хост ждёт Clause 37, а получает слово SGMII (или наоборот), линк никогда не завершает AN; обычный обход — выключить AN на порту (speed nonegotiate, no negotiation auto, autoneg off) — только на 1G.

Медные SFP между двумя диалектами

Режим порта хостаПоведение медного SFPКлиенты 10/100
1000BASE-X, AN включёнPHY модуля должен отвечать на Clause 37 — многие умеют (эмулируют), некоторые нет → линка нет, пока AN не выключеннет (поля скорости нет)
1000BASE-X, AN выключенлинк на 1G, когда медная сторона согласовала 1Gнет
SGMII, AN включёнPHY сообщает 10/100/1000 управляющим словомда
SGMII, AN выключенфиксированный 1Gнет

Медные модули SFP на Marvell 88E1111 по умолчанию работают в SGMII или 1000BASE-X в зависимости от конфигурационного EEPROM/перемычек, заданных при производстве; вендоры продают варианты «SGMII» и «SerDes» одного модуля, а часть переключается через регистры PHY, доступные по I²C модуля. Порты коммутаторов, где заявлена «поддержка 1000BASE-T SFP», реализуют на этих клетках SGMII (Медный Ethernet и DAC).

SFP 100BASE-FX

Оптическому SFP 100 Мбит/с (100BASE-FX, 1310 нм, 2 км) нужно, чтобы хост вёл канал на 125 МБод с 4b/5b — совершенно другой PCS. Работают только порты с явной поддержкой «100M SFP» (многие кампусные коммутаторы на выбранных портах, большинство роутеров; редко дата-центровые коммутаторы); на остальных модуль обнаруживается и никогда не линкуется. Часть хостов реализует 100BASE-FX повторением SGMII с внешним PHY в модуле (SFP «100M поверх SGMII»).

2500BASE-X

ПозицияЗначение
Скорость3,125 ГБод, 8b/10b → 2,5 Гбит/с
Стандартот IEEE нет (де-факто, 2,5 × 1000BASE-X); в Linux phy-interface-type = "2500base-x"
ANв стиле Clause 37, часто выключен
Гдемодули SFP 2,5G (медь 2.5GBASE-T, оптика 2,5G), ONU-стики GPON/EPON в сторону хоста (2,5G вниз), аплинки точек доступа Wi-Fi 6, часть клеток SFP коммутаторов 2,5G

Эквиваленты IEEE для мультигигабита — 2.5GBASE-X/5GBASE-R (802.3bz), но большинство кремния говорит на 2500BASE-X или USXGMII.

QSGMII: четыре порта на одном канале

ПозицияЗначение
Скорость5 ГБод, 8b/10b; 4 канала SGMII с временным мультиплексированием
Каналы2 пары на четыре порта
ГдеASIC коммутатора ↔ четверной медный PHY (коммутаторы доступа на 48 портов: 12 каналов QSGMII вместо 48 SGMII), часть конструкций с четырьмя клетками SFP через внешний SerDes
ВариантыQSGMII (Cisco), также «PSGMII» (5 портов) у части SoC Qualcomm/Realtek

В обычных конструкциях у клетки не виден; важен, когда плата с четверным PHY выводит комбо-порты SFP, режим которых наследуется от канала PHY.

USXGMII: от 10 Мбит/с до 10 Гбит/с на одном канале 10G

ПозицияЗначение
Скорость10,3125 ГБод, 64b/66b (электрика 10GBASE-R)
Скорости10M, 100M, 1G, 2,5G, 5G, 10G повторением символов (как SGMII в масштабе)
СпецификацияCisco USXGMII (v1.2), принята широко; в Linux usxgmii
МногопортовостьUSXGMII-M: 4 × 2,5G, 2 × 5G, 4 × 1G+… по одному каналу 10G (как QSGMII)
ANслово AN USXGMII в простое 64b/66b, сообщает скорость/дуплекс/линк
ГдеASIC ↔ мультигигабитный PHY (порты 2,5/5/10GBASE-T), модули 10GBASE-T SFP+ (внутренний PHY, например Marvell AQR/Broadcom)

Модуль 10GBASE-T SFP+ представляет обычному порту SFP+ интерфейс 10GBASE-R (SFI) и линкуется на 10G; сможет ли он также обслуживать клиентов 1G/2,5G/5G, зависит от поддержки хостом адаптации скорости USXGMII на этой клетке — большинство коммутаторов её не имеют, поэтому модуль работает только на 10G или выполняет адаптацию внутри и сообщает хосту 10G, пока медная сторона идёт медленнее (Скорость и режимы).

Как хост выбирает режим

ХостМеханизм
Linux phylink/SFPчитает байты A0h 3–10 (соответствие), 12 (номинальная скорость), 36 (расширенное) и бит 3 байта 6 (1000BASE-T): 1000BASE-T → SGMII (или 1000BASE-X, если у SoC нет SGMII); 1000BASE-SX/LX → 1000BASE-X; BR 3,1 ГБод → 2500BASE-X; коды 10G → 10GBASE-R; медный PHY внутри модуля опрашивается по I²C (адрес 0x56/0xAC) и управляется phylib
NOS коммутатораумолчание порта от платформы (большинство клеток SFP 1G умеют SGMII; SFP+/SFP28 на 1G часто только 1000BASE-X), команды speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode
Драйверы NICIntel: порты SFP+ поддерживают 1G только в 1000BASE-X (без медных SFP 10/100); Mellanox: 1G через 1000BASE-X на части моделей; Broadcom: по прошивке (Порты NIC)
Медный SFPперемычка/EEPROM режима PHY (вариант SGMII или SerDes), поведение AN задано прошивкой вендора

Таблица несовпадений

СимптомПричинаРешение
Медный SFP: клиенты 1G работают, 10/100 никогда не линкуютсяпорт в 1000BASE-Xперейти на порт с SGMII или взять модуль, скрывающий 10/100 за адаптацией 1G к хосту
Оптический SFP линкуется только с выключенным ANдальний конец без Clause 37 (медиаконвертер, часть ONU) или слово SGMII от медного модуляspeed nonegotiate / autoneg off
SFP 100BASE-FX обнаружен, линка нету хоста нет режима SerDes 100Mпорт с поддержкой 100M SFP или модуль 100BASE-FX поверх SGMII
SFP 2,5G линкуется на 1G или никаку хоста нет 2500BASE-Xклетка с поддержкой 2,5G или модуль с откатом скорости
ONU-стик линкуется, потом падаетожидание 2500BASE-X против 1000BASE-X, ANхост в 2500BASE-X, AN выключен (Оптика PON)
10GBASE-T SFP+ линкуется только на 10Gу хоста нет USXGMIIсмириться с 10G или модуль с внутренней адаптацией скорости
Linux: модуль работает на одной плате, не работает на другойphylink выбрал другой интерфейс по EEPROM; у SoC нет этого режимасмотреть dmesg на sfp: module … interface; исправить байты соответствия или device tree

В CodingBox

Байты, направляющие выбор хоста, все в A0h: коды соответствия 3–10 (1000BASE-T, SX, LX, коды 10G), номинальная скорость 12, кодирование 11 (8b/10b против 64b/66b), расширенное соответствие 36. Медный модуль, закодированный как 1000BASE-SX, будет считаться оптическим и потеряет путь 10/100; оптический модуль с лишним битом 1000BASE-T будет вестись как SGMII. CodingBox показывает и правит эти поля (Check transceiver, Коды соответствия).