KUSONEKOの見る世界

自宅サーバを2.5GbEにアップグレードしてみた

今年のGWに組んだメインPCは、2.5GbE対応のマザーボードになりましたが、他の機器がまだ1GbEのままでした。

Intel 11世代 Core i5 11600KF でPCを組んでみた

Intel 11世代 Core i5 11600KF でPCをアップグレードしました。購入したパーツの紹介とベンチマークをしました。

折角なので、サーバの方も2.5GbEにしてNASの速度を上げたいと考えていたところ、新しい2.5GbEのNICが発売されるというニュースを見つけました。

このプラネックスのGPE-2500Tは、Realtek RTL8125B が積まれており、既存チップより消費電力を半分に抑えられているそうです。
また、ロープロファイル対応のPCI-Express x 1 接続なので、大抵のPCに接続できるはずです。
そして、価格が4,000円程度でしたので、これはコスパが良いと思い、予約して購入しました。

■環境
CPU:Intel Celeron N3150
メモリ:8GB
CentOS 8.4.2105
Samba 4.14.6

ネットワーク構成

現状は、1GbEのネットワークになっています。

このネットワークのHUBにPCとサーバを接続しても1GbEになるだけです。
そこで、サーバと直接PCを接続し、2.5GbEにすることにしました。

しかし、そうするとPCがインターネットに繋がらなくなってしまうので、サーバの1GbEと2.5GbEをブリッジして、1GbE経由でインターネットに繋がるようにしました。

図にすると以下のようになります。

ネットワーク構成

GPE-2500Tの開封

届いた商品は、コンパクトな箱でした。

GPE-2500T 箱

中身は、本体、ロープロファイルブラケット、説明書兼保証書です。

GPE-2500T 付属品

セットアップ

自宅サーバに取り付け

我が家の自宅サーバは、Mini-ITXで、PCI Express 2.0 x 4形状の x 1動作です。

自宅サーバ空きスロット

ここに、ロープロファイル用ブランケットに付け替えたGPE-2500Tを取り付けます。

自宅サーバにGPE-2500Tを取り付け

GPE-2500Tの認識確認

サーバを起動させ、GPE-2500Tが認識をしているか確認します。

# dmesg
(略)
[    5.093358] r8169 0000:01:00.0 eth0: RTL8125B, 88:c9:b3:**:**:**:, XID 641, IRQ 118
[    5.093361] r8169 0000:01:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
(略)
[    5.250203] r8169 0000:01:00.0 enp1s0: renamed from eth0
# lspcli
(略)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 04)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15) 

インターフェース名は、enp1s0になりました。
自動で認識され、r8169のドライバが当たっています。

# ethtool -i enp1s0
driver: r8169
version: 4.18.0-305.10.2.el8_4.x86_64
firmware-version: rtl8125b-2_0.0.2 07/13/20
expansion-rom-version: 
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

このドライバのままで測定をしていきます。

GPE-2500Tをブリッジに追加

元々、KVMの時にブリッジを作成していたので、そこに追加させるだけです。

# nmcli connection add type bridge-slave autoconnect yes con-name enp1s0 ifname enp1s0 master br0

新規にブリッジを作成して、NICを追加させる手順はこちら。

CentOS 8 KVM上にWindows10をインストールしてみた

CentOS 8 のKVMでWindows10をインストールしてみました。ドライバにはvirtioを使用しました。

2.5GBASE-Tの実力

1GbEの時と、2.5GbEにした後で、どのくらいの差があるかを検証しました。

iPerf速度測定

PCと自宅サーバ間をiPerf3で測定をしました。
以下の結果は、PCのコマンドプロンプトの結果を載せています。

1GbE

