SGMII, 1000BASE-X, QSGMII, USXGMII: interfejsy szeregowe do PHY i SFP
Każda klatka SFP 1G przenosi linię szeregową 1,25 GBd, a ta linia może mówić dwoma dialektami, które na oscyloskopie wyglądają identycznie: 1000BASE-X — interfejs IEEE, którego oczekuje moduł światłowodowy, i SGMII — wariant Cisco, który dodaje 10/100 Mb/s i inną autonegocjację. Miedziane SFP żyją na granicy między nimi, i większość zgłoszeń typu „miedziany SFP łączy się przy 1G, ale moja kamera 100 Mb/s nie działa” to właśnie niezgodność dialektów. Ta strona opisuje oba gigabitowe dialekty, ich autonegocjację, 2500BASE-X, wieloportowy QSGMII, USXGMII dla multigigabitu i 10GBASE-T SFP+ oraz sposób, w jaki Linux i przełączniki wybierają tryb.
1000BASE-X: natywny interfejs SFP (Clause 36/37)
| Pozycja | Wartość |
|---|---|
| Szybkość | 1,25 GBd, 8b/10b → 1000 Mb/s danych użytkowych |
| Linie | 1 para różnicowa w każdym kierunku (CML, sprzężenie AC) |
| Kodowanie | 8b/10b z przecinkami /K28.5/, zestawy uporządkowane /C1/ /C2/ (konfiguracja), /I1/ /I2/ (bezczynność) |
| Autonegocjacja | Clause 37: 16-bitowe słowo konfiguracyjne wymieniane w zestawach uporządkowanych /C/ — dupleks pełny/półpełny, pauza (symetryczna/asymetryczna), zdalna usterka, potwierdzenie. Brak pola szybkości: 1000BASE-X to tylko 1G |
| Gdzie | SerDes przełącznika/NIC → klatka SFP; światłowodowy SFP (SX/LX/ZX/BiDi/CWDM) przekazuje go wprost do lasera; PCS znajduje się po stronie hosta |
Światłowodowy SFP jest przezroczysty: to, co koduje host, wychodzi jako światło. Dlatego 1-gigabitowy moduł światłowodowy nie ma „trybu” — ale ma go port, i musi to być 1000BASE-X (często pokazywany jako tryb „SerDes” lub „fiber”, speed nonegotiate na Cisco, gdy druga strona nie ma AN).
SGMII: gigabit plus 10/100 (specyfikacja Cisco SGMII v1.8)
| Pozycja | Wartość |
|---|---|
| Szybkość | ta sama 1,25 GBd, 8b/10b |
| Obsługa 10/100 | każdy bajt danych jest powielany 100× (10 Mb/s) lub 10× (100 Mb/s), dzięki czemu linia pozostaje przy 1,25 GBd |
| Linie | 2 pary; opcjonalne pary zegarowe DDR 625 MHz (TX_CLK/RX_CLK) — większość implementacji SerDes działa bez zegara |
| Autonegocjacja | słowo kontrolne SGMII (również przenoszone w zestawach uporządkowanych /C/, 16 bitów): bit 15 łącze, bity 11–10 szybkość (10/100/1000), bit 12 dupleks, bit 14 potwierdzenie — wysyłane PHY → MAC, aby poinformować MAC, co wynegocjowała strona miedziana. Niekompatybilne z zawartością Clause 37 |
| Gdzie | MAC ↔ miedziany PHY (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ klatka SFP na płytkach, które mają obsługiwać miedziany SFP, wnętrze miedzianego SFP 1000BASE-T |
SGMII to interfejs MAC–PHY; „autonegocjacja” zachodzi dwukrotnie — Clause 28 na skrętce między PHY a partnerem łącza, a potem słowo kontrolne SGMII zgłasza wynik do MAC. Gdy host oczekuje Clause 37, a otrzymuje słowo SGMII (lub odwrotnie), AN nigdy się nie kończy; zwykłym obejściem jest wyłączenie AN na porcie (speed nonegotiate, no negotiation auto, autoneg off) — wyłącznie przy 1G.
Miedziane SFP pomiędzy nimi
| Tryb portu hosta | Zachowanie miedzianego SFP | Klienci 10/100 |
|---|---|---|
| 1000BASE-X, AN wł. | PHY modułu musi odpowiadać zgodnie z Clause 37 — wiele to potrafi (emuluje), niektóre nie → brak łącza, dopóki AN nie zostanie wyłączone | nie (brak pola szybkości) |
| 1000BASE-X, AN wył. | łącze przy 1G, gdy strona miedziana wynegocjuje 1G | nie |
| SGMII, AN wł. | PHY zgłasza 10/100/1000 przez słowo kontrolne | tak |
| SGMII, AN wył. | stałe 1G | nie |
Miedziane moduły SFP oparte na Marvell 88E1111 domyślnie pracują w SGMII lub 1000BASE-X, zależnie od EEPROM/zworki konfiguracyjnej ustawionej przy produkcji; producenci sprzedają warianty „SGMII” i „SerDes” tego samego modułu, a niektóre da się przełączyć przez rejestry PHY dostępne przez I²C modułu. Porty przełącznika, które wymieniają „obsługa 1000BASE-T SFP”, realizują na tych klatkach SGMII (Miedziany Ethernet i DAC).
SFP 100BASE-FX
Światłowodowy SFP 100 Mb/s (100BASE-FX, 1310 nm, 2 km) wymaga od hosta prowadzenia linii przy 125 MBd z 4b/5b — to zupełnie inny PCS. Działają tylko porty, które jawnie obsługują „100M SFP” (wiele przełączników kampusowych na wybranych portach, większość routerów; nieliczne przełączniki data center); na pozostałych moduł jest wykrywany, ale nigdy się nie łączy. Niektóre hosty realizują 100BASE-FX przez powielanie SGMII z zewnętrznym PHY w module (SFP „100M over SGMII”).
2500BASE-X
| Pozycja | Wartość |
|---|---|
| Szybkość | 3,125 GBd, 8b/10b → 2,5 Gb/s |
| Standard | brak ze strony IEEE (de facto, 2,5 × 1000BASE-X); Linux phy-interface-type = "2500base-x" |
| AN | w stylu Clause 37, często wyłączone |
| Gdzie | moduły SFP 2,5G (miedziane 2.5GBASE-T, światłowodowe 2,5G), sticki ONU GPON/EPON w stronę hosta (downstream 2,5G), uplinki punktów dostępowych Wi-Fi 6, niektóre klatki SFP przełączników 2,5G |
Odpowiednikami IEEE dla multigigabitu są 2.5GBASE-X/5GBASE-R (802.3bz), ale większość układów posługuje się 2500BASE-X lub USXGMII.
QSGMII: cztery porty na jednej linii
| Pozycja | Wartość |
|---|---|
| Szybkość | 5 GBd, 8b/10b; 4 kanały SGMII multipleksowane w czasie |
| Linie | 2 pary na cztery porty |
| Gdzie | ASIC przełącznika ↔ poczwórny miedziany PHY (48-portowe przełączniki dostępowe: 12 linii QSGMII zamiast 48 SGMII), niektóre konstrukcje poczwórnych klatek SFP przez zewnętrzny SerDes |
| Warianty | QSGMII (Cisco), a także „PSGMII” (5 portów) w niektórych SoC Qualcomm/Realtek |
W typowych konstrukcjach niewidoczny na klatce; ma znaczenie, gdy płytka z poczwórnym PHY udostępnia porty combo SFP, których tryb jest dziedziczony z kanału PHY.
USXGMII: od 10 Mb/s do 10 Gb/s na jednej linii 10G
| Pozycja | Wartość |
|---|---|
| Szybkość | 10,3125 GBd, 64b/66b (elektrycznie 10GBASE-R) |
| Szybkości | 10M, 100M, 1G, 2,5G, 5G, 10G przez powielanie symboli (jak SGMII w powiększonej skali) |
| Specyfikacja | Cisco USXGMII (v1.2), szeroko przyjęta; Linux usxgmii |
| Wieloportowość | USXGMII-M: 4 × 2,5G, 2 × 5G, 4 × 1G+… na jednej linii 10G (jak QSGMII) |
| AN | słowo AN USXGMII w stanie bezczynności 64b/66b, zgłasza szybkość/dupleks/łącze |
| Gdzie | ASIC ↔ PHY multigig (porty 2,5/5/10GBASE-T), moduły 10GBASE-T SFP+ (wewnętrzny PHY, np. Marvell AQR/Broadcom) |
Moduł 10GBASE-T SFP+ prezentuje zwykłemu portowi SFP+ 10GBASE-R (SFI) i łączy się przy 10G; to, czy potrafi dodatkowo obsłużyć klientów 1G/2,5G/5G, zależy od tego, czy host obsługuje na tej klatce adaptację szybkości USXGMII — większość przełączników tego nie robi, więc moduł działa wyłącznie przy 10G albo wykonuje adaptację wewnętrznie i zgłasza hostowi 10G, podczas gdy strona miedziana pracuje wolniej (Prędkość i szybkość).
Jak host wybiera tryb
| Host | Mechanizm |
|---|---|
| Linux phylink/SFP | odczytuje bajty A0h 3–10 (zgodność), 12 (szybkość znamionowa), 36 (rozszerzona) oraz bit 3 bajtu 6 (1000BASE-T): 1000BASE-T → SGMII (lub 1000BASE-X, jeśli SoC nie ma SGMII); 1000BASE-SX/LX → 1000BASE-X; BR 3,1 GBd → 2500BASE-X; kody 10G → 10GBASE-R; miedziany PHY wewnątrz modułu jest sondowany przez I²C (adres 0x56/0xAC) i sterowany przez phylib |
| NOS przełącznika | domyślny tryb portu zależny od platformy (większość klatek SFP 1G obsługuje SGMII; SFP+/SFP28 przy 1G często tylko 1000BASE-X), polecenia speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| Sterowniki NIC | Intel: porty SFP+ obsługują 1G wyłącznie w 1000BASE-X (bez miedzianego SFP 10/100); Mellanox: 1G przez 1000BASE-X w niektórych modelach; Broadcom: zależnie od firmware (Porty NIC) |
| Miedziany SFP | zworka trybu PHY/EEPROM (wariant SGMII a SerDes), zachowanie AN ustawione przez firmware producenta |
Tabela niezgodności
| Objaw | Przyczyna | Rozwiązanie |
|---|---|---|
| Miedziany SFP: klienci 1G działają, 10/100 nigdy się nie łączy | port w 1000BASE-X | przejść na port obsługujący SGMII albo użyć modułu, który ukrywa 10/100 za adaptacją 1G do hosta |
| Światłowodowy SFP łączy się tylko przy wyłączonym AN | druga strona bez Clause 37 (konwerter mediów, niektóre ONU) albo słowo SGMII z modułu miedzianego | speed nonegotiate / autoneg off |
| SFP 100BASE-FX wykryty, brak łącza | host nie ma trybu SerDes 100M | użyć portu obsługującego 100M SFP albo modułu 100BASE-FX-over-SGMII |
| SFP 2,5G łączy się przy 1G albo wcale | host nie ma 2500BASE-X | wybrać klatkę obsługującą 2,5G albo moduł z fallbackiem szybkości |
| Stick ONU łączy się, a potem traci łącze | oczekiwanie 2500BASE-X a 1000BASE-X, AN | ustawić host na 2500BASE-X, AN wył. (Optyka PON) |
| 10GBASE-T SFP+ łączy się tylko przy 10G | brak USXGMII po stronie hosta | zaakceptować wyłącznie 10G albo użyć modułu z wewnętrzną adaptacją szybkości |
| Linux: moduł działa na jednej płytce, a na innej nie | phylink wybrał inny interfejs na podstawie EEPROM; SoC nie ma tego trybu | sprawdzić w dmesg wpis sfp: module … interface; poprawić bajty zgodności albo device tree |
W CodingBox
Bajty sterujące wyborem hosta leżą wszystkie w A0h: kody zgodności 3–10 (1000BASE-T, SX, LX, kody 10G), znamionowa szybkość bitowa 12, kodowanie 11 (8b/10b a 64b/66b), rozszerzona zgodność 36. Miedziany moduł zakodowany jako 1000BASE-SX zostanie potraktowany jako światłowodowy i straci ścieżkę 10/100; światłowodowy moduł z przypadkowym bitem 1000BASE-T będzie sterowany jak SGMII. CodingBox pokazuje i edytuje te pola (Check transceiver, Kody zgodności).