格安10GBASE-Tでファイルサーバと直結してみた（１）

#10GBASE-Tを試してみる
##10GBASE-T対応NIC
10GBASE-T対応のNICが安くなってきました。LR-LINK(Shenzhen Lianrui Electronics)のLREC6860BTは、Amazonで￥9,140（2018年8月27日現在）と1万円を割ってきています。一方、10GBASE-T対応のネットワークスイッチも4ポートで4万円台（価格コム調べ）の製品が出てきています。
![LR-LINK_LREC6860BT.jpg](https://qiita-image-store.s3.amazonaws.com/0/276550/72fc66b0-e861-02d1-b2b3-d82ca1a03c3a.jpeg)
NETGEARで2万円のスイッチもありますが、2ポートなので、だったらMDI-Xでカテゴリ6Aのケーブルで直結するのと変わりないな、と思い、10GBASE-TでPCとファイルサーバを直結し、一番格安で10GBASE-Tを試してみました。
##10GBASE-T対応LANケーブル
LANケーブルは、10GBASE-Tに対応したカテゴリ6Aのものにしました。エレコムの1mのLD-GPAYC/BU1 がAmazonで￥589（2018年8月27日現在）で安かったので選択。
![LD-GPAYCBU1_02.jpg](https://qiita-image-store.s3.amazonaws.com/0/276550/2086b26b-20b6-9e2c-1514-aafe9ab7332d.jpeg)
##Windows7のPCに10GBASE-T NICをセットアップ
LR-LINK LREC6860BT はPCI-Ex4なので、Windows7のPCの空いてるPCI-E x16のスロットに装着しました。
Windows7を起動して、デバイスマネージャーで見ると、不明なネットワークアダプタが表示されています。NICの製品パッケージにも小さいCD－ROMでドライバーファイルが付属していますが、ドライバは最新版にした方がいいので、LR-LINKのWebページからWindows用のドライバーをダウンロードしてきました。
- LR-LINK Driver Download
[http://www.lr-link.com/support/driver.html](http://www.lr-link.com/support/driver.html)
圧縮ファイルをローカル解凍して、デバイスマネージャーの不明なネットワークアダプタのプロパティを開いて、ドライバの更新で、先ほど解凍したディレクトリを指定するだけです。
![10GBASE-T_driver.JPG](https://qiita-image-store.s3.amazonaws.com/0/276550/8dee6817-4a43-5c20-49a6-217de440c205.jpeg)
上記のように、正常にネットワークアダプターが認識されて、表示は「TN9710P 10GBase-T/NBASE-T Ethernet Adapter」と変わりました。この状態で1000BASE-Tのギガネット・イーサネットスイッチの空きポートと接続したところ、1000BASE-Tでリンクアップできました。
##Linuxサーバに10GBASE-T NICをセットアップ
次にSAMBAでファイルサーバにしているLinux PCに、同じようにPCI-E x16のスロットにLR-LINK LREC6860BTを装着します。
一応サーバスペックは、

####サーバ・スペック
- CPU: AMD PhenomII X4 955 3.2GHz(4core/TDP95W)
- M/B: ASRock 880G Pro3(SocketAM3+/880G+SB850)
- RAM: DDR3 32GB(8GBx4)  ● HDD: RAID-1(6TB 5400rpm HDDx2)
- OS: CentOS 6.10(64bit)

という7年も前にリリースされたものです。LR-LINK LREC6860BTを装着して起動させてもdmesgに何も出てこないので、ドライバーのインストールが必要です。先ほどのLR-LINK LREC6860BTのダウンロードページからLinux用ドライバの圧縮ファイルを持ってきて解凍するとReadmeに、make all; make install しろと書いてあります。

```
# make all
Makefile:99: *** Aborting the build: Linux kernel /lib/modules/2.6.32-754.2.1.el6.x86_64/build source not found.  Stop.
```
あ、カーネルソースがいるんですね。では、気を取り直して

```
yum install kernel-devel
```
リンク貼り直したりしましたが、make通りました。

```
# make all
make -C /lib/modules/2.6.32-754.2.1.el6.x86_64/build M=/root/tn40xx-0.3.6.14 clean
make[1]: Entering directory `/usr/src/kernels/2.6.32-754.3.5.el6.x86_64'
make[1]: Leaving directory `/usr/src/kernels/2.6.32-754.3.5.el6.x86_64'
Building kernel 2.6.32-754.2.1.el6.x86_64 resume supported
make -C /lib/modules/2.6.32-754.2.1.el6.x86_64/build M=/root/tn40xx-0.3.6.14 modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-754.3.5.el6.x86_64'
  CC [M]  /root/tn40xx-0.3.6.14/tn40.o
  CC [M]  /root/tn40xx-0.3.6.14/CX4.o
  CC [M]  /root/tn40xx-0.3.6.14/CX4_Linux.o
  CC [M]  /root/tn40xx-0.3.6.14/MV88X3120_phy.o
  CC [M]  /root/tn40xx-0.3.6.14/MV88X3120_phy_Linux.o
  CC [M]  /root/tn40xx-0.3.6.14/MV88X3310_phy.o
  CC [M]  /root/tn40xx-0.3.6.14/MV88X3310_phy_Linux.o
  CC [M]  /root/tn40xx-0.3.6.14/QT2025_phy.o
  CC [M]  /root/tn40xx-0.3.6.14/QT2025_phy_Linux.o
  CC [M]  /root/tn40xx-0.3.6.14/TLK10232_phy.o
  CC [M]  /root/tn40xx-0.3.6.14/TLK10232_phy_Linux.o
  CC [M]  /root/tn40xx-0.3.6.14/AQR105_phy.o
  CC [M]  /root/tn40xx-0.3.6.14/AQR105_phy_Linux.o
  LD [M]  /root/tn40xx-0.3.6.14/tn40xx.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/tn40xx-0.3.6.14/tn40xx.mod.o
  LD [M]  /root/tn40xx-0.3.6.14/tn40xx.ko.unsigned
  NO SIGN [M] /root/tn40xx-0.3.6.14/tn40xx.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.32-754.3.5.el6.x86_64'
```
続いて、make installを実行

```
# make install
install -d /lib/modules/2.6.32-754.2.1.el6.x86_64/kernel/drivers/net
install -m 644 tn40xx.ko /lib/modules/2.6.32-754.2.1.el6.x86_64/kernel/drivers/net
depmod 2.6.32-754.2.1.el6.x86_64
```
modprobeで読み込みます。

```
modprobe tn40xx
```
dmesgで認識されたことを確認。

```
tn40xx: Tehuti Network Driver, 0.3.6.14
tn40xx: Supported phys : MV88X3120 MV88X3310 MV88E2010 QT2025 TLK10232 AQR105
tn40xx 0000:02:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
tn40xx 0000:02:00.0: setting latency timer to 64
tn40xx: srom 0x0 HWver 16 build 0 lane# 4 max_pl 0x0 mrrs 0x2
tn40xx 0000:02:00.0: irq 32 for MSI/MSI-X
tn40xx: PHY detected on port 0 ID=2B09AB - MV88X3310 (A1) 10Gbps 10GBase-T
tn40xx: MV88X3310 firmware code is running
tn40xx: MV88X3310 FW version is 0.2.4.0
tn40xx: fw 0xe
tn40xx: eth3, Port A
tn40xx: 1 1fc9:4027:1fc9:3015
tn40xx: detected 1 cards, 1 loaded
```
udevでMACアドレスを確認

```
/etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x1fc9:0x4027 (tn40xx)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="**************", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
```
ifcfg-eth3を作成して、ifupしたところ無事立ち上がりました。先にセットアップしたWindows7のPCとCAT6Aケーブルを直結して、ping打って届きました。（パチパチ）
##ギガNICと10G NICでベンチマーク
Windows7のPCからファイルサーバをマウントして、Crystal BenchmarkでGigabit Ethernet経由と10G直結でベンチマークを測定してみました。

|GbE経由|10G経由|
|---|---|
|![CD-M64-P-20180827-1.JPG](https://qiita-image-store.s3.amazonaws.com/0/276550/8a818d3c-c7ef-4bd8-901e-5e650660f417.jpeg)|![CD-M64-U-20180827-2.JPG](https://qiita-image-store.s3.amazonaws.com/0/276550/9fabead9-5ba3-8d70-e0cc-977a83218963.jpeg)|

シーケンシャルライトが2倍以上になってるけど、シーケンシャルリードはほとんど変わらない！ランダム・アクセスは良くなってるようです。

せっかく10Gにしたのに、これじゃ納得できないですよね。今週末には、サーバのストレージをSSDにして、ジャンボフレームを導入して再測定してみようと思います。

こちらが続編
[■格安10GBASE-Tでファイルサーバと直結してみた（２）](https://qiita.com/nabe2030/items/c8501c7fa176b47e4763 "格安10GBASE-Tでファイルサーバと直結してみた（２）")