トランシーバーの情報を所得するのに、サーバーやcumulusではethtoolがとても便利です。しかし、SONiCではファブリックとのインターフェースがSAIになっているためかethtoolで直接インターフェースにアクセスすることはできません。その代わりを考えてみます。

ethtoolを改造してSAIに対応する

未着手

sfputilを使う

情報量がたりません。"show interface transceiver eeprom"もラッパー経由でsfputilが実行されていますので出力結果は同じです。

sfputilを改造する

sfputilはpythonで書かれています。

eeprom_raw = platform_sfputil.get_eeprom_raw(physical_port)
 

ethtoolを改造してファイルデータからparseした結果を出す

ethtool 5.10のソースからEEPROMデータをparseする部分だけ抜き出して。EEPROM情報がバイナリーで格納されているファイルから展開した情報を表示するプログラムをMacOS上で作りました。"ethtool -m"の機能だけ抜き出したものです。仮に"sfp_decode"とします。直接IOを触らないのでOSに依存しない形になっています。

i2cdumpを改造してバイナリー出力に対応させる

上記プログラムに食わせるデータを現在ではi2cdumpの出力を手作業で加工したのちxxdでバイナリーに変換していますが。i2dumpから直接バイナリーが出力すればこの手間が省ける。

ソースを眺めたところ簡単そうなのでそのうち作業してみましょう。

xxd -r -p sample.hex > sample.bin

パイプでつなげばもっと便利。

i2cdump -y -f -b 2 0x50 | sfp_decode

i2cdumpの使い方

範囲指定でシリアル番号(0xc4-0xd3)だけ取り出す

#PN
i2cdump -y -f -r 0xa8-0xb7 2 0x50
#REV
i2cdump -y -f -r 0xb8-0xb9 2 0x50
#SN
i2cdump -y -f -r 0xc4-0xd3 2 0x50

コメント欄を読み込み中