光による接続用として用意されているSFP/SFP+/SFP28ポートですが。構成上UTPでの接続も欲しくなることがあります。UTP接続が多数であれば最初からUTPポートを装備したスイッチなりを用意するでしょうが少しだけ欲しいときに便利なのがCopper/UTP対応のSFPです。しかし、これは正直言って別カテゴリーの製品と認識して頂きたいほどです。

通常の光トランシーバーと大きく異なり、Copper SFPはかなり高度な機能を持つPHY ICが内蔵されており。これが様々なステートを持つ動きをします。単純に電気信号と光を変換する光トランシーバーとは全く扱いが異なります。そのため、電源供給とステータス確認以外に積極的に内蔵されているPHY ICへの操作が必要になります。

PHY ICは複数のベンダーから供給されており、機能を確認及び操作するレジスタの構造も様々ですが共通の構造を持っています。基本的にレジスタはMDIO 5 bitのDEVADDR/16bitのREGISTERを持ち16bitの値のやり取りをします。これに対し、Copper SFPの場合はI2Cを経由してアクセスするのですがこれが三種類あるのです。

Clause 22

最も古く、1000BASE-T対応のCopper SFPはほぼこの形式かそもそもレジスタへのアクセス機能を持たないかです。仕様はMDIOのbit列で定義されているのでこれをI2C経由に変換するのは少し面倒です。

I2Cの0x56に対し8 bitのアドレスがDEVADDR=1の16bit registerの下位5bitに相当し。16btの値が扱えます。つまり、DEVADDR=1以外や、0x001f以上のレジスタへはアクセスできません。

このうち、0x00-0x0fがベンダーに関わらず共通の項目になっています。

i2cget 18 0x56 0x02 w
0x9035
i2cget 18 0x56 0x03 w
0x8150
ハードウェアに依存しますがLinuxで一般的に仕様できるi2ctoolsのCLIであれば上記の方法でPHY ID(0x35905081)を得ることができます。"18"は対象とするSFPポートによって決まります。

RollBall

ベンダー名なのですが、Clause 22の次に登場したPHY IC registerへのアクセス方法でプロトコル名的に使われる事もあります。これは、0x51のpage 03の0x80/0x81/0x82/0x83/0x84を利用したregisterへのアクセス方法で、16bitのregisterを指定することができます。

RollBallだけではなく同時にCluase 22も利用できる実装が一般的です。


i2cset -f -y 1 0x51 0x7b 0xff
i2cset -f -y 1 0x51 0x7c 0xff
i2cset -f -y 1 0x51 0x7d 0xff
i2cset -f -y 1 0x51 0x7e 0xff
i2cset -f -y 1 0x51 0x7f 0x03 
i2cset -f -y 1 0x51 0x81 0x01
i2cset -f -y 1 0x51 0x82 0x0200 w
i2cset -f -y 1 0x51 0x80 0x02
sleep 1
i2cget -f -y 1 0x51 0x84 w
0x9035
#
i2cset -f -y 1 0x51 0x81 0x01
i2cset -f -y 1 0x51 0x82 0x0300 w
i2cset -f -y 1 0x51 0x80 0x02
sleep 1
i2cget -f -y 1 0x51 0x84 w
​​​0x8150

 

Clause 45

IEEE P802.3ae Extension Frame Register Access Clause 45 Mode

10Gbps対応を念頭に定義された方式で、すべてのDEVADDR/REGISTERにアクセス可能です。

i2cset -f -y 1 0x56 0x21 0x0200 w
i2cget -f -y 1 0x56 0x20 w
0x9035
i2cset -f -y 1 0x56 0x21 0x0300 w
i2cget -f -y 1 0x56 0x20 w
0x8150

 

各方式比較

  Clause 22 Roll Ball RollBall
DEVADDR 0x01 0x01-0x1f 0x01-0x1f
REGISTER 0x00-0x1f 0x0000-0xffff 0x0000-0xffff
DATA 0x0000-0xffff 0x0000-0xffff 0x0000-0xffff

 

  CL22 RollBall CL45
WST-SFP+Cu-C ✖️ ✖️
WST-SFP+CuS-C ✖️
WST-SFP+CuX-C ✖️ ✖️
WST-SFP+CucRM-D ✖️
WST-SFP+RM-I ✖️ ✖️

 

PHY IDの不一致

これらの操作方法を使ってまず参照する情報はPHY IDでしょう。これにより、PHY ICの種類が判別しどの固有のレジスタが利用できるか判断できます。しかし、実際に手元にあるいくつかのCopper SFPを参照してみたりlinuxのsource codeを参照するとPHY ICベンダーから提供されているPHY IDの情報を実際は異なる値を返す製品があるようです。この辺りは注意が必要です。

共通レジスタ

register
name
description
0x00
Control
10/100/1000 SPEED等
0x01
status
link up/down等
0x02
PHY ID1
PHY ID upper 16bit
0x03
PHY ID2
PHY ID lower 16bit
0x04
 
negosiation
0x05
 
Link Partner Ability
0x06
 
Auto-Negotiation Expansion
0x07
 
Next Page Transmit
0x08
 
Link Partner Next Page
0x09
 
1000BASE-T Control
0x0a
 
1000BASE-T Status
0x0b
 
 
0x0c
 
 
0x0d
 
 
0x0e
 
 
0x0e
 
Extended Status

 

Copper SFPの消費電力

レジスタ操作とは関係ありませんが、10Gbps対応Copper SFPの消費電力は大きめです。一般的な光トランシーバーの1.5Wに対し。3.3V/600mA 2.0Wを超える場合もあります。使用しているUTPのケーブル長によっても消費電力が変化します。

この記事をシェア

Previous Article

November 29, 2023 • 4:50PM

Next Article

January 20, 2024 • 9:50AM

Topics

トピックがありません。

From Our Blog