CodingBox Tài liệu

SGMII, 1000BASE-X, QSGMII, USXGMII: serial interfaces to PHYs & SFP

Đội ngũ của chúng tôi đang thực hiện bản dịch. Bài viết này tạm thời chưa có bản tiếng Việt và đang được hiển thị bằng tiếng Anh.

Every 1G SFP cage carries a 1.25 GBd serial lane, and that lane can speak two dialects that look identical on an oscilloscope: 1000BASE-X, the IEEE interface a fibre module expects, and SGMII, Cisco's variant that adds 10/100 Mb/s and a different auto-negotiation. Copper SFPs live on the boundary between them, and most "the copper SFP links at 1G but my 100 Mb/s camera does not" tickets are a dialect mismatch. This page covers the two gigabit dialects, their auto-negotiation, 2500BASE-X, the multi-port QSGMII, USXGMII for multigig and 10GBASE-T SFP+, and how Linux and switches choose the mode.

1000BASE-X: the native SFP interface (Clause 36/37)

ItemValue
Rate1.25 GBd, 8b/10b → 1000 Mb/s payload
Lanes1 differential pair each direction (CML, AC-coupled)
Coding8b/10b with /K28.5/ commas, ordered sets /C1/ /C2/ (configuration), /I1/ /I2/ (idle)
Auto-negotiationClause 37: 16-bit config word exchanged in /C/ ordered sets — full/half duplex, pause (symmetric/asymmetric), remote fault, acknowledge. No speed field: 1000BASE-X is 1G only
Whereswitch/NIC SerDes → SFP cage; fibre SFP (SX/LX/ZX/BiDi/CWDM) passes it straight to the laser; the PCS lives in the host

A fibre SFP is transparent: whatever the host codes goes out as light. That is why a 1G fibre module has no "mode" — but the port does, and it must be 1000BASE-X (often shown as "SerDes" or "fiber" mode, speed nonegotiate on Cisco when the far end has no AN).

SGMII: gigabit plus 10/100 (Cisco SGMII specification v1.8)

