SGMII, 1000BASE-X, QSGMII, USXGMII: seriële interfaces naar PHY’s en SFP
Elke 1G-SFP-cage voert een seriële lane van 1,25 GBd, en die lane kan twee dialecten spreken die er op een oscilloscoop identiek uitzien: 1000BASE-X, de IEEE-interface die een glasvezelmodule verwacht, en SGMII, de Cisco-variant met 10/100 Mb/s en andere autonegotiatie. Koperen SFP's bevinden zich op de grens tussen beide; de meeste tickets met ‘de koperen SFP linkt op 1G maar mijn 100 Mb/s-camera niet’ blijken een dialectmismatch. Deze pagina behandelt de twee gigabitdialecten, hun autonegotiatie, 2500BASE-X, QSGMII voor meerdere poorten, USXGMII voor multigig en 10GBASE-T SFP+, en hoe Linux en switches de modus kiezen.
1000BASE-X: de oorspronkelijke SFP-interface (Clause 36/37)
| Onderdeel | Waarde |
|---|---|
| Snelheid | 1,25 GBd, 8b/10b → 1000 Mb/s payload |
| Lanes | 1 differentieel paar per richting (CML, AC-gekoppeld) |
| Codering | 8b/10b met /K28.5/-komma's, geordende sets /C1/ /C2/ (configuratie), /I1/ /I2/ (idle) |
| Autonegotiatie | Clause 37: 16-bit configuratiewoord uitgewisseld in geordende /C/-sets — full/half duplex, pauze (symmetrisch/asymmetrisch), remote fault, acknowledge. Geen snelheidsveld: 1000BASE-X is alleen 1G |
| Waar | switch/NIC-SerDes → SFP-cage; glasvezel-SFP (SX/LX/ZX/BiDi/CWDM) voert dit rechtstreeks naar de laser; de PCS bevindt zich in de host |
Een glasvezel-SFP is transparant: wat de host codeert, gaat als licht naar buiten. Daarom heeft een 1G-glasvezelmodule geen ‘modus’; de poort heeft die wel en moet in 1000BASE-X staan (vaak weergegeven als de modus ‘SerDes’ of ‘fiber’, speed nonegotiate op Cisco als het andere uiteinde geen AN heeft).
SGMII: gigabit plus 10/100 (Cisco SGMII-specificatie v1.8)
| Onderdeel | Waarde |
|---|---|
| Snelheid | dezelfde 1,25 GBd, 8b/10b |
| 10/100-ondersteuning | elke databyte wordt 100× gerepliceerd (10 Mb/s) of 10× (100 Mb/s), zodat de lijn 1,25 GBd blijft |
| Lanes | 2 paren; optionele DDR-klokparen van 625 MHz (TX_CLK/RX_CLK) — de meeste SerDes-implementaties werken zonder klok |
| Autonegotiatie | SGMII-controlwoord (ook in geordende /C/-sets, 16 bits): bit 15 link, bits 11–10 snelheid (10/100/1000), bit 12 duplex, bit 14 ack — verzonden PHY → MAC om de MAC te melden wat de koperen zijde heeft onderhandeld. Niet compatibel met inhoud van Clause 37 |
| Waar | MAC ↔ koperen PHY (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ SFP-cage op boards die koperen SFP's moeten ondersteunen, interne werking van koperen 1000BASE-T SFP |
SGMII is een MAC–PHY-interface; de ‘autonegotiatie’ vindt tweemaal plaats: Clause 28 op het getwiste paar tussen PHY en linkpartner, daarna rapporteert het SGMII-controlwoord het resultaat aan de MAC. Als een host Clause 37 verwacht maar een SGMII-woord ontvangt (of omgekeerd), voltooit de link AN nooit; AN op de poort uitschakelen (speed nonegotiate, no negotiation auto, autoneg off) is de gebruikelijke oplossing, maar alleen bij 1G.
Koperen SFP's tussen de twee
| Modus hostpoort | Gedrag koperen SFP | 10/100-clients |
|---|---|---|
| 1000BASE-X, AN aan | PHY van de module moet Clause 37 beantwoorden — veel modules doen dat (emuleren), sommige niet → geen link tot AN uit staat | nee (geen snelheidsveld) |
| 1000BASE-X, AN uit | link op 1G als de koperen zijde 1G onderhandelt | nee |
| SGMII, AN aan | PHY rapporteert 10/100/1000 via controlwoord | ja |
| SGMII, AN uit | vaste 1G | nee |
Koperen SFP-modules op basis van Marvell 88E1111 gebruiken standaard SGMII of 1000BASE-X, afhankelijk van een configuratie-EEPROM/strap die bij fabricage is ingesteld; fabrikanten verkopen ‘SGMII’- en ‘SerDes’-varianten van dezelfde module, en sommige zijn om te schakelen via de PHY-registers die via de I²C van de module bereikbaar zijn. Switchpoorten die ‘1000BASE-T SFP supported’ vermelden, implementeren SGMII op die cages (Koper en DAC).
100BASE-FX-SFP's
Een 100 Mb/s-glasvezel-SFP (100BASE-FX, 1310 nm, 2 km) vereist dat de host de lane op 125 MBd met 4b/5b uitvoert, een volledig andere PCS. Alleen poorten die expliciet ‘100M SFP’ ondersteunen (veel campus-switches op geselecteerde poorten, de meeste routers; weinig datacenterswitches) werken; op andere poorten wordt de module gedetecteerd maar linkt deze nooit. Sommige hosts implementeren 100BASE-FX via SGMII-replicatie met een externe PHY in de module (‘100M over SGMII’-SFP's).
2500BASE-X
| Onderdeel | Waarde |
|---|---|
| Snelheid | 3,125 GBd, 8b/10b → 2,5 Gb/s |
| Standaard | geen van IEEE (de facto, 2,5 × 1000BASE-X); Linux phy-interface-type = "2500base-x" |
| AN | Clause 37-stijl, vaak uitgeschakeld |
| Waar | 2.5G-SFP-modules (2.5GBASE-T-koper, 2.5G-glasvezel), GPON/EPON-ONU-sticks naar de host (2.5G downstream), Wi-Fi 6-AP-uplinks, enkele 2.5G-switch-SFP-cages |
De IEEE-equivalenten voor multigig zijn 2.5GBASE-X/5GBASE-R (802.3bz), maar de meeste chips spreken 2500BASE-X of USXGMII.
QSGMII: vier poorten op één lane
| Onderdeel | Waarde |
|---|---|
| Snelheid | 5 GBd, 8b/10b; 4 SGMII-kanalen tijdgemultiplext |
| Lanes | 2 paren voor vier poorten |
| Waar | switch-ASIC ↔ quad-koperen PHY (48-poorts access-switches: 12 QSGMII-lanes in plaats van 48 SGMII), enkele ontwerpen met vier SFP-cages via externe SerDes |
| Varianten | QSGMII (Cisco), ook ‘PSGMII’ (5 poorten) op sommige Qualcomm/Realtek-SoC's |
Bij normale ontwerpen niet zichtbaar bij een cage; het is van belang wanneer een board met quad-PHY SFP-combopoorten blootlegt waarvan de modus van het PHY-kanaal wordt overgenomen.
USXGMII: 10 Mb/s tot 10 Gb/s op één 10G-lane
| Onderdeel | Waarde |
|---|---|
| Snelheid | 10,3125 GBd, 64b/66b (elektrisch 10GBASE-R) |
| Snelheden | 10M, 100M, 1G, 2.5G, 5G, 10G via symboolreplicatie (zoals opgeschaalde SGMII) |
| Specificatie | Cisco USXGMII (v1.2), breed toegepast; Linux usxgmii |
| Meerdere poorten | USXGMII-M: 4 × 2.5G, 2 × 5G, 4 × 1G+… over één 10G-lane (zoals QSGMII) |
| AN | USXGMII-AN-woord in de 64b/66b-idle, rapporteert snelheid/duplex/link |
| Waar | ASIC ↔ multigig-PHY (2.5/5/10GBASE-T-poorten), 10GBASE-T SFP+-modules (interne PHY, bijv. Marvell AQR/Broadcom) |
Een 10GBASE-T SFP+-module biedt 10GBASE-R (SFI) aan een normale SFP+-poort en linkt op 10G; of deze ook 1G/2.5G/5G-clients kan bedienen, hangt af van ondersteuning door de host voor USXGMII-snelheidsaanpassing op die cage. De meeste switches hebben die niet, zodat de module alleen op 10G werkt, of de aanpassing intern uitvoert en 10G aan de host rapporteert terwijl de koperen zijde trager werkt (Snelheid en rate).
Hoe de host de modus kiest
| Host | Mechanisme |
|---|---|
| Linux phylink/SFP | leest A0h-bytes 3–10 (compliance), 12 (nominale snelheid), 36 (extended) en 6 bit 3 (1000BASE-T): 1000BASE-T → SGMII (of 1000BASE-X als de SoC geen SGMII heeft); 1000BASE-SX/LX → 1000BASE-X; BR 3,1 GBd → 2500BASE-X; 10G-codes → 10GBASE-R; de koperen PHY in de module wordt via I²C geprobed (adres 0x56/0xAC) en aangestuurd door phylib |
| Switch NOS | standaard poortmodus van het platform (meeste 1G-SFP-cages = geschikt voor SGMII; SFP+/SFP28 op 1G vaak alleen 1000BASE-X), opdrachten speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| NIC-drivers | Intel: SFP+-poorten ondersteunen 1G alleen in 1000BASE-X (geen koperen 10/100-SFP); Mellanox: 1G via 1000BASE-X op sommige modellen; Broadcom: per firmware (NIC-poorten) |
| Koperen SFP | PHY-modusstrap/EEPROM (SGMII tegenover SerDes-variant), AN-gedrag ingesteld door firmware van de fabrikant |
Mismatabel
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
| Koperen SFP: 1G-clients werken, 10/100 linkt nooit | poort in 1000BASE-X | verplaats naar een SGMII-geschikte poort of gebruik een module die 10/100 verbergt via 1G-naar-host-aanpassing |
| Glasvezel-SFP linkt alleen met AN uit | ander uiteinde zonder Clause 37 (mediaconverter, sommige ONU's) of SGMII-woord van een koperen module | speed nonegotiate / autoneg off |
| 100BASE-FX-SFP gedetecteerd, geen link | host heeft geen 100M-SerDes-modus | gebruik een poort die 100M-SFP ondersteunt, of een 100BASE-FX-over-SGMII-module |
| 2.5G-SFP linkt op 1G of helemaal niet | host heeft geen 2500BASE-X | kies een 2.5G-geschikte cage of een module met snelheidsfallback |
| ONU-stick linkt en valt daarna weg | verwachting 2500BASE-X tegenover 1000BASE-X, AN | stel de host in op 2500BASE-X, AN uit (PON-optiek) |
| 10GBASE-T SFP+ linkt alleen op 10G | geen USXGMII op host | accepteer alleen 10G, of gebruik een module met interne snelheidsaanpassing |
| Linux: module werkt op het ene board, niet op het andere | phylink koos een andere interface uit de EEPROM; SoC heeft die modus niet | controleer dmesg op sfp: module … interface; corrigeer compliancebytes of device tree |
In CodingBox
De bytes die de keuze van de host sturen, staan allemaal in A0h: conformiteitscodes 3–10 (1000BASE-T, SX, LX, 10G-codes), nominale bitsnelheid 12, codering 11 (8b/10b tegenover 64b/66b), extended compliance 36. Een koperen module die als 1000BASE-SX is gecodeerd, wordt als glasvezel behandeld en verliest zijn 10/100-pad; een glasvezelmodule met een verdwaald 1000BASE-T-bit wordt als SGMII aangestuurd. CodingBox toont en bewerkt deze velden (Check transceiver, Conformiteitscodes).