infinibandを自宅に導入 & Win-Ubuntu間でIBネットワーク構築(FDR 56Gbps/40GbE)

格安で超低遅延で高速なネットワークが組めるということで、自宅にinfinibandを導入してみました。


HCA(infinibandカード)

メーカー

中古で転がってるのは大体Mellanox社製とそのOEMです。
その中で、中古の価格相場的に、現在はConnectX-3が一番お手頃でコスパよさそうです。ConnectX-2はWin10に対応してないので、注意が必要です。

速度

ConnectX-3のHCAでは40GbpsのQDRと56GbpsのFDRで二種類あります。

Mellanoxから出てるやつだと、QDRなら型番のケツにQCBT、FDRはFCBTって書いてます。
OEM版は対応するやつをそれぞれ調べてみてください。

動作モード

VPI対応のHCAは、infinibandであることを捨ててEthernetモードに変身することもできます。
OEMとかによって変わるっぽいですが、FDRのカードだと56GbEか40GbEカードに化けることができる訳です。

接続

接続はPCIE Gen3のx8接続です。

ちなみにうちのメイン機のRyzenマシンはGen2のx4しか空いてなかったので最高20Gbpsしか出せないです…

参考、PCIEのレーンと帯域の関係
https://ja.wikipedia.org/wiki/PCI_Express#%E8%BB%A2%E9%80%81%E9%80%9F%E5%BA%A6

ブラケット

中古で出品されてるやつはブラケットが大体ロープロなので、普通のPCにつけるには外して何らかの手段で固定するか、3Dプリンターでフルハイトのブラケットを作らないといけません。
3Dモデル結構いっぱいありました。

https://www.yeggi.com/q/mellanox+connectx+3/

消費電力

消費電力はMCX353A-FCBTの場合、パッシブケーブルでおよそ6~8Wのようです。
まあそれなりに熱いので風当てるか無理やり4cmファン付けるのがおすすめです。

消費電力はここ参照
https://www.mellanox.com/related-docs/user_manuals/ConnectX-3_VPI_Single_and_Dual_QSFP_Port_Adapter_Card_User_Manual.pdf


ケーブル

ケーブルの種類

HCAのQDR、FDRで使うケーブルはQSFPかQSFP28があります。

規格上ではQSFPは40Gbps、QSFP28は100Gbpsまでとなっていて、端子には互換性があります。
FDRなら56Gbpsなので一応後者がいいかと思います。

銅線?光ケーブル?

これらのケーブルは銅と光ケーブルの二種類あります。

QSFPで銅は5mくらいまでの短距離、光ファイバーは100mくらいのちょっと長い距離に対応してます。
なので、中古で手に入れようとするとおそらく銅ケーブルを買うことになると思います。

距離と速度はここを参照
http://www.viops.jp/ibday02-BASIC-xsigo.pdf

また、光だと両端についてるメディアコンバータの性能によって、QSFPでも40Gbps出ないかもしれません。
例えば光ケーブルでQSFPのSAS用として売られていたとすると、24Gbpsまでしか出ない可能性があります。ここら辺は試したことないので分かりません。
http://www.aim-ele.co.jp/products/qsfp/


購入したもの

HCA

FDR 56Gbps/40GbE
Fujitsu CA05954-2101(MCX353A-FCBTのOEM)

ヤフオクで二枚4000円ほどでした

ケーブル

5mの銅線QSFPケーブル買いました。パッシブケーブルです。

SAS用って書いてました。ヤフオクで1500円ほど。

ファームウェアのアップデート

まずファームウェアアプデしときます。
Windows側のマシンで作業しました。

アプデツールのMellanox Firmware Toolsをここからダウンロードしてインストールします。https://www.mellanox.com/products/adapter-software/firmware-tools

バージョン確認

管理者権限のCMDで実行してください。
(アプデ後に実行したのでバージョンは最新になってます)

ファームウェアのダウンロード

ファームウェア自体はOEM品だとMellanoxのは通らないので、各社サイトからダウンロードします。
今回は富士通のOEM品なので富士通からダウンロードしました。

