SFPPの仕様について

Contents:

Warning

書きかけです

SFPPに関する概要

SFPP(SFP+)の仕様は

SFF-8431においてSFPPに関する解説
SFF-8472においてSFFPの2wire serialを用いた管理

にて記載されている。 SFPPはSFFのSFF-8431において標準化が行われている光トランシーバモジュールである。 SFPPは従来のXENPAKやXFPに比べて小型かつ低電力のモジュールであり、 高集積化が進む近年のスイッチなどにおいて必須の技術となっている。

光モジュールは光電変換を行うモジュールではなく、 光レベルの閾値監視や現在の値、また、モジュール自身の温度をホスト側に伝える機能を有している。

SFPPの機能は大きく3つに分けられる。

  1. 管理用バス
  2. 電気的な主信号
  3. 光的な主信号

以下ではこの1のみについて触れる。

1.SFPPの管理用バス

SFPPは20本の電気的な接点を持つ。(Page.5) このうち、4番ピン(SDA)と5番ピン(SCL)は 2-wire Serial Interface と呼ばれ、管理用に用いられている。 I2C バスとして一般的に知られているプロトコルである。

SDA, SCLはそれぞれ3.3Vのデジタル信号が流れ、SCLが信号のクロック。SDAが同期したシリアルデータを伝送する。電圧などの詳細は表21を参照のこと。 シリアルのクロックは最大400kHzが利用可能であり、「スレーブモード」としてのみ動作する。ラインカード側に対してSFPPから自発的にデータの送出を実施することはなく、全て「マスタ」であるラインカードからの要求に基づいて処理を実行する。 シリアルバスのアクセスには2つのアドレスが用いられる。 1010000x (A0h) および 1010001x (A2h) である。詳細は後述。

SCL: 信号が存在しない場合、Low信号を送出
SDA: 送受信に用いられる。オープンドレインかオープンコレクタの状態である。
Clock and Data Transitions:

ACK

8ビットのワードが送られると、送信側はSDAを(1ビット時間)解放する。 この間に、受信側はSDAを0にプルすることでACKを示すことができる。 ラインカード側からのアクセスに対してはトランシーバ側からACKが返され、 トランシーバ側からのアクセスに関してはラインカード側がACKを返す。 尚、ラインカード側からの最後の読み込みであった場合、 ラインカードはデータに対してACKではなくSTOPシーケンスを送る。

NACK:

優先度の高いタスク処理などでデータを受信できなかった場合、 SDAラインがHighである状態を解放する(Lowに落とす)。 ACKのクロックパルス(1bit time)の間にSDAラインがHighである状態から解放された場合、 ホスト側はNACKされたと解釈し、データ送信の停止(STOP)あるいは、 サイド、STARTデータを送りデータの送信を再試行する。

さらなる送信の詳細(ビット列)に関してはPage44以降を参照のこと。

概要

SFF-8472では Diagnostic Monitoring Interface for Optical Transceivers という表題で光トランシーバとの管理通信について述べられている。 この仕様はSFPPだけに限定されておらず、SFP, XENPAK, XFPでも同様の プロトコルが用いられている。

光トランシーバはにA0hとA2hのアドレスを用いてアクセスされる。 それぞれ、256バイトの情報を返す。

Page8で示されている通り、A0hのアドレス空間には 光トランシーバのS/N等とベンダ固有の情報が含まれる。 A2hには光レベルの閾値情報などが含まれている。 また、120Bytesのホスト側か書き込めるメモリ空間も用意されている。

A0hアドレス空間

Address size(byte) Field
20-35 16 Vendor Name
40-55 16 Part Number
56-59 4 パーツのRev
60-61 2 Wavelength
68-83 16 S/N
84-91 8 製造日
95 1 CheckSum
96-127 32 (ベンダ用EEPROM)

A2hアドレス空間

Address size(byte) Field
0-55 xx 閾値
56-95 xx
96-119 xx リアルタイム値
120-127 xx ベンダ予約
128-247 xx (ベンダ用EEPROM)
248-255 xx ベンダ予約

トランシーバの識別

トランシーバの判別についてはPage17のTable3.5bを参照すること。 AddressA0hの3バイト目から10バイト目のビットの立ち方で インタフェースは判別される。 通常の1G/10Gインタフェースにおいては、 3-6byte目の任意のビットが立つことでインタフェースを識別している。