>iperf3.exe -c 192.168.0.250
Connecting to host 192.168.0.250, port 5201
[  4] local 192.168.0.2 port 64349 connected to 192.168.0.250 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   109 MBytes   915 Mbits/sec
[  4]   1.00-2.00   sec   111 MBytes   930 Mbits/sec
[  4]   2.00-3.00   sec   113 MBytes   948 Mbits/sec
[  4]   3.00-4.00   sec   106 MBytes   888 Mbits/sec
[  4]   4.00-5.00   sec   109 MBytes   917 Mbits/sec
[  4]   5.00-6.00   sec   106 MBytes   892 Mbits/sec
[  4]   6.00-7.00   sec   110 MBytes   920 Mbits/sec
[  4]   7.00-8.00   sec   111 MBytes   931 Mbits/sec
[  4]   8.00-9.00   sec   110 MBytes   926 Mbits/sec
[  4]   9.00-10.00  sec   113 MBytes   949 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  1.07 GBytes   922 Mbits/sec                  sender
[  4]   0.00-10.00  sec  1.07 GBytes   922 Mbits/sec                  receiver

2.5GbE

>iperf3.exe -c 192.168.0.250
Connecting to host 192.168.0.250, port 5201
[  4] local 192.168.0.2 port 60905 connected to 192.168.0.250 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   276 MBytes  2.32 Gbits/sec
[  4]   1.00-2.00   sec   283 MBytes  2.37 Gbits/sec
[  4]   2.00-3.00   sec   264 MBytes  2.22 Gbits/sec
[  4]   3.00-4.00   sec   261 MBytes  2.19 Gbits/sec
[  4]   4.00-5.00   sec   262 MBytes  2.20 Gbits/sec
[  4]   5.00-6.00   sec   275 MBytes  2.31 Gbits/sec
[  4]   6.00-7.00   sec   275 MBytes  2.30 Gbits/sec
[  4]   7.00-8.00   sec   273 MBytes  2.29 Gbits/sec
[  4]   8.00-9.00   sec   267 MBytes  2.24 Gbits/sec
[  4]   9.00-10.00  sec   272 MBytes  2.28 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  2.64 GBytes  2.27 Gbits/sec                  sender
[  4]   0.00-10.00  sec  2.64 GBytes  2.27 Gbits/sec                  receiver

期待通りの速度が出ており、2.46倍の速度になりました。

NAS速度測定(Windowsエクスプローラー)

PCとサーバ(Samba)間で、1GBのファイルをアップロード・ダウンロードをしてみました。

1GbE

サーバ→PC

ネットワークドライブへ1GbEでアップロード

PC→サーバ

ネットワークドライブへ1GbEでダウンロード

2.5GbE

サーバ→PC

ネットワークドライブへ2.5GbEでアップロード

PC→サーバ

ネットワークドライブへ2.5GbEでダウンロード

2.5GbEにすることで、サーバのハードディスクの性能を引き出せるようになりました。
サーバ→PCの方が遅くなっているので、サーバのハードディスクの読み込みがボトルネックになっているようです。

NAS速度測定(CrystalDiskMark)

CrystalDiskMarkでも測定してみました。Z:はネットワークドライブです。

1GbE

ネットワークドライブに対して、1GbEでCrystalDiskMark

2.5GbE

ネットワークドライブに対して、2.5GbEでCrystalDiskMark

こちらでも、2.5GbEの効果が見られます。
ハードディスク単体でベンチマークした時より、なぜか結果が良くなっています。
サーバOSやSambaのキャッシュか何かが効いているのでしょうか?

ちなみに、使用しているハードディスクとベンチマーク結果はこちらです。

東芝 HDD MG06ACA800E 購入 [8TB 7200rpm]

東芝 HDD MG06ACA800Eを購入した理由を記載しました。

サーバのブリッジ遅延

サーバのブリッジを経由すると、遅延が発生するのではないかという懸念があったため、インターネットで遅延が発生しないか確認をしました。

Google速度測定とfast.comで実施しましたが、実施する度に結果がころころ変わりました。
遅延で見ると誤差レベルで、特に問題は無さそうです。

1GbE(ルータ直接続)

ルータ直接続でGoogle速度測定
ルータ直接続でfast.com

2.5GbE(自宅サーバブリッジ経由)

自宅サーバブリッジ経由でGoogle速度測定
自宅サーバブリッジ経由でfast.com

最後に

4,000円程度で、PC-サーバ間を2.5GbEに強化することができました。