https://azby.fmworld.net/app/customer/driversearch/ia/drviadownload?driverNumber=F1025573

落としたファームウェア(242500F1.bin)は同じ階層に入れておきます。(C:\\Program Files\Mellanox\WinMFT)

バックアップ

落としたファームのチェック

焼く


ネットワーク構築

infinibandでIP通信をするにはIPoIB(IP over infiniband)を設定します。

QDRは8b/10b変換をするため、実効転送レートは40Gbpsから32Gbps、
FDRは64b/66b変換なので、56Gbpsから54.55Gbpsになるらしいです。https://ja.wikipedia.org/wiki/InfiniBand#%E8%BB%A2%E9%80%81%E3%83%AC%E3%83%BC%E3%83%88

構成

今回はスイッチは使わずにPCを直結しました。

サーバー  192.168.250.10

Ubuntu Server 20.04
Core i3 6100T
ECC 2133MHz 4GB*4

クライアント 192.168.250.11

Windows 10 Pro
Ryzen 5 3600
3200MHz 8GB*2

なお、空いているPCIEのポートがGEN2のx4しかなかったので最高20Gbpsまでしか出ません…

それではネットワークを構築していきます

サーバー側(Ubuntu 20.04)

モジュールを追加します。

再起動したら、カーネル標準のドライバをインストールします。

追加で必要なパッケージをインストールします。

infinibandネットワーク内では、どこか一か所でサブネットマネージャーと呼ばれるものを動作させる必要があります。
マネージドスイッチがあればそいつがやってくれますが、直結したりアンマネージドスイッチに繋ぐ場合はサーバー側で動作させなければいけません。

自動起動したかったのですが、enableを打ってもなんか失敗するので強引ですがcrontabに起動時実行するように設定しました。

あとはip aするとibなんたらってデバイスが出てくると思うので、こいつをnetplanでアドレス振っておけば設定完了です。

クライアント側(Windows 10)

infinibandのドライバーは、OpenFabricsというところが標準版を出して、それを各社がカスタマイズしてリリースしてるらしいです。

WindowsではOpenFabrics版とMellanox版の2種類あります。
しかし、OpenFabricのほうは長らく更新されておらずWindows10では使えないためMellanoxのほうをインストールしました。

ここからダウンロードします。ConnectX-3,X-3 ProはWinOF、X-4,X-5はWinOF2を選んでください。
https://www.mellanox.com/products/adapter-software/ethernet/windows/winof-2

入れたらネットワークアダプターにIPoIBアダプターが出現するのでそこからアドレスを振っておきます。

pingを鯖に飛ばせたら設定完了です。


使ってみる

ベンチマーク

こちらの環境ではクライアント側がGen2のx4で繋がってるので、理論値で最高で20Gbpsまでしか出ません…

特に何もいじってない状態でiperf3を実行したところ、10Gbps前後でした。
なんか微妙です。

MS製のNtttcpでも計ってみました。
Linuxだと自分でコンパイルしなきゃいけません。

https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-bandwidth-testing

若干速度上がりました。
マルチコア使ってくれるからでしょうか?鯖機のCPUもっと強かったらもっと速度出たかもしれないです。

あと一応チューニングできそうなこと書いてみます。

チューニング

省電力設定を切ってみる

互いのPCの省電力設定(Cなんとかステートとか)を全部切ってみる。

MTUを上げてみる

MTUを上げると通信の制御回数が減るのでCPUの負荷が減ります。多分。

infinibandの接続モードはconnnectedモードとdatagramモードがあります。
connectedモードではMTUを上げられますが、datagramと比べて若干遅延が増えます。

datagramではMTUが強制的に2044、connectedモードでは65520までに設定できます。

しかし!ubuntu側ではこの接続モード変更できるのですが、windows側のドライバに変える機能はなくdatagramモード固定のようです。
正確にはMellanox版にはなくて標準版のほうにしかないっぽいです。

なのでMTUは上げられません。
残念です…

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です