SGMII, 1000BASE-X, QSGMII, USXGMII: serielle Schnittstellen zu PHYs und SFP
Jeder 1G-SFP-Käfig führt eine serielle 1,25-GBd-Lane, und diese Lane kann zwei Dialekte sprechen, die auf dem Oszilloskop identisch aussehen: 1000BASE-X, die von der IEEE definierte Schnittstelle, die ein Glasfasermodul erwartet, und SGMII, Ciscos Variante, die 10/100 Mb/s und eine andere Autonegotiation hinzufügt. Kupfer-SFPs leben genau an der Grenze zwischen beiden, und die meisten Tickets nach dem Muster „der Kupfer-SFP linkt bei 1G, aber meine 100-Mb/s-Kamera nicht“ sind ein Dialekt-Mismatch. Diese Seite behandelt die beiden Gigabit-Dialekte, ihre Autonegotiation, 2500BASE-X, das Multiport-QSGMII, USXGMII für Multigig und 10GBASE-T-SFP+ sowie die Art, wie Linux und Switches den Modus wählen.
1000BASE-X: die native SFP-Schnittstelle (Clause 36/37)
| Punkt | Wert |
|---|---|
| Rate | 1,25 GBd, 8b/10b → 1000 Mb/s Nutzlast |
| Lanes | 1 Differenzpaar je Richtung (CML, AC-gekoppelt) |
| Kodierung | 8b/10b mit /K28.5/-Kommas, Ordered Sets /C1/ /C2/ (Konfiguration), /I1/ /I2/ (Idle) |
| Autonegotiation | Clause 37: 16-Bit-Konfigurationswort, ausgetauscht in /C/-Ordered-Sets — Vollduplex/Halbduplex, Pause (symmetrisch/asymmetrisch), Remote Fault, Acknowledge. Kein Speed-Feld: 1000BASE-X ist nur 1G |
| Wo | Switch-/NIC-SerDes → SFP-Käfig; Glasfaser-SFP (SX/LX/ZX/BiDi/CWDM) reicht es direkt an den Laser weiter; der PCS sitzt im Host |
Ein Glasfaser-SFP ist transparent: Was auch immer der Host kodiert, geht als Licht hinaus. Deshalb hat ein 1G-Glasfasermodul keinen „Modus“ — der Port aber schon, und er muss auf 1000BASE-X stehen (oft als Modus „SerDes“ oder „fiber“ angezeigt, bei Cisco speed nonegotiate, wenn die Gegenstelle keine AN beherrscht).
SGMII: Gigabit plus 10/100 (Cisco-SGMII-Spezifikation v1.8)
| Punkt | Wert |
|---|---|
| Rate | ebenfalls 1,25 GBd, 8b/10b |
| 10/100-Unterstützung | jedes Datenbyte wird 100× (10 Mb/s) bzw. 10× (100 Mb/s) repliziert, damit die Leitung bei 1,25 GBd bleibt |
| Lanes | 2 Paare; optionale 625-MHz-DDR-Taktpaare (TX_CLK/RX_CLK) — die meisten SerDes-Implementierungen laufen taktlos |
| Autonegotiation | SGMII-Kontrollwort (ebenfalls in /C/-Ordered-Sets übertragen, 16 Bit): Bit 15 Link, Bits 11–10 Speed (10/100/1000), Bit 12 Duplex, Bit 14 Ack — gesendet PHY → MAC, um dem MAC mitzuteilen, was die Kupferseite ausgehandelt hat. Nicht kompatibel mit dem Inhalt von Clause 37 |
| Wo | MAC ↔ Kupfer-PHY (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ SFP-Käfig auf Boards mit Kupfer-SFP-Unterstützung, intern in Kupfer-1000BASE-T-SFPs |
SGMII ist eine MAC-PHY-Schnittstelle; die „Autonegotiation“ läuft zweimal ab — Clause 28 auf dem Twisted-Pair-Kabel zwischen PHY und Link-Partner, danach meldet das SGMII-Kontrollwort das Ergebnis an den MAC. Erwartet ein Host Clause 37 und erhält stattdessen ein SGMII-Wort (oder umgekehrt), schließt die AN nie ab; die AN am Port zu deaktivieren (speed nonegotiate, no negotiation auto, autoneg off) ist der übliche Workaround — nur bei 1G.
Kupfer-SFPs zwischen den beiden
| Host-Port-Modus | Verhalten des Kupfer-SFP | 10/100-Clients |
|---|---|---|
| 1000BASE-X, AN ein | der PHY des Moduls muss auf Clause 37 antworten — viele tun das (emulieren es), manche nicht → kein Link, bis AN aus ist | nein (kein Speed-Feld) |
| 1000BASE-X, AN aus | Link bei 1G, wenn die Kupferseite 1G aushandelt | nein |
| SGMII, AN ein | PHY meldet 10/100/1000 über das Kontrollwort | ja |
| SGMII, AN aus | fest auf 1G | nein |
Kupfer-SFP-Module auf Basis des Marvell 88E1111 stehen werkseitig je nach Konfigurations-EEPROM/Strap-Belegung auf SGMII oder 1000BASE-X; Hersteller verkaufen „SGMII“- und „SerDes“-Varianten desselben Moduls, und manche lassen sich über die PHY-Register umschalten, die über das I²C des Moduls erreichbar sind. Switch-Ports mit der Angabe „1000BASE-T SFP supported“ implementieren SGMII auf diesen Käfigen (Kupfer-Ethernet und DAC).
100BASE-FX-SFPs
Ein 100-Mb/s-Glasfaser-SFP (100BASE-FX, 1310 nm, 2 km) verlangt vom Host, die Lane mit 125 MBd und 4b/5b zu betreiben — ein völlig anderer PCS. Nur Ports mit expliziter Unterstützung für „100M SFP“ (viele Campus-Switches auf ausgewählten Ports, die meisten Router; wenige Rechenzentrums-Switches) funktionieren; bei den übrigen wird das Modul erkannt, linkt aber nie. Manche Hosts implementieren 100BASE-FX per SGMII-Replikation mit einem externen PHY im Modul (SFPs vom Typ „100M over SGMII“).
2500BASE-X
| Punkt | Wert |
|---|---|
| Rate | 3,125 GBd, 8b/10b → 2,5 Gb/s |
| Standard | keiner von der IEEE (de facto, 2,5 × 1000BASE-X); Linux phy-interface-type = "2500base-x" |
| AN | nach Art von Clause 37, oft deaktiviert |
| Wo | 2,5G-SFP-Module (2,5GBASE-T-Kupfer, 2,5G-Glasfaser), GPON-/EPON-ONU-Sticks zum Host hin (2,5G Downstream), Wi-Fi-6-AP-Uplinks, manche 2,5G-Switch-SFP-Käfige |
Die IEEE-Entsprechungen für Multigig sind 2,5GBASE-X/5GBASE-R (802.3bz), doch die meisten Chips sprechen 2500BASE-X oder USXGMII.
QSGMII: vier Ports auf einer Lane
| Punkt | Wert |
|---|---|
| Rate | 5 GBd, 8b/10b; 4 SGMII-Kanäle zeitmultiplext |
| Lanes | 2 Paare für vier Ports |
| Wo | Switch-ASIC ↔ Quad-Kupfer-PHY (48-Port-Access-Switches: 12 QSGMII-Lanes statt 48 SGMII), manche Quad-Port-SFP-Käfig-Designs über externen SerDes |
| Varianten | QSGMII (Cisco), außerdem „PSGMII“ (5 Ports) auf manchen Qualcomm-/Realtek-SoCs |
In normalen Designs am Käfig nicht sichtbar; relevant wird es, wenn ein Quad-PHY-Board SFP-Combo-Ports bereitstellt, deren Modus vom PHY-Kanal geerbt wird.
USXGMII: 10 Mb/s bis 10 Gb/s auf einer 10G-Lane
| Punkt | Wert |
|---|---|
| Rate | 10,3125 GBd, 64b/66b (10GBASE-R elektrisch) |
| Geschwindigkeiten | 10M, 100M, 1G, 2,5G, 5G, 10G per Symbolreplikation (wie SGMII, nur hochskaliert) |
| Spezifikation | Cisco USXGMII (v1.2), weit verbreitet übernommen; Linux usxgmii |
| Multiport | USXGMII-M: 4 × 2,5G, 2 × 5G, 4 × 1G+… über eine 10G-Lane (wie QSGMII) |
| AN | USXGMII-AN-Wort im 64b/66b-Idle, meldet Speed/Duplex/Link |
| Wo | ASIC ↔ Multigig-PHY (2,5/5/10GBASE-T-Ports), 10GBASE-T-SFP+-Module (interner PHY, z. B. Marvell AQR/Broadcom) |
Ein 10GBASE-T-SFP+-Modul präsentiert einem normalen SFP+-Port 10GBASE-R (SFI) und linkt bei 10G; ob es zusätzlich 1G-/2,5G-/5G-Clients bedienen kann, hängt davon ab, ob der Host USXGMII-Ratenanpassung auf diesem Käfig unterstützt — die meisten Switches tun das nicht, sodass das Modul nur bei 10G funktioniert oder die Anpassung intern vornimmt und dem Host 10G meldet, während die Kupferseite langsamer läuft (Speed und Rate).
Wie der Host den Modus wählt
| Host | Mechanismus |
|---|---|
| Linux phylink/SFP | liest A0h-Bytes 3–10 (Compliance), 12 (nominale Rate), 36 (Extended) und Byte 6 Bit 3 (1000BASE-T): 1000BASE-T → SGMII (oder 1000BASE-X, wenn dem SoC SGMII fehlt); 1000BASE-SX/LX → 1000BASE-X; BR 3,1 GBd → 2500BASE-X; 10G-Codes → 10GBASE-R; der Kupfer-PHY im Modul wird über I²C (Adresse 0x56/0xAC) abgefragt und von phylib angesteuert |
| Switch-NOS | Port-Vorgabe der Plattform (die meisten 1G-SFP-Käfige sind SGMII-fähig; SFP+/SFP28 bei 1G oft nur 1000BASE-X), Befehle speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| NIC-Treiber | Intel: SFP+-Ports unterstützen 1G nur über 1000BASE-X (kein 10/100-Kupfer-SFP); Mellanox: 1G über 1000BASE-X bei manchen Modellen; Broadcom: je nach Firmware (NIC-Ports) |
| Kupfer-SFP | PHY-Modus per Strap/EEPROM (Variante SGMII vs. SerDes), AN-Verhalten von der Hersteller-Firmware festgelegt |
Tabelle der Fehlkombinationen
| Symptom | Ursache | Abhilfe |
|---|---|---|
| Kupfer-SFP: 1G-Clients laufen, 10/100 linkt nie | Port in 1000BASE-X | auf einen SGMII-fähigen Port wechseln oder ein Modul verwenden, das 10/100 hinter einer 1G-zu-Host-Anpassung verbirgt |
| Glasfaser-SFP linkt nur mit AN aus | Gegenstelle ohne Clause 37 (Medienkonverter, manche ONUs) oder SGMII-Wort von einem Kupfermodul | speed nonegotiate / autoneg off |
| 100BASE-FX-SFP erkannt, kein Link | Host ohne 100M-SerDes-Modus | einen Port mit 100M-SFP-Unterstützung verwenden oder ein 100BASE-FX-over-SGMII-Modul |
| 2,5G-SFP linkt bei 1G oder gar nicht | Host ohne 2500BASE-X | einen 2,5G-fähigen Käfig wählen oder ein Modul mit Raten-Fallback |
| ONU-Stick linkt, bricht dann ab | Erwartung 2500BASE-X vs. 1000BASE-X, AN | Host auf 2500BASE-X setzen, AN aus (PON-Optik) |
| 10GBASE-T-SFP+ linkt nur bei 10G | kein USXGMII am Host | nur 10G akzeptieren oder ein Modul mit interner Ratenanpassung verwenden |
| Linux: Modul funktioniert auf einem Board, auf einem anderen nicht | phylink hat anhand des EEPROMs eine andere Schnittstelle gewählt; dem SoC fehlt dieser Modus | dmesg auf sfp: module … interface prüfen; Compliance-Bytes oder Device Tree korrigieren |
In CodingBox
Die Bytes, die die Wahl des Hosts steuern, liegen alle in A0h: Compliance-Codes 3–10 (1000BASE-T, SX, LX, 10G-Codes), nominale Bitrate 12, Encoding 11 (8b/10b vs. 64b/66b), Extended Compliance 36. Ein Kupfermodul, das als 1000BASE-SX kodiert ist, wird als Glasfaser behandelt und verliert seinen 10/100-Pfad; ein Glasfasermodul mit einem versehentlich gesetzten 1000BASE-T-Bit wird als SGMII angesteuert. CodingBox zeigt und bearbeitet diese Felder (Check transceiver, Compliance-Codes).