「6 万円で 1L サイズ 6 コア 10G x2 サーバを組む方法」の版間の差分
60行目: | 60行目: | ||
|Lenovo | |Lenovo | ||
|01AJ940 | |01AJ940 | ||
|PCIe ライザーカード | |PCIe x16 ライザーカード | ||
|eBay | |eBay | ||
|\6,109 | |\6,109 | ||
66行目: | 66行目: | ||
|Superbuy のほうが安かった | |Superbuy のほうが安かった | ||
2.5 HDD スペースは犠牲になる | 2.5 HDD スペースは犠牲になる | ||
他に PCIe x8 のものが存在する | |||
(M720q 側は x8 なので、どちらでも良い) | |||
|- | |- | ||
|オプション | |オプション | ||
129行目: | 133行目: | ||
=== 筐体全面・背面 === | === 筐体全面・背面 === | ||
[[ファイル:M720q-01.jpg|なし|サムネイル|M720q 前面パネル]] | |||
[[ファイル:M720q-02.jpg|なし|サムネイル|M720q 背面パネル (デフォルト)]] | |||
右上の RGB コネクタの部分を PCIe に変更できます。 | |||
[[ファイル:M720q-03.jpg|なし|サムネイル|M720q 下部 M.2・メモリスロット]] | |||
この世代から背面に M.2 とメモリスロットが移動したので、交換がやりやすいです。 | |||
[[ファイル:M720q-04.jpg|なし|サムネイル|M720q 内部]] | |||
左に CPU ファン、右に 2.5 HDD ベイがあり、HDD ベイを PCIe に変更します。 | |||
小さい部品が PCIe ライザーカード。一番右のカードはテストで使った Mellanox 40G NIC. | |||
[[ファイル:M720q-05.jpg|なし|サムネイル|M720q 10G NIC 搭載]] | |||
PCIe ライザーカードを使って、Intel X520-DA2 10G NIC を搭載したところ。 | |||
ブラケットは NIC のまま。 | |||
[[ファイル:M720q-06.jpg|なし|サムネイル|M720q PCIe i350-T4 用ブラケット]] | |||
NIC の LP ブラケットを、こいつに変更。 | |||
[[ファイル:M720q-07.jpg|なし|サムネイル|M720q PCIe i350-T4 用ブラケット搭載後]] | |||
i350-T4 用のため完全には合わない (隙間がある) けど、やらないよりは良い感じに。 | |||
== Trex テスト結果 == | |||
ESXi7 に CentOS 7 VM を構築して 10G NIC を PCI パススルー、Trex v2.87 をインストールして、 | |||
10G ポート直結でトラフィックを印加してみました。 | |||
=== Mellanox-X4 40G NIC === | |||
{| class="wikitable" | |||
|+Mellanox 40G NIC 結果概要 | |||
!Mellanox-X4 40G NIC | |||
! colspan="5" |Gbps | |||
|- | |||
! | |||
!合計帯域幅 | |||
!Port1 Tx | |||
!Port1 Rx | |||
!Port2 Tx | |||
!Port2 Rx | |||
|- | |||
|01 1500Bytes 単方向 40G | |||
|50.8 | |||
|25.4 | |||
|0 | |||
|0 | |||
|25.4 | |||
|- | |||
|02 9000Bytes 双方向 40G | |||
|53.8 | |||
|13.7 | |||
|13.7 | |||
|13.8 | |||
|13.8 | |||
|} | |||
==== 01 1500Bytes 単方向 40G ==== | |||
[[ファイル:20220313 Trex 40G 01 Unidirectional.png|なし|サムネイル|800x800ピクセル|Trex 40G 単方向 印加]] | |||
MTU 1500Bytes 単方向だと 25Gbps 出た。実際には Rx 25Gbps もあるため、 | |||
受信を含めた帯域幅は合計 50Gbps となる。 | |||
[[ファイル:20220313 Trex 40G 02 9000 bidirectional.png|なし|サムネイル|800x800ピクセル|Trex 40G 9000 Bytes 双方向 印加]] | |||
MTU 9000 で 2Mpps -> 380Kpps に落としているが、13.7Gbps 双方向 x2 で 54.8Gbps とあまり変わっておらず、 | |||
pps よりも帯域幅によって限界スループットになる模様。 | |||
CPU 使用率は 100% になっていない + PCIe x8 はおおよそ双方向 128Gbps , 単方向 64Gbps <ref>転送速度<nowiki/>https://ja.wikipedia.org/wiki/PCI_Express#%E8%BB%A2%E9%80%81%E9%80%9F%E5%BA%A6</ref>のため、 | |||
128 / 2 / 2 = 32Gbps 双方向 x2 が限界スループットの理論値になるはずだが・・・ | |||
発熱も 10G NIC と比べて大きいと考えられるため、40G NIC の搭載は諦めました。 | |||
=== Intel X520-DA2 === | |||
{| class="wikitable" | |||
|+Intel 10G NIC 結果概要 | |||
!Intel 10G NIC | |||
! colspan="5" |Gbps | |||
|- | |||
! | |||
!合計帯域幅 | |||
!Port1 Tx | |||
!Port1 Rx | |||
!Port2 Tx | |||
!Port2 Rx | |||
|- | |||
|01 64Bytes 双方向 10G | |||
|40 | |||
|10 | |||
|10 | |||
|10 | |||
|10 | |||
|} | |||
[[ファイル:20220313 Trex 10G 01 64Bytes bidirectional.png|なし|サムネイル|800x800ピクセル|Trex 10G 64 Bytes 双方向]] | |||
64 Bytes ショートパケットを双方向で印加。 | |||
L1 でヘッダも含めて 10G , L2 でヘッダオーバーヘッドを排除したペイロードで 7.63Gbps | |||
14.88Mpps の 10G ワイヤレートを双方向で確認できました。 | |||
=== 結果概要 === | |||
IXIA などのように高精度のクロックジェネレータは無いため、 | |||
Trex では厳密な間隔でイーサネット フレームを送信することができません。 | |||
厳密なパケットドロップ数を計測する用途には向かないですが、以下の用途に使用できます。 | |||
* QoS を確認する際の、非優先トラフィックの印加 | |||
* 10G スループット測定 | |||
== VyOS スループットテスト == | |||
VyOS 1.4 を VM としてインストール、10G ポートを接続し、 | |||
トラフィックを印加してスループットを測定してみました。 | |||
{| class="wikitable" | |||
|+結果概要 | |||
! | |||
!vSwitch | |||
! | |||
|- | |||
|01 1500Bytes 5Gbps 双方向 1Core | |||
|4.3Gbps 双方向 | |||
| | |||
|- | |||
|02 1500Bytes 10G 双方向 4Core | |||
|7.3Gbps 双方向 | |||
| | |||
|- | |||
|03 1500Bytes 10G 双方向 6Core | |||
|7.3Gbps 双方向 | |||
| | |||
|} | |||
=== vSwitch 経由 === | |||
==== 01 1500Bytes 5Gbps 双方向 1Core ==== | |||
[[ファイル:20220313 VyOS 01 5G 1500Bytes 1Core.png|なし|サムネイル|800x800ピクセル|VyOS_01_5G_1500Bytes_1Core]] | |||
手始めに 5Gbps 1500Bytes で双方向に印加。 | |||
1Core しか割り当てていないですが、4.3Gbps 双方向と結構速い。 | |||
==== 02 1500Bytes 10G 双方向 4Core ==== | |||
[[ファイル:20220313 VyOS 02 5Gbps 1500Bytes 4Core.png|なし|サムネイル|800x800ピクセル|VyOS_02_10Gbps_1500Bytes_4Core]] | |||
1500Bytes 10G 双方向印加。7.3Gbps 双方向出てます。 | |||
==== 03 1500Bytes 10G 双方向 6Core ==== | |||
[[ファイル:20220313 VyOS 03 1500Bytes 10G 6Core.png|なし|サムネイル|800x800ピクセル|VyOS_03_1500Bytes_10G_6Core]] | |||
1500Bytes 10G 双方向印加。7.0 - 7.7Gbps 平均 7.37Gbps 双方向出ましたが、 | |||
スループット面で 4 -> 6 にコア数を増やす意味はないですね。 |
2022年3月13日 (日) 10:55時点における版
10G NIC は未だ PC に標準搭載となっておらず、比較的大きいシャーシに PCIe NIC を積む必要がありました。
FTTH で 10G が家庭用に出てきている現在、これでは検証ができません。
これをコンパクトかつ低コストに組み、ついでに 10G x2 のトラフィックジェネレータをインストールします。
目的とできること
10G NIC で高速な通信が可能
- Synology NAS に ESXi VM のバックアップを高速に取得
ESXi をインストールして多用途に使えるようにする
- EVE-NG で NW OS の検証
- Cisco Trex を VM としてインストールし、10G x2 のトラフィックジェネレータを構築
コンパクトな PC に構築することで、ハンドキャリーできるサーバを作る
- トラフィックジェネレータで 10G 速度測定
- EVE-NG と実機を接続して検証
ソフトウェアルータをインストールすることで、CLI を持つ 10G 対応ルータを安価に作る
- スループットを検証したい候補を、雑にリストアップ
- SEIL/x86
- VyOS
ハードウェア構成
以下は実際の購入品。メモリと NVMe のグレードを下げると、もっとお安くなります。
メーカー | 型式 | 内容 | 入手先 | 価格 | 数量 | 備考 | |
---|---|---|---|---|---|---|---|
本体 | Lenovo | M720q Tiny | Core i5-8400T 6C6T
8GB メモリ HDD なし AC アダプタなし |
ヤフオク | \22,660 | 1 | Trex を使いたい場合は、VT-d 対応を選ぶこと
M720q , M920q 以降に PCIe が存在する |
オプション | Lenovo | 01AJ940 | PCIe x16 ライザーカード | eBay | \6,109 | 1 | Superbuy のほうが安かった
2.5 HDD スペースは犠牲になる 他に PCIe x8 のものが存在する (M720q 側は x8 なので、どちらでも良い) |
オプション | Lenovo | 5M10U50350 | PCIe LP パネル | Superbuy | \2,000 | 1 | i350-T4 用
なくても OK , あると色が揃う |
メモリ | Crucial | CT16G4SFS8266 | DDR4 16GB | Amazon | \7,980 | 2 | トラフィックジェネレータ用途は 8GB でも問題ないはず |
NVMe | Solidigm
(Intel) |
SSDPEKNW010T8X1 | 1TB | Amazon | \13,863 | 1 | WD だと ESXi7 が対応しない
Intel が鉄板らしい |
NIC | Intel | X520-DA2 | 10G x2 SFP+
PCIe LP |
ヤフオク | \7,980 | 1 | Fujitsu の互換カードが安かった
SFP+ のカードを買っておくと、 10G-T SFP+ でファイバとメタル両対応にできる |
合計 | \68,572 |
ソフトウェア構成
VMware vSphere 7 (ESXi7)
- CentOS7
- Cisco Trex v2.87
組み立て
筐体全面・背面
![](/images/thumb/3/39/M720q-01.jpg/300px-M720q-01.jpg)
![](/images/thumb/6/6e/M720q-02.jpg/300px-M720q-02.jpg)
右上の RGB コネクタの部分を PCIe に変更できます。
![](/images/thumb/4/4f/M720q-03.jpg/300px-M720q-03.jpg)
この世代から背面に M.2 とメモリスロットが移動したので、交換がやりやすいです。
![](/images/thumb/6/6a/M720q-04.jpg/300px-M720q-04.jpg)
左に CPU ファン、右に 2.5 HDD ベイがあり、HDD ベイを PCIe に変更します。
小さい部品が PCIe ライザーカード。一番右のカードはテストで使った Mellanox 40G NIC.
![](/images/thumb/a/aa/M720q-05.jpg/300px-M720q-05.jpg)
PCIe ライザーカードを使って、Intel X520-DA2 10G NIC を搭載したところ。
ブラケットは NIC のまま。
![](/images/thumb/b/be/M720q-06.jpg/300px-M720q-06.jpg)
NIC の LP ブラケットを、こいつに変更。
![](/images/thumb/b/b8/M720q-07.jpg/300px-M720q-07.jpg)
i350-T4 用のため完全には合わない (隙間がある) けど、やらないよりは良い感じに。
Trex テスト結果
ESXi7 に CentOS 7 VM を構築して 10G NIC を PCI パススルー、Trex v2.87 をインストールして、
10G ポート直結でトラフィックを印加してみました。
Mellanox-X4 40G NIC
Mellanox-X4 40G NIC | Gbps | ||||
---|---|---|---|---|---|
合計帯域幅 | Port1 Tx | Port1 Rx | Port2 Tx | Port2 Rx | |
01 1500Bytes 単方向 40G | 50.8 | 25.4 | 0 | 0 | 25.4 |
02 9000Bytes 双方向 40G | 53.8 | 13.7 | 13.7 | 13.8 | 13.8 |
01 1500Bytes 単方向 40G
![](/images/thumb/6/6e/20220313_Trex_40G_01_Unidirectional.png/800px-20220313_Trex_40G_01_Unidirectional.png)
MTU 1500Bytes 単方向だと 25Gbps 出た。実際には Rx 25Gbps もあるため、
受信を含めた帯域幅は合計 50Gbps となる。
![](/images/thumb/c/cf/20220313_Trex_40G_02_9000_bidirectional.png/800px-20220313_Trex_40G_02_9000_bidirectional.png)
MTU 9000 で 2Mpps -> 380Kpps に落としているが、13.7Gbps 双方向 x2 で 54.8Gbps とあまり変わっておらず、
pps よりも帯域幅によって限界スループットになる模様。
CPU 使用率は 100% になっていない + PCIe x8 はおおよそ双方向 128Gbps , 単方向 64Gbps [1]のため、
128 / 2 / 2 = 32Gbps 双方向 x2 が限界スループットの理論値になるはずだが・・・
発熱も 10G NIC と比べて大きいと考えられるため、40G NIC の搭載は諦めました。
Intel X520-DA2
Intel 10G NIC | Gbps | ||||
---|---|---|---|---|---|
合計帯域幅 | Port1 Tx | Port1 Rx | Port2 Tx | Port2 Rx | |
01 64Bytes 双方向 10G | 40 | 10 | 10 | 10 | 10 |
![](/images/thumb/4/48/20220313_Trex_10G_01_64Bytes_bidirectional.png/800px-20220313_Trex_10G_01_64Bytes_bidirectional.png)
64 Bytes ショートパケットを双方向で印加。
L1 でヘッダも含めて 10G , L2 でヘッダオーバーヘッドを排除したペイロードで 7.63Gbps
14.88Mpps の 10G ワイヤレートを双方向で確認できました。
結果概要
IXIA などのように高精度のクロックジェネレータは無いため、
Trex では厳密な間隔でイーサネット フレームを送信することができません。
厳密なパケットドロップ数を計測する用途には向かないですが、以下の用途に使用できます。
- QoS を確認する際の、非優先トラフィックの印加
- 10G スループット測定
VyOS スループットテスト
VyOS 1.4 を VM としてインストール、10G ポートを接続し、
トラフィックを印加してスループットを測定してみました。
vSwitch | ||
---|---|---|
01 1500Bytes 5Gbps 双方向 1Core | 4.3Gbps 双方向 | |
02 1500Bytes 10G 双方向 4Core | 7.3Gbps 双方向 | |
03 1500Bytes 10G 双方向 6Core | 7.3Gbps 双方向 |
vSwitch 経由
01 1500Bytes 5Gbps 双方向 1Core
![](/images/thumb/7/70/20220313_VyOS_01_5G_1500Bytes_1Core.png/800px-20220313_VyOS_01_5G_1500Bytes_1Core.png)
手始めに 5Gbps 1500Bytes で双方向に印加。
1Core しか割り当てていないですが、4.3Gbps 双方向と結構速い。
02 1500Bytes 10G 双方向 4Core
![](/images/thumb/f/f7/20220313_VyOS_02_5Gbps_1500Bytes_4Core.png/800px-20220313_VyOS_02_5Gbps_1500Bytes_4Core.png)
1500Bytes 10G 双方向印加。7.3Gbps 双方向出てます。
03 1500Bytes 10G 双方向 6Core
![](/images/thumb/a/ae/20220313_VyOS_03_1500Bytes_10G_6Core.png/800px-20220313_VyOS_03_1500Bytes_10G_6Core.png)
1500Bytes 10G 双方向印加。7.0 - 7.7Gbps 平均 7.37Gbps 双方向出ましたが、
スループット面で 4 -> 6 にコア数を増やす意味はないですね。