CodingBox 說明文件

SGMII、1000BASE-X、QSGMII、USXGMII:連接 PHY 與 SFP 的串行介面

每個 1G SFP 籠子都承載一條 1.25 GBd 的串行通道,該通道可以使用兩種在示波器上看起來完全相同的方言:1000BASE-X,光纖模組所期望的 IEEE 介面;以及 SGMII,Cisco 的變體,增加了 10/100 Mb/s 和不同的自動協商方式。銅纜 SFP 正處於兩者的邊界上,大多數 "銅纜 SFP 在 1G 下能連結,但我的 100 Mb/s 攝像頭不行"的工單都是方言不匹配所致。本頁介紹這兩種千兆方言及其自動協商、2500BASE-X、多端口的 QSGMII、面向多速率的 USXGMII 與 10GBASE-T SFP+,以及 Linux 和交換機如何選擇模式。

1000BASE-X:SFP 的原生介面(Clause 36/37)

項目
速率1.25 GBd,8b/10b → 1000 Mb/s 有效負載
通道每個方向 1 對差分線(CML,AC 耦合)
編碼8b/10b,使用 /K28.5/ 逗號字元,有序集 /C1/ /C2/(配置)、/I1/ /I2/(空閒)
自動協商Clause 37:在 /C/ 有序集中交換 16 位元配置字——全雙工/半雙工、暫停(對稱/非對稱)、遠端故障、確認。沒有速率欄位:1000BASE-X 僅支援 1G
應用場景交換機/NIC 的 SerDes → SFP 籠子;光纖 SFP(SX/LX/ZX/BiDi/CWDM)將其直接傳給激光器;PCS 位於主機側

光纖 SFP 是透明的:主機編碼的內容原樣以光信號發出。這就是為甚麼 1G 光纖模組沒有「模式」——但端口有,而且必須是 1000BASE-X(常顯示為"SerDes"或"fiber"模式,當對端沒有 AN 時,在 Cisco 上為 speed nonegotiate)。

SGMII:千兆加 10/100(Cisco SGMII 規範 v1.8)

項目
速率同樣是 1.25 GBd,8b/10b
10/100 支援每個數據位元組重複 100 次(10 Mb/s)或 10 次(100 Mb/s),使線路速率保持在 1.25 GBd
通道2 對;可選 625 MHz DDR 時鐘對(TX_CLK/RX_CLK)——大多數 SerDes 實現不使用時鐘線
自動協商SGMII 控制字(同樣在 /C/ 有序集中傳送,16 位元):第 15 位元為鏈路,第 11–10 位元為速率(10/100/1000),第 12 位元為雙工,第 14 位元為確認——由 PHY 發往 MAC,告知 MAC 銅纜側協商的結果。與 Clause 37 的內容不兼容
應用場景MAC ↔ 銅纜 PHY(Marvell 88E15xx、TI DP83867、Broadcom)、需要支援銅纜 SFP 的板卡上的 SoC ↔ SFP 籠子、銅纜 1000BASE-T SFP 內部

SGMII 是一種 MAC–PHY 介面;"自動協商"發生兩次——先是 PHY 與鏈路對端之間在雙絞線上進行 Clause 28 協商,然後 SGMII 控制字把結果報告給 MAC。當主機期望 Clause 37 卻收到 SGMII 字(或相反)時,鏈路永遠無法完成 AN;常見的解決辦法是在端口上禁用 AN (speed nonegotiateno negotiation autoautoneg off)——但僅限 1G。

處於兩者之間的銅纜 SFP

主機端口模式銅纜 SFP 行為10/100 客戶端
1000BASE-X,AN 開啟模組的 PHY 必須響應 Clause 37——許多能做到(模擬),部分不能 → 在關閉 AN 之前無鏈路不支援(沒有速率欄位)
1000BASE-X,AN 關閉銅纜側協商為 1G 時,鏈路為 1G不支援
SGMII,AN 開啟PHY 通過控制字報告 10/100/1000支援
SGMII,AN 關閉固定為 1G不支援

基於 Marvell 88E1111 的銅纜 SFP 模組預設使用 SGMII 或 1000BASE-X,具體取決於製造時設定的配置 EEPROM/strap;廠商會為同一模組提供"SGMII"和"SerDes"兩種變體,部分型號可以通過模組 I²C 可訪問的 PHY 暫存器切換。列出"支援 1000BASE-T SFP"的交換機端口,在這些籠子上實現的就是 SGMII (參見銅纜以太網與 DAC)。

100BASE-FX SFP

100 Mb/s 光纖 SFP(100BASE-FX,1310 nm,2 km)要求主機以 125 MBd、4b/5b 運行該通道——這是完全不同的 PCS。只有明確支援"100M SFP"的端口(許多園區交換機的部分端口、大多數路由器;少數數據中心交換機)才能工作;在其他端口上,模組可被檢測到但永遠無法建立鏈路。部分主機通過 SGMII 複製、配合模組內的外部 PHY 來實現 100BASE-FX(即 "100M over SGMII" SFP)。

2500BASE-X

項目
速率3.125 GBd,8b/10b → 2.5 Gb/s
標準IEEE 未定義(事實標準,為 1000BASE-X 的 2.5 倍);Linux 中 phy-interface-type = "2500base-x"
ANClause 37 風格,通常禁用
應用場景2.5G SFP 模組(2.5GBASE-T 銅纜、2.5G 光纖)、面向主機的 GPON/EPON ONU 棒(2.5G 下行)、Wi-Fi 6 AP 上行、部分 2.5G 交換機的 SFP 籠子

