快適10GbE環境に向けて -NIC編-
前回に引き続き宅内LANを10GbE化するお話です。10GbE対応スイッチを買ったのでメインPC(Windows10)とスイッチを10Gで通信するためのNICを買いました。
10GbEで通信可能なNICで現在入手できそうなのは主に2通りあります。一つは RJ-45 (よく用いられるのLANの口)のもの、もう一つはSFP+という端子のものです。
RJ-45のNICは新品でも安く手に入ります。AmazonでASUSのが1万円ちょっとだったり。既存のLANケーブルもCategoly 6以上であれば流用することができます。
SFP+はそれ自体に直接伝送線路がつながるわけではなく、SFPトランシーバを挟んでLANケーブル(メタル線)や光ファイバーを接続します。つまりトランシーバによって好きな伝送線路を選べます。しかしメタル線で10GbEの通信ができるトランシーバ(規格でいうと10GBASE-T)は発熱がものすごいらしいです。x510の取扱説明書にもそれを使用する際には「上下左右に隣接するSFP+ポートを空きスロットにしてください」と書かれています。今現在x510はファンの回転数を結構落として(Duty:0.2くらい)運用しているのでできるだけ避けたいですね。
というわけで今回は折角なので光ファイバーで通信がしたく、SFP+のNICを探し回りました。いやまあなんだかんだ言って光ファイバーで通信している様を眺めたいだけなんです。NICを選ぶときの注意点として、IntelとHP社の製品はベンダーロックインがかけられていることが多く、その会社が公式にサポートしているトランシーバしか使えません。そのため今回はトランシーバ付属のものを狙い以下の2つを購入しました。
調達した10GbE 対応NIC
NIC1:HP NC550SFP
SFP+ポートが2つもついているHPのNC550SFPです。こちらはトランシーバ(SFP+ポートから光ファイバへの変換機のようなもの)2つ込みで4000円ほどでした。もちろん中古品です。ものとしてはEmulex(現BROADCOM)のOEMと思われます。HP社のサーバ向けNICです。
結論から言うとwindows10でも10Gでリンクアップすることはできましたが常用することはできませんでした。ドライバはWindows server2012のものが存在しており、これをWindows10に適用することでNICが扱えるようになります。もちろん落としてきたドライバのインストーラをそのまま叩いて入れようとしてもサポート対象外のOSなので弾かれますが、解凍してデバイスマネージャから手動で入れることで使えるようになります。またアプリケーションとしてBROADCOMのOneCommand Manager が利用できます。しかし最新版(ver 12系)では認識されず、わざわざ古いver 6 ぐらいのものを探してきて入れてようやくアプリケーション上でNICが見えるようになりました。
さて常用するにあたって問題なのは(S3)スリープからの復帰から数秒後にブルースクリーンが出て落ちることです。停止コードは「DRIVER_POWER_STATE_FAILURE」でした。もともとサーバ向け製品なのでスリープと言った状態を想定していなのでしょう。またこのNICはやたらと高度(?)な作りをしているようで、PCのBIOS POST後にNICのBIOS POST(?)が走ったりします。よってスリープ中にPCIeからの電源供給が絶たれるとまずいような感じがします。この現象には2週間くらい頭を悩ませ、最新のFirmwareにアップデートしたり電源の設定をいじったりしましたがダメでした。これは将来サーバ立てたとき用に取っておきましょう。
NIC2:Sun ORACLE 7051223
こちらもSFP+が2つ搭載されたOracleのNICです。左上にロゴがあるように、IntelのOEMかと思います(X520-DA2?)。お値段はトランシーバ2つついてて4000円ほどでした。
こちらのNICはなんの苦労もなくPCIeスロットに挿して起動するだけで認識し、OSが勝手にドライバを入れてくれました。安定と信頼のIntel製です( ぼくのPCのCPUはAMDですが…)。もちろんスリープからの復帰でも落ちることもなく、BIOS POST後に妙なNICの起動画面が割り込まれることもありませんでした。めでたしめでたし。
ちなみに写真から分かる通りこちらのNICはロープロのサイズです。「まあブラケット取って使えばいいか」と思ってましたがふとAliで検索かけたらフルハイトのブラケットがあったので買いました。微妙にネジ穴とSFP+の口の高さが合わず斜めになってる気がしますが特に問題はなく使えました。
光ファイバーの調達
伝送線路の光ファイバーを調達します。光通信と言っても複数の規格があり、それにあった光ファイバーを買う必要があります。今回入手したNIC付属のトランシーバは短距離で10G通信する10GBASE-SRと呼ばれる規格で、使用する光ファイバーはマルチモードのものになります。
シングルモードとマルチモード
こちらのサイトの記事がわかりやすいかなと思いました。
かんたんに説明すると、シングルモードは光ファイバ中に単一空間モードの信号しか流さない分、長距離(数100kmレンジ)の通信が可能な仕組みになります。これに対してマルチモードは光ファイバ中に複数の空間モードで信号をパラレルに流す仕組みです。長距離になると光ファイバ内で伝搬する経路差が大きくなっていくので短距離(~300mとか)での利用しかできないそうです。
今回のような逸般の誤家庭で使うようなものはだいたいマルチモードかと思います。光ファイバーは高いものかと思ったら意外とそうでもなく、amazonで出てきた10GTekという中華メーカのもの(約1000円/3m)を買いました。特に品質に問題はなく利用できています。
使うにあたって特に注意点とかはないのですが、光ファイバーですのでLANケーブルみたいに束ねたり急な角度で曲げたりするとだめになってしまうと思います。ぼくはLANケーブルでもそんなことはしませんが、以前家族がONUをみて「ケーブル汚い!整線したろ!」という出来事があったので気をつけてます。
10Gの帯域で遊ぶ
10Gスイッチのx510、10G NIC、光ファイバーと役者が揃ったのでとりあえず10Gでリンクアップしている様子を確認しましょう。
10Gbpsでリンクアップしていることがわかります。パソコンから謎に光ファイバが伸びている様子を眺めているだけでも楽しいですね(?)。
さてこの帯域をどうやったら使い切れるのでしょうか?とりあえずPCをもう一台用意してHPのNICを挿し、WLS上のLinuxからiperfコマンドを実行してみました。ネットワーク構成は下図のとおりです。
愚直にTCPで叩くとあんまり帯域を使いません。パケットレングスを2000Mとかにしてみると1.56Gbit/sと出ますがそれ以上の値を指定するとiperf側でエラーが発生し実行できないようです。
うーんもっと帯域を消費してほしい。というわけでUDPで試してみます。単一セッションだと、-bオプションの帯域幅の指定で50Mくらいが限界っぽかったのでそこから-Pオプションで並列数を増やしました。10GbEなので理論上50M ✕ 200パラレルまで行けそうなので下記コマンドを実行してみました。
iperf -c 192.168.0.118 -u -b 50M -t 10 -i 10 -P 200
結果、単一セッションでは20~24Mbits/sを消費し、全体的には5Gbits/s位を観測しました。
その後サーバ側のログには大量の「WARNING: did not receive ack of last datagram after 10 tries.」というWarnignが残っていました。UDPなのにackあるんでしょうか?はじめだけTCPで送ってるとか…?
このあと帯域幅やパラレル数をいじったりしていましたが、この環境では5.5Gbpsが限度みたいです。Linux入れて直にiperf叩けたらもう少し上がったりするのでしょうか?Windowsでも10G使い切れそうなネットワークベンチ取る方法がありましたらぜひ教えて下さい。お待ちしております。
総括
とりあえずタスクマネージャで通信速度が「5.5Gbps」などと表示されている様を眺めることができて満足しました。誤家庭内LANで10G引けても単一セッションで使い切ることはまず難しいとわかりました。それこそサーバのように一度に複数のリクエストに答えるようなところでないとあまりその効果を発揮できないでしょう。1GbEが長らく使われている理由はそれ故なのかなと思います。
とりあえず残すは10Gのインターネットを引くことになりますが、それを達成するには引っ越しから始める必要があるので長い目で考えたいと思います。あ、SFP+ポートのあるNASとSSD大量に買ってRAID組んでみたりとかもしたいです。
余談
購入当初PCのPCIeスロットに空きはあるもののGPUが無駄に分厚く2.5スロ専有されていたためNICを取り付けられませんでした。なのでGPUも買い替えました。SWとNIC合わせてもGPUほうが高く付きました。゚(゚∩’▽’∩゚)゚。
続き -> 快適10GbE環境に向けて -NAS編-
初めまして、オーツルという者です。
いやぁ10Gネットワークっていいものですよね・・・。
私も去年の中頃(恐らくこの記事掲載時期)ぐらいから「RJ45で10G環境揃えるならSFPのほうが安くていいじゃん」
とRJ45の10Gスイッチの価格から導入を悩んでいた事から解放されて様々の資材を漁るようになりまして、
現在EmulexとBroadcomとQlogicのNICを手に入れて色々やっております。
そんなこんなで10Gネットワークを組まれてる方の記事をよく拝見しておりまして、いつもありがとうございます。
私も今10Gbpsを使用して色々試そうとしておりまして、ESXiとFreeNAS上で冗長化と高速化の最適解を模索しております。
楽しそうな結果になりましたら是非ご報告させてください。
>オーツルさん
コメントありがとうございます。
最近は10GbEネットワーク対応機器も増えてきて転換期のようですね。
同じ趣味を持つ方も多く見かけて嬉しい限りです。
わたしの方も、既製品になりますがSFP+対応のNASに買い換えようと選定を行っているところです。
導入とセットアップができましたら新しく記事を書くので楽しみにしていてください!
iperf は -P オプションで並列度を上げたり、-w オプションでTCPウィンドウサイズを変えると帯域を出せるようですね
macchkyさん
TCPウィンドウサイズを変更するオプションの方は当時設定してテストしていなかったような気がしますので、試して見る価値はありそうです。新しい情報ありがとうございます。