そもそもSFPは光インターフェース用

SFPの仕様は光インターフェースの為であって、それが1000BASE-Tにも対応する用に拡張され、次に10/100/1000BASE-Tにも対応するようになったという経緯があります。その為、同じメーカーの製品であっても実装時期の違いなどにより複数の仕様が存在します。

正常に動作する組み合わせ

  1. SFPポートは光トランシーバーが接続されることしか想定していない場合
    1. 対向も同様に光用SFPポートであった時は1000BASE-Xのnegoも有効のまま接続、SerDes, 1000BASE-X auto negotiation enableの1000BASE-T SFPを使用。1000BASE-Tの仕様としては特殊な形態。
    2. 対抗が通常の1000BASE-Tであった場合は1000BASE-X negoをdisableに設定変更が必要、SerDes, 1000BASE-X auto negotiation disableの1000BASE-T SFPを使用
    3. "10000BASE-X auto-negotiation bypass"機能によってnegoがタイムアウトし自動的にdisableになる。SerDes, 1000BASE-X auto negotiation enableの1000BASE-T SFPを使用
  2. SFPポートが10/100/1000に対応している場合
    1. 明示的にHOSTに1000BASE-X auto negotiation disable設定をすれば。通常の10/100/1000と同等。SGMII, 1000BASE-X auto negotiation disableの1000BASE-T SFPを使用

仕様と動作の組み合わせパターン

スイッチ側 SFP側 動作 対向
  interface 1000BASE-X nego    
SFPは光だけ SerDes enable 100BASE-Tだけ使える 対向もONもしくはtimeout bypass mode
disable スイッチでnegoをdisableすれば使える ふつー
SGMII enable 使用不可  
disable 使用不可  
光を期待SGMIIにも対応 SerDes enable 1000BASE-Tだけ使える 対向もON
disable スイッチでnegoをdisableすれば使える ふつー
SGMII enable 10/100/1000可 対向もON
disable スイッチでnegoをdisableすれば使える10/100/1000 ふつー
UTPを期待(-X neg off) SerDes enable 使用不可  
disable 使用不可SGMIIへ遷移  
SGMII enable 使用不可?  
disable 10/100/1000可 ふつー

一つの仕様の1000BASE-T SFPで様々な機器に対応する手法

1000BASE-X nego enable, bypass mode, SerDes

  • 光SFPしか想定していない機器
    • 光SFP対向の時は何も設定不要
    • 光SFP対1000BASE-Tの時は1000BASE-X nego diableをHOSTとSFPに対して操作が必要
    • 10/100/1000は未対応
  • 10/100/1000対応SFPポート機器
    • 1000BAE-T SFPと認識したら、SFPに対してSGMII,1000BAS-X auto nego diableを発行、HOST側も1000BAS-X nego disable処理,10/100有効処理

1000BASE-X auto nego disable, SerDes

  • 光SFPしか想定していない機器
    • 必ず1000BASE-X auto nego disableコマンドが必要
  • 10/100/1000対応SFPポート
    • 1000BAE-T SFPと認識したら、SFPに対してSGMII、10/100有効処理

スイッチとトランシーバー間の仕様

 

mode 概要
SGMII
ciscoが提唱した1.25Gbpsに固定するモード。データが10 or 100のときなデータが乗っていないビット列を送る。
光の100M対応トランシーバーでも使用する。
SerDes SGMIIで使われている伝送仕様だけを指す、レート変換無し

Serial Interface Auto-negotiation bypass mode

IEEE 802.3X clause 37では両端がauto negotiationに対応していることが要求されている。

片側だけの場合linkのnegoが成立しない。この問題を回避する為にbypass modeがある。200msでタイムアウトしnegoを成立させる。

Link確立条件の違い

光を使う1000BASE-SX/LXは規定以上の強さの光を受信するとLOS出力は変化する。しかし、論理的にlinkupは1000BASE-Xのネゴが終わってからで。機器のlink ランプが付くのもその後。

1000BASE-T信号同期が確立したことをlink upとする。そのため、1000BASE-X auto negoをdisableした場合linkは常にUPにみせかける必要がある。

LOS (Loss of Signal) operation on the 1000BaseT SFP is different than for optical SFP applications. For models with RX_LOS enabled, RX_LOS signal is a 1000BASE-T linkup/link-down indicator and not a peak (AC) or voltage (DC) detector. For models where RX_LOS is disabled, RX_LOS is not used and is always tied to ground via 100-ohm resistor.

non DDM

(Digital diagnostic monitoring)光の受信レベルなどをモニタリングする機能。UTP用のトランシーバーには不要。

DOM(DIgital optical monitoring)情報を所得するスイッチ側の機能を差すような文章もあるがDDMと同義としているものも多数。

DOMは光レベルだけで、DDMはそれ以外に電圧や温度なども?

実際のトランシーバーの仕様例(初期値)

  MII 1000BASE-X auto nego 1000BASE-T auto nego MII SPEED RX_LOS  
