SGMII, 1000BASE-X, QSGMII, USXGMII : interfaces série vers PHY et SFP
Chaque cage SFP 1G transporte une voie série à 1,25 GBd, et cette voie peut parler deux dialectes identiques à l’oscilloscope : 1000BASE-X, l’interface IEEE qu’attend un module fibre, et SGMII, la variante de Cisco qui ajoute le 10/100 Mb/s et une autonégociation différente. Les SFP cuivre vivent à la frontière entre les deux, et la plupart des tickets « le SFP cuivre se connecte en 1G mais ma caméra 100 Mb/s non » viennent d’une incompatibilité de dialecte. Cette page couvre les deux dialectes gigabit, leur autonégociation, le 2500BASE-X, le QSGMII multiport, l’USXGMII pour le multigig et le SFP+ 10GBASE-T, et la façon dont Linux et les commutateurs choisissent le mode.
1000BASE-X : l’interface SFP native (clause 36/37)
| Élément | Valeur |
|---|---|
| Débit | 1,25 GBd, 8b/10b → charge utile 1000 Mb/s |
| Voies | 1 paire différentielle par sens (CML, couplée en AC) |
| Codage | 8b/10b avec virgules /K28.5/, ensembles ordonnés /C1/ /C2/ (configuration), /I1/ /I2/ (repos) |
| Autonégociation | Clause 37 : mot de configuration 16 bits échangé dans les ensembles ordonnés /C/ — duplex intégral/semi, pause (symétrique/asymétrique), défaut distant, accusé de réception. Pas de champ de débit : le 1000BASE-X est 1G uniquement |
| Où | SerDes du commutateur/NIC → cage SFP ; le SFP fibre (SX/LX/ZX/BiDi/CWDM) le transmet directement au laser ; le PCS réside dans l’hôte |
Un SFP fibre est transparent : tout ce que l’hôte code ressort sous forme de lumière. C’est pourquoi un module fibre 1G n’a pas de « mode » — mais le port, lui, en a un, et il doit être en 1000BASE-X (souvent affiché comme mode « SerDes » ou « fiber », speed nonegotiate chez Cisco quand l’extrémité distante n’a pas d’AN).
SGMII : le gigabit plus le 10/100 (spécification Cisco SGMII v1.8)
| Élément | Valeur |
|---|---|
| Débit | le même 1,25 GBd, 8b/10b |
| Prise en charge 10/100 | chaque octet de données répliqué 100× (10 Mb/s) ou 10× (100 Mb/s) pour que la ligne reste à 1,25 GBd |
| Voies | 2 paires ; paires d’horloge DDR 625 MHz optionnelles (TX_CLK/RX_CLK) — la plupart des implémentations SerDes fonctionnent sans horloge |
| Autonégociation | mot de contrôle SGMII (également transporté dans les ensembles ordonnés /C/, 16 bits) : bit 15 liaison, bits 11–10 débit (10/100/1000), bit 12 duplex, bit 14 accusé de réception — envoyé PHY → MAC pour indiquer au MAC ce que le côté cuivre a négocié. Incompatible avec le contenu de la clause 37 |
| Où | MAC ↔ PHY cuivre (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ cage SFP sur les cartes qui veulent prendre en charge les SFP cuivre, interne aux SFP cuivre 1000BASE-T |
Le SGMII est une interface MAC–PHY ; l’« autonégociation » a lieu deux fois — la clause 28 sur la paire torsadée entre le PHY et le partenaire de liaison, puis le mot de contrôle SGMII rapporte le résultat au MAC. Quand un hôte attend la clause 37 et reçoit un mot SGMII (ou l’inverse), la liaison ne termine jamais l’AN ; désactiver l’AN sur le port (speed nonegotiate, no negotiation auto, autoneg off) est le contournement habituel — en 1G uniquement.
Les SFP cuivre entre les deux
| Mode du port hôte | Comportement du SFP cuivre | Clients 10/100 |
|---|---|---|
| 1000BASE-X, AN activé | le PHY du module doit répondre à la clause 37 — beaucoup le font (émulation), certains non → pas de liaison avant de désactiver l’AN | non (pas de champ de débit) |
| 1000BASE-X, AN désactivé | liaison en 1G quand le côté cuivre négocie le 1G | non |
| SGMII, AN activé | le PHY rapporte le 10/100/1000 via le mot de contrôle | oui |
| SGMII, AN désactivé | 1G fixe | non |
Les modules SFP cuivre basés sur le Marvell 88E1111 sont par défaut en SGMII ou en 1000BASE-X selon un EEPROM de configuration/strap réglé à la fabrication ; les constructeurs vendent des variantes « SGMII » et « SerDes » du même module, et certains peuvent être basculés via les registres du PHY accessibles sur l’I²C du module. Les ports de commutateur qui annoncent « 1000BASE-T SFP supported » implémentent le SGMII sur ces cages (Ethernet cuivre et DAC).
SFP 100BASE-FX
Un SFP fibre 100 Mb/s (100BASE-FX, 1310 nm, 2 km) exige que l’hôte fasse fonctionner la voie à 125 MBd en 4b/5b — un PCS complètement différent. Seuls les ports qui prennent explicitement en charge le « 100M SFP » (beaucoup de commutateurs de campus sur certains ports, la plupart des routeurs ; peu de commutateurs de centre de données) fonctionnent ; sur les autres, le module est détecté mais ne se connecte jamais. Certains hôtes implémentent le 100BASE-FX par réplication SGMII avec un PHY externe dans le module (SFP « 100M over SGMII »).
2500BASE-X
| Élément | Valeur |
|---|---|
| Débit | 3,125 GBd, 8b/10b → 2,5 Gb/s |
| Norme | aucune de l’IEEE (de facto, 2,5 × 1000BASE-X) ; Linux phy-interface-type = "2500base-x" |
| AN | style clause 37, souvent désactivée |
| Où | modules SFP 2,5G (cuivre 2.5GBASE-T, fibre 2,5G), clés ONU GPON/EPON vers l’hôte (2,5G descendant), liaisons montantes de points d’accès Wi-Fi 6, certaines cages SFP de commutateur 2,5G |
Les équivalents IEEE pour le multigig sont le 2.5GBASE-X/5GBASE-R (802.3bz), mais la plupart des puces parlent le 2500BASE-X ou l’USXGMII.
QSGMII : quatre ports sur une seule voie
| Élément | Valeur |
|---|---|
| Débit | 5 GBd, 8b/10b ; 4 canaux SGMII multiplexés dans le temps |
| Voies | 2 paires pour quatre ports |
| Où | ASIC de commutateur ↔ PHY cuivre quadruple (commutateurs d’accès 48 ports : 12 voies QSGMII au lieu de 48 SGMII), certaines conceptions de cages SFP quadruples via un SerDes externe |
| Variantes | QSGMII (Cisco), aussi « PSGMII » (5 ports) sur certains SoC Qualcomm/Realtek |
Invisible au niveau d’une cage dans les conceptions normales ; cela compte quand une carte à PHY quadruple expose des ports combo SFP dont le mode hérite du canal PHY.
USXGMII : de 10 Mb/s à 10 Gb/s sur une seule voie 10G
| Élément | Valeur |
|---|---|
| Débit | 10,3125 GBd, 64b/66b (électrique 10GBASE-R) |
| Débits | 10M, 100M, 1G, 2,5G, 5G, 10G par réplication de symboles (comme le SGMII mis à l’échelle) |
| Spécification | Cisco USXGMII (v1.2), largement adoptée ; Linux usxgmii |
| Multiport | USXGMII-M : 4 × 2,5G, 2 × 5G, 4 × 1G+… sur une seule voie 10G (comme le QSGMII) |
| AN | mot d’AN USXGMII dans le repos 64b/66b, rapporte débit/duplex/liaison |
| Où | ASIC ↔ PHY multigig (ports 2.5/5/10GBASE-T), modules SFP+ 10GBASE-T (PHY interne, par exemple Marvell AQR/Broadcom) |
Un module SFP+ 10GBASE-T présente du 10GBASE-R (SFI) à un port SFP+ normal et se connecte en 10G ; sa capacité à aussi servir des clients 1G/2,5G/5G dépend du support par l’hôte de l’adaptation de débit USXGMII sur cette cage — la plupart des commutateurs ne le font pas, donc le module ne fonctionne qu’en 10G, ou effectue l’adaptation en interne et rapporte du 10G à l’hôte pendant que le côté cuivre tourne plus lentement (Vitesse et débit).
Comment l’hôte choisit le mode
| Hôte | Mécanisme |
|---|---|
| Linux phylink/SFP | lit les octets A0h 3–10 (conformité), 12 (débit nominal), 36 (étendue) et 6 bit 3 (1000BASE-T) : 1000BASE-T → SGMII (ou 1000BASE-X si le SoC n’a pas de SGMII) ; 1000BASE-SX/LX → 1000BASE-X ; BR 3,1 GBd → 2500BASE-X ; codes 10G → 10GBASE-R ; le PHY cuivre à l’intérieur du module est sondé en I²C (adresse 0x56/0xAC) et piloté par phylib |
| NOS du commutateur | défaut du port selon la plateforme (la plupart des cages SFP 1G sont compatibles SGMII ; les SFP+/SFP28 en 1G sont souvent 1000BASE-X uniquement), commandes speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| Pilotes NIC | Intel : les ports SFP+ prennent en charge le 1G en 1000BASE-X uniquement (pas de SFP cuivre 10/100) ; Mellanox : 1G via 1000BASE-X sur certains modèles ; Broadcom : selon le firmware (Ports NIC) |
| SFP cuivre | strap/EEPROM du mode PHY (variante SGMII contre SerDes), comportement de l’AN réglé par le firmware du constructeur |
Tableau des incompatibilités
| Symptôme | Cause | Correction |
|---|---|---|
| SFP cuivre : clients 1G OK, le 10/100 ne se connecte jamais | port en 1000BASE-X | passer à un port compatible SGMII ou utiliser un module qui masque le 10/100 derrière une adaptation 1G vers l’hôte |
| Le SFP fibre ne se connecte qu’avec l’AN désactivé | extrémité distante sans clause 37 (convertisseur de média, certains ONU) ou mot SGMII venant d’un module cuivre | speed nonegotiate / autoneg off |
| SFP 100BASE-FX détecté, pas de liaison | l’hôte n’a pas de mode SerDes 100M | utiliser un port qui prend en charge le 100M SFP, ou un module 100BASE-FX sur SGMII |
| Le SFP 2,5G se connecte en 1G ou pas du tout | l’hôte n’a pas de 2500BASE-X | choisir une cage compatible 2,5G ou un module avec repli de débit |
| La clé ONU se connecte puis tombe | attente 2500BASE-X contre 1000BASE-X, AN | régler l’hôte en 2500BASE-X, AN désactivé (Optique PON) |
| Le SFP+ 10GBASE-T ne se connecte qu’en 10G | pas d’USXGMII sur l’hôte | accepter le 10G uniquement, ou utiliser un module avec adaptation de débit interne |
| Linux : le module fonctionne sur une carte, pas sur une autre | phylink a choisi une interface différente à partir de l’EEPROM ; le SoC n’a pas ce mode | vérifier dmesg pour sfp: module … interface ; corriger les octets de conformité ou le device tree |
Dans CodingBox
Les octets qui orientent le choix de l’hôte sont tous dans l’A0h : codes de conformité 3–10 (1000BASE-T, SX, LX, codes 10G), débit binaire nominal 12, encodage 11 (8b/10b contre 64b/66b), conformité étendue 36. Un module cuivre codé comme 1000BASE-SX sera traité comme de la fibre et perdra son chemin 10/100 ; un module fibre avec un bit 1000BASE-T parasite sera piloté comme du SGMII. CodingBox affiche et modifie ces champs (Check transceiver, Codes de conformité).