Interfacce indipendenti dal mezzo: il lato elettrico della porta
Tra il MAC Ethernet all’interno di un ASIC di switch o di un controller NIC e il mezzo — doppino di rame, fibra, backplane — si trova un’interfaccia elettrica standardizzata. L’IEEE chiama questa famiglia interfacce indipendenti dal mezzo (MII): al MAC non importa se il lato opposto è un PHY in rame, una gabbia SFP o un modulo da 400G, purché parli l’interfaccia concordata. Ogni generazione di Ethernet ne ha aggiunta una: MII e RMII per 10/100, GMII/RGMII/SGMII per gigabit, XGMII/XAUI/XFI/SFI per 10G, e la famiglia AUI (CAUI-4, 400GAUI-8, 800GAUI-8) per tutto ciò che è seguito. Questa sezione le spiega dal punto di vista del ricetrasmettitore — cosa arriva alla gabbia, cosa deve emulare un SFP in rame e perché una porta «in modalità sbagliata» rifiuta un modulo perfettamente funzionante.
Perché esiste questa suddivisione
| Livello | Si trova in | Interfaccia verso il livello successivo |
|---|---|---|
| MAC (framing, indirizzi) | ASIC di switch, controller NIC, SoC | sottolivello di riconciliazione → xMII |
| PCS (codifica: 8b/10b, 64b/66b, FEC) | ASIC/controller per i pluggable; chip PHY per il rame | PMA |
| PMA / SerDes | SerDes dell’ASIC o del PHY | lane AUI verso il modulo o il mezzo |
| PMD (laser, driver in rame) | modulo ricetrasmettitore o chip PHY | fibra / cavo |
Per l’ottica pluggable, il PCS e il SerDes restano nell’host; il modulo riceve lane seriali (SFI, CAUI-4, 400GAUI-8) e le converte in luce. Per il rame, un chip PHY svolge PCS+PMA+PMD e parla con il MAC tramite un’interfaccia parallela (RGMII) o seriale (SGMII). Un SFP in rame mette quel PHY dentro il modulo, quindi la gabbia deve portargli SGMII o 1000BASE-X (SGMII e gigabit seriale).
La scala
| Interfaccia | Velocità | Forma | Segnali | Portata | Definita da | Utilizzo tipico |
|---|---|---|---|---|---|---|
| MII | 10/100 | parallelo a 4 bit @ 2,5/25 MHz | 16–18 | cm | IEEE 802.3 Cl. 22 | MAC ↔ PHY legacy |
| RMII | 10/100 | 2 bit @ 50 MHz | 7–9 | cm | RMII Consortium | SoC embedded ↔ PHY |
| SMII / SS-SMII | 10/100 | 1 bit @ 125 MHz | 2–3 per porta | cm | Cisco | PHY multiporta |
| GMII | 1G (+10/100) | 8 bit @ 125 MHz | 24+ | cm | Cl. 35 | MAC ↔ PHY, oggi perlopiù on-chip |
| RGMII | 1G (+10/100) | 4 bit DDR @ 125 MHz | 12 | ≤ 10–15 cm | HP/Marvell RGMII v1.3/2.0 | SoC ↔ PHY in rame su switch/router piccoli |
| TBI / RTBI | 1G | 10 bit @ 125 MHz | 20+ | cm | Cl. 36 | MAC ↔ SerDes esterno (legacy) |
| 1000BASE-X (SerDes) | 1G | 1 lane 1,25 GBd, 8b/10b | 2 coppie diff. | 50 cm+ | Cl. 36/37 | ciò che porta una gabbia SFP a 1G |
| SGMII | 10/100/1000 | 1 lane 1,25 GBd, 8b/10b | 2 coppie (+ clock) | 50 cm+ | Cisco SGMII v1.8 | MAC ↔ PHY in rame; MAC ↔ SFP in rame |
| 2500BASE-X | 2,5G | 1,25 × la velocità di SGMII/1000BASE-X: 3,125 GBd | 2 coppie | 50 cm | de facto | SFP 2,5G, stick PON |
| QSGMII | 4 × 1G | 1 lane 5 GBd | 2 coppie | 50 cm | Cisco | ASIC ↔ PHY in rame quad |
| USXGMII | 10M–10G | 1 lane 10,3125 GBd, 64b/66b | 2 coppie | 30 cm | Cisco/Marvell | ASIC ↔ PHY mGig; SFP+ 10GBASE-T |
| XGMII | 10G | DDR a 32 bit @ 156,25 MHz | 74 | < 7 cm | Cl. 46 | on-chip |
| XAUI | 10G | 4 × 3,125 GBd, 8b/10b | 8 coppie | 50 cm | Cl. 47 | moduli XENPAK/X2, PHY legacy |
| XFI / SFI | 10G | 1 × 10,3125 GBd, 64b/66b | 2 coppie | 20–30 cm | XFP MSA / SFF-8431 | gabbia XFP / SFP+ |
| 10GBASE-KR | 10G | 1 × 10,3125 GBd | 2 coppie | 1 m di backplane | Cl. 72 | backplane, PHY 10GBASE-T |
| 25GAUI | 25G | 1 × 25,78 GBd NRZ | 2 coppie | C2M | Annex 109A/B | gabbia SFP28 |
| XLAUI / CAUI-10 | 40G / 100G | 4 / 10 × 10,3125 GBd | 8 / 20 coppie | C2C/C2M | Annex 83A/B | QSFP+ / CFP, CXP |
| CAUI-4 | 100G | 4 × 25,78 GBd NRZ | 8 coppie | C2M | Annex 83D/E | gabbia QSFP28 |
| 50GAUI-2 / -1 | 50G | 2 × 26,5625 NRZ / 1 × 26,5625 GBd PAM4 | 4 / 2 coppie | C2M | Annex 135B–E | SFP56 |
| 100GAUI-4 / -2 / -1 | 100G | 4 × NRZ / 2 × 53 GBd PAM4 / 1 × 106 GBd PAM4 | — | C2M | Annex 135D–G, 120G | QSFP28 (varianti PAM4), QSFP112 |
| 200GAUI-8 / -4 / -2 | 200G | 8 × 26,5 PAM4 / 4 × 53 / 2 × 106 | — | C2M | Annex 120C–G | QSFP56, QSFP112 |
| 400GAUI-16 / -8 / -4 | 400G | 16 × 25 NRZ / 8 × 53 PAM4 / 4 × 106 PAM4 | — | C2M | Annex 120B–G | CFP8 / QSFP-DD, OSFP / QSFP112, OSFP |
| 800GAUI-8 / -4 | 800G | 8 × 106 PAM4 / 4 × 212 PAM4 | — | C2M | 802.3df / dj | OSFP, QSFP-DD800 / OSFP224, OSFP-XD |
Dettagli: MII, RMII, GMII, RGMII, SGMII, 1000BASE-X, QSGMII, USXGMII, XGMII, XAUI, SFI e la famiglia AUI.
Dove si colloca ciascuna
| Dispositivo | MAC → … | … → mezzo |
|---|---|---|
| Switch in rame 1G a 48 porte | ASIC → QSGMII → PHY quad | PHY → RJ45 |
| Router piccolo / scheda SoC | SoC → RGMII o SGMII → PHY | PHY → RJ45; oppure SoC → 1000BASE-X/SGMII → gabbia SFP |
| Porta SFP+/SFP28 di switch o NIC 10G/25G | SerDes dell’ASIC → SFI / 25GAUI → gabbia | modulo → fibra o DAC |
| Porta QSFP28 100G | ASIC → CAUI-4 (4 × 25G) → gabbia | modulo → 4 λ o 4 fibre |
| Porta QSFP-DD / OSFP 400G | ASIC → 400GAUI-8 (8 × 50G PAM4) → gabbia | gearbox del modulo → 4 × 100G ottici |
| Porta OSFP 800G | ASIC → 800GAUI-8 (8 × 100G PAM4) → gabbia | modulo → 8 × 100G (DR8) o 4 × 200G |
| SFP 1000BASE-T in rame | host 1000BASE-X o SGMII → PHY del modulo | PHY → RJ45 |
| SFP+ 10GBASE-T | host SFI (10GBASE-R) → PHY del modulo (classe USXGMII) | PHY → RJ45 |
| Porta switch RJ45 multigig | ASIC → USXGMII → PHY mGig | 2,5/5/10GBASE-T |
Gestione dei PHY rispetto ai moduli
| Chip PHY in rame | Modulo pluggable | |
|---|---|---|
| Bus | MDIO/MDC (Clause 22: indirizzo a 5 bit, 32 registri a 16 bit; Clause 45: coppie dispositivo/registro per 10G+) | I²C a due fili (pagine A0h/A2h, CMIS) (Interfaccia a due fili) |
| Stato del collegamento | registro di stato del PHY (reg 1), in-band su RGMII/SGMII | pin e flag LOS/LOL, DDM |
| Strumenti Linux | mii-tool, phytool, ethtool (driver del PHY) | ethtool -m, i2c-dev (Strumenti NIC) |
| Particolarità dell’SFP in rame | il PHY interno al modulo è raggiungibile via I²C a un secondo indirizzo (ad es. 0xAC nei moduli basati su Marvell 88E1111) o tramite pagine del produttore — MDIO tunnelizzato | — |
Perché è importante per il lavoro con i ricetrasmettitori
- Modalità della gabbia. Una porta SFP 1G può essere in modalità 1000BASE-X o SGMII; un SFP in rame si comporta in modo diverso in ciascuna, e i client 10/100 funzionano solo in SGMII (o con un modulo che nasconde la differenza) (SGMII e gigabit seriale).
- Velocità e codifica. Il modulo deve accettare la velocità di lane e la codifica dell’host: SFI a 10,3125 GBd, CAUI-4 a 25,78, 400GAUI-8 PAM4 — è ciò che dichiarano i codici di conformità e le applicazioni CMIS (Codici di conformità).
- Chi ritemporizza. I moduli SFP+ sono spesso lineari/limiting con equalizzazione lato host; i moduli 25G+ portano CDR; i moduli PAM4 portano DSP; i moduli LPO tornano a essere lineari e dipendono dal SerDes dell’host (CDR, DSP e LPO).
- Lane elettriche ≠ lane ottiche. 400G-FR4 usa 8 lane elettriche ed emette 4 lunghezze d’onda; il gearbox è nel modulo (XGMII, XAUI e la famiglia AUI).
- Linux sceglie l’interfaccia dall’EEPROM. Il livello SFP del kernel legge i byte 3–10, 12 e 36 per decidere tra 1000BASE-X, SGMII, 2500BASE-X, 10GBASE-R — un byte di conformità errato fa collegare in modalità sbagliata un modulo altrimenti buono (Mappa di memoria).
Per approfondire
- MII, RMII, GMII, RGMII — le interfacce parallele: pin, clock, modalità di ritardo RGMII, stato in-band, gestione del PHY via MDIO, guasti tipici.
- SGMII, 1000BASE-X, QSGMII, USXGMII — interfacce seriali verso PHY e gabbie SFP: differenze di autonegoziazione, SFP in rame, 100BASE-FX, 2,5G, multigig, come Linux sceglie la modalità.
- XGMII, XAUI, XFI/SFI e la famiglia AUI — da 10G a 800G: numero di lane, C2C rispetto a C2M, punti di conformità, corrispondenza con OIF CEI, mappatura da lane elettriche a ottiche, moduli ritemporizzati rispetto a lineari.
In CodingBox
I byte che CodingBox mostra sono la dichiarazione del modulo su quali interfacce host supporta: codici di conformità (1000BASE-T → rame capace di SGMII/1000BASE-X), bit rate nominale, byte di codifica (8b/10b rispetto a 64b/66b rispetto a PAM4), bit CDR e ID di interfaccia host CMIS. Modificarli cambia quale interfaccia proverà l’host (Check transceiver, Codici di conformità).