SGMII, 1000BASE-X, QSGMII, USXGMII: interfaces serie a PHY y SFP
Toda jaula SFP de 1G lleva un carril serie de 1,25 GBd, y ese carril puede hablar dos dialectos que en un osciloscopio parecen idénticos: 1000BASE-X, la interfaz del IEEE que espera un módulo de fibra, y SGMII, la variante de Cisco que añade 10/100 Mb/s y una autonegociación distinta. Los SFP de cobre viven en la frontera entre ambos, y la mayoría de los tickets del tipo «el SFP de cobre enlaza a 1G pero mi cámara de 100 Mb/s no» son un desajuste de dialecto. Esta página cubre los dos dialectos de gigabit, su autonegociación, 2500BASE-X, el QSGMII multipuerto, USXGMII para multigig y SFP+ 10GBASE-T, y cómo eligen el modo Linux y los conmutadores.
1000BASE-X: la interfaz nativa del SFP (cláusula 36/37)
| Elemento | Valor |
|---|---|
| Velocidad | 1,25 GBd, 8b/10b → carga útil de 1000 Mb/s |
| Carriles | 1 par diferencial por dirección (CML, acoplado en AC) |
| Codificación | 8b/10b con comas /K28.5/, conjuntos ordenados /C1/ /C2/ (configuración), /I1/ /I2/ (inactividad) |
| Autonegociación | cláusula 37: palabra de configuración de 16 bits intercambiada en conjuntos ordenados /C/ — dúplex completo/medio, pausa (simétrica/asimétrica), fallo remoto, confirmación. Sin campo de velocidad: 1000BASE-X es solo 1G |
| Dónde | SerDes de conmutador/NIC → jaula SFP; el SFP de fibra (SX/LX/ZX/BiDi/CWDM) lo pasa directo al láser; el PCS vive en el host |
Un SFP de fibra es transparente: lo que el host codifica sale como luz. Por eso un módulo de fibra de 1G no tiene «modo» — pero el puerto sí, y debe estar en 1000BASE-X (a menudo mostrado como modo «SerDes» o «fiber», speed nonegotiate en Cisco cuando el otro extremo no tiene AN).
SGMII: gigabit más 10/100 (especificación Cisco SGMII v1.8)
| Elemento | Valor |
|---|---|
| Velocidad | los mismos 1,25 GBd, 8b/10b |
| Compatibilidad 10/100 | cada byte de datos se replica 100× (10 Mb/s) o 10× (100 Mb/s) para que la línea se mantenga a 1,25 GBd |
| Carriles | 2 pares; pares de reloj DDR de 625 MHz opcionales (TX_CLK/RX_CLK) — la mayoría de las implementaciones SerDes funcionan sin reloj |
| Autonegociación | palabra de control SGMII (también en conjuntos ordenados /C/, 16 bits): bit 15 enlace, bits 11–10 velocidad (10/100/1000), bit 12 dúplex, bit 14 confirmación — enviada PHY → MAC para indicar al MAC lo que negoció el lado de cobre. No compatible con el contenido de la cláusula 37 |
| Dónde | MAC ↔ PHY de cobre (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ jaula SFP en placas que quieren admitir SFP de cobre, internamente en SFP de cobre 1000BASE-T |
SGMII es una interfaz MAC-PHY; la «autonegociación» ocurre dos veces — cláusula 28 en el par trenzado entre el PHY y su interlocutor de enlace, y luego la palabra de control SGMII informa el resultado al MAC. Cuando un host espera la cláusula 37 y recibe una palabra SGMII (o al revés), el enlace nunca completa la AN; deshabilitar la AN en el puerto (speed nonegotiate, no negotiation auto, autoneg off) es la solución habitual — solo a 1G.
Los SFP de cobre entre ambos
| Modo del puerto del host | Comportamiento del SFP de cobre | Clientes 10/100 |
|---|---|---|
| 1000BASE-X, AN activada | el PHY del módulo debe responder a la cláusula 37 — muchos lo hacen (emulan), otros no → sin enlace hasta desactivar la AN | no (sin campo de velocidad) |
| 1000BASE-X, AN desactivada | enlace a 1G cuando el lado de cobre negocia 1G | no |
| SGMII, AN activada | el PHY informa 10/100/1000 mediante la palabra de control | sí |
| SGMII, AN desactivada | 1G fijo | no |
Los módulos SFP de cobre basados en Marvell 88E1111 usan por defecto SGMII o 1000BASE-X según una EEPROM de configuración/strap fijada en fabricación; los fabricantes venden variantes «SGMII» y «SerDes» del mismo módulo, y algunas pueden cambiarse mediante los registros del PHY accesibles por el I²C del módulo. Los puertos de conmutador que indican «SFP 1000BASE-T admitido» implementan SGMII en esas jaulas (Ethernet de cobre y DAC).
SFP 100BASE-FX
Un SFP de fibra de 100 Mb/s (100BASE-FX, 1310 nm, 2 km) necesita que el host ejecute el carril a 125 MBd con 4b/5b — un PCS completamente distinto. Solo funcionan los puertos que admiten explícitamente «100M SFP» (muchos conmutadores de campus en puertos seleccionados, la mayoría de los routers; pocos conmutadores de centro de datos); en los demás el módulo se detecta y nunca enlaza. Algunos hosts implementan 100BASE-FX mediante replicación SGMII con un PHY externo en el módulo (SFP «100M over SGMII»).
2500BASE-X
| Elemento | Valor |
|---|---|
| Velocidad | 3,125 GBd, 8b/10b → 2,5 Gb/s |
| Estándar | ninguno del IEEE (de facto, 2,5 × 1000BASE-X); Linux phy-interface-type = "2500base-x" |
| AN | al estilo de la cláusula 37, a menudo deshabilitada |
| Dónde | módulos SFP de 2,5G (cobre 2,5GBASE-T, fibra 2,5G), sticks ONU GPON/EPON hacia el host (bajada de 2,5G), enlaces ascendentes de AP Wi-Fi 6, algunas jaulas SFP de conmutador de 2,5G |
Los equivalentes del IEEE para multigig son 2,5GBASE-X/5GBASE-R (802.3bz), pero la mayoría del silicio habla 2500BASE-X o USXGMII.
QSGMII: cuatro puertos en un carril
| Elemento | Valor |
|---|---|
| Velocidad | 5 GBd, 8b/10b; 4 canales SGMII multiplexados en el tiempo |
| Carriles | 2 pares para cuatro puertos |
| Dónde | ASIC de conmutador ↔ PHY de cobre cuádruple (conmutadores de acceso de 48 puertos: 12 carriles QSGMII en vez de 48 SGMII), algunos diseños de jaula SFP de cuatro puertos vía SerDes externo |
| Variantes | QSGMII (Cisco), también «PSGMII» (5 puertos) en algunos SoC Qualcomm/Realtek |
No es visible en una jaula en diseños normales; importa cuando una placa con PHY cuádruple expone puertos combo SFP cuyo modo se hereda del canal del PHY.
USXGMII: de 10 Mb/s a 10 Gb/s en un carril de 10G
| Elemento | Valor |
|---|---|
| Velocidad | 10,3125 GBd, 64b/66b (eléctrico 10GBASE-R) |
| Velocidades | 10M, 100M, 1G, 2,5G, 5G, 10G mediante replicación de símbolos (como SGMII escalado) |
| Especificación | Cisco USXGMII (v1.2), muy adoptada; Linux usxgmii |
| Multipuerto | USXGMII-M: 4 × 2,5G, 2 × 5G, 4 × 1G+… en un carril de 10G (como QSGMII) |
| AN | palabra de AN de USXGMII en la inactividad 64b/66b, informa velocidad/dúplex/enlace |
| Dónde | ASIC ↔ PHY multigig (puertos 2,5/5/10GBASE-T), módulos SFP+ 10GBASE-T (PHY interno, p. ej. Marvell AQR/Broadcom) |
Un módulo SFP+ 10GBASE-T presenta 10GBASE-R (SFI) a un puerto SFP+ normal y enlaza a 10G; que pueda además atender clientes de 1G/2,5G/5G depende de que el host admita la adaptación de tasa USXGMII en esa jaula — la mayoría de los conmutadores no lo hacen, así que el módulo funciona solo a 10G, o realiza la adaptación internamente e informa 10G al host mientras el lado de cobre corre más lento (Velocidad y tasa).
Cómo elige el modo el host
| Host | Mecanismo |
|---|---|
| Linux phylink/SFP | lee los bytes A0h 3–10 (conformidad), 12 (tasa nominal), 36 (extendido) y el bit 3 del byte 6 (1000BASE-T): 1000BASE-T → SGMII (o 1000BASE-X si el SoC no tiene SGMII); 1000BASE-SX/LX → 1000BASE-X; BR 3,1 GBd → 2500BASE-X; códigos de 10G → 10GBASE-R; el PHY de cobre dentro del módulo se sondea por I²C (dirección 0x56/0xAC) y lo controla phylib |
| NOS del conmutador | valor por defecto del puerto según la plataforma (la mayoría de las jaulas SFP de 1G admiten SGMII; SFP+/SFP28 a 1G suelen ser solo 1000BASE-X), comandos speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| Drivers de NIC | Intel: los puertos SFP+ admiten 1G solo en 1000BASE-X (sin SFP de cobre 10/100); Mellanox: 1G vía 1000BASE-X en algunos modelos; Broadcom: según firmware (Puertos de NIC) |
| SFP de cobre | strap/EEPROM del modo del PHY (variante SGMII frente a SerDes), comportamiento de AN fijado por el firmware del fabricante |
Tabla de desajustes
| Síntoma | Causa | Solución |
|---|---|---|
| SFP de cobre: los clientes 1G van bien, 10/100 nunca enlaza | puerto en 1000BASE-X | pasar a un puerto capaz de SGMII o usar un módulo que oculte 10/100 tras una adaptación a 1G hacia el host |
| El SFP de fibra solo enlaza con AN desactivada | el otro extremo no tiene cláusula 37 (conversor de medios, algunas ONU) o palabra SGMII de un módulo de cobre | speed nonegotiate / autoneg off |
| SFP 100BASE-FX detectado, sin enlace | el host no tiene modo SerDes de 100M | usar un puerto que admita 100M SFP, o un módulo 100BASE-FX sobre SGMII |
| El SFP de 2,5G enlaza a 1G o no enlaza | el host no tiene 2500BASE-X | elegir una jaula capaz de 2,5G o un módulo con retroceso de tasa |
| El stick ONU enlaza y luego cae | expectativa 2500BASE-X frente a 1000BASE-X, AN | fijar el host a 2500BASE-X, AN desactivada (Óptica PON) |
| El SFP+ 10GBASE-T solo enlaza a 10G | el host no tiene USXGMII | aceptar solo 10G, o usar un módulo con adaptación de tasa interna |
| Linux: el módulo funciona en una placa y en otra no | phylink eligió una interfaz distinta a partir de la EEPROM; al SoC le falta ese modo | revisar dmesg buscando sfp: module … interface; corregir los bytes de conformidad o el device tree |
En CodingBox
Los bytes que orientan la elección del host están todos en A0h: códigos de conformidad 3–10 (1000BASE-T, SX, LX, códigos de 10G), tasa de bits nominal 12, codificación 11 (8b/10b frente a 64b/66b), conformidad extendida 36. Un módulo de cobre codificado como 1000BASE-SX se tratará como fibra y perderá su ruta 10/100; un módulo de fibra con un bit 1000BASE-T perdido se controlará como SGMII. CodingBox muestra y edita estos campos (Check transceiver, Códigos de conformidad).