SGMII, 1000BASE-X, QSGMII, USXGMII: interfaces seriais para PHYs e SFP
Toda gaiola (cage) SFP de 1G carrega uma lane serial de 1,25 GBd, e essa lane pode falar dois dialetos que parecem idênticos num osciloscópio: 1000BASE-X, a interface do IEEE que um módulo de fibra espera, e SGMII, a variante da Cisco que acrescenta 10/100 Mb/s e uma autonegociação diferente. SFPs de cobre vivem na fronteira entre os dois, e a maioria dos chamados do tipo “o SFP de cobre estabelece enlace em 1G mas minha câmera de 100 Mb/s não” é uma incompatibilidade de dialeto. Esta página cobre os dois dialetos de gigabit, sua autonegociação, o 2500BASE-X, o QSGMII multiporta, o USXGMII para multigig e o SFP+ 10GBASE-T, e como o Linux e os switches escolhem o modo.
1000BASE-X: a interface nativa do SFP (Clause 36/37)
| Item | Valor |
|---|---|
| Taxa | 1,25 GBd, 8b/10b → carga útil de 1000 Mb/s |
| Lanes | 1 par diferencial em cada direção (CML, acoplado em AC) |
| Codificação | 8b/10b com vírgulas /K28.5/, conjuntos ordenados /C1/ /C2/ (configuração), /I1/ /I2/ (ocioso) |
| Autonegociação | Clause 37: palavra de configuração de 16 bits trocada nos conjuntos ordenados /C/: duplex completo/semiduplex, pause (simétrico/assimétrico), falha remota, confirmação. Sem campo de velocidade: o 1000BASE-X é só 1G |
| Onde | SerDes do switch/NIC → gaiola (cage) SFP; o SFP de fibra (SX/LX/ZX/BiDi/CWDM) passa direto para o laser; o PCS fica no host |
Um SFP de fibra é transparente: o que quer que o host codifique sai como luz. É por isso que um módulo de fibra de 1G não tem “modo” — mas a porta tem, e precisa ser 1000BASE-X (geralmente mostrado como modo “SerDes” ou “fiber”, speed nonegotiate na Cisco quando o lado remoto não tem AN).
SGMII: gigabit mais 10/100 (especificação Cisco SGMII v1.8)
| Item | Valor |
|---|---|
| Taxa | os mesmos 1,25 GBd, 8b/10b |
| Suporte a 10/100 | cada byte de dado é replicado 100× (10 Mb/s) ou 10× (100 Mb/s) para a linha ficar em 1,25 GBd |
| Lanes | 2 pares; pares de clock DDR de 625 MHz opcionais (TX_CLK/RX_CLK); a maioria das implementações de SerDes roda sem clock |
| Autonegociação | palavra de controle do SGMII (também transportada nos conjuntos ordenados /C/, 16 bits): bit 15 link, bits 11–10 velocidade (10/100/1000), bit 12 duplex, bit 14 ack; enviada do PHY → MAC para informar ao MAC o que o lado de cobre negociou. Não compatível com o conteúdo da Clause 37 |
| Onde | MAC ↔ PHY de cobre (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ gaiola (cage) SFP em placas que querem suporte a SFP de cobre, no interior do SFP 1000BASE-T de cobre |
O SGMII é uma interface MAC–PHY; a “autonegociação” acontece duas vezes: a Clause 28 no par trançado entre o PHY e o parceiro de enlace, depois a palavra de controle do SGMII relata o resultado ao MAC. Quando um host espera a Clause 37 e recebe uma palavra SGMII (ou vice-versa), o enlace nunca completa a AN; desativar a AN na porta (speed nonegotiate, no negotiation auto, autoneg off) é a solução alternativa usual, apenas em 1G.
SFPs de cobre entre os dois
| Modo da porta do host | Comportamento do SFP de cobre | Clientes 10/100 |
|---|---|---|
| 1000BASE-X, AN ligada | o PHY do módulo precisa responder à Clause 37: muitos respondem (emulam), alguns não → sem enlace até desligar a AN | não (sem campo de velocidade) |
| 1000BASE-X, AN desligada | enlace em 1G quando o lado de cobre negocia 1G | não |
| SGMII, AN ligada | o PHY informa 10/100/1000 via palavra de controle | sim |
| SGMII, AN desligada | fixo em 1G | não |
Módulos SFP de cobre baseados no Marvell 88E1111 vêm por padrão em SGMII ou 1000BASE-X, dependendo de uma EEPROM de configuração/strap definida na fabricação; fabricantes vendem variantes “SGMII” e “SerDes” do mesmo módulo, e alguns podem ser trocados pelos registradores do PHY, acessíveis pelo I²C do módulo. Portas de switch que listam “suporte a SFP 1000BASE-T” implementam SGMII nessas gaiolas (cage) (Ethernet em cobre e DAC).
SFPs 100BASE-FX
Um SFP de fibra de 100 Mb/s (100BASE-FX, 1310 nm, 2 km) exige que o host rode a lane a 125 MBd com 4b/5b, um PCS completamente diferente. Só funcionam as portas que suportam explicitamente “SFP de 100M” (muitos switches de campus em portas selecionadas, a maioria dos roteadores; poucos switches de data center); nas outras o módulo é detectado e nunca estabelece enlace. Alguns hosts implementam o 100BASE-FX por replicação SGMII com um PHY externo no módulo (SFPs “100M over SGMII”).
2500BASE-X
| Item | Valor |
|---|---|
| Taxa | 3,125 GBd, 8b/10b → 2,5 Gb/s |
| Padrão | nenhum do IEEE (de facto, 2,5 × 1000BASE-X); Linux phy-interface-type = "2500base-x" |
| AN | estilo Clause 37, geralmente desativada |
| Onde | módulos SFP de 2,5G (2,5GBASE-T cobre, fibra de 2,5G), sticks ONU GPON/EPON voltados para o host (downstream de 2,5G), uplinks de AP Wi-Fi 6, algumas gaiolas (cage) SFP de switch de 2,5G |
Os equivalentes do IEEE para multigig são 2,5GBASE-X/5GBASE-R (802.3bz), mas a maior parte do silício fala 2500BASE-X ou USXGMII.
QSGMII: quatro portas em uma lane
| Item | Valor |
|---|---|
| Taxa | 5 GBd, 8b/10b; 4 canais SGMII multiplexados no tempo |
| Lanes | 2 pares para quatro portas |
| Onde | ASIC do switch ↔ PHY de cobre quádruplo (switches de acesso de 48 portas: 12 lanes QSGMII em vez de 48 SGMII), alguns designs de gaiola (cage) SFP de quatro portas via SerDes externo |
| Variantes | QSGMII (Cisco), também “PSGMII” (5 portas) em alguns SoCs Qualcomm/Realtek |
Não é visível numa gaiola (cage) em projetos normais; importa quando uma placa com PHY quádruplo expõe portas combo SFP cujo modo é herdado do canal do PHY.
USXGMII: de 10 Mb/s a 10 Gb/s em uma lane de 10G
| Item | Valor |
|---|---|
| Taxa | 10,3125 GBd, 64b/66b (elétrico 10GBASE-R) |
| Velocidades | 10M, 100M, 1G, 2,5G, 5G, 10G por replicação de símbolos (como o SGMII em escala maior) |
| Especificação | Cisco USXGMII (v1.2), amplamente adotado; Linux usxgmii |
| Multiporta | USXGMII-M: 4 × 2,5G, 2 × 5G, 4 × 1G+… em uma lane de 10G (como o QSGMII) |
| AN | palavra de AN do USXGMII no idle do 64b/66b, informa velocidade/duplex/enlace |
| Onde | ASIC ↔ PHY multigig (portas 2,5/5/10GBASE-T), módulos SFP+ 10GBASE-T (PHY interno, por exemplo Marvell AQR/Broadcom) |
Um módulo SFP+ 10GBASE-T apresenta 10GBASE-R (SFI) para uma porta SFP+ normal e estabelece enlace em 10G; se ele também consegue atender clientes 1G/2,5G/5G depende de o host suportar adaptação de taxa USXGMII nessa gaiola (cage). A maioria dos switches não suporta, então o módulo funciona só em 10G, ou realiza a adaptação internamente e informa 10G ao host enquanto o lado de cobre roda mais devagar (Velocidade e taxa).
Como o host escolhe o modo
| Host | Mecanismo |
|---|---|
| Linux phylink/SFP | lê os bytes A0h 3–10 (conformidade), 12 (taxa nominal), 36 (estendido) e o bit 3 do byte 6 (1000BASE-T): 1000BASE-T → SGMII (ou 1000BASE-X se o SoC não tiver SGMII); 1000BASE-SX/LX → 1000BASE-X; BR 3,1 GBd → 2500BASE-X; códigos de 10G → 10GBASE-R; o PHY de cobre dentro do módulo é sondado por I²C (endereço 0x56/0xAC) e controlado pela phylib |
| Switch NOS | padrão da porta conforme a plataforma (a maioria das gaiolas (cage) SFP de 1G é compatível com SGMII; SFP+/SFP28 em 1G costuma ser só 1000BASE-X), comandos speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| Drivers de NIC | Intel: portas SFP+ suportam 1G apenas em 1000BASE-X (sem SFP de cobre 10/100); Mellanox: 1G via 1000BASE-X em alguns modelos; Broadcom: conforme o firmware (Portas de NIC) |
| SFP de cobre | strap/EEPROM do modo do PHY (variante SGMII vs. SerDes), comportamento da AN definido pelo firmware do fabricante |
Tabela de incompatibilidades
| Sintoma | Causa | Correção |
|---|---|---|
| SFP de cobre: clientes 1G bem, 10/100 nunca estabelecem enlace | porta em 1000BASE-X | mover para uma porta compatível com SGMII ou usar um módulo que esconde o 10/100 atrás de uma adaptação 1G-para-host |
| SFP de fibra só estabelece enlace com AN desligada | lado remoto sem Clause 37 (conversor de mídia, alguns ONUs) ou palavra SGMII vinda de um módulo de cobre | speed nonegotiate / autoneg off |
| SFP 100BASE-FX detectado, sem enlace | host sem modo SerDes de 100M | usar uma porta que suporte SFP de 100M, ou módulo 100BASE-FX sobre SGMII |
| SFP de 2,5G estabelece enlace em 1G ou não estabelece | host sem 2500BASE-X | escolher uma gaiola (cage) compatível com 2,5G ou um módulo com fallback de taxa |
| Stick ONU estabelece enlace e depois cai | expectativa 2500BASE-X vs. 1000BASE-X, AN | configurar o host para 2500BASE-X, AN desligada (Ópticas PON) |
| SFP+ 10GBASE-T só estabelece enlace em 10G | sem USXGMII no host | aceitar só 10G, ou usar um módulo com adaptação de taxa interna |
| Linux: módulo funciona numa placa, mas não em outra | o phylink escolheu uma interface diferente a partir da EEPROM; o SoC não tem esse modo | checar o dmesg por sfp: module … interface; corrigir os bytes de conformidade ou a device tree |
No CodingBox
Os bytes que direcionam a escolha do host estão todos no A0h: códigos de conformidade 3–10 (1000BASE-T, SX, LX, códigos de 10G), taxa de bits nominal 12, codificação 11 (8b/10b vs. 64b/66b), conformidade estendida 36. Um módulo de cobre codificado como 1000BASE-SX será tratado como fibra e perderá seu caminho 10/100; um módulo de fibra com um bit 1000BASE-T indevido será controlado como SGMII. O CodingBox mostra e edita esses campos (Check transceiver, Códigos de conformidade).