会社ではこれまでもルータに 10 G Ethernet のケーブルをつないだりすることはあった. しかし,サーバに 10 G イーサネットのカードをとりつけて通信してみたことはなかった. 最近,Linux (Cent OS 6.2) をのせたサーバで 10 G の通信をすることが必要になったのだが,数日かけて,まだうまく通信できていない.
そのカードは Neterion 製の X3110 というカードである (写真はこのカードについているヒートシンクをはずしたもの). このカードは借りものなので,新品ではない. 2 枚のうちの 1 枚の設定が既定値でないことが,どうやらトラブルをまねいているらしい. 設定を既定値にもどせばよいのだとおもうが,それがうまくいかない.
そのカードには 1 個だけ SFP+ のポートがある. 既定の設定はそれを 1 個のポートとしてあつかうものだが,1 枚のカードではそれを仮想的に 8 個のポートとしてあつかう設定がなされていた. たぶんそのために,もう 1 枚のカードとのあいだでうまく通信ができない. 設定を変更して,みかけ上は通常どおり 1 ポートになったのだが,それでも通信できない. しかも,この状態でサーバを再起動すると,もとの状態にもどってしまう.
既定値のままになっているらしいカードとこのカードとをつなぐと,前者はパケットを送受信していないにもかかわらず,RX, TX のランプがいそがしく点滅する. ところが,後者のカードはリンクアップはするものの,点滅はしない.
これから予定している実験ではカードを仮想化する必要はないのだが,10 G Ethernet のカードはだいたい仮想化機能をもっていて,必要なくてもそれを知らないと,こういうときに対策できない. わるいことに,Web でさがしても,このカードの詳細な情報は非常にかぎられている. X3110 というカードじたいは比較的ポピュラーなものだが,Neterion が Exar という会社に買収されたためか,Web からかられるカードの設定情報が非常にかぎられている. Linux による設定について書いたものがまったくないわけではないが,とくに,すでに仮想化されたカード (とサーバ) をもとの状態にもどすにはどうすればよいかを書いたドキュメントがみつからない.
2012-3-25 追記:
トラブル・シューティングのためにあれこれためしているのだが,ひとつためして失敗したこととして,小型の PC へのインストールがある.
最近はたいていの PC にグラフィック・ボード用の PCIe X16 インターフェースがついている.
安価な PC だとほかの PCIe インターフェースは X1 なので,そこには 10 G Ethernet
のカードをさすことはできないが,このスロットだけにはさすことができる.
そこで,小型の PC に X3110 をとりつけてみた.
ところが,なんと,PC が起動しなくなってしまった.
このカードの消費電力は 15 W くらいなので,いくら電源が非力でもそれが供給できないことはないようにおもうのだが,起動時におおきな電流がながれて,電圧降下してしまうのだろう.
そのため,その PC でのテストはあきらめた.
2012-3-28 追記:
電源をおとしても維持されるボードの設定ができないので,ブート時にパラメタを設定するようにした.
/etc/odprobe.d というディレクトリのもとにつぎのような内容のファイルをつくっておく.
ファイル名はなんでもよいが,vxge.conf とした.
options vxge max_config_dev=1 max_config_port=1 max_config_vpath=1 vlan_tag_strip=0 addr_learn_en=0
Neterion のためのカーネル・モジュールが vxge であり,そのオプションとして (仮想) デバイスを 1 個にし,デバイスごとの VPATH も 1 にする. つまり,仮想化の機能をすべて off にする. また,VLAN タグも MAC アドレスも解釈 (学習) しないようにする. こうすれば Ethernet 以外のフォーマットのパケットもあつかえるようになる. これで目的どおりの設定ができたので,自分で書いた測定用のトラフィック生成プログラムを実行してみた. ところが,そのあと PC の動作が不安定になり,10 G のカードが認識されなくなってしまった. "lspci | grep X3100" というコマンドでなにも出力されない. こわれたとしか,おもえない.