FCLF8520 SerDes? disable   multirate support  
FCLF8521 SerDes? enable   1000BASE no 光だけ想定の箱用
FCLF8522 SerDes? enable   multirate support  
WST-SEAMIV-D6 SGMII enable enable multirate support  
WST-SEACIV-D6 SerDes enable disable 1000BASE support  
GLC-T/SFP-GE-T/GLC-TE
SerDes enable disable 1000BASE no  
EX-SFP-1GE-T
SP7041-M1-JN
  enable   multirate no  

ciscoは様々なベンダーから調達している

  PN CLEI METHODE AVAGO
GLC-T 30-1410-02 CNS8TUTAAA SP7041 ABCU-5710RZ-CS2
30-1410-03 CNS8TUTAAB    
30-1410-04 CNS8TUTAAC SP7041_Rev_F  
SFP-GE-T 30-1421-01 IPUIAPARAA SP7041-E  
30-1421-02 IPUIAPARAB SP7041-E-R  
30-1421-03 IPUIAPARAC    
GLC-TE 30-1475-01 CMUIAGBCAA SP7041-TE SBCU-5740ARZ-CS1

CLEI(Common Language Equipment Identifier)

http://sfpdb.freetime.su/

実際のスイッチの仕様例

cisco Catalyst系列

多くの製品で10/100/1000をサポートしていない。Catalyst 2970、3560、および 3750 シリーズ スイッチのだけ 10/100/1000 の速度をサポート。

"show interface capabilities"によってそのSFPインターフェースが10/100/1000対応であるかが確認できる。

10/100/1000対応機種ではSFP認識後I2Cでコマンドを送りSGMIIモードに変更。

"nonegotiate"で1000BASE-Xnegoをdiable。Tは自動認識?

"no negotiation auto"

EdgeCore(AOS)

SFP portでは1000BASE-Tのみ、SerDes

Cumulus

1000BASE-Tのみ

auto swp1
iface swp1
  link-autoneg off
  link-speed 1000

E1000NIC Driver

調査中

CONFIG_QCOM_EMAC: Qualcomm Technologies, Inc. EMAC Gigabit Ethernet support

LINUX kernel

https://github.com/torvalds/linux/blob/master/drivers/net/phy/sfp.c

/* Setting the serdes link mode is guesswork: there's no
* field in the EEPROM which indicates what mode should
* be used.
*
* If it's a gigabit-only fiber module, it probably does
* not have a PHY, so switch to 802.3z negotiation mode.
* Otherwise, switch to SGMII mode (which is required to
* support non-gigabit speeds) and probe for a PHY.
*/
sfp_sm_mod_init -> sfp_sm_probe_phy -> phy_start

LINUX phylink

1G/2.5G/5G/10Gにも対応できるドライバーの実装。

組合せ試験(EdgeCore AS5812-54X+EdgeOS)

  config link 1000 100 10G
GLC-T(30-1410-02) default 常にON × -
GLC-T(30-1410-03) default 常にON × × -
SFP-GB-GE-T default   × × -
WST-SEAMIV-D6 default   × × -
WST-SFP+Cu-C default 常にON × ×
WST-SFP+Cu-C media-type 10g 常にON × ×

ethtoolによる情報dump

EdgeCore AS7712+Cumulus

Marvell Alaska 88E1111

各社の1000BASE-T SFPトランシーバーはその大半がこのチップを使っており。HWCFG_MODEに設定によって起動後の初期値が決まる。

 

HWCFG_MODE[3:0] = 

1000 1000BASE-X without clock with 1000BASE-X to copper
0100 SGMII without clock
0000 SGMII with clock
1100 legacy SERDES10000BASE-X with out 1000BASE-X auto negotiation

Revision1の問題

revision release date description PHY ID
A0     0xc00c?
A1      
B0   finisar 1st gen 0xc10c?
B1      
B2   finisar 2nd gen 0xc20c?
C2   88E1112-C2 0x970c
PHY Identifier 2 Page Any, Register 3 0:0 bit
root@as7712:~# i2cget -y -f 23 0x56 3 w
0xc20c

88E1111 : 1100-xxxx-0000-1100

88E1112 : 1001-xxxx-0000-1100

互換性があるコントローラ

broadcom BCM54616S

様々な「Auto negotiation」

  1. 1000BASE-X auto negotiation
    IEEE 802.3 clause 37
    duplex and flow control
    トランシーバーとHOSTシステム両方が関わり双方が一致している必要がある
    SFP 1000BASE-X auto-negotiation bypass mode
  2. 1000BASE-T auto negotiation
    IEEE 802.3 clauses 28 and 40
    UTPでの伝送速度のネゴ、MDI/MDIX
    トランシーバー単体で処理が収まる
  3. SGMII auto negotiation
    cisco Specflication
  4. GBIC mode auto negotiation
  5. Auto Media Detect Auto negotiation

操作可能なレジスター

change to 10/100/1000 SGMII

PHY 0xAC(0x56)