面向多速率的 IEEE 對應標準是 2.5GBASE-X/5GBASE-R(802.3bz),但大多數晶片使用的是 2500BASE-X 或 USXGMII。

QSGMII:單通道承載四個端口

項目
速率5 GBd,8b/10b;4 個 SGMII 信道時分複用
通道2 對,用於四個端口
應用場景交換機 ASIC ↔ 四路銅纜 PHY(48 口接入交換機:用 12 條 QSGMII 通道代替 48 條 SGMII)、部分通過外部 SerDes 實現的四端口 SFP 籠子設計
變體QSGMII(Cisco),部分 Qualcomm/Realtek SoC 上還有"PSGMII"(5 端口)

在常規設計中籠子上看不到 QSGMII;但當一塊四路 PHY 板卡暴露出模式繼承自 PHY 信道的 SFP combo 端口時,它就變得重要。

USXGMII:單條 10G 通道承載 10 Mb/s 到 10 Gb/s

項目
速率10.3125 GBd,64b/66b(10GBASE-R 電氣規範)
速率檔位10M、100M、1G、2.5G、5G、10G,通過符號複製實現(類似放大版的 SGMII)
規範Cisco USXGMII(v1.2),已被廣泛採用;Linux 中為 usxgmii
多端口USXGMII-M:在一條 10G 通道上承載 4 × 2.5G、2 × 5G、4 × 1G+ 等(類似 QSGMII)
ANUSXGMII AN 字位於 64b/66b 空閒碼中,報告速率/雙工/鏈路
應用場景ASIC ↔ 多速率 PHY(2.5/5/10GBASE-T 端口)、10GBASE-T SFP+ 模組(內部 PHY,如 Marvell AQR/Broadcom)

10GBASE-T SFP+ 模組向普通 SFP+ 端口呈現 10GBASE-R(SFI),並以 10G 建立鏈路;它能否 同時服務 1G/2.5G/5G 客戶端,取決於主機是否在該籠子上支援 USXGMII 速率適配——大多數交換機不支援,因此模組要麼只能以 10G 工作,要麼在內部完成適配、向主機報告 10G,而銅纜側以較低速率運行(參見速率與傳輸速度)。

主機如何選擇模式

主機機制
Linux phylink/SFP讀取 A0h 位元組 3–10(合規性)、12(標稱速率)、36(擴展)以及位元組 6 的第 3 位元(1000BASE-T):1000BASE-T → SGMII(若 SoC 不支援 SGMII 則為 1000BASE-X);1000BASE-SX/LX → 1000BASE-X;BR 3.1 GBd → 2500BASE-X;10G 代碼 → 10GBASE-R;模組內部的銅纜 PHY 通過 I²C(地址 0x56/0xAC)探測,並由 phylib 驅動
交換機 NOS端口預設值由平台決定(大多數 1G SFP 籠子支援 SGMII;SFP+/SFP28 在 1G 下通常僅支援 1000BASE-X),命令包括 speed 1000speed nonegotiatemedia-type sfpnegotiation autoport-mode
NIC 驅動Intel:SFP+ 端口僅在 1000BASE-X 下支援 1G(不支援 10/100 銅纜 SFP);Mellanox:部分型號通過 1000BASE-X 支援 1G;Broadcom:取決於固件(參見NIC 端口
銅纜 SFPPHY 模式由 strap/EEPROM 決定(SGMII 與 SerDes 變體之分),AN 行為由廠商固件設定

不匹配對照表

現象原因解決方法
銅纜 SFP:1G 客戶端正常,10/100 從不連結端口處於 1000BASE-X換到支援 SGMII 的端口,或使用能把 10/100 隱藏為對主機 1G 適配的模組
光纖 SFP 只有在 AN 關閉時才能連結對端不支援 Clause 37(媒體轉換器、部分 ONU),或來自銅纜模組的 SGMII 字speed nonegotiate / autoneg off
檢測到 100BASE-FX SFP,無鏈路主機缺少 100M SerDes 模式使用支援 100M SFP 的端口,或使用 100BASE-FX-over-SGMII 模組
2.5G SFP 以 1G 連結或完全無法連結主機不支援 2500BASE-X選擇支援 2.5G 的籠子,或使用帶速率回退的模組
ONU 棒建立鏈路後又斷開2500BASE-X 與 1000BASE-X 預期不一致、AN 問題將主機設為 2500BASE-X,關閉 AN(參見PON 光模組
10GBASE-T SFP+ 僅以 10G 連結主機不支援 USXGMII接受僅 10G 工作,或使用帶內部速率適配的模組
Linux:模組在一塊板卡上工作,在另一塊上不工作phylink 根據 EEPROM 選擇了不同的介面;SoC 不支援該模式dmesg 中查看 sfp: module … interface;修正合規位元組或設備樹

在 CodingBox 中

決定主機選擇的位元組都位於 A0h 中:合規代碼 3–10(1000BASE-T、SX、LX、10G 代碼)、標稱位元率 12、編碼 11(8b/10b 與 64b/66b 之分)、擴展合規性 36。被編碼為 1000BASE-SX 的銅纜模組會被當作光纖處理,從而失去其 10/100 路徑;帶有多餘 1000BASE-T 位的光纖模組會被當作 SGMII 驅動。CodingBox 顯示並編輯這些欄位(參見 Check transceiver合規代碼)。


如果您發現本文有不準確之處或錯誤,請選取相應片段並按 Ctrl+Enter,即可