SGMII, 1000BASE-X, QSGMII, USXGMII: interfacce seriali verso PHY e SFP
Ogni gabbia SFP 1G porta una lane seriale a 1,25 GBd, e quella lane può parlare due dialetti che su un oscilloscopio sembrano identici: 1000BASE-X, l’interfaccia IEEE che un modulo in fibra si aspetta, e SGMII, la variante di Cisco che aggiunge 10/100 Mb/s e un’autonegoziazione diversa. Gli SFP in rame vivono al confine tra i due, e la maggior parte dei ticket del tipo «l’SFP in rame collega a 1G ma la mia telecamera da 100 Mb/s no» sono un disallineamento di dialetto. Questa pagina copre i due dialetti gigabit, la loro autonegoziazione, 2500BASE-X, il QSGMII multiporta, USXGMII per il multigig e l’SFP+ 10GBASE-T, e come Linux e gli switch scelgono la modalità.
1000BASE-X: l’interfaccia nativa dell’SFP (Clause 36/37)
| Voce | Valore |
|---|---|
| Velocità | 1,25 GBd, 8b/10b → payload di 1000 Mb/s |
| Lane | 1 coppia differenziale per direzione (CML, accoppiata in AC) |
| Codifica | 8b/10b con virgole /K28.5/, insiemi ordinati /C1/ /C2/ (configurazione), /I1/ /I2/ (inattività) |
| Autonegoziazione | Clause 37: parola di configurazione a 16 bit scambiata negli insiemi ordinati /C/ — full/half duplex, pausa (simmetrica/asimmetrica), guasto remoto, conferma. Nessun campo di velocità: 1000BASE-X è solo 1G |
| Dove | SerDes di switch/NIC → gabbia SFP; l’SFP in fibra (SX/LX/ZX/BiDi/CWDM) lo passa direttamente al laser; il PCS vive nell’host |
Un SFP in fibra è trasparente: qualunque cosa codifichi l’host esce come luce. Per questo un modulo in fibra 1G non ha «modalità» — ma la porta sì, e deve essere 1000BASE-X (spesso indicata come modalità «SerDes» o «fiber», speed nonegotiate su Cisco quando l’altro capo non ha AN).
SGMII: gigabit più 10/100 (specifica Cisco SGMII v1.8)
| Voce | Valore |
|---|---|
| Velocità | gli stessi 1,25 GBd, 8b/10b |
| Supporto 10/100 | ogni byte di dati replicato 100× (10 Mb/s) o 10× (100 Mb/s) così la linea resta a 1,25 GBd |
| Lane | 2 coppie; coppie di clock DDR a 625 MHz opzionali (TX_CLK/RX_CLK) — la maggior parte delle implementazioni SerDes funziona senza clock |
| Autonegoziazione | parola di controllo SGMII (anch’essa negli insiemi ordinati /C/, 16 bit): bit 15 collegamento, bit 11–10 velocità (10/100/1000), bit 12 duplex, bit 14 conferma — inviata PHY → MAC per dire al MAC cosa ha negoziato il lato in rame. Non compatibile con il contenuto della Clause 37 |
| Dove | MAC ↔ PHY in rame (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ gabbia SFP su schede che vogliono supportare SFP in rame, internamente a SFP 1000BASE-T in rame |
SGMII è un’interfaccia MAC-PHY; l’«autonegoziazione» avviene due volte — Clause 28 sul doppino tra il PHY e il partner di collegamento, poi la parola di controllo SGMII riporta il risultato al MAC. Quando un host si aspetta la Clause 37 e riceve una parola SGMII (o viceversa), il collegamento non completa mai l’AN; disabilitare l’AN sulla porta (speed nonegotiate, no negotiation auto, autoneg off) è il workaround abituale — solo a 1G.
Gli SFP in rame tra i due
| Modalità della porta host | Comportamento dell’SFP in rame | Client 10/100 |
|---|---|---|
| 1000BASE-X, AN attiva | il PHY del modulo deve rispondere alla Clause 37 — molti lo fanno (emulano), altri no → nessun collegamento finché l’AN non è disattivata | no (nessun campo di velocità) |
| 1000BASE-X, AN disattivata | collegamento a 1G quando il lato in rame negozia 1G | no |
| SGMII, AN attiva | il PHY riporta 10/100/1000 tramite la parola di controllo | sì |
| SGMII, AN disattivata | 1G fisso | no |
I moduli SFP in rame basati su Marvell 88E1111 usano di default SGMII o 1000BASE-X a seconda di un’EEPROM di configurazione/strap impostata in fabbrica; i produttori vendono varianti «SGMII» e «SerDes» dello stesso modulo, e alcune possono essere commutate tramite i registri del PHY raggiungibili via I²C del modulo. Le porte switch che indicano «1000BASE-T SFP supportato» implementano SGMII su quelle gabbie (Ethernet in rame e DAC).
SFP 100BASE-FX
Un SFP in fibra a 100 Mb/s (100BASE-FX, 1310 nm, 2 km) richiede che l’host faccia girare la lane a 125 MBd con 4b/5b — un PCS completamente diverso. Funzionano solo le porte che supportano esplicitamente «100M SFP» (molti switch da campus su porte selezionate, la maggior parte dei router; pochi switch da data center); sulle altre il modulo viene rilevato e non collega mai. Alcuni host implementano 100BASE-FX tramite replicazione SGMII con un PHY esterno nel modulo (SFP «100M over SGMII»).
2500BASE-X
| Voce | Valore |
|---|---|
| Velocità | 3,125 GBd, 8b/10b → 2,5 Gb/s |
| Standard | nessuno dall’IEEE (de facto, 2,5 × 1000BASE-X); Linux phy-interface-type = "2500base-x" |
| AN | in stile Clause 37, spesso disattivata |
| Dove | moduli SFP 2,5G (rame 2,5GBASE-T, fibra 2,5G), stick ONU GPON/EPON verso l’host (downstream 2,5G), uplink di AP Wi-Fi 6, alcune gabbie SFP di switch 2,5G |
Gli equivalenti IEEE per il multigig sono 2,5GBASE-X/5GBASE-R (802.3bz), ma la maggior parte del silicio parla 2500BASE-X o USXGMII.
QSGMII: quattro porte su una lane
| Voce | Valore |
|---|---|
| Velocità | 5 GBd, 8b/10b; 4 canali SGMII multiplexati nel tempo |
| Lane | 2 coppie per quattro porte |
| Dove | ASIC di switch ↔ PHY in rame quad (switch di accesso a 48 porte: 12 lane QSGMII invece di 48 SGMII), alcuni design di gabbia SFP quad-porta tramite SerDes esterno |
| Varianti | QSGMII (Cisco), anche «PSGMII» (5 porte) su alcuni SoC Qualcomm/Realtek |
Non visibile a una gabbia nei design normali; conta quando una scheda quad-PHY espone porte combo SFP la cui modalità è ereditata dal canale del PHY.
USXGMII: da 10 Mb/s a 10 Gb/s su una lane a 10G
| Voce | Valore |
|---|---|
| Velocità | 10,3125 GBd, 64b/66b (elettrico 10GBASE-R) |
| Velocità supportate | 10M, 100M, 1G, 2,5G, 5G, 10G tramite replicazione di simboli (come SGMII in scala) |
| Specifica | Cisco USXGMII (v1.2), adottata ampiamente; Linux usxgmii |
| Multiporta | USXGMII-M: 4 × 2,5G, 2 × 5G, 4 × 1G+… su una lane a 10G (come QSGMII) |
| AN | parola di AN USXGMII nell’inattività 64b/66b, riporta velocità/duplex/collegamento |
| Dove | ASIC ↔ PHY multigig (porte 2,5/5/10GBASE-T), moduli SFP+ 10GBASE-T (PHY interno, ad es. Marvell AQR/Broadcom) |
Un modulo SFP+ 10GBASE-T presenta 10GBASE-R (SFI) a una normale porta SFP+ e collega a 10G; se possa anche servire client 1G/2,5G/5G dipende dal fatto che l’host supporti l’adattamento di velocità USXGMII su quella gabbia — la maggior parte degli switch non lo fa, quindi il modulo funziona solo a 10G, oppure esegue l’adattamento internamente e riporta 10G all’host mentre il lato in rame gira più lento (Velocità e rate).
Come l’host sceglie la modalità
| Host | Meccanismo |
|---|---|
| Linux phylink/SFP | legge i byte A0h 3–10 (conformità), 12 (velocità nominale), 36 (esteso) e il bit 3 del byte 6 (1000BASE-T): 1000BASE-T → SGMII (o 1000BASE-X se il SoC non ha SGMII); 1000BASE-SX/LX → 1000BASE-X; BR 3,1 GBd → 2500BASE-X; codici 10G → 10GBASE-R; il PHY in rame dentro il modulo viene sondato via I²C (indirizzo 0x56/0xAC) e pilotato da phylib |
| NOS dello switch | predefinito della porta secondo la piattaforma (la maggior parte delle gabbie SFP 1G è capace di SGMII; SFP+/SFP28 a 1G spesso solo 1000BASE-X), comandi speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| Driver NIC | Intel: le porte SFP+ supportano 1G solo in 1000BASE-X (nessun SFP in rame 10/100); Mellanox: 1G via 1000BASE-X su alcuni modelli; Broadcom: secondo firmware (Porte NIC) |
| SFP in rame | strap/EEPROM della modalità del PHY (variante SGMII rispetto a SerDes), comportamento dell’AN impostato dal firmware del produttore |
Tabella dei disallineamenti
| Sintomo | Causa | Soluzione |
|---|---|---|
| SFP in rame: client 1G ok, 10/100 non collega mai | porta in 1000BASE-X | passa a una porta capace di SGMII o usa un modulo che nasconde il 10/100 dietro un adattamento a 1G verso l’host |
| L’SFP in fibra collega solo con AN disattivata | l’altro capo senza Clause 37 (media converter, alcune ONU) o parola SGMII da un modulo in rame | speed nonegotiate / autoneg off |
| SFP 100BASE-FX rilevato, nessun collegamento | l’host non ha la modalità SerDes 100M | usa una porta che supporti 100M SFP, o un modulo 100BASE-FX su SGMII |
| L’SFP 2,5G collega a 1G o non collega affatto | l’host non ha 2500BASE-X | scegli una gabbia capace di 2,5G o un modulo con fallback di velocità |
| Lo stick ONU collega, poi cade | aspettativa 2500BASE-X rispetto a 1000BASE-X, AN | imposta l’host a 2500BASE-X, AN disattivata (Ottica PON) |
| L’SFP+ 10GBASE-T collega solo a 10G | nessun USXGMII sull’host | accetta solo 10G, o usa un modulo con adattamento di velocità interno |
| Linux: il modulo funziona su una scheda, non su un’altra | phylink ha scelto un’interfaccia diversa dall’EEPROM; al SoC manca quella modalità | controlla dmesg per sfp: module … interface; correggi i byte di conformità o il device tree |
In CodingBox
I byte che orientano la scelta dell’host sono tutti in A0h: codici di conformità 3–10 (1000BASE-T, SX, LX, codici 10G), bit rate nominale 12, codifica 11 (8b/10b rispetto a 64b/66b), conformità estesa 36. Un modulo in rame codificato come 1000BASE-SX verrà trattato come fibra e perderà il suo percorso 10/100; un modulo in fibra con un bit 1000BASE-T spurio verrà pilotato come SGMII. CodingBox mostra e modifica questi campi (Check transceiver, Codici di conformità).