この記事はネットワーク何もわからない人が書いています(ダニング=クルーガー効果の真ん中ではなく、一番左の位置である)
長年、家庭用のLANは1000BASE-Tのギガビットイーサが主流であった。
しかし、1000BASE-Tは約20年ほど前から普及を始めた規格。当時はPCIバスなどが追い付かずオーバースペックだったのだろうと想像できるが、今となってはSSDどころかHDDより遅い。
ギガビットイーサを越えよう。そう決意した。
10Gbase-Tは、既存のCat6Aのケーブルが使い回せるくらいで、電気は食うわレイテンシは遅いわろくなことはない。
ならSFP+だろう。そう思った。Twitterで10G環境を入れたい。そう呟いた。
オタクにConnectXを勧められた。
しかし相場がわからない。公式ストアを見たあとeBayを見た。10GbEのCollectX-3を見ていたはずが、いつの間にか25GbEのConnectX-4 Lxになっていた。なんとなく半導体的に新しいプロセスであろうものが好きなのと(3系と4以降でドライバが違うので設計が違うのだろうと思った)、NVMeのSSDの速度は10Gbpsを越えるからだ。
こうして、Mellanox ConnectX-4 Lx MCX4121A-ACAT(以下ConnectX-4)を2個購入した。米Amazonで25GbE用のSFP28のDirect Attach Cable(DAC)も買った。
約2週間後、NIC2つとケーブルが届いた。装着したマシンのスペックは以下のとおりである。
メインマシン
- CPU Ryzen9 3900X
- CPU Ryzen9 3900X
- CPU Ryzen9 3900X
- CPU Ryzen9 3900X
録画鯖
- CPU Ryzen9 3900X
- CPU Ryzen9 3900X
- CPU Ryzen9 3900X
- CPU Ryzen9 3900X
メインマシン・録画鯖の両方ともConnectX-4をPCI-Express x16 Gen3のx4動作のスロットに挿入した。メインマシンの方はX570なのでGen4だが、 ConnectX-4がGen3なので、メインマシンと録画鯖の接続速度は変わらない。ConnectX-4自体はPCIe Gen3 x8なので、Gen3 x4動作(データリンク層転送帯域 約31.5Gbps)では帯域が不足しているが、1ポートしか使わないなら25GbEの速度のボトルネックにならないはずである。
Windowsを起動し、最新のドライバをインストールした。その後、以下の記事を参考にファームウエアも最新にした。
・Mellanox connectX-3のファームアップデート手順
メインマシン・録画機の両方とも既存のインターネット接続用のネットワークは192.168.0.4/24と192.168.0.5/24となっている。今回はスイッチを通さず2マシンを直結して使用する計画だ。そのため、メインマシンのIPを192.168.1.4、録画機のIPを192.168.1.5に設定し、2マシンともサブネットは255.255.255.0にした。デフォルトゲートウェイとDNSサーバーは空欄だ。
Windows PowerShellでping 192.168.1.5
と打ってみる。タイムアウトになる。悩んだ。
色々検索をしてroute add
とかいろんなコマンドを試してみた。ダメだった。初日は匙を投げた。
翌日、再びこの問題に挑んだ。pingを打った。タイムアウトだ。
しかしある一つのことに気づいた。Windowsのネットワークアダプタの状態を見ると、pingを打つと送信の値が増える。受信側の状態を見ると、送信と同じバイト数受信していた。これはpingそのものは届いている可能性が高いということか?
Windows Defenderのファイアウォールを無効化してみた。するとpingが通った。1日悩まされた原因は、単にファイアウォールに弾かれていただけだった。
メインマシンと録画鯖はConnectX-4をケーブルで直結している。つまりインターネットには接続されていないし、ローカルネットワークでもない。Windows上での表示は不明なネットワークになっていた。不明なネットワークはWindowsネットワークのパブリックネットワーク扱いされていた。これをプライベートネットワークに変更した。するとpingが通った。
原因は不明なネットワーク判定された直結NICが、パブリックネットワークのファイアウォール規定に引っかかっていただけだった。問題は解決した。
無事にメインマシン・録画鯖の両方が繋がったので、実験用としてメインマシンのNVMe SSDと、録画鯖のNVMe SSDをSMBで共有して繋いだ。fsutil file createnew testfile 107374182400
というコマンドで100GBの空ファイルを生成し、FastCopyというツールでコピーした。
見よ!これが25GbEの力だ!!
実測値24.3Gbps、100GBのファイルのコピーが約35秒で終わる。まさに革命だった。標準から弄った設定はConnectX-4のMTU値を1514から9614に変更したくらいである。14バイトはイーサネットのヘッダのため、実際のデータ部は標準の1500から9600バイトだ。
ジャンボフレームのおかげか、3900XのCPU負荷は6%で済んでいる。(これが2コア2スレッドのCeleronとかだとキツそうだが)
パワーとスピードで大抵の問題は片付く。そう感じた。
ちなみに、FastCopyではなくWindowsのコピー機能だと、SMB Directが使えないWindows 10 Proではジャンボフレーム有効環境でも14Gbps前後しか出ない
コメント