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 |
| Драйверы NIC | Intel: порты 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, Коды соответствия).