CodingBox ドキュメント

SGMII、1000BASE-X、QSGMII、USXGMII:PHY と SFP へのシリアルインターフェース

1G の SFP ケージはいずれも 1.25 GBd のシリアルレーンを1本備えており、そのレーンはオシロスコープ上では見分けが付かない2つの方言を話せます。光ファイバーモジュールが前提とする IEEE のインターフェース 1000BASE-X と、10/100 Mb/s と異なるオートネゴシエーションを追加した Cisco の変種 SGMII です。銅線 SFP はこの両者の境界線上で動作し、「銅線 SFP は 1G ではリンクするのに 100 Mb/s のカメラだけリンクしない」という問い合わせの大半は、この方言の不一致が原因です。このページでは、2つのギガビット方言とそのオートネゴシエーション、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 結合)
符号化/K28.5/ コンマを伴う 8b/10b、順序集合 /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 ビット):bit 15 がリンク、bit 11–10 が速度(10/100/1000)、bit 12 がデュプレックス、bit 14 が ack。銅線側がネゴシエートした結果を MAC に伝えるため PHY → MAC 方向に送信される。Clause 37 の内容とは互換性がない
用途MAC ↔ 銅線 PHY(Marvell 88E15xx、TI DP83867、Broadcom)、銅線 SFP 対応を望むボードでの SoC ↔ SFP ケージ、銅線 1000BASE-T SFP の内部

SGMII は MAC–PHY 間のインターフェースです。「オートネゴシエーション」は2段階で行われます。まず 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 モジュールは、製造時に設定される EEPROM/ストラップに応じて、 SGMII または 1000BASE-X のいずれかがデフォルトになります。ベンダーは同じモジュールの「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」に明示的に対応したポート(一部のキャンパススイッチの特定ポート、大半のルーター、データセンタースイッチはごく一部)でのみ動作し、それ以外ではモジュールは検出されてもリンクしません。ホストによっては、モジュール内部の外部 PHY による SGMII 複製で 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:1レーンで4ポート分

項目
レート5 GBd、8b/10b;4本の SGMII チャネルを時分割多重
レーン4ポート分で2対
用途スイッチ ASIC ↔ 4連銅線 PHY(48 ポートのアクセススイッチ:48本の SGMII の代わりに12本の QSGMII レーン)、外部 SerDes を介した一部の4連ポート SFP ケージ設計
バリエーションQSGMII(Cisco)、一部の Qualcomm/Realtek SoC では「PSGMII」(5ポート)も

通常の設計ではケージ上に現れませんが、4連 PHY ボードが SFP コンボポートを公開し、そのモードが PHY チャネルから引き継がれる場合には関係してきます。

USXGMII:1本の 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:1本の 10G レーン上で 4 × 2.5G、2 × 5G、4 × 1G+…(QSGMII と同様)
AN64b/66b のアイドル中の USXGMII AN ワードで、速度/デュプレックス/リンクを報告
用途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/SFPA0h のバイト 3–10(コンプライアンスコード)、12(公称レート)、36(拡張)、6 の bit 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+ ポートは 1G を 1000BASE-X のみでサポート(10/100 の銅線 SFP は非対応);Mellanox:一部モデルで 1000BASE-X 経由の 1G;Broadcom:ファームウェア次第(NIC ポート
銅線 SFPPHY モードのストラップ/EEPROM(SGMII 版か SerDes 版か)、AN の挙動はベンダーのファームウェアが設定

不一致一覧表

症状原因対処法
銅線 SFP:1G のクライアントは問題ないが 10/100 が全くリンクしないポートが 1000BASE-XSGMII 対応ポートに移すか、10/100 を 1G-to-host 変換の裏に隠すモジュールを使う
光ファイバー 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 にそのモードがないdmesgsfp: 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 を押すと、できます。