ItemValue
Ratesame 1.25 GBd, 8b/10b
10/100 supporteach data byte replicated 100× (10 Mb/s) or 10× (100 Mb/s) so the line stays at 1.25 GBd
Lanes2 pairs; optional 625 MHz DDR clock pairs (TX_CLK/RX_CLK) — most SerDes implementations run clockless
Auto-negotiationSGMII control word (also carried in /C/ ordered sets, 16 bits): bit 15 link, bits 11–10 speed (10/100/1000), bit 12 duplex, bit 14 ack — sent PHY → MAC to tell the MAC what the copper side negotiated. Not compatible with Clause 37 content
WhereMAC ↔ copper PHY (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ SFP cage on boards that want copper SFP support, copper 1000BASE-T SFP internals

SGMII is a MAC–PHY interface; the "auto-negotiation" happens twice — Clause 28 on the twisted pair between PHY and link partner, then the SGMII control word reports the result to the MAC. When a host expects Clause 37 and receives an SGMII word (or vice versa), the link never completes AN; disabling AN on the port (speed nonegotiate, no negotiation auto, autoneg off) is the usual workaround — at 1G only.

Copper SFPs between the two

Host port modeCopper SFP behaviour10/100 clients
1000BASE-X, AN onmodule's PHY must answer Clause 37 — many do (emulate), some do not → no link until AN offno (no speed field)
1000BASE-X, AN offlink at 1G when the copper side negotiates 1Gno
SGMII, AN onPHY reports 10/100/1000 via control wordyes
SGMII, AN offfixed 1Gno

Copper SFP modules based on Marvell 88E1111 default to SGMII or 1000BASE-X depending on a configuration EEPROM/strap set at manufacture; vendors sell "SGMII" and "SerDes" variants of the same module, and some can be switched through the PHY registers reachable over the module's I²C. Switch ports that list "1000BASE-T SFP supported" implement SGMII on those cages (Copper Ethernet & DAC).

100BASE-FX SFPs

A 100 Mb/s fibre SFP (100BASE-FX, 1310 nm, 2 km) needs the host to run the lane at 125 MBd with 4b/5b — a completely different PCS. Only ports that explicitly support "100M SFP" (many campus switches on selected ports, most routers; few data-centre switches) work; on others the module is detected and never links. Some hosts implement 100BASE-FX by SGMII replication with an external PHY in the module ("100M over SGMII" SFPs).

2500BASE-X

ItemValue
Rate3.125 GBd, 8b/10b → 2.5 Gb/s
Standardnone from IEEE (de facto, 2.5 × 1000BASE-X); Linux phy-interface-type = "2500base-x"
ANClause 37 style, often disabled
Where2.5G SFP modules (2.5GBASE-T copper, 2.5G fibre), GPON/EPON ONU sticks toward the host (2.5G downstream), Wi-Fi 6 AP uplinks, some 2.5G switch SFP cages

The IEEE equivalents for multigig are 2.5GBASE-X/5GBASE-R (802.3bz) but most silicon speaks 2500BASE-X or USXGMII.

QSGMII: four ports on one lane

ItemValue
Rate5 GBd, 8b/10b; 4 SGMII channels time-multiplexed
Lanes2 pairs for four ports
Whereswitch ASIC ↔ quad copper PHY (48-port access switches: 12 QSGMII lanes instead of 48 SGMII), some quad-port SFP cage designs via external SerDes
VariantsQSGMII (Cisco), also "PSGMII" (5 ports) on some Qualcomm/Realtek SoCs

Not visible at a cage in normal designs; matters when a quad-PHY board exposes SFP combo ports whose mode is inherited from the PHY channel.

USXGMII: 10 Mb/s to 10 Gb/s on one 10G lane

ItemValue
Rate10.3125 GBd, 64b/66b (10GBASE-R electrical)
Speeds10M, 100M, 1G, 2.5G, 5G, 10G by symbol replication (like SGMII scaled up)
SpecCisco USXGMII (v1.2), adopted widely; Linux usxgmii
Multi-portUSXGMII-M: 4 × 2.5G, 2 × 5G, 4 × 1G+… over one 10G lane (like QSGMII)
ANUSXGMII AN word in the 64b/66b idle, reports speed/duplex/link
WhereASIC ↔ multigig PHY (2.5/5/10GBASE-T ports), 10GBASE-T SFP+ modules (internal PHY, e.g. Marvell AQR/Broadcom)

A 10GBASE-T SFP+ module presents 10GBASE-R (SFI) to a normal SFP+ port and links at 10G; whether it can also serve 1G/2.5G/5G clients depends on the host supporting USXGMII rate adaptation on that cage — most switches do not, so the module works at 10G only, or performs the adaptation internally and reports 10G to the host while the copper side runs slower (Speed & rate).

How the host chooses the mode

HostMechanism
Linux phylink/SFPreads A0h bytes 3–10 (compliance), 12 (nominal rate), 36 (extended) and 6 bit 3 (1000BASE-T): 1000BASE-T → SGMII (or 1000BASE-X if the SoC lacks SGMII); 1000BASE-SX/LX → 1000BASE-X; BR 3.1 GBd → 2500BASE-X; 10G codes → 10GBASE-R; copper PHY inside the module is probed over I²C (address 0x56/0xAC) and driven by phylib
Switch NOSport default from platform (most 1G SFP cages = SGMII-capable; SFP+/SFP28 at 1G often 1000BASE-X only), commands speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode
NIC driversIntel: SFP+ ports support 1G in 1000BASE-X only (no 10/100 copper SFP); Mellanox: 1G via 1000BASE-X on some models; Broadcom: per firmware (NIC ports)
Copper SFPPHY mode strap/EEPROM (SGMII vs SerDes variant), AN behaviour set by vendor firmware

Mismatch table

SymptomCauseFix
Copper SFP: 1G clients fine, 10/100 never linkport in 1000BASE-Xmove to an SGMII-capable port or use a module that hides 10/100 behind 1G-to-host adaptation
Fibre SFP links only with AN offfar end without Clause 37 (media converter, some ONUs) or SGMII word from a copper modulespeed nonegotiate / autoneg off
100BASE-FX SFP detected, no linkhost lacks 100M SerDes modeuse a port that supports 100M SFP, or 100BASE-FX-over-SGMII module
2.5G SFP links at 1G or not at allhost has no 2500BASE-Xchoose a 2.5G-capable cage or a module with rate fallback
ONU stick links, then drops2500BASE-X vs 1000BASE-X expectation, ANset host to 2500BASE-X, AN off (PON optics)
10GBASE-T SFP+ links at 10G onlyno USXGMII on hostaccept 10G-only, or use a module with internal rate adaptation
Linux: module works on one board, not anotherphylink picked a different interface from the EEPROM; SoC lacks that modecheck dmesg for sfp: module … interface; fix compliance bytes or device tree

In CodingBox

The bytes that steer the host's choice are all in A0h: compliance codes 3–10 (1000BASE-T, SX, LX, 10G codes), nominal bit rate 12, encoding 11 (8b/10b vs 64b/66b), extended compliance 36. A copper module coded as 1000BASE-SX will be treated as fibre and lose its 10/100 path; a fibre module with a stray 1000BASE-T bit will be driven as SGMII. CodingBox shows and edits these fields (Check transceiver, Compliance codes).


Nếu bạn phát hiện thông tin chưa chính xác hoặc lỗi trong bài viết này, hãy chọn đoạn liên quan và nhấn Ctrl+Enter để .