光による接続用として用意されている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 |
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のケーブル長によっても消費電力が変化します。