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 nonegotiate、no negotiation auto、autoneg 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" |
| AN | Clause 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) |
| AN | USXGMII 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 1000、speed nonegotiate、media-type sfp、negotiation auto、port-mode |
| NIC 驅動 | Intel:SFP+ 端口僅在 1000BASE-X 下支援 1G(不支援 10/100 銅纜 SFP);Mellanox:部分型號通過 1000BASE-X 支援 1G;Broadcom:取決於固件(參見NIC 端口) |
| 銅纜 SFP | PHY 模式由 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、 合規代碼)。