SGMII, 1000BASE-X, QSGMII, USXGMII: giao diện nối tiếp tới PHY và SFP
Mọi cage SFP 1G đều mang một làn nối tiếp 1,25 GBd, và làn đó có thể nói hai “phương ngữ” trông giống hệt nhau trên máy hiện sóng: 1000BASE-X, giao diện IEEE mà một module quang mong đợi, và SGMII, biến thể của Cisco bổ sung 10/100 Mb/s và một kiểu tự động đàm phán khác. SFP đồng sống ngay trên ranh giới giữa hai phương ngữ này, và phần lớn các yêu cầu hỗ trợ kiểu “SFP đồng lên liên kết ở 1G nhưng camera 100 Mb/s của tôi thì không” là do lệch phương ngữ. Trang này trình bày hai phương ngữ gigabit, cách tự động đàm phán của chúng, 2500BASE-X, QSGMII đa cổng, USXGMII cho multigig và SFP+ 10GBASE-T, cùng cách Linux và switch chọn chế độ.
1000BASE-X: giao diện gốc của SFP (Clause 36/37)
| Mục | Giá trị |
|---|---|
| Tốc độ | 1,25 GBd, 8b/10b → tải trọng 1000 Mb/s |
| Làn | 1 cặp vi sai cho mỗi chiều (CML, ghép AC) |
| Mã hóa | 8b/10b với dấu phẩy /K28.5/, tập lệnh có thứ tự /C1/ /C2/ (cấu hình), /I1/ /I2/ (rỗi) |
| Tự động đàm phán | Clause 37: từ cấu hình 16 bit trao đổi trong các tập lệnh có thứ tự /C/ — song công/bán song công, pause (đối xứng/bất đối xứng), lỗi ở đầu xa, xác nhận. Không có trường tốc độ: 1000BASE-X chỉ có 1G |
| Ở đâu | SerDes của switch/NIC → cage SFP; SFP quang (SX/LX/ZX/BiDi/CWDM) chuyển thẳng tới laser; PCS nằm ở host |
Một SFP quang có tính “trong suốt”: bất cứ thứ gì host mã hóa đều phát ra thành ánh sáng. Đó là lý do một module quang 1G không có “chế độ” — nhưng cổng thì có, và nó phải ở 1000BASE-X (thường hiển thị là chế độ “SerDes” hay “fiber”, speed nonegotiate trên Cisco khi đầu xa không có AN).
SGMII: gigabit cộng với 10/100 (đặc tả SGMII của Cisco v1.8)
| Mục | Giá trị |
|---|---|
| Tốc độ | vẫn 1,25 GBd, 8b/10b |
| Hỗ trợ 10/100 | mỗi byte dữ liệu được nhân bản 100× (10 Mb/s) hoặc 10× (100 Mb/s) để đường truyền vẫn giữ ở 1,25 GBd |
| Làn | 2 cặp; tùy chọn cặp xung nhịp DDR 625 MHz (TX_CLK/RX_CLK) — hầu hết cách triển khai SerDes chạy không cần xung nhịp |
| Tự động đàm phán | từ điều khiển SGMII (cũng được mang trong các tập lệnh có thứ tự /C/, 16 bit): bit 15 liên kết, bit 11–10 tốc độ (10/100/1000), bit 12 song công, bit 14 xác nhận — gửi từ PHY → MAC để báo cho MAC biết phía đồng đã đàm phán được gì. Không tương thích với nội dung của Clause 37 |
| Ở đâu | MAC ↔ PHY đồng (Marvell 88E15xx, TI DP83867, Broadcom), SoC ↔ cage SFP trên các board cần hỗ trợ SFP đồng, bên trong SFP đồng 1000BASE-T |
SGMII là một giao diện MAC–PHY; việc “tự động đàm phán” diễn ra hai lần — Clause 28 trên cặp xoắn giữa PHY và đối tác liên kết, sau đó từ điều khiển SGMII báo kết quả về cho MAC. Khi host mong đợi Clause 37 nhưng lại nhận được một từ SGMII (hoặc ngược lại), liên kết không bao giờ hoàn tất AN; cách khắc phục thường dùng là tắt AN trên cổng (speed nonegotiate, no negotiation auto, autoneg off) — chỉ ở 1G.
SFP đồng giữa hai phương ngữ
| Chế độ cổng host | Hành vi của SFP đồng | Client 10/100 |
|---|---|---|
| 1000BASE-X, bật AN | PHY của module phải đáp ứng Clause 37 — nhiều module làm được (mô phỏng), một số thì không → không có liên kết cho tới khi tắt AN | không (không có trường tốc độ) |
| 1000BASE-X, tắt AN | liên kết ở 1G khi phía đồng đàm phán được 1G | không |
| SGMII, bật AN | PHY báo cáo 10/100/1000 qua từ điều khiển | có |
| SGMII, tắt AN | cố định 1G | không |
Module SFP đồng dựa trên Marvell 88E1111 mặc định ở SGMII hoặc 1000BASE-X tùy theo EEPROM cấu hình/strap được đặt lúc sản xuất; các nhà sản xuất bán biến thể “SGMII” và “SerDes” của cùng một module, và một số có thể chuyển đổi qua các thanh ghi PHY truy cập được qua I²C của module. Các cổng switch liệt kê “hỗ trợ SFP 1000BASE-T” triển khai SGMII trên những cage đó (Ethernet đồng và DAC).
SFP 100BASE-FX
Một SFP quang 100 Mb/s (100BASE-FX, 1310 nm, 2 km) cần host chạy làn ở 125 MBd với 4b/5b — một PCS hoàn toàn khác. Chỉ những cổng hỗ trợ rõ ràng “SFP 100M” (nhiều switch campus trên các cổng được chọn, hầu hết router; ít switch trung tâm dữ liệu) mới hoạt động; trên các cổng khác, module được phát hiện nhưng không bao giờ lên liên kết. Một số host triển khai 100BASE-FX bằng cách nhân bản SGMII với một PHY ngoài đặt trong module (SFP “100M qua SGMII”).
2500BASE-X
| Mục | Giá trị |
|---|---|
| Tốc độ | 3,125 GBd, 8b/10b → 2,5 Gb/s |
| Chuẩn | không có từ IEEE (trên thực tế, 2,5 × 1000BASE-X); Linux phy-interface-type = "2500base-x" |
| AN | kiểu Clause 37, thường bị tắt |
| Ở đâu | module SFP 2,5G (đồng 2.5GBASE-T, quang 2,5G), stick ONU GPON/EPON hướng về host (hướng xuống 2,5G), uplink AP Wi-Fi 6, một số cage SFP switch 2,5G |
Các tương đương của IEEE cho multigig là 2.5GBASE-X/5GBASE-R (802.3bz), nhưng phần lớn silicon nói 2500BASE-X hoặc USXGMII.
QSGMII: bốn cổng trên một làn
| Mục | Giá trị |
|---|---|
| Tốc độ | 5 GBd, 8b/10b; 4 kênh SGMII ghép kênh theo thời gian |
| Làn | 2 cặp cho bốn cổng |
| Ở đâu | ASIC switch ↔ PHY đồng bốn kênh (switch truy cập 48 cổng: 12 làn QSGMII thay vì 48 SGMII), một số thiết kế cage SFP bốn cổng qua SerDes ngoài |
| Biến thể | QSGMII (Cisco), còn có “PSGMII” (5 cổng) trên một số SoC Qualcomm/Realtek |
Không hiện diện ở cage trong các thiết kế thông thường; chỉ quan trọng khi một board PHY bốn kênh đưa ra các cổng combo SFP có chế độ được kế thừa từ kênh PHY.
USXGMII: từ 10 Mb/s đến 10 Gb/s trên một làn 10G
| Mục | Giá trị |
|---|---|
| Tốc độ | 10,3125 GBd, 64b/66b (điện của 10GBASE-R) |
| Tốc độ hỗ trợ | 10M, 100M, 1G, 2,5G, 5G, 10G bằng cách nhân bản ký hiệu (giống SGMII nhưng ở quy mô lớn hơn) |
| Đặc tả | Cisco USXGMII (v1.2), được áp dụng rộng rãi; Linux usxgmii |
| Đa cổng | USXGMII-M: 4 × 2,5G, 2 × 5G, 4 × 1G+… trên một làn 10G (giống QSGMII) |
| AN | từ AN của USXGMII nằm trong khoảng rỗi 64b/66b, báo cáo tốc độ/song công/liên kết |
| Ở đâu | ASIC ↔ PHY multigig (cổng 2.5/5/10GBASE-T), module SFP+ 10GBASE-T (PHY nội bộ, ví dụ Marvell AQR/Broadcom) |
Một module SFP+ 10GBASE-T trình diện 10GBASE-R (SFI) cho một cổng SFP+ bình thường và lên liên kết ở 10G; việc nó có đồng thời phục vụ được client 1G/2,5G/5G hay không phụ thuộc vào việc host có hỗ trợ thích ứng tốc độ USXGMII trên cage đó hay không — hầu hết switch thì không, nên module chỉ hoạt động ở 10G, hoặc tự thực hiện việc thích ứng bên trong và báo cáo 10G cho host trong khi phía đồng chạy chậm hơn (Tốc độ và rate).
Cách host chọn chế độ
| Host | Cơ chế |
|---|---|
| Linux phylink/SFP | đọc byte A0h 3–10 (tuân thủ), 12 (tốc độ danh định), 36 (mở rộng) và bit 3 của byte 6 (1000BASE-T): 1000BASE-T → SGMII (hoặc 1000BASE-X nếu SoC không có SGMII); 1000BASE-SX/LX → 1000BASE-X; BR 3,1 GBd → 2500BASE-X; mã 10G → 10GBASE-R; PHY đồng bên trong module được dò qua I²C (địa chỉ 0x56/0xAC) và được phylib điều khiển |
| NOS của switch | mặc định của cổng theo nền tảng (hầu hết cage SFP 1G có khả năng SGMII; SFP+/SFP28 ở 1G thường chỉ có 1000BASE-X), các lệnh speed 1000, speed nonegotiate, media-type sfp, negotiation auto, port-mode |
| Driver NIC | Intel: cổng SFP+ chỉ hỗ trợ 1G ở 1000BASE-X (không có SFP đồng 10/100); Mellanox: 1G qua 1000BASE-X trên một số model; Broadcom: tùy firmware (Cổng NIC) |
| SFP đồng | strap/EEPROM chế độ PHY (biến thể SGMII so với SerDes), hành vi AN do firmware của nhà sản xuất quyết định |
Bảng lệch chế độ
| Triệu chứng | Nguyên nhân | Cách khắc phục |
|---|---|---|
| SFP đồng: client 1G bình thường, 10/100 không bao giờ lên liên kết | cổng ở 1000BASE-X | chuyển sang cổng có khả năng SGMII hoặc dùng module che giấu 10/100 đằng sau lớp thích ứng 1G-tới-host |
| SFP quang chỉ lên liên kết khi tắt AN | đầu xa không có Clause 37 (media converter, một số ONU) hoặc từ SGMII từ một module đồng | speed nonegotiate / autoneg off |
| SFP 100BASE-FX được phát hiện, không có liên kết | host thiếu chế độ SerDes 100M | dùng cổng hỗ trợ SFP 100M, hoặc module 100BASE-FX-qua-SGMII |
| SFP 2,5G lên liên kết ở 1G hoặc không lên được | host không có 2500BASE-X | chọn cage có khả năng 2,5G hoặc module có rate fallback |
| Stick ONU lên liên kết rồi rớt | kỳ vọng 2500BASE-X so với 1000BASE-X, AN | đặt host về 2500BASE-X, tắt AN (Quang PON) |
| SFP+ 10GBASE-T chỉ lên liên kết ở 10G | host không có USXGMII | chấp nhận chỉ 10G, hoặc dùng module có thích ứng tốc độ nội bộ |
| Linux: module hoạt động trên board này nhưng không trên board khác | phylink chọn một giao diện khác từ EEPROM; SoC thiếu chế độ đó | kiểm tra dmesg để tìm sfp: module … interface; sửa byte tuân thủ hoặc device tree |
Trong CodingBox
Các byte chi phối lựa chọn của host đều nằm trong A0h: mã tuân thủ 3–10 (mã 1000BASE-T, SX, LX, 10G), tốc độ bit danh định 12, mã hóa 11 (8b/10b so với 64b/66b), tuân thủ mở rộng 36. Một module đồng được mã hóa là 1000BASE-SX sẽ bị coi là quang và mất đường 10/100; một module quang có bit 1000BASE-T lạc chỗ sẽ bị điều khiển như SGMII. CodingBox hiển thị và cho phép sửa các trường này (Check transceiver, Mã tuân thủ).