今回の構成にすれば、まだ少し高い2.5GbEハブを購入せずとも、2.5GbEの世界を体験することができます。
他の方法として、PCに無線LANが付いていれば、サーバをブリッジにせずとも、無線LANでインターネット、有線LANでサーバ接続という構成もできます。

サーバやPCに空きスロットさえあれば、気軽に2.5GbEにできるので、検討してみてはいかがでしょうか。

スロットに空きが無い場合は、USB接続でも良いかもしれません。

ちなみに、Planexからは2.5GbEハブが出ています。

私は、最低2ポート 2.5GbE対応のWi-Fi6 無線LANルータが発売されるまで待ちたいと思います。

いつになるやら…。

追記

これを買ってみました。

10GbE 2ポート搭載 Wi-Fi 6 無線LANルータ WN-DAX3600XR を買ってみた

10GbE 2ポートとWi-Fi 6を備えた I-O DATA WN-DAX3600XRを購入しました。初期設定、有線・無線LANの速度測定や問題点・ハマりポイントを記載しました。

公式ドライバーの適用方法

公式ドライバを当てずとも認識し、2.5GbEで動作していたため、そのままテストをしましたが、公式ドライバの当て方も記載しておきます。

コンパイルに必要なソフトウェア

# dnf install kernel-devel elfutils*

ドライバーのダウンロード

PLANEXのサイトからLinux用ドライバをダウンロードします。
https://www.planex.co.jp/support/download/gpe-2500t/driver_inux.shtml

ちなみに、REALTEKのサイトと同一バージョンでした。
https://www.realtek.com/ja/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software

ダウンロードしたZip内の『r8125-9.005.06.tar.bz2』をサーバに転送します。

ドライバーのインストール

サーバのシェルから以下の操作をします。

# tar vjxf r8125-9.005.06.tar.bz2
# cd r8125-9.005.06
# make

以下のような、エラーが出る場合は、ソースを編集します。

make[2]: ディレクトリ '/usr/src/kernels/4.18.0-305.10.2.el8_4.x86_64' に入ります
  CC [M]  /root/r8125-9.005.06/src/r8125_n.o
/root/r8125-9.005.06/src/r8125_n.c:62:10: 致命的エラー: linux/pci-aspm.h: そのようなファイルやディレクトリはありません
 #include <linux/pci-aspm.h>
          ^~~~~~~~~~~~~~~~~~
コンパイルを停止しました。

make[2]: ディレクトリ '/usr/src/kernels/4.18.0-305.10.2.el8_4.x86_64' に入ります
  CC [M]  /root/r8125-9.005.06/src/r8125_n.o
/root/r8125-9.005.06/src/r8125_n.c:11572:31: エラー: initialization of ‘void (*)(struct net_device *, unsigned int)’ from incompatible pointer type ‘void (*)(struct net_device *)’ [-Werror=incompatible-pointer-types]
         .ndo_tx_timeout     = rtl8125_tx_timeout,
                               ^~~~~~~~~~~~~~~~~~
/root/r8125-9.005.06/src/r8125_n.c:11572:31: 備考: (‘rtl8125_netdev_ops.\xe7\x84\xa1\xe5\x90\x8d>.ndo_tx_timeout’ 用の初期化付近)
cc1: some warnings being treated as errors
# vi src/r8125_n.c

61行目
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0)
↓
#if LINUX_VERSION_CODE < KERNEL_VERSION(4,18,0)

313行目
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
↓
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0)

13384行目
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
↓
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0)

編集後、再度makeで問題なければ、autorun.shを実行します。

# make
# ./autorun.sh

Check old driver and unload it.
rmmod r8169
Build the module and install
At main.c:160:
- SSL error:02001002:system library:fopen:No such file or directory: crypto/bio/bss_file.c:69
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: crypto/bio/bss_file.c:76
sign-file: certs/signing_key.pem: No such file or directory
DEPMOD 4.18.0-305.10.2.el8_4.x86_64
load module r8125
Completed.
# ethtool -i enp1s0
driver: r8125
version: 9.005.06-NAPI
firmware-version:
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no