Register Address Write Data Description
0x1B 0x9084 enable SGMII mode(0100)
0x09 0x0F00 Advertise 1000BASE-T Full/Half-duplex
0x00 0x8140 Apply Software Rest
0x04 0x0DE1 Adverise100/10BASE-T Full/Half
0x00 0x9140 Apply Software Reset
0x1B 0x808C Change HWCFG mode to non-GBIC

change to 1000BASE SerDes only

PHY 0xAC(0x56)

register write data dectiption
0x1B 0x9088 enable SerDes mode(1000)
0x00 0x8140 Apply software reset
0x16 0x0001 select page 1
0x00 0x9140 enable 1000BASE-T nego
0x16 0x0000 select page 0

 

action register write data
1000BASE-X auto nego disable 0x1B:0x808C, 0x00:0x8140
1000BASE-X auto nego enable 0x1B:0x9088, 0x00:0x8140
1000BASE-T auto nego disable 0x16:0x0001, 0x00:0x8140, 0x16:0x0000
1000BASE-T auto nego enable 0x16:0x0001, 0x00:0x9140, 0x16:0x0000
SGMII auto nego disable 0x16:0x0001, 0x00:0x8140, 0x16:0x0000

 

SGMII mode change

  • write 0x9084 to 0x1B to Enable SGMII mode
  • write 0x0F00 to 0x09 to Advertise 1000BASE-T Full/Half-Duplex
  • write 0x8140 to 0x00 to Apply Software Reset
  • write 0x0de1 to 0x04 to Advertise 100/10BASE-T Full/Half-Duplex
  • write 0x9140 to 0x00 to Apply Software Reset
  i2cset -y ${a} 0x56 0x1b 0x8490 w
  i2cset -y ${a} 0x56 0x09 0x000f w
  i2cset -y ${a} 0x56 0x00 0x0081 w
  i2cset -y ${a} 0x56 0x04 0xe10d w
  i2cset -y ${a} 0x56 0x00 0x0091 w

仕様の確認方法

基本情報の確認、I2Cアドレスは1bit shiftするので0x50(0xA0)と0x56(0xAC)。

まず刺さっているSFPポートのI2Cインターフェース番号を探す。

i2cdetect

ethtool -m swp31 hex on
i2cdump -y -f 23 0x50

register 27は16進で0x1Bなので

root@as7712:~# i2cget -y -f 44 0x56 0x1b w
0x8890

x8xxもしくはxCxxだとSerial(SerDes)、x0xxもしくはx4xxだとSGMII

GLC-T(30-1410-02)のデータを取る

root@as7712:~# i2cget -y -f 44 0x56 0x1b w
0x8890
root@as7712:~# i2cset -y -f 44 0x56 0x16 0x0100 w
root@as7712:~# i2cget -y -f 44 0x56 0x00 w
0x4019
1000BSE-X enable / 1000BASE-T enable / 

register 27(0x1B) = 0x8890

bit   description
15 1 disable fiber/copper nego
14 0 reserved
13 0 copper link
12 1 serial auto nego bypass enable
11 0 serial auto nego bypass status auto nego completed
10 0 INIT active high
9 0 enable automatic medium register selection
8 0 DTE detect status hysteresis  0100
7 1  
6 0  
5 0  
4 0 link partner does not need FTE power
3 1 HWCFG = 1000,serial 1000BASE-X nego on
2 0  
1 0  
0 0  

register 9

9 1000BASE-T full-duplex
8 1000BASE-T half-duplex

register 4

8 100BASE-TX full-duplex
7 100BASE-TX half-duplex
6 10BASE-TX full-duplex
5 10BASE-TX half-duplex
 

手元にあった1000BASE SFPのデータ

 

0x1B 0x04 0x09 HWCFG interface
1000BASE-X  
auto nego
1000BASE-X
nego bypass
1000BASE-T
auto nego
GLC-T 02 0x8890 0x010C 0x000E 1000 SerDes enable enable  
GLC-T 03 0x8890 0x010C 0x000E 1000 SerDes enable enable  
WST-SEAMCV 0x8480 0xE10D 0x000F 0100 SGMII disable disable enable
GB-GE-T 0x8480 0xE10D 0x000F 0100 SGMII disable disable enable
WST-SEACIV-R6 0x8C80 0x010C 0x000E 1100 SerDes disable disable  

 

SFF INF-8074

トランシーバーの種別情報などは定義されているが。negoの enable/disable操作などは規定なし。

DOM/DDMの規定もなし。

SFF-8472

0xA2 : Diagnostics

Links

FINISAR 1000BASE-T SFP's FAQ

https://www.finisar.com/sites/default/files/resources/an-2036_1000base-t_sfp_faqreve1.pdf

http://www.methode.com/Documents/TechnicalLibrary/SFP_Ethernet_Auto_Negotiation.pdf

SGMII(Serial-GMII) revision 1.8 2011/07/02

cisco ENG-46158 / 46080


コメント欄を